Cap restrictions can be added to each individual also, and this allows the owner to have more control. To do this, create a mapping that stores the address as the key and cap as the value. Creating a mapping for contributions is also required:
mapping(address => uint256) public contributions;
mapping(address => uint256) public caps;
Verify the individual cap for every token purchase to restrict users:
require(contributions[_beneficiary].add(_weiAmount) <= caps[_beneficiary]);
Create read-only methods for reading both the contributions and caps of an individual user:
function getUserCap(address _beneficiary) public
view returns (uint256) {
return caps[_beneficiary];
}
function getUserContribution(address _beneficiary) public
view returns (uint256) {
return contributions[_beneficiary];
}
Create setter functions for creating user restrictions. You can also create a batch function, which accepts multiple addresses and caps for easier assignment:
function setUserCap(address _beneficiary, uint256 _cap)
external onlyOwner {
caps[_beneficiary] = _cap;
}
function setGroupCap( address[] _beneficiaries, uint256 _cap )
external onlyOwner {
for (uint256 i = 0; i < _beneficiaries.length; i++) {
caps[_beneficiaries[i]] = _cap;
}
}