ICS-20 Transfers to Ethereum
In our inaugural post, we showcased the first IBC connection to Ethereum by showing two contracts playing ping-pong through general message passing. Today we have something even more exciting: a first look at Union Chain Standard 1 (UCS-1), the adjusted version of ICS-20 for asset transfers between EVM and Cosmos-SDK-based chains. Our improvements are related to batch transfers to more efficiently transfer funds.
After installing and configuring Metamask to Sepolia and Union Testnet, you should see your addresses and balances. This is an early showcase, only tested on Chrome, so in case of any errors, we apologize.
Claim UNO from the Union faucet for bridging usage. If you opt-in to share your address, you will be tracked as an early contributor.
IBC transfers from
sepolia are just contract interactions, which need to be sent to either Sepolia or Union, depending on the transfer direction. We start by sending UNO to Sepolia (Ethereum Testnet), and then back again. This showcase uses a single-threaded relayer with simple nonce management.
IBC is as fast as the underlying chains. When you do Tendermint to Tendermint transactions, IBC is quite fast because the finality time is 6 seconds. However, when connecting to Sepolia, which has a similar configuration to Ethereum Mainnet, it takes a while for blocks to finalize. We need to await finalization to avoid double-spending.
If you want to learn more about these commitment levels, read What are Ethereum commitment levels? Latest, Safe, Finalized.
Inside the testnet, a full IBC transfer is now occurring:
- The Union validators are finalizing the block.
- Voyager is observing events and constructing packets.
- Galois generates a zero-knowledge proof.
When the transaction is received, the funds are locked in a vault, ensuring the tokens on Sepolia are always backed one-to-one. Since Union has rapid finality and proof generation, the transfer from Union to Sepolia will be quite fast.
On our testnet,
Galois is running on relatively simple infrastructure. This means proof generation is relatively slow. Proof generation becomes close to instant on 128-core machines. On mainnet, relayers with fast proving speeds will outcompete slow relayers and generate significantly more fees. This market dynamic optimizes our infrastructure.
On Sepolia, the zero-knowledge proof is verified inside the IBC contract stack. This verification is necessary to update the Union Light client. After successful verification, an ERC-20 token representing UNO is transferred to your wallet.
To transfer the UNO back, we need to obtain some SepoliaETH for gas fees. Copy your address below, and enter it on the Sepolia Faucet page.
For the transfer back we need to wait for the acknowledgement of the initial transfer to reach Union. Acknowledgments prevent censorship attacks by provers, ensuring users never lose control of their tokens. The same light-client and packet mechanism is used to relay acknowledgments.
Once you have received SepoliaETH, initiate the transfer to Union. This will either burn or lock your tokens in the Sepolia vault, depending on the sovereign home of the asset. Once Sepolia finalizes, the funds are sent to Union.
What is Finalization?
Double-spend attacks are the reason Proof-of-Work was developed. It is an attack where a payment is made, goods are obtained, and then the payment is refunded. Finalization is the process of making a payment non-refundable. For bridging protocols, payment must be non-refundable, otherwise, an attacker would obtain assets on both chains, effectively minting new tokens. Time-to-finality is a property of a blockchain and not something controlled by Union.
The golden standard for infrastructure is trustless, meaning no party can steal funds from the bridge, censor transactions, or prevent protocols from interacting with them. Over two billion US dollars have been lost through the pervasive use of insecure bridges. This hampers the growth of cross-chain DeFi and makes chains besides Ethereum unusable to large institutions with strict risk requirements. To properly scale web3, a solid foundation must be created for builders and users. Uniswap pools would be useless if hacks occurred every few months, and thus the interchain must fully migrate to IBC to become useful.
Tracking Ethereum’s consensus and finalization is quite complex compared to CometBLS. The Ethereum execution layer produces blocks approximately every 15 seconds. The finalization process is tracked on the beacon chain, which is what is necessary to construct light-client proofs. Voyager tracks both the execution and finalization layers.
The signing committee constructs a BLS signature, used to prove the finalization of blocks. Compared to Tendermint-based chains, the beacon chain can encounter block reorganizations quite easily. Cosmos-based chains use single-slot-finality, which is better for high-performance applications and bridging purposes.
You will at some point lose the UNO obtained through this faucet, as we migrate to newer versions of the testnet. If you opted in for early contribution, your participation in this demo is registered for later incentivization.
Currently, transfer times are dominated by:
- Network latency.
- Awaiting finalization.
- Proof generation.
Our primary focus for public testnet is getting voyager more efficient to reduce relayer latency to sub-second timeframes, a primary example being the transfer time from Union to Sepolia; currently we are waiting for two epochs, but this will be reduced to one in a future update, effectively halving the time from around 15 minutes to around 7. Finalization will improve if single-slot finality lands on Ethereum, or with possible restaking integrations. Proof generation is already quite efficient, but we have more in store before mainnet with CometBLS V2.
Join the Union
We are launching our incentivized testnet soon! If you want to become a contributor:
We are looking for infrastructure providers, technical collaborations, community managers, and code contributors. Direct message @union_build if interested.