Silos into Standards: The Digital Asset Evolution
At Geora, we’re powering the agricultural supply chain of the future, through a combination of traceability, on-demand finance, and secure digital transactions. The key to our protocol is the digital asset, a tokenized representation of a real-world agri-commodity like grain or livestock. Digital assets are rich with provenance data, and record the history of a commodity throughout their supply chain.
In this article, we’ll discuss our considerations when developing digital assets using the Ethereum blockchain, and why we ultimately settled on the ERC-1155 Multi Token Standard to power the Geora protocol.
A brief history of the digital asset
The first iteration of what would become the Geora digital asset was born in 2016, when in partnership with AgriDigital and grain exporters Fletcher International Exports we performed the world’s first on-chain physical commodity settlement, transacting grain between two Australian companies. In a subsequent project with grain co-operative CBH Group, we traced the provenance of oats through a segment of the supply chain. Later, we partnered with financier Rabobank to trial just-in-time finance backed by a digital asset.
In all three of these trials, our digital assets took the form of ERC-20 tokens on the Ethereum blockchain. For bulk commodities like grain, ERC-20 is the perfect fit: its fungible nature perfectly matches that of the underlying physical product. In the early years of the Ethereum ecosystem, when the developer community was still developing, it was also the first widely-supported token standard, which allowed us to integrate external tools like Metamask for transferring commodities in a manner accessible to end-users.
However, as we extended our reach to cover all agricultural commodities, it became clear that ERC-20 had a number of limitations. Firstly, it failed to support certain types of commodity. Commodities can be broadly placed into two classes: bulk, or fungible, which can be mixed, and discrete, or non-fungible, which cannot. While ERC-20 was perfect for the former, it failed for the latter. Secondly, a fungible token made it difficult to maintain a clear view of provenance through the supply chain. Finally, the lack of standardisation for metadata extensions meant we couldn’t attach additional data to the tokens in an accessible way. This data would be extremely useful for supply-chain participants like financiers and producers, so it needed to be a first-class citizen.
When we were approached by the United Nations Food and Agriculture Organization to provide provenance tracing for pig farmers in Papua New Guinea, it was the perfect time to expand the digital asset beyond bulk commodities. Each asset needed to represent a specific pig, and contain data around its diet, vaccination schedule, and genetic lineage. Farmers could then share and trade their digital assets to receive a fairer price at market.
Initially, we considered a solution that would treat each digital asset as a separate Ethereum smart contract. The smart contract would contain logic around ownership, claims (assertions about the asset’s data), evidence for claims like sustainability certificates, and a permissioning system which allows different supply-chain participants to perform appropriate actions on assets.
In the case of livestock like pigs, trials of this approach worked well. But we ran into problems when considering future applications that required operations on many thousands of discrete assets. For example, the provenance chain of a field of barley might end in it being bottled into beer. But if a batch of beer contained thousands of bottles, we would be creating thousands of contracts, costing significant amounts of gas and contributing to chain bloat. Clearly, in order to scale the Geora protocol, we needed a different solution.
The ERC-1155 Multi Token Standard is a relatively new token standard, pioneered by Enjin Coin, which combines many ERC-20 (fungible) and ERC-721 (non-fungible) tokens into a single smart contract. We were drawn to this standard for a number of reasons.
Firstly, it unifies our disparate asset contracts into a single contract. This means we no longer need to duplicate logic across thousands of places: the bytecode is all found in one central location, saving storage space on the Ethereum chain. Using a single contract also simplifies our use of smart contract events. The Geora backend listens for on-chain events in order to build an off-chain cache to support fast queries of asset data, so being able to subscribe to events on a single contract, rather than many thousands, was a huge simplification.
Secondly, the standard supports metadata on a per-token level. This allows us to store asset data on IPFS in a standardised way, enabling any application with support for ERC-1155 to view and benefit from our data-rich assets.
Thirdly, by supporting both fungible and non-fungible tokens in a single contract the standard allowed us to implement an elegant ownership model for digital assets, which we will discuss below.
The Geora asset
The Geora protocol now stores assets using a single ERC-1155-compliant smart contract. The contract contains one non-fungible token type. When an asset is created, a new token of this type is created and stored in the contract, along with an IPFS content address that links to data in decentralised storage. In addition, a supply-chain participant can attach encrypted files to their assets, which are also stored on IPFS.
Ownership in an agricultural supply chain is a complicated beast, and can involve multiple participants sharing ownership, each with different rights and responsibilities. To adequately represent this, we create a new fungible token in the smart contract per asset. Drawing on the idea of the re-fungible token standard, this ownership token is distributed between an asset’s owners in proportion to their stake. The owners can trade their shares in an asset to outside participants, traders, and financiers, through any exchange supporting the ERC-1155 standard.
Another advantage of the multi token standard is its support for batch operations. Thinking back to the beer bottle example, the standard supports native functions like safeBatchTransferFrom which enable us to process large amounts of discrete assets in an efficient manner. Since all assets now reside in a single contract, we can extend batch operations to other important actions in a supply chain, like processing multiple assets into one, whereas the gas costs of combining many individual smart contracts meant that such an operation was previously infeasible.
Finally, our smart contracts include a number of custom extensions to the standard. These include the ability to trace the lifecycle and lineage of assets, such as an asset’s parents and children, and a role-based granular permissions layer over all functions. We hope to be able to contribute these extensions back to the community as a formal standard while we prove their effectiveness.
For the Geora protocol, the ERC-1155 standard represents a big step forward in enabling complex asset-driven applications. Due to the standard’s practical and efficient design, we expect many other applications to explore its benefits in the near future. In fact, some are already beginning to emerge, like Horizon Games. It’s another testament to the ingenuity of the Ethereum development community, and its bright future ahead.
For more information contact our team at firstname.lastname@example.org