GitHub: InitiaERC20
The InitiaERC20
contract is an implementation of the ERC20 token standard with additional functionalities such as access control, registry integration, and support for Cosmos blockchain interactions. This contract inherits from multiple contracts including IERC20
, Ownable
, ERC20Registry
, ERC165
, and ERC20ACL
.
The InitiaERC20 contract is only meant to be used by the ERC20Factory contract. It is not meant to be used directly and does not have the necessary modifiers for full compatibility with the MiniEVM.
To deploy a custom ERC20 token, developers should use the InitiaCustomERC20 contract instead.
IERC20
: Interface for ERC20 standard functions.Ownable
: Provides ownership control.ERC20Registry
: Handles ERC20 registry functionalities.ERC165
: Supports interface identification.ERC20ACL
: Provides access control mechanisms.Transfer
: Emitted when tokens are transferred from one address to another.
address indexed from
: The address sending the tokens.
address indexed to
: The address receiving the tokens.
uint256 value
: The amount of tokens transferred.
Approval
: Emitted when an address approves another address to spend tokens on its behalf.
address indexed owner
: The address granting the approval.
address indexed spender
: The address receiving the approval.
uint256 value
: The amount of tokens approved.
mapping(address => uint256) public balanceOf
: Tracks the balance of each address.mapping(address => mapping(address => uint256)) public allowance
: Tracks the allowance each address has given to another address.string public name
: The name of the token.string public symbol
: The symbol of the token.uint8 public decimals
: The number of decimals the token uses.uint256 public totalSupply
: The total supply of the token.Initializes the contract with the token’s name, symbol, and decimals.
Name | Type | Description |
---|---|---|
_name | string memory | The name of the token |
_symbol | string memory | The symbol of the token |
_decimals | uint8 | The number of decimals the token uses |
supportsInterface
Checks if the contract supports a given interface.
Name | Type | Description |
---|---|---|
interfaceId | bytes4 | The interface identifier |
Type | Description |
---|---|
bool | true if the interface is supported, false otherwise |
_transfer
Transfers tokens from one address to another and registers the recipient’s ERC20 store if necessary.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
_mint
Mints new tokens and assigns them to an address, registering the recipient’s ERC20 store if necessary.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
_burn
Burns tokens from an address.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |
transfer
Transfers tokens to a recipient, ensuring the recipient is not a blocked address.
Name | Type | Description |
---|---|---|
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
Type | Description |
---|---|
bool | true if the transfer was successful |
approve
Approves an address to spend a specified amount of tokens on behalf of the caller.
Name | Type | Description |
---|---|---|
spender | address | The address allowed to spend the tokens |
amount | uint256 | The amount of tokens to approve |
Type | Description |
---|---|
bool | true if the approval was successful |
transferFrom
Transfers tokens from one address to another on behalf of the sender, ensuring the recipient is not a blocked address.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
Type | Description |
---|---|
bool | true if the transfer was successful |
mint
Mints new tokens to a specified address, ensuring the recipient is not a blocked address. This function can only be called by the owner.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
burn
Burns tokens from a specified address, ensuring the sender is not a module address. This function can only be called by the owner.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |
sudoTransfer
Transfers tokens from one address to another, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
sudoMint
Mints new tokens to a specified address, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
sudoBurn
Burns tokens from a specified address, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |
GitHub: InitiaERC20
The InitiaERC20
contract is an implementation of the ERC20 token standard with additional functionalities such as access control, registry integration, and support for Cosmos blockchain interactions. This contract inherits from multiple contracts including IERC20
, Ownable
, ERC20Registry
, ERC165
, and ERC20ACL
.
The InitiaERC20 contract is only meant to be used by the ERC20Factory contract. It is not meant to be used directly and does not have the necessary modifiers for full compatibility with the MiniEVM.
To deploy a custom ERC20 token, developers should use the InitiaCustomERC20 contract instead.
IERC20
: Interface for ERC20 standard functions.Ownable
: Provides ownership control.ERC20Registry
: Handles ERC20 registry functionalities.ERC165
: Supports interface identification.ERC20ACL
: Provides access control mechanisms.Transfer
: Emitted when tokens are transferred from one address to another.
address indexed from
: The address sending the tokens.
address indexed to
: The address receiving the tokens.
uint256 value
: The amount of tokens transferred.
Approval
: Emitted when an address approves another address to spend tokens on its behalf.
address indexed owner
: The address granting the approval.
address indexed spender
: The address receiving the approval.
uint256 value
: The amount of tokens approved.
mapping(address => uint256) public balanceOf
: Tracks the balance of each address.mapping(address => mapping(address => uint256)) public allowance
: Tracks the allowance each address has given to another address.string public name
: The name of the token.string public symbol
: The symbol of the token.uint8 public decimals
: The number of decimals the token uses.uint256 public totalSupply
: The total supply of the token.Initializes the contract with the token’s name, symbol, and decimals.
Name | Type | Description |
---|---|---|
_name | string memory | The name of the token |
_symbol | string memory | The symbol of the token |
_decimals | uint8 | The number of decimals the token uses |
supportsInterface
Checks if the contract supports a given interface.
Name | Type | Description |
---|---|---|
interfaceId | bytes4 | The interface identifier |
Type | Description |
---|---|
bool | true if the interface is supported, false otherwise |
_transfer
Transfers tokens from one address to another and registers the recipient’s ERC20 store if necessary.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
_mint
Mints new tokens and assigns them to an address, registering the recipient’s ERC20 store if necessary.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
_burn
Burns tokens from an address.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |
transfer
Transfers tokens to a recipient, ensuring the recipient is not a blocked address.
Name | Type | Description |
---|---|---|
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
Type | Description |
---|---|
bool | true if the transfer was successful |
approve
Approves an address to spend a specified amount of tokens on behalf of the caller.
Name | Type | Description |
---|---|---|
spender | address | The address allowed to spend the tokens |
amount | uint256 | The amount of tokens to approve |
Type | Description |
---|---|
bool | true if the approval was successful |
transferFrom
Transfers tokens from one address to another on behalf of the sender, ensuring the recipient is not a blocked address.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
Type | Description |
---|---|
bool | true if the transfer was successful |
mint
Mints new tokens to a specified address, ensuring the recipient is not a blocked address. This function can only be called by the owner.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
burn
Burns tokens from a specified address, ensuring the sender is not a module address. This function can only be called by the owner.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |
sudoTransfer
Transfers tokens from one address to another, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
sender | address | The address sending the tokens |
recipient | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to transfer |
sudoMint
Mints new tokens to a specified address, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
to | address | The address receiving the tokens |
amount | uint256 | The amount of tokens to mint |
sudoBurn
Burns tokens from a specified address, bypassing the usual access control checks. This function can only be called by the chain signer.
Name | Type | Description |
---|---|---|
from | address | The address whose tokens are burned |
amount | uint256 | The amount of tokens to burn |