Note
Tokenization is a premium feature that requires an additional purchase. If you don’t have access to this feature, contact your Customer Success Manager to discuss enabling it in your Fireblocks workspace.
Overview
The Full-feature token smart contract template, published by Bitbond, can be used to issue ERC-20 and ERC-1400 compatible tokens for various use cases. It works seamlessly with your Fireblocks workspace and offers:
- Compatibility across leading wallets, exchanges, and DeFi applications.
- Extensive configuration options from basic fungible tokens to permissioned, compliance-focused configurations.
- Optional capabilities that include minting, burning, whitelisting, blacklisting, pausing, force transfers, burn fees, document links, and balance limits.
- End-to-end asset lifecycle management directly on-chain.
This article describes how to deploy a token contract from this template and several common operations you can use.
Deploying
When deploying the Full-feature token contract, you must define the following parameters:
- Network: The blockchain where you’re deploying the contract.
- Name: The token’s name.
- Symbol: The token’s symbol.
- Initial supply to set: The number of tokens to mint as the initial supply.
- Decimals to set: The number of decimals that can be used when specifying the token’s amount – for example, 18.
- Token owner: The address you want to be the token owner. The token owner is the only address that can perform administrative functions on the contract.
- Is mintable: Select this option to allow additional tokens to be minted after the initial supply is created.
- Is burnable: Select this option to allow tokens to be destroyed to decrease supply.
- Is pausable: Select this option to allow the pausing and unpausing of all token operations.
- Is blacklist enabled: Select this option to allow accounts to be blacklisted after the token is created.
- Is document allowed: Select this option to allow documentation like a prospectus or whitepaper via a URL.
- Is whitelist enabled: Select this option to allow accounts to be whitelisted after the token is created.
- Is max amount of tokens set: Select this option to assign a maximum token balance per address.
- Is force transfer allowed: Select this option to allow token transfers without approval or signature of the token holder.
- Is taxable: Select this option to allow a fee that gets transferred to a specified wallet for every token transfer.
- Is deflationary: Select this option to allow a portion of every transfer to burn, specified in basis points (bps).
-
Max token amount: The maximum token balance allowed per address.
- This parameter must contain a value. If it does not apply to your use case, enter 0.
- New document uri: The URL to a document, such as a prospectus or whitepaper.
-
Tax address: The address that accepts a tax for every token transfer.
- This parameter must contain a value. If it does not apply to your use case, we recommend entering the token owner’s address.
-
Tax BPS: The amount in basis points (bps) of the token transfer tax.
- This parameter must contain a value. If it does not apply to your use case, enter 0.
-
Deflation BPS: The amount in basis points (bps) of tokens to burn for each transfer.
- This parameter must contain a value. If it does not apply to your use case, enter 0.
Minting
The token owner can mint tokens by selecting Mint corresponding to the desired token on the Tokenization page.
Learn more about minting tokens.
Burning
The token owner can burn tokens by selecting Burn corresponding to the desired token on the Tokenization page.
Learn more about burning tokens.
Pausing/Unpausing
If needed, you can completely pause the contract from functioning. This may be useful if you believe the contract has been compromised. After resolving any security implications, you can then unpause the contract to resume functionality.
Only the following functions can be called while the contract is paused:
- revokeRole
- renounceRole
- upgradeToAndCall
- salvageERC20
- salvageGas
- initialize
- grantRole
- version
- supportsInterface
- contractUriUpdate
The token owner can pause and unpause the contract as needed.
- On the Tokenization page, select More Actions (...) > Manage contract corresponding to the relevant smart contract.
- Select Write and use the Pause or Unpause function.
- Select the token owner’s vault account.
- Select Submit.