Alternative Method to Bypass the tx.origin
Change in OpenZeppelin Contracts: Use _transferOwnership
in Use Hello in the Main Constructor
#18
Closed
defido
started this conversation in
Show and tell
Replies: 2 comments
-
Instead of import "@openzeppelin/contracts/access/AccessControl.sol"; contract XXX is ERC20, AccessControl {
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); Change constructor() ERC20("XXX", "XXX") {
_grantRole(DEFAULT_ADMIN_ROLE, tx.origin);
_grantRole(MINTER_ROLE, tx.origin);
_mint(tx.origin, 1000 * 10 ** decimals()); To make sure only addresses that are in function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {
_mint(to, amount); |
Beta Was this translation helpful? Give feedback.
0 replies
-
Please note that OpenZeppelin Contracts version 5.0.0 has made the initial |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This is OpenZeppelin (OZ)
Ownable
-specific. If you're using your own access control setup, then feel free to ignore this.The current process using OZ's
Ownable
in combination with thexdeployer
is the following: themsg.sender
of the contract creation transaction is the helper smart contractCreate2Deployer
with address0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2
. This in turn means using the standard OZOwnable
access control method would set theowner
to0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2
. One of the workarounds would be to change themsg.sender
totx.origin
in the original OZOwnable
contract. However, there exists a further way to resolve this problem: When using OZ contracts, simply use_transferOwnership(your wallet address)
in the main constructor setup. This adjustment will trigger first a transfer of ownership to the helper contract and thereafter a transfer of the ownership from the helper smart contract to the wallet address you set in the main constructor (2 events will be emitted); everything within the same contract creation transaction. See also a more comprehensive discussion here.Beta Was this translation helpful? Give feedback.
All reactions