CCIP v1.5.1 BurnMintERC20 Contract API Reference
The BurnMintERC20 contract implements a basic ERC20 token with burn and mint capabilities controlled through roles.
Errors
MaxSupplyExceeded
error MaxSupplyExceeded(uint256 supplyAfterMint)
Thrown when a mint would exceed the maximum token supply.
| Parameter | Type | Description |
|---|---|---|
| supplyAfterMint | uint256 | Total supply that would result from the mint |
InvalidRecipient
error InvalidRecipient(address recipient)
Thrown when trying to transfer or approve tokens for the contract itself.
| Parameter | Type | Description |
|---|---|---|
| recipient | address | Invalid recipient address |
Events
CCIPAdminTransferred
event CCIPAdminTransferred(address indexed previousAdmin, address indexed newAdmin)
Emitted when the CCIP admin role is transferred.
| Parameter | Type | Description |
|---|---|---|
| previousAdmin | address | Previous CCIP admin address |
| newAdmin | address | New CCIP admin address |
Constants
MINTER_ROLE
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE")
Role identifier for addresses allowed to mint tokens.
BURNER_ROLE
bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE")
Role identifier for addresses allowed to burn tokens.
Functions
constructor
constructor(
string memory name,
string memory symbol,
uint8 decimals_,
uint256 maxSupply_,
uint256 preMint
) ERC20(name, symbol)
Initializes the token with its basic properties.
Parameters
| Name | Type | Description |
|---|---|---|
| name | string | Token name |
| symbol | string | Token symbol |
| decimals_ | uint8 | Number of decimal places |
| maxSupply_ | uint256 | Maximum token supply (0 for unlimited) |
| preMint | uint256 | Amount to mint to the deployer initially |
burn
function burn(uint256 amount) public override(IBurnMintERC20, ERC20Burnable) onlyRole(BURNER_ROLE)
Burns tokens from the caller's balance.
Parameters
| Name | Type | Description |
|---|---|---|
| amount | uint256 | Amount of tokens to burn |
burnFrom
function burnFrom(
address account,
uint256 amount
) public override(IBurnMintERC20, ERC20Burnable) onlyRole(BURNER_ROLE)
Burns tokens from a specific account (requires approval).
Parameters
| Name | Type | Description |
|---|---|---|
| account | address | Account to burn tokens from |
| amount | uint256 | Amount of tokens to burn |
mint
function mint(address account, uint256 amount) external override onlyRole(MINTER_ROLE)
Mints new tokens to a specified account.
Parameters
| Name | Type | Description |
|---|---|---|
| account | address | Recipient of the minted tokens |
| amount | uint256 | Amount of tokens to mint |
CCIP Admin Management
getCCIPAdmin
function getCCIPAdmin() external view returns (address)
Returns the current CCIP admin address.
Return Value
| Type | Description |
|---|---|
| address | Current CCIP admin address |
setCCIPAdmin
function setCCIPAdmin(address newAdmin) public onlyRole(DEFAULT_ADMIN_ROLE)
Transfers the CCIP admin role to a new address.
Parameters
| Name | Type | Description |
|---|---|---|
| newAdmin | address | New CCIP admin address |
Role Management
grantMintAndBurnRoles
function grantMintAndBurnRoles(address burnAndMinter) external
Grants both minting and burning roles to an address.
Parameters
| Name | Type | Description |
|---|---|---|
| burnAndMinter | address | Address to receive both roles |