Merge tag 'v2.1.1' of github.com:OpenZeppelin/openzeppelin-solidity

v2.1.1
This commit is contained in:
Francisco Giordano
2019-01-18 15:33:51 -03:00
237 changed files with 8562 additions and 4937 deletions

View File

@ -1,5 +1,4 @@
pragma solidity ^0.4.24;
pragma solidity ^0.5.0;
/**
* @title Roles
@ -15,6 +14,8 @@ library Roles {
*/
function add(Role storage role, address account) internal {
require(account != address(0));
require(!has(role, account));
role.bearer[account] = true;
}
@ -23,6 +24,8 @@ library Roles {
*/
function remove(Role storage role, address account) internal {
require(account != address(0));
require(has(role, account));
role.bearer[account] = false;
}
@ -30,11 +33,7 @@ library Roles {
* @dev check if an account has this role
* @return bool
*/
function has(Role storage role, address account)
internal
view
returns (bool)
{
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0));
return role.bearer[account];
}

View File

@ -1,4 +1,4 @@
pragma solidity ^0.4.24;
pragma solidity ^0.5.0;
import "zos-lib/contracts/Initializable.sol";
import "../Roles.sol";
@ -10,7 +10,7 @@ contract CapperRole is Initializable {
event CapperAdded(address indexed account);
event CapperRemoved(address indexed account);
Roles.Role private cappers;
Roles.Role private _cappers;
function initialize(address sender) public initializer {
if (!isCapper(sender)) {
@ -24,7 +24,7 @@ contract CapperRole is Initializable {
}
function isCapper(address account) public view returns (bool) {
return cappers.has(account);
return _cappers.has(account);
}
function addCapper(address account) public onlyCapper {
@ -36,12 +36,12 @@ contract CapperRole is Initializable {
}
function _addCapper(address account) internal {
cappers.add(account);
_cappers.add(account);
emit CapperAdded(account);
}
function _removeCapper(address account) internal {
cappers.remove(account);
_cappers.remove(account);
emit CapperRemoved(account);
}

View File

@ -1,4 +1,4 @@
pragma solidity ^0.4.24;
pragma solidity ^0.5.0;
import "zos-lib/contracts/Initializable.sol";
import "../Roles.sol";
@ -10,7 +10,7 @@ contract MinterRole is Initializable {
event MinterAdded(address indexed account);
event MinterRemoved(address indexed account);
Roles.Role private minters;
Roles.Role private _minters;
function initialize(address sender) public initializer {
if (!isMinter(sender)) {
@ -24,7 +24,7 @@ contract MinterRole is Initializable {
}
function isMinter(address account) public view returns (bool) {
return minters.has(account);
return _minters.has(account);
}
function addMinter(address account) public onlyMinter {
@ -36,12 +36,12 @@ contract MinterRole is Initializable {
}
function _addMinter(address account) internal {
minters.add(account);
_minters.add(account);
emit MinterAdded(account);
}
function _removeMinter(address account) internal {
minters.remove(account);
_minters.remove(account);
emit MinterRemoved(account);
}

View File

@ -1,4 +1,4 @@
pragma solidity ^0.4.24;
pragma solidity ^0.5.0;
import "zos-lib/contracts/Initializable.sol";
import "../Roles.sol";
@ -10,7 +10,7 @@ contract PauserRole is Initializable {
event PauserAdded(address indexed account);
event PauserRemoved(address indexed account);
Roles.Role private pausers;
Roles.Role private _pausers;
function initialize(address sender) public initializer {
if (!isPauser(sender)) {
@ -24,7 +24,7 @@ contract PauserRole is Initializable {
}
function isPauser(address account) public view returns (bool) {
return pausers.has(account);
return _pausers.has(account);
}
function addPauser(address account) public onlyPauser {
@ -36,12 +36,12 @@ contract PauserRole is Initializable {
}
function _addPauser(address account) internal {
pausers.add(account);
_pausers.add(account);
emit PauserAdded(account);
}
function _removePauser(address account) internal {
pausers.remove(account);
_pausers.remove(account);
emit PauserRemoved(account);
}

View File

@ -1,4 +1,4 @@
pragma solidity ^0.4.24;
pragma solidity ^0.5.0;
import "zos-lib/contracts/Initializable.sol";
import "../Roles.sol";
@ -10,7 +10,7 @@ contract SignerRole is Initializable {
event SignerAdded(address indexed account);
event SignerRemoved(address indexed account);
Roles.Role private signers;
Roles.Role private _signers;
function initialize(address sender) public initializer {
if (!isSigner(sender)) {
@ -24,7 +24,7 @@ contract SignerRole is Initializable {
}
function isSigner(address account) public view returns (bool) {
return signers.has(account);
return _signers.has(account);
}
function addSigner(address account) public onlySigner {
@ -36,12 +36,12 @@ contract SignerRole is Initializable {
}
function _addSigner(address account) internal {
signers.add(account);
_signers.add(account);
emit SignerAdded(account);
}
function _removeSigner(address account) internal {
signers.remove(account);
_signers.remove(account);
emit SignerRemoved(account);
}

View File

@ -0,0 +1,47 @@
pragma solidity ^0.5.0;
import "../Roles.sol";
/**
* @title WhitelistAdminRole
* @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
*/
contract WhitelistAdminRole {
using Roles for Roles.Role;
event WhitelistAdminAdded(address indexed account);
event WhitelistAdminRemoved(address indexed account);
Roles.Role private _whitelistAdmins;
constructor () internal {
_addWhitelistAdmin(msg.sender);
}
modifier onlyWhitelistAdmin() {
require(isWhitelistAdmin(msg.sender));
_;
}
function isWhitelistAdmin(address account) public view returns (bool) {
return _whitelistAdmins.has(account);
}
function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
_addWhitelistAdmin(account);
}
function renounceWhitelistAdmin() public {
_removeWhitelistAdmin(msg.sender);
}
function _addWhitelistAdmin(address account) internal {
_whitelistAdmins.add(account);
emit WhitelistAdminAdded(account);
}
function _removeWhitelistAdmin(address account) internal {
_whitelistAdmins.remove(account);
emit WhitelistAdminRemoved(account);
}
}

View File

@ -0,0 +1,50 @@
pragma solidity ^0.5.0;
import "../Roles.sol";
import "./WhitelistAdminRole.sol";
/**
* @title WhitelistedRole
* @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a
* crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove
* it), and not Whitelisteds themselves.
*/
contract WhitelistedRole is WhitelistAdminRole {
using Roles for Roles.Role;
event WhitelistedAdded(address indexed account);
event WhitelistedRemoved(address indexed account);
Roles.Role private _whitelisteds;
modifier onlyWhitelisted() {
require(isWhitelisted(msg.sender));
_;
}
function isWhitelisted(address account) public view returns (bool) {
return _whitelisteds.has(account);
}
function addWhitelisted(address account) public onlyWhitelistAdmin {
_addWhitelisted(account);
}
function removeWhitelisted(address account) public onlyWhitelistAdmin {
_removeWhitelisted(account);
}
function renounceWhitelisted() public {
_removeWhitelisted(msg.sender);
}
function _addWhitelisted(address account) internal {
_whitelisteds.add(account);
emit WhitelistedAdded(account);
}
function _removeWhitelisted(address account) internal {
_whitelisteds.remove(account);
emit WhitelistedRemoved(account);
}
}