Skip to content

commonprefix/axelar-light-client

Repository files navigation

Ethereum Light Client

An Ethereum prover/verifier implementation of a light client that employs the Sync Committee protocol of Ethereum to bridge events from Ethereum to Axelar.

More on the Light Client Architecture

This repo is a collection of modules that work together to implement a light client.

  • Relayer/Feeder: The core off-chain component, responsible for consuming the events from the queue, generating the the necessary proofs, and providing them to the verifier along with the event. It also includes an off-chain component that will feed the light client with Update messages to keep up with the latest sync-committee.
  • Light Client: The core source of the verifier.
  • Types: Common types used across the different modules.
  • Eth An auxiliary package for querying the Ethereum beacon and execution APIs.

More details about the packages are in their corresponding READMEs.

Setting up the relayer

The relayer module consumes events from a rabbitMQ instance that is implemented in Axelar and submits them to the on-chain verifier that exists in the light-client package. To set up the relayer the following steps are required.

  • Set up an instance of the state prover.
  • Obtain an Ethereum Beacon and Execution API URLs, the gateway address and the Wasm URL.
  • Deploy the light client verifier by following the instructions in the contracts package.
  • Go to the relayer package and follow the instructions mentioned there for running both the feeder and the relayer.

Documentation

Along with the README files, code documentation is also available using the cargo doc --open command.

Acknowledgments

This project uses open-source code from the following projects. We are deeply grateful for all the work they've put into developing this software, their commitment to open-source software, and for licensing the work using a permissive license which allowed us to incorporate their work:

  • Helios for a major part of the light client verification/processing.
  • Polytope's sync_committee_primitives for the Goerli and mainnet constants as well as some primitive beacon types.
  • ethers.rs and alloy.rs for communicating with Ethereum and for encoding/decoding execution messages.
  • ssz_rs for SSZ serialization/deserialization.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published