We cordially invite the community to join us in creating a community-driven extensible solution for ZKP-based bridges (zkBridge). The end goal of this track is to bring the community together to build end-to-end solutions for open-source zkBridge across different chains as public good and foster an open ecosystem towards building a secure, efficient, universal foundation for multichain interoperability.

Introduction

zkBridge proposes a new solution for building trustless, permissionless, extensible, universal, and efficient cross-chain bridges using ZKP. With succinct proofs, zkBridge not only guarantees strong security without external assumptions, but also significantly reduces on-chain verification cost. zkBridge provides a modular design supporting a base layer with a standard API for smart contracts on one chain to obtain verified block headers from another chain using snarks. By separating the bridge base layer from application-specific logic, zkBridge makes it easy to enable additional applications on top of the bridge, including message passing, token transfer, etc..

Given zkBridge’s modular design, the work needed for building a zkBridge is highly decomposable and parallelizable, making it a great project for community contribution and the hackathon. We have carefully designed the tasks in this zkBridge track such that different teams and participants can contribute to different components of a zkBridge which when put together can build high-quality solutions of zkBridges across different chains.

Some frameworks and tools in this track are developed as an initiative by the zk-Collective.

The overall goal for this effort is also to enable a defense-in-depth design, leveraging different, independent implementations and proof diversity; thus the overall solution combining the different implementations will provide even stronger security even if each implementation may have bugs. To achieve this goal, we encourage two parallel efforts: 1) developing different implementations of each component in a zkBridge from one network (or L2) to another; 2) developing a framework to combine the different implementations for defense-in-depth. Note that this framework could incorporate other non-zk approaches later as well such as an optimistic bridge, as part of a defense-in-depth solution.

Program Task Description

In short, this track aims to bring together the community and participants to build the foundation of a ZKP-based cross-chain bridge, as shown below.

Alt text
Figure 1. Overview of a zero-knowledge proof based bridge

The above graph shows the components of a typical Zero Knowledge (ZK) based bridge, including a proof system, light client, updater contracts, and DApps on top of the bridge.

We've created specific tasks and prizes for each component. The focus is on enabling inter-communication between popular L1/L2 chains, such as Ethereum, BSC, Polygon, Tendermint and Gnosis. Each of the following categories has designated tasks, which are described in this document. Beyond the tasks described here, we also encourage participants to come up with self-selected tasks. The prices for each of the tasks will be announced soon.

Category 1: Circuit

The community can greatly benefit from high-quality circuits that are easily incorporated into projects as standard libraries, particularly for popular code blocks like hash functions and elliptic curves. This category focuses on designated tasks that are building blocks for bridges on certain chains.

We recommend Circom and gnark as starting points for circuit programming languages since it's widely used and well-documented, but other circuit programming languages are also welcome.

Category 2: Smart Contracts

As shown in zkBridge, it uses an updater smart contract on one chain to verify and accept proofs of block headers of another chain from relay nodes. Figure 1 shows how the updater contract maintains a list of recent block headers and updates it after verifying the relay node proofs. The contract provides an application-agnostic API for smart contracts to access the latest block headers of the sender blockchain and build application-specific logic.

In this category, the participants are expected to implement the framework of updater smart contracts and the updater contracts for specific chains.

Category 3: Block Header Relay Network

The zero-knowledge based bridge requires a relay network to deliver the block header securely from the source chain to the destination chain. A node in the block header relay network may connect to the full nodes of the source chain, and get the block headers continuously. Then the node generates the zero-knowledge proof of the block headers and delivers them to the updater contract on the target chain. In this category, we assume the zero-knowledge proof generation is taken care of by the tasks in other categories, and use a placeholder for the zero-knowledge proof generation. We expect participants to build the block header relay network with the following components:

  • Block header monitor
    • Given a source chain, build the monitor to continuously connect to full nodes of the chain to retrieve new block headers
    • Call the placeholder zero-knowledge proof generation api for the proof
  • Updater contract pusher
    • For different target chains, the pusher can call the api provided by the updater contracts to deliver the block headers and the zero-knowledge proofs

Category 4: Message Relay Services

The off-chain message relaying node is a crucial component of a bridge as it delivers messages from the sender chain to the receiver chain. The relay node monitors a smart contract on the sender chain and gathers the messages for transmission. It generates a Merkle tree proof and delivers the messages to the receiver smart contract on the receiver chain.

Participants in this category are expected to build the message relay service, including the relay node and the relevant smart contracts.

Category 5: Applications on zkBridge

The cross-chain bridge has various use cases, including cross-chain token transfer/swap and NFT lock/stake, and can be used to transfer any message or share data across chains.

Participants are encouraged to develop innovative applications on top of the cross-chain bridge.

Category 6: Defense in Depth

As mentioned earlier, it is important to develop a defense-in-depth solution, leveraging different, independent implementations and proof diversity, to achieve even stronger security even if each implementation may have bugs. In this category, participants are expected to design and develop a framework to combine the different implementations for defense-in-depth. Note that this framework could incorporate other non-zk approaches later as well such as an optimistic bridge, as part of a defense-in-depth solution. The participants are expected to provide a description of the design and its security analysis, and smart contracts to implement the framework, including the APIs for different bridge implementations to submit block headers (and provide the corresponding proofs and validation) as well as the logic for combining them to provide the API for the final defense-in-depth solution.

Category 7: Instantiation on XRPL

The XRP Ledger (XRPL) is an open source decentralized public blockchain. But differ from other blockchains that leverage smart contracts to build zkBridge, XRPL provides an alternative solution Hooks to support smart contract functionality on XRPL. Participants in this category are encouraged to use Hooks to develop zkBridge initiatives on XRPL.

Prizes

  • Prizes for Category 1-5 are provided by Gnosis Builder ($25K) and Jump ($20K)
  • Prize for Category 6 is provided by Gnosis Builder ($10K)
  • Prize for Category 7 is provided by Ripple ($10K)

Detailed Description

You can find a detailed description of all tasks for the zkBridge Hackathon Track here.

License

All accepted code submissions will be published in corresponding open-source GitHub repositories and licensed under the MIT license.