Assets on Tezos
A proposed interface standard for fungible assets
This post is a joint work between the Tocqueville Group, Serokell, and Nomadic Labs. Here we propose a standard interface for creating and managing fungible assets using smart-contracts on Tezos, highlight an upcoming reference implementation by Serokell, and provide a preview of our ongoing work.
We are still working on a more formal “TZIP” process, but we felt it important to start with this proposal to get the ball rolling.
Our proposed asset interface standard
For pragmatic reasons, our first proposed asset interface standard essentially follows the interface proposed in ERC-20. This standard is well known, widely used by third parties (wallets, exchanges, etc), and developers know how to integrate it. This initial interface standard is compatible with an upcoming amendment proposal that adds multiple entrypoints to Michelson. Engineers at Nomadic Labs and Serokell are also developing alternatives inspired by other emerging standards, such as ERC-777 and ERC-1155.
The proposed interface is as follows:
X represents any potential additional entry point.
Note that in order to enhance readability, the snippet above takes some liberty and departs from the indentation prescribed by Michelson. (A less readable, but correctly indented snippet can be found here.)
While, in the current version of Michelson, annotations inside parameters (e.g.
:value) are not semantically meaningful, all of the annotations above are nonetheless part of the proposed standard. This serves two purposes: it offers compatibility with a proposed extension of Michelson enabling multiple entrypoints and it standardizes the content of automatically generated interfaces.
An upcoming reference implementation
Building under this proposed interface standard, Nomadic Labs is also helping finalize a reference implementation of an asset contract written by Serokell using the Morley framework.
Concretely, this reference implementation maps identities to balances on a ledger. It also provides
Pause operations, offering the contract deployer flexibility in specifying how the asset contract is administered. This provides customizable options to users: an asset contract can be managed by a trusted third party (e.g. a Security Token or a Stablecoin), a multisig, a DAO, or remain unpermissioned with no administrator at all.
Efforts are currently underway at Nomadic Labs to specify a reference implementation and use the Mi-Cho-Coq framework to formally prove that the specification is respected by the Michelson contract.
New asset interface standards (and reference implementations)
To reduce the risk of path dependency around this initial interface standard, we intend to propose additional asset interfaces inspired by newer standards or other designs proposed from the Tezos community.
Inclusion with the Tezos node/client
Following the lead of the recently incorporated multi-signature contract, Nomadic Labs intends to include a formally verified asset contract in the Tezos client/node. This also complements other recent efforts to update the native Tezos multi-sig with the ability to make arbitrary function calls (e.g. managing an asset contract).
Expect updates on these efforts throughout the summer.