[Design Proposal] Warp: A Bridge for Tendermint Chains

Warp: A Bridge for Tendermint Chains

Long term we imagine a world where multiple blockchains co-exist. With various protocols specialised for specific use-cases. As a result we’re extremely passionate about beginning that effort of developing a framework around how we’ll facilitate cross-chain transactions on Solana. Therefore we’re presenting Warp, an MVP bridge implementation between Solana and tendermint chains.

Initially the bridge will be quite simple, but evolve over time to be compatible with other cross-chain infrastructure such as IBC.

Roadmap

Warp MVP v0

The initial implementation of this MVP is to build a mechanism to move tokens between a tendermint chain and Solana for the same owner. The Warp request will contain a proof that the owner of the tokens on the tendermint chain has control of a valid private key on Solana and vice versa. This extra layer of security reduces the likelihood that tokens are mishandled.

The tendermint chain runs a relayer that receives transactions on the their chain, and transfers tokens from a Solana token account and vice versa. For the duration that the tokens exist on Solana, the relayer takes custody of the tokens on the tendermint chain. Tendermint currently doesn’t have a smart contracts engine, so for v0, the relayer handles verification of the request externally from the chain.

Example #1: Sending tokens from the Tendermint Chain to Solana

  1. Relayer receives a transaction for N tokens
  2. Transaction contains a note, Solana pubkey + signature
  3. Relayer transfers N tokens on solana to the pubkey

If Solana signature verification fails, the relayer will transfer the tokens back to the owner on the tendermint chain.

Example #2: Sending tokens from Solana to Tendermint Chain

INITIALIZATION

Relayer initializes the token program on solana with u64::MAX as its supply. The max supply is under custody of the relayer account. The amount of outstanding tokens on Solana is (u64::MAX - current relayer account balance). This amount should always equal the balance of tokens in the relayer account on the tendermint chain.

IMPLEMENTATION

  1. Relayer receives a transaction for N tokens on Solana
  2. Transaction contains a note, tendermint chain address + signature
  3. Relayer transfers N tokens on tendermint chain to the address

Warp MVP v1

The goal of this MVP is to ensure that the proof of account ownership is verified or the transaction fails. Solana and the tendermint chain will use a smart contract to verify the signatures in the “note”. Transaction to move funds will fail if the signature check fails. V1 for Solana can ship prior to the tendermint chain since cosmwasm implementations for those chains are still several months away. is at least 12 weeks out.

Warp MVP v2

The goal of this MVP is to reduce the trust assumptions for the relayer. Instead of adding M/N signature verification, or a more sophisticated key management for the relayer, both chains should support cosmos IBC to move assets between each other. Conceptually, IBC is a light client implementation as a smart contract. With an IBC implementation, the relayer becomes a trustless message passing relayer between validators on both chains. The IBC smart contract verifies the consensus proof that the other chain accepted the transaction.

Notes

3 Likes

Hi, Dominic, it’s a great proposal. I’m Louis Liu from Cdot Network. Our team located in China. Actually, we ever met in Beijing in a DeFi salon organized by DaiDai, remember?

Cdot has built an IBC MVP on Substrate, and a workable demo.

1 Like

And we submit the Grandpa Client propose to ICS which is IBC standard process.

Let’s focus the conversation on Cosmos-SDK apps rather

Terminology: Let’s replace bot with relayer. Where the simplest model is a custodial relayer which is ideally a multisig. The cosmos SDK has native K/N multisig support and Solana has multisig support via smart contracts.

The next level up would be a bid-directional light client that supports IBC.

2 Likes

Thanks for the input @zmanian! I’ve updated the post as suggested.

1 Like