https://github.com/jsign/zisk-eth-distributed
Ethereum ZisK distributed block proving
https://github.com/jsign/zisk-eth-distributed
distributed-prover ethereum zisk
Last synced: 4 months ago
JSON representation
Ethereum ZisK distributed block proving
- Host: GitHub
- URL: https://github.com/jsign/zisk-eth-distributed
- Owner: jsign
- License: mit
- Created: 2025-10-12T22:57:40.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-17T00:00:20.000Z (8 months ago)
- Last Synced: 2025-10-20T06:49:23.520Z (8 months ago)
- Topics: distributed-prover, ethereum, zisk
- Language: Rust
- Homepage:
- Size: 2.59 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zisk-eth-distributed
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.

### Communication Flow
1. Workers connect to the coordinator via gRPC bidirectional streaming
2. Coordinator registers workers and tracks their status
3. When proof generation is requested, the coordinator broadcasts guest inputs to all workers
4. Workers write inputs to local storage and begin proof generation
5. The coordinator triggers the upstream Zisk coordinator to orchestrate the distributed proof only after all workers confirm they have the inputs.
6. 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
```
## Quick Start
### Running the Coordinator
```bash
cargo run --release -p eth-coordinator -- server
```
The coordinator will start:
- gRPC server on `[::1]:50052`
- HTTP/WebSocket server on `127.0.0.1:3000`
- Web dashboard available at `http://localhost:3000`
### Running a Worker
```bash
./scripts/run-worker.sh
```
This 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:
```bash
./scripts/run-worker.sh --gpu
```
On first run, the worker will:
1. Prompt for your worker name (used for identification in the dashboard)
2. Download and extract proving keys to `~/.zisk-eth-distributed/provingKey/`
3. Connect to the coordinator and start processing proofs
### Submitting Proofs
To submit a proof request to the coordinator:
```bash
cargo run -p eth-coordinator -- prove-block --grpc-addr http://[::1]:50052
```
## Requirements
- Rust 1.88.0 or later (enforced via `rust-toolchain.toml`)
- Docker
- For GPU workers: CUDA-compatible GPU and drivers
## License
MIT