This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Hyperlane E2E Tests is an end-to-end testing infrastructure for cross-chain messaging using Hyperlane. It runs two blockchain chains (Solana/Sealevel with domain ID 1337, and Sovereign Rollup with domain ID 5555) with Hyperlane validators and relayers in a Docker environment.
# Start all services (chains + agents)
make start
# Start with observability stack (Grafana, Prometheus, Loki, Tempo)
WITH_OBSERVABILITY=1 make start
# Stop all services
make stop
# Clean test data (required before fresh start)
make clean
# Full reset
make clean start- Solana RPC: http://localhost:8899
- Sovereign Rollup RPC: http://localhost:12346
- Sovereign Swagger UI: http://localhost:12346/swagger-ui
- Hyperlane Relayer metrics: http://localhost:9091/metrics
- Hyperlane Validator (Solana) metrics: http://localhost:9092/metrics
- Hyperlane Validator (Sovereign) metrics: http://localhost:9093/metrics
- Grafana (if observability enabled): http://localhost:3000 (admin/admin123)
┌─────────────────────────────────────────────────────────────┐
│ Docker Compose Environment │
├─────────────────────────────────────────────────────────────┤
│ chains/solana/ │ chains/sovereign-solana/ │
│ - Solana test validator │ - Sovereign SDK rollup (Rust) │
│ - Hyperlane programs │ - Mock DA layer │
│ - Domain ID: 1337 │ - Domain ID: 5555 │
├─────────────────────────────────────────────────────────────┤
│ agents/ │
│ - Relayer (routes messages between chains) │
│ - Validator for Sealevel (signs checkpoints) │
│ - Validator for Sovereign (signs checkpoints) │
├─────────────────────────────────────────────────────────────┤
│ tools/sov-observability/ (optional) │
│ Grafana, Prometheus, Loki, Tempo, InfluxDB, Telegraf │
└─────────────────────────────────────────────────────────────┘
chains/solana/- Solana validator with Hyperlane programs, init.sh deploys contractschains/sovereign-solana/- Sovereign rollup implementationrollup/crates/rollup/- Main rollup binaryrollup/crates/stf/- State Transition Function with Hyperlane moduleindex.ts- TypeScript initialization for warp routes and IGP
agents/- Hyperlane relayer and validator configurationsconfig.json- Chain definitions, RPC endpoints, program addresses
tools/sov-observability/- Monitoring stack with its own Makefileregistry/chains/metadata.yaml- Chain domain IDs and metadata
| Component | Technology |
|---|---|
| Sovereign Rollup | Rust (Sovereign SDK), Cargo workspace |
| Solana Chain | solana-test-validator with Hyperlane Anchor programs |
| Initialization | Bun + TypeScript (chains/sovereign-solana/) |
| Orchestration | Docker Compose |
| Observability | Grafana, Prometheus, Loki, Tempo |
The rollup is a Cargo workspace in chains/sovereign-solana/rollup/:
cd chains/sovereign-solana/rollup
# Build the rollup
cargo build
# Build release
cargo build --release
# Workspace members: rollup, stf, value-setter example, acceptance-test, soak-testRust toolchain: 1.88+ (see rust-toolchain.toml)
TypeScript initialization in chains/sovereign-solana/:
cd chains/sovereign-solana
bun install
bun run index.ts # Registers warp routes and configures IGPagents/config.json contains chain definitions including:
- RPC URLs (internal Docker hostnames)
- Mailbox and program addresses
- Signer configurations
Validators use different private keys specified in docker-compose environment variables.
Services have built-in Docker health checks:
- Solana:
solana cluster-version -u localhost - Sovereign:
curl http://0.0.0.0:12346/healthcheck
chains/sovereign-solana/rollup/test-data/docker- Sovereign rollup stateagents/docker-data/- Validator signatures and databases
Both are removed by make clean.