Prerequisites
- Docker and Docker Compose
- Foundry (
forgeandcast) and bun - jq
Run the demo
Clone the repository and navigate to the demo directory:- Cosmos to EVM transfer: burns IFT tokens on the Cosmos chain and mints the equivalent ERC20 balance on Besu.
- EVM to Cosmos transfer: burns the ERC20 on Besu and mints IFT tokens back on the Cosmos chain.
- Packet tracking: polls the relayer API by transaction hash and prints the transfer state as it progresses.
- Timeout path: sends a packet with a short timeout, pauses the relayer to let it expire, then resumes so the relayer can submit a
MsgTimeout. The source chain refunds the sender. - Observability: samples live Prometheus metrics from the relayer and prints recent log output from the relayer and attestors.
logs/.
What runs
Once complete, these containers are running:| Container | Role |
|---|---|
cosmos | Cosmos sandbox chain (CometBFT RPC on port 26657) |
besu | Hyperledger Besu EVM node (JSON-RPC on port 8545) |
attestor | Watches Besu, signs EVM state for the Cosmos light client |
attestor-cosmos | Watches Cosmos, signs Cosmos state for the EVM light client |
proof-api | Aggregates attestor signatures into relay-ready proofs |
relayer | Submits RecvPacket and MsgTimeout transactions on both chains |
postgres | Relayer packet state persistence |