An Ethereum proving cluster built on top of Zisk distributed proving.
This system simplifies raw Zisk distributed proving by:
- Automating all setup for Zisk required components via Docker. Both for CPU and GPU provers.
- Automatic compiling of Ethereum stateless block validator ELF.
- Send guest inputs via network instead of assuming they're available in workers filesystem.
- Minimal-ish web dashboard for monitoring.
Remember that Zisk distributed proving assumes workers are trusted. This means this setup might be interesting for private clusters (e.g., groups of friends, companies, cloud based workers, etc).
This is a proof of concept and not production ready. Use at your own risk.
- Workers connect to the coordinator via gRPC bidirectional streaming
- Coordinator registers workers and tracks their status
- When proof generation is requested, the coordinator broadcasts guest inputs to all workers
- Workers write inputs to local storage and begin proof generation
- The coordinator triggers the upstream Zisk coordinator to orchestrate the distributed proof only after all workers confirm they have the inputs.
- Real-time worker status updates are pushed to the web dashboard via WebSocket
The proofs are saved in the proofs folder:
$ tree proofs
proofs
├── proof_01f3b4a1-0787-47bd-9d09-328fa418eb8c.fri
└── proof_01f3b4a1-0787-47bd-9d09-328fa418eb8c.fri.compressed
cargo run --release -p eth-coordinator -- serverThe coordinator will start:
- gRPC server on
[::1]:50052 - HTTP/WebSocket server on
127.0.0.1:3000 - Web dashboard available at
http://localhost:3000
./scripts/run-worker.shThis script automates:
- Worker configuration setup
- Proving key download (~large files, ~GB in size)
- Worker startup and connection to coordinator
GPU Support: To enable GPU acceleration for proof generation, add the --gpu flag:
./scripts/run-worker.sh --gpuOn first run, the worker will:
- Prompt for your worker name (used for identification in the dashboard)
- Download and extract proving keys to
~/.zisk-eth-distributed/provingKey/ - Connect to the coordinator and start processing proofs
To submit a proof request to the coordinator:
cargo run -p eth-coordinator -- prove-block <guest_input_file> --grpc-addr http://[::1]:50052- Rust 1.88.0 or later (enforced via
rust-toolchain.toml) - Docker
- For GPU workers: CUDA-compatible GPU and drivers
MIT
