diff --git a/docs/modules/ROOT/pages/access-control.adoc b/docs/modules/ROOT/pages/access-control.adoc index e347de1f5..5fd857c54 100644 --- a/docs/modules/ROOT/pages/access-control.adoc +++ b/docs/modules/ROOT/pages/access-control.adoc @@ -67,7 +67,7 @@ contract MyToken is ERC20, AccessControl { // Create a new role identifier for the minter role bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); - constructor(address minter) public { + constructor(address minter) public ERC20("MyToken", "TKN") { // Grant the minter role to a specified account _setupRole(MINTER_ROLE, minter); } @@ -97,7 +97,7 @@ contract MyToken is ERC20, AccessControl { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); - constructor(address minter, address burner) public { + constructor(address minter, address burner) public ERC20("MyToken", "TKN") { _setupRole(MINTER_ROLE, minter); _setupRole(BURNER_ROLE, burner); } @@ -109,7 +109,7 @@ contract MyToken is ERC20, AccessControl { function burn(address from, uint256 amount) public { require(hasRole(BURNER_ROLE, msg.sender), "Caller is not a burner"); - _burn(from, amount); + _burn(from, amount); } } ---- @@ -140,7 +140,7 @@ contract MyToken is ERC20, AccessControl { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); - constructor() ERC20("MyToken", "TKN") public { + constructor() public 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); @@ -153,7 +153,7 @@ contract MyToken is ERC20, AccessControl { function burn(address from, uint256 amount) public { require(hasRole(BURNER_ROLE, msg.sender), "Caller is not a burner"); - _burn(from, amount); + _burn(from, amount); } } ---- diff --git a/docs/modules/ROOT/pages/erc20-supply.adoc b/docs/modules/ROOT/pages/erc20-supply.adoc index 705935c75..0e5eb5977 100644 --- a/docs/modules/ROOT/pages/erc20-supply.adoc +++ b/docs/modules/ROOT/pages/erc20-supply.adoc @@ -26,7 +26,7 @@ Starting with Contracts v2 this pattern is not only discouraged, but disallowed. [source,solidity] ---- contract ERC20FixedSupply is ERC20 { - constructor() public { + constructor() public ERC20("Fixed", "FIX") { _mint(msg.sender, 1000); } } @@ -44,6 +44,8 @@ The mechanism we will implement is a token reward for the miners that produce Et [source,solidity] ---- contract ERC20WithMinerReward is ERC20 { + constructor() public ERC20("Reward", "RWD") {} + function mintMinerReward() public { _mint(block.coinbase, 1000); } @@ -64,9 +66,9 @@ The accounts with the minter role don't need to be externally owned, though, and [source,solidity] ---- contract MinerRewardMinter { - ERC20DeployReady _token; + ERC20MinterPauser _token; - constructor(ERC20DeployReady token) public { + constructor(ERC20MinterPauser token) public { _token = token; } @@ -90,11 +92,13 @@ Adding to our previous supply mechanism, we can use this to mint a miner reward [source,solidity] ---- contract ERC20WithAutoMinerReward is ERC20 { + constructor() public ERC20("Reward", "RWD") {} + function _mintMinerReward() internal { _mint(block.coinbase, 1000); } - function _transfer(address from, address to, uint256 value) internal { + function _transfer(address from, address to, uint256 value) internal override { _mintMinerReward(); super._transfer(from, to, value); } diff --git a/docs/modules/ROOT/pages/erc777.adoc b/docs/modules/ROOT/pages/erc777.adoc index 242b15f0e..d1d73e90e 100644 --- a/docs/modules/ROOT/pages/erc777.adoc +++ b/docs/modules/ROOT/pages/erc777.adoc @@ -18,7 +18,7 @@ We will replicate the `GLD` example of the xref:erc20.adoc#constructing-an-erc20 [source,solidity] ---- -pragma solidity ^0.5.0; +pragma solidity ^0.6.0; import "@openzeppelin/contracts/token/ERC777/ERC777.sol"; @@ -30,7 +30,7 @@ contract GLDToken is ERC777 { ERC777("Gold", "GLD", defaultOperators) public { - _mint(msg.sender, msg.sender, initialSupply, "", ""); + _mint(msg.sender, initialSupply, "", ""); } } ---- diff --git a/docs/modules/ROOT/pages/gsn-strategies.adoc b/docs/modules/ROOT/pages/gsn-strategies.adoc index c6d34ebe4..13228abe9 100644 --- a/docs/modules/ROOT/pages/gsn-strategies.adoc +++ b/docs/modules/ROOT/pages/gsn-strategies.adoc @@ -59,7 +59,7 @@ Instead of using `GSNRecipient` directly, your GSN recipient contract will inste [source,solidity] ---- -import "@openzeppelin/contracts/GSN/GSNRecipientSignature"; +import "@openzeppelin/contracts/GSN/GSNRecipientSignature.sol"; contract MyContract is GSNRecipientSignature { constructor(address trustedSigner) public GSNRecipientSignature(trustedSigner) { @@ -106,8 +106,8 @@ Your GSN recipient contract needs to inherit from `GSNRecipientERC20Fee` along w [source,solidity] ---- -import "@openzeppelin/contracts/GSN/GSNRecipientERC20Fee"; -import "@openzeppelin/contracts/access/AccessControl"; +import "@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol"; +import "@openzeppelin/contracts/access/AccessControl.sol"; contract MyContract is GSNRecipientERC20Fee, AccessControl { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); @@ -116,8 +116,16 @@ contract MyContract is GSNRecipientERC20Fee, AccessControl { _setupRole(MINTER_ROLE, _msgSender()); } + function _msgSender() internal view override(Context, GSNRecipient) returns (address payable) { + return GSNRecipient._msgSender(); + } + + function _msgData() internal view override(Context, GSNRecipient) returns (bytes memory) { + return GSNRecipient._msgData(); + } + function mint(address account, uint256 amount) public { - require(hasRole(MINTER_ROLE, _msgSender())); + require(hasRole(MINTER_ROLE, _msgSender()), "Caller is not a minter"); _mint(account, amount); } }