Token Contract
Key Features
Token Minting: Controlled minting via MINTER_ROLE with no supply cap.
Transfer Restriction: Token transfers are initially disabled. Only addresses with TRANSFER_ROLE, the owner, or mint operations can transfer tokens before transfers are enabled. Transfers can be permanently enabled via the admin using
enableTransfers()
.Access Control Management: Role-based access control using OpenZeppelin's AccessControlDefaultAdminRules
Default Admin: Grants the ability to enable transfers and manage roles.
Transfer Role: Addresses assigned TRANSFER_ROLE can execute transfers even when transfers are disabled.
Minter Role: Addresses assigned MINTER_ROLE are authorized to mint new tokens.
Token Contract
Features
Role-Based Access Control: Implements OpenZeppelin's AccessControlDefaultAdminRules
DEFAULT_ADMIN_ROLE
: Can enable transfers and manage other rolesMINTER_ROLE
: Can mint new tokensTRANSFER_ROLE
: Can transfer tokens before transfers are enabled
Controlled Token Transfers:
Transfers are initially disabled
Only addresses with
TRANSFER_ROLE
, the owner, or minting operations can transfer tokens when transfers are disabledTransfers can be enabled by admin (one-way operation - cannot be disabled once enabled)
Token Minting:
Controlled minting through
MINTER_ROLE
No maximum supply cap
Inheritance
OpenZeppelin's ERC20
OpenZeppelin's ERC20Burnable
OpenZeppelin's AccessControlDefaultAdminRules
Key Functions
mint(address to, uint256 amount)
: AllowsMINTER_ROLE
to mint new tokensenableTransfers()
: Allows admin to enable transfers for all holdersburn(uint256 amount)
: Allows token holders to burn their tokens (inherited from ERC20Burnable)
Last updated