Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 2.34 KB

README.md

File metadata and controls

74 lines (53 loc) · 2.34 KB

ZK-EVM X Celestia Token Transfer Demo

Warning

This repository is a work in progress and under active development.

This repo exists to showcase transferring tokens to and from a Cosmos SDK chain (representing Celestia) and a ZK proveable EVM using the IBC-Eureka solidity contracts. The diagram below is meant to detail the components involved and, at a high level, how they interact with one another.

mvp-zk-accounts

For more information refer to the architecture document. Note that the design is subject to change.

Local Development

Prerequisites

  1. Install Docker
  2. Install Rust
  3. Install Foundry
  4. Install Bun
  5. Install Just
  6. Install SP1 (for end-to-end tests)

Steps

  1. Fork this repo and clone it

  2. Set up the git submodule for solidity-ibc-eureka

    git submodule init
    git submodule update
  3. Install contract dependencies and the SP1 Tendermint light client operator binary from solidity-ibc-eureka.

    make install-dependencies
  4. Start a local development environment

    make start
  5. Set up IBC clients and channels:

    • Generate the contracts/script/genesis.json file which contains the initialization parameters for the SP1ICS07Tendermint light client contract.
    • Initialize Groth16 light client on simapp.
    • Create a channel on simapp.
    • Deploy IBC contracts on the Reth node.
    • Create a channel on the Reth node.
    • Create a counterparty on the Reth node which points to the groth16 client ID on simapp.
    • Create a counterparty on the simapp which points to the tendermint client ID on Reth.
    make setup

Helpful commands

# See the running containers
docker ps

# You can view the logs from a running container via Docker UI or:
docker logs beacond
docker logs celestia-network-bridge
docker logs celestia-network-validator
docker logs simapp-validator
docker logs reth

# State is persisted in the .tmp directory. Remove .tmp to start fresh:
rm -rf .tmp