/zisk-eth-distributed

Ethereum ZisK distributed block proving

Primary LanguageRustMIT LicenseMIT

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.

Image

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

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

./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:

./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:

cargo run -p eth-coordinator -- prove-block <guest_input_file> --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