diff --git a/docs/modules/ROOT/pages/access-control.adoc b/docs/modules/ROOT/pages/access-control.adoc index ea6eebc2a..efa25ff96 100644 --- a/docs/modules/ROOT/pages/access-control.adoc +++ b/docs/modules/ROOT/pages/access-control.adoc @@ -73,7 +73,7 @@ contract MyToken is ERC20, AccessControl { constructor(address minter) ERC20("MyToken", "TKN") { // Grant the minter role to a specified account - _setupRole(MINTER_ROLE, minter); + _grantRole(MINTER_ROLE, minter); } function mint(address to, uint256 amount) public { @@ -104,8 +104,8 @@ contract MyToken is ERC20, AccessControl { bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); constructor(address minter, address burner) ERC20("MyToken", "TKN") { - _setupRole(MINTER_ROLE, minter); - _setupRole(BURNER_ROLE, burner); + _grantRole(MINTER_ROLE, minter); + _grantRole(BURNER_ROLE, burner); } function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) { @@ -123,7 +123,7 @@ So clean! By splitting concerns this way, more granular levels of permission may [[granting-and-revoking]] === Granting and Revoking Roles -The ERC20 token example above uses `_setupRole`, an `internal` function that is useful when programmatically assigning roles (such as during construction). But what if we later want to grant the 'minter' role to additional accounts? +The ERC20 token example above uses `_grantRole`, an `internal` function that is useful when programmatically assigning roles (such as during construction). But what if we later want to grant the 'minter' role to additional accounts? By default, **accounts with a role cannot grant it or revoke it from other accounts**: all having a role does is making the `hasRole` check pass. To grant and revoke roles dynamically, you will need help from the _role's admin_. @@ -149,7 +149,7 @@ contract MyToken is ERC20, AccessControl { constructor() ERC20("MyToken", "TKN") { // Grant the contract deployer the default admin role: it will be able // to grant and revoke any roles - _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); } function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {