ERC20 Fungible Token with fixed supply
The smart contract template for fungible tokens. No new tokens can be created after the initial emission. In a video game, fixed fungible tokens can represent gems available only in limited supply.
This meta-transaction version enables you to send transactions on behalf of your users so they can use their tokens without having to pay for gas fees.
The fixed supply version of this standard guarantees no token will ever be created after the initial emission.
caution
To use this contract, you will need to import the etherjs library, create and sign a typeTransaction before you can use the function executeMetadata().
Parameters
definitiveName: The name of your smart contract which will be reflected on-chain.
definitiveSymbol: The symbol of your smart contract which will be reflected on-chain
definitiveSupply: The total amount of tokens that will ever be minted.
initialOwnerOrMultisigContract: The address that will own the ERC20 contract.
Functions
Function | Input Parameters | Description |
---|---|---|
PAUSER_ROLE | None | Returns the value of the pauser role. |
DEFAULT_ADMIN_ROLE | None | Returns the address of the admin role. |
pause | None | Called to pause by address with a pauser role, disables every variable state changes of the contract. |
paused | None | Returns true when the contract is paused. Returns false otherwise. |
unpause | None | Called to unpause by address with a pauser role. |
executeMetaTransaction | (address userAddress, bytes memory functionSignature, bytes32 sigR, bytes32 sigS, uint8 sigV) | Executes a transaction on behalf of another user by providing their address, the function to call and the signature of the transaction. |
getDomainSeparator | None | Returns the domain separator according to the EIP712. |
getChainId | None | Returns the chain id according to the EIP712. |
supportsInterface | (bytes4 interfaceID) | Returns true if the contract implements the specified interface. |
hasRole | (bytes32 role, address account) | Returns true if the address specified has been granted the role. |
getRoleAdmin | (bytes32 role) | Returns the role that can control the specified role. |
grantRole | (bytes32 role, address account) | Grants a role to the address specified. |
revokeRole | (bytes32 role, address account) | Removes a role from an address. |
renounceRole | (bytes32 role, address account) | Removes a role from an address. The address must be the caller address. |
burn | (address, uint256 amount) | Erases a specified amount of token. |
burnFrom | (address account, uint256 amount) | Erases a specified amount of token from a wallet address. Allowance of the spender must be higher than the amount of tokens being burnt. |
name | None | Returns the descriptive name of the smart contract. |
symbol | None | Returns the symbol set for this contract. |
decimals | None | Returns the number of decimals you can divide your token into. (ex. 1 ETH = 10^18 Wei) |
totalSupply | None | Returns the total amount of tokens. |
balanceOf | (address account) | Returns the number of tokens assigned to an account. |
transfer | (address to, uint256 amount) | Returns true when the transfer of tokens has been successful to the specified address. |
transferFrom | (address from, address to, uint256 amount) | Returns true when the transfer of tokens has been successful to the specified address. Notice that the allowance of the spender must be higher than the amount of tokens being transferred. |
allowance | (address owner, address spender) | Returns the amount that a spender can transfer on behalf of the owner. |
approve | (address to, uint256 amount) | Returns true when the allowance of a spender by the specified amount has successfully been increased. |
increaseAllowance | (address spender, uint256 addedValue) | Returns true when the allowance of the spender has successfully been increased. |
decreaseAllowance | (address spender, uint256 subtractedValue) | Returns true when the allowance of the spender has successfully been decreased. |