The First Open-Source, Practical ZK-IBC from TOKI and Succinct

TOKI
5 min readMay 20, 2024

--

We are delighted to announce that TOKI and Succinct have developed the first open-source, practical Zero-Knowledge Inter-Blockchain Communication (ZK-IBC) solution, combining ibc-solidity and Tendermint X.

With ZK-IBC, decentralized applications (dApps) can now trustlessly exchange information between the Ethereum and Cosmos ecosystems by leveraging IBC. Performant and open-source, ZK-IBC can be used by anyone today.

TOKI, in collaboration with Succinct and Datachain, remains committed to investing in ZK proofs (ZKP). Additionally, we will continue to utilize Trusted Execution Environments (TEE) and Multi-Party Computation (MPC), combining them in our multi-prover model to mitigate potential risks and enhance security.

We are planning to first adopt the ZK-IBC solution between Ethereum and Cosmos, and later extend support to other blockchains such as BNB Chain, Avalanche, Polygon, and L2s. We would greatly appreciate hearing your thoughts on this. Please feel free to contact us!

What is Succinct?

With its pioneering zkVM, SP1, Succinct is democratizing access to ZKPs for all developers. SP1 is 100% open-source and enables developers to write normal Rust code to use ZK while being performant against custom, hand-written ZK circuit approaches. The recent testnet release of SP1 makes it the fastest, feature-complete zkVM, outperforming other zkVMs by an order of magnitude.

Overview

This repository provides a TendermintZKLightClient contract, a Solidity implementation of a Zero-Knowledge Proof (ZKP)-based Tendermint light client for IBC. Furthermore, it also offers IBC relayer support and a ZK prover using Succinct’s Tendermint X. By utilizing ibc-solidity and these components, we can achieve cross-chain communication via IBC between EVM chains(e.g., Ethereum mainnet) and Cosmos zones at a practical gas cost.

The following figure shows the high-level architecture of the E2E demo using the components included in this repository. Note that Mock-LC is currently used as an IBC light client on Tendermint instead of verifying Ethereum consensus. This will soon be replaced by 08-wasm + ethereum-ibc-rs.

Components

There are three main components in the repository: TendermintZKLightClient, ZKProver, and Relayer. Let’s dive into each component to understand their roles and functionalities in the architecture.

TendermintZKLightClient

TendermintZKLightClient is a Solidity contract that implements a ZKP-based light client for Tendermint and ILightClient interface of ibc-solidity. This consists of the following parts:

  • ZKP-verifier for header: It verifies a validity proof of header, which is a recursive proof with Groth16/PLONK for TendermintX circuit proof. Note that the trusting period validation and the merkle tree verification for block timestamp and appHash from the header are processed on-chain for now. We will soon improve the circuit to include these verifications.
  • State membership/non-membership verifier: A merkle proof verifier implementation optimized for Simple tree and IAVL tree proof specs

Developers can construct their own LightClient contract using a ZKP verifier contract according to the verifying key they performed setup and generated.

An example implementation can be found here:

ZKProver

ZKProver is a component that proves the validity of a given header and provides its proof to the relayer.

This component consists of the following two sub-components:

Relayer

Relayer is a component that requests validity proof of the latest header from ZKProver and calls the updateClient function of the TendermintZKLightClient contract with the proof. This is implemented as a prover module of yui-relayer.

Benchmarks

Below is the gas report for the TendermintZKLightClient contract, measured using the forge test based on the settings provided.

Settings:

  • Solidity v0.8.24
  • optimizer_runs=9999999
  • via-ir=true
  • evm_version=paris

Use Cases

We will integrate this ZK-IBC solution with our multi-prover security model, enabling Cosmos zones to communicate with Ethereum in a trust-minimized and cost-effective manner. By incorporating ZK-IBC, along with TEE and MPC, into the multi-prover model, we can further minimize the risk of potential hacking and enhance security.

For example, with Noble — one of our partners that provides a Cosmos app-specific blockchain purpose-built for native asset issuance — we are now in discussions to enable users to transfer Japanese-regulated stablecoins between Noble and Ethereum. Following Noble’s support for the Wasm light client, we plan to test this connection.

Additionally, we are in talks with other zones that are looking for more secure ways to connect with Ethereum. Please feel free to contact us if you’re interested in our solution.

Future Work

We plan on further optimizing our ZK-IBC implementation with the following steps:

  • Reduce the ZKProver’s proving time
    (The current benchmark is in this post by Succinct.)
  • Further gas cost optimization
    (e.g., remove simple tree verification on-chain)
  • Support 08-wasm light client

Furthermore, we are looking forward to accelerating the development of ZK-IBC by utilizing zkVM approaches such as SP1. This approach enables us to expand ZK-IBC networks by reducing the implementation costs of circuits for each light client.

TOKI’s Testnet Launch is Coming Soon!

TOKI is building a cross-chain bridge on top of the IBC-based messaging layer, adopting the multi-prover approach combining TEE, MPC, and ZKP.

The cross-chain bridge app is set to launch on the Ethereum and BNB Chain testnets between June and July! Our goal is to refine our product with feedback from our community, and we plan to reward early supporters. To stay tuned for more updates, join us on Discord!

https://discord.gg/dKp7Aybpg4

--

--

TOKI

The first IBC bridge to connect Ethereum, BNB Chain, Cosmos and more. https://toki.finance/