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 having it enabled in your Fireblocks workspace.
Overview
Fireblocks has written a set of reference smart contracts that implement known ERC standards and provide common token capabilities. They have all been audited by OpenZeppelin.
These contracts were written to work in conjunction with one another. The token standards can be deployed individually or paired with an Allowlist or a Denylist. All of the Fireblocks contracts are upgradeable using the UUPS proxy pattern.
UUPS proxy pattern
- A Logic contract is deployed by Fireblocks that encapsulates the expected token behavior, such as mint, burn, transfer, approve, and so on. These behaviors are also known as the functions in a smart contract.
- A Proxy contract is deployed by you, and it points to the Logic contract. This Proxy contract is the first contract to intercept calls from you or the end user. It is also responsible for storing state, also known as on-chain data. This data is considered the variables in a smart contract.
- To facilitate upgradeability, the Proxy contract can point to a new Logic contract that contains new behavior. You can redirect your Proxy contract by calling its upgradeTo() function from the Fireblocks Console.
Note
Although there are two contracts at work, we simplify this in the Fireblocks platform by allowing customers to operate their contract as if it were one. In the image above, the Upgradeable ERC-20F contract, when you deploy it, is actually a Proxy that references the Logic contract deployed previously by Fireblocks.
Upgrading your contract
If Fireblocks upgrades its reference contracts, we would provide an audited Logic contract with the new behavior that customers could opt into by calling the upgradeTo() function. This would point their Proxy contract to the new Logic contract.
Fireblocks contracts vs standard protocols
The Fireblocks ERC-20F, ERC-721F, and ERC-1155F contracts are enhanced implementations of the standard token protocols on which they are based. While the ERC-20 standard has been the foundation for Ethereum-based tokens, the ERC-20F contract (in addition to the ERC-721F and ERC-1155F contracts) extends its functionality with additional features. This implementation is designed to address the needs of enterprise-level applications in the blockchain ecosystem. These enhancements aim to improve security, flexibility, and operational efficiency in token
management.
The following comparison table examines how the Fireblocks smart contracts differ from the traditional token standards, highlighting their potential benefits for businesses operating in the blockchain space.
Feature | Feature Description | ERC-20, ERC-721, ERC-1155 | Fireblocks ERC-20F, ERC-721F, ERC-1155F |
TotalSupply |
Returns the total number of tokens in circulation | Yes | Yes |
BalanceOf | Provides the token balance of a specific address | Yes | Yes |
Transfer | Allows token holders to send tokens to another address | Yes | Yes |
TransferFrom | Enables the transfer of tokens from one address to another, typically used with approved spending | Yes | Yes |
Approve | Grants permission for a spender to withdraw tokens from the owner's account |
Yes | Yes |
Allowance | Returns the number of tokens a spender is allowed to withdraw from the owner | Yes | Yes |
Mint/Burn | Enable the creation and destruction of tokens | Yes | Yes |
Access Registry | Allows or restricts addresses from interacting with the tokens through either an Allow List or Deny List smart contract |
No | Yes |
Pause/Unpause | Allows authorized role the ability to temporarily halt, and later reinstate all token transfers and operations |
No | Yes |
Upgrade | Enables authorized role to replace the existing contract logic with a new implementation | No | Yes |
Role-based Access Controls |
Different functions within the contract can be restricted to specific roles | No | Yes |
Gasless Transactions | Enables users to perform token transfers without directly paying for gas fees |
No | Yes |
Batch Transactions |
Allows multiple token transfers or operations to be executed in a single transaction |
No | Yes |
Fee on Transactions | Enables automatic deduction of a small percentage of each token transfer as a fee | No | No |
Token Recovery | Allows for tokens to be retrieved from denylisted addresses | No | Yes |
Token Salvage | A safety feature that enables the retrieval of tokens accidentally sent to the contract address | No | Yes |