Skip to content

celestiaorg/celestia-zkevm-ibc-demo

Repository files navigation

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. Start a local development environment

    docker compose up --detach

    [!TIP]: Double check that all 5 containers are started. Currently: the bridge might fail because it depends on the validator being available. If this happens, wait until the validator is available then start the bridge and beacond node again.

  4. Copy the .env file into ./solidity-ibc-eureka

    cp .env.example .solidity-ibc-eureka/.env
  5. Deploy the Tendermint light client smart contract on the EVM roll-up. Note: this may not be necessary.

    cd solidity-ibc-eureka && just deploy-sp1-ics07
  6. Deploy smart contracts on the EVM roll-up.

    make deploy-contracts

    [!TIP]: While deploying contracts, if you hit an error like: [Revert] vm.envString: environment variable "E2E_FAUCET_ADDRESS" not found then comment out the lines that use that environment variable from ./solidity-ibc-eureka/E2ETestDeploy.s.sol.

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

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •