NEW BLOG POSTS
Universal Blockchain Assets
Owen Vaughan
-
11 November 2024
The current embarrassing abundance of blockchain networks presents a liquidity challenge for businesses and a real headache for users (me included). Using ‘bridges’ for interoperability only complicates the situation further and invites massive hacks. In this article, I discuss a radically different approach: by rethinking how tokens are issued on a blockchain, it is possible to transfer assets cross-chain without a trusted third party or bridge. We call these Universal Blockchain Assets.
In the beginning
The blockchain ‘big bang’ started when Bitcoin went live on 3rd January 2009. Before this point, there was nothing that came close to what Bitcoin had to offer: decentralised programmable money with a globally accessible immutable database. After a while, people realised it was quite easy to copy the open-source code to create new blockchains, and the first alt-coins emerged such as Litecoin (2011) and Ripple (2012). These early blockchains changed the consensus mechanism but were still fundamentally Bitcoin under the hood. More radical designs started appearing such as privacy coins like Monero (2014), and Ethereum (2015) with its sophisticated smart contract framework. The number of blockchain networks increased exponentially until we have over a thousand blockchains today. It’s a headache, but what’s the big problem?
First, there’s a token conversion issue. Suppose you own one type of cryptocurrency but a merchant only accepts another? It’s like to going on holiday without carrying the local currency —it’s annoying but solvable with the abundance of easily accessible crypto exchange services that exist.
But there are other, stranger, issues that can happen when the same token is issued on more than one blockchain. Suppose you own some USDC issued on the Ethereum network, but the merchant only accepts USDC issued on the Tron network. It doesn’t matter they are both USDC tokens with the same issuer — the Ethereum network and the Tron network can’t talk to one-another. In the real world, it would be like having two different types of US dollar that are not interchangeable. This doesn’t just cause a headache, it can lead to serious confusion and money being lost (this actually happened to me with USDC, grr…). For token issuers, it is also results in liquidity fragmentation because the issuer has to divide their collateral into two buckets that can’t be mixed. If one bucket becomes emptied it can’t be filled by the other.
Blockchain ‘bridges’ that re-introduce the middleman
The accepted wisdom for transferring an asset from one blockchain to another dictates that we must use either a trusted third party, such as a notary, or a decentralised bridging platform.
A blockchain notary is similar a legal notary in real life. They are publicly recognised as a trusted authority who are paid a fee to attest to the truth of a statement. In the context of cross-chain transfers, a notary attests to the fact that ‘this asset has not been transferred to two different blockchains’. As long as we trust the notary, all is well. This is a reasonable assumption given that a notary’s reputation is built up over a long period of time and their business model relies on our collective faith in them to act honestly. Cross-chain ‘bridges’ are a form of distributed notary. Instead of trusting one person, we trust a group of entities organised into a platform. Bridges act by ‘listening’ to each blockchain for asset transfer requests that are then executed by agents of the bridge. Bridges have their own way of forming consensus and can be thought of as blockchains in their own right.
Whether a notary or bridge, these solutions are deeply unsatisfying. They re-introduce a trusted third party or platform — exactly what blockchain was designed to eliminate in the first place. But they also fall down on a technical level. Suppose I start with a digital asset on blockchain A and I would like to transfer it to blockchain B. For simplicity, let us assume that we will transfer the asset using a notary.
- The asset is ‘locked’ by assigning control to the notary on blockchain A. This puts the asset into custody of the notary.
- The notary mints a new asset on blockchain B.
- The ownership of the new asset is ‘swapped’ with the original. The original owner now owns an equivalent digital asset on blockchain B.
- The original asset is ‘burned’, meaning a destroy operation is recorded on blockchain A by the notary.
There are two reasons why we need a notary in the process above. (1) We need to mint a new asset on blockchain B without the user backing out of the transfer. (2) We need to be sure that the same asset wasn’t also minted on blockchain C. This would result in a duplication of that asset — a double spend.
There are more complex versions of what I have presented above, but the basic idea is the same: assets are locked, swapped and burned. This is fundamentally a bad idea. This process is complicated to implement in practice and there are many failure modes. It’s no coincidence that the biggest exploits in crypto history have occurred on bridges, such as the $320m wormhole hack. It’s not even clear whether these can be classed as hacks since they simply follow the rules of blockchain to exploit badly written code. Aside from hacks, the process of locking assets doesn’t play well with regulated industries as the notary acts as a custodian.
An example of this approach is the Inter-Blockchain Communication Protocol (IBC) developed by Cosmos. It’s currently used for transferring decentralised identity, oracle data sharing and in game asset transfers, amongst other things. It relays on a system of relayers — notaries by another name — that forward messages and sign acknowledgements on the target blockchain. Relayers must constantly monitor to the source blockchain and estimated cost of 50 USD per day at current network volume. Here’s an IBC transfer between the Cosmos and Noble blockchains where you can see how trusted relayers are required to sign transactions.
Universal Blockchain Assets
Universal Blockchain Assets are a new approach to blockchain interoperability where assets are not locked, swapped or burned. They are simply transferred between blockchains. In this approach, token transfers aere authorised off-chain using a bespoke object called a UBA packet. An auxiliary blockchain transaction is then broadcast to the network of the sender. This ensures double-spend protection.
The arrows indicate a reference to the object pointed to. The sequence can be iterated indefinitely.
The process is simple and can be completely understood through the diagram above. Each UBA packet references a blockchain UTXO in its output. When the packet is finalised, the sender creates an auxiliary blockchain transaction that records the packet. This establishes a unique chain of UBA packets that cannot be double spent. Each token transfer is peer-to-peer in the sense that it does not require any third party or bridge at any point of the process.
Concretely, the procedure of token issuance and transfer goes like this:
- Alice creates a blockchain outpoint vout0 on her preferred blockchain. The issuer creates and signs UBA packet P0 issuing a token to Alice. The UBA packet P0 references vout0.
- To transfer the token, Bob first creates an outpoint vout1 on his preferred blockchain. Alice creates and signs a UBA packet P1 assigning the token to Bob.
- To finalise the transfer procedure, Alice creates an auxiliary blockchain transaction Tx1 that spends the outpoint vout0 and contains a hash commitment of P0. She broadcasts this transaction to her blockchain network.
There is now an unbroken audit trail that immutably links the token issued to Alice to the new owner Bob. This is true despite the fact that Alice and Bob use different blockchains!
You can read more about the specific details of this transfer, along with a worked example, in the full academic paper.
Implementation
To show how this works in practice, we have created a proof-of-concept implementation that is deployed on the Bitcoin SV and Ethereum blockchains. It is open source and available at github.com/nchain-innovation/universal_blockchain_asset. The implementation consists of two components:
1. API service, built in Python using a Swagger interface for function definition. The API service has capability to create, store, transfer, and verify UBA tokens. It connects to the blockchain testnets (Sepolia for Ethereum) and allows tokens to be transferred across chains.
System overview of UBA implementation
2. User Interface, built using Streamlit. This is an easy-to-use interface that connects to the API. It allows for the creation and transfer of NFTs based on IPFS images for testing purposes.
Screenshots of user interface
You may wonder how a UTXO can be created and spent on Ethereum. This was achieved by writing a smart contract that simulates the properties of a UTXO. Read more in Josie Wilden’s article UTXO on Ethereum? Here’s How We Did It!
So what next?
We have developed a universal approach to issuing and transferring tokens cross-chain without a notary or bridge, and implemented a simple NFT proof-of-concept on the Bitcoin SV and Ethereum blockchains. We’re in the process of integrating with Metamask to improve the UI and accessible to a wide user-base. We would also like to implement the protocol on more blockchain networks, subject to demand, and to extend the UBA protocol to include fungible tokens. This would open up use cases such as CBDCs which are a natural fit for UBA due to requirements of privacy and universality.
If you would like to implement UBA for your project then please get in touch. We love to help solve real world problems!
research.enquiries@nchain.com