Warning
This repository is a work in progress and under active development.
This repo exists to showcase transferring tokens between SimApp (a Cosmos SDK chain representing Celestia) and a ZK proveable EVM via IBC V2 (formerly known as IBC Eureka) and the IBC V2 solidity contracts. The diagram below is meant to detail the components involved and, at a high level, how they interact with one another.
For more information refer to the architecture. Note that the design is subject to change.
SP1 supports generating proofs in mock mode or network mode. By default, mock mode is used which is faster for testing and development purposes. Network mode is used for production purposes to generate real proofs. To use network mode, modify your .env
file:
SP1_PROVER=network
NETWORK_PRIVATE_KEY="PRIVATE_KEY" to the SP1 prover network private key from Celestia 1Password
-
Fork this repo and clone it
-
Set up the git submodule for
solidity-ibc-eureka
git submodule init git submodule update
-
Create the
.env
file in this repocp .env.example .env
-
Install contract dependencies and the SP1 Tendermint light client operator binary from solidity-ibc-eureka.
make install-dependencies
-
Run the demo
# This runs make start, setup, and transfer make demo
See ARCHITECTURE.md for more information.
See CONTRIBUTING.md for more information.