Quickstart
This guide takes you from a fresh checkout of Venus to a fully verified zk-STARK proof of an Ethereum mainnet block, using the bundled zec-reth guest. The whole flow is driven by the top-level Makefile.
Prerequisites
You need the system dependencies described in Installation -- Rust, Node.js 20+, and the platform-specific packages. For GPU proving you also need the CUDA Toolkit and a compatible NVIDIA driver.
1. Clone Venus
2. End-to-End: make all
The fastest path is the default Makefile target, which runs setup, prove, and verify in sequence with the bundled mainnet input:
This expands into:
make setup # build, install toolchain, generate proving key, build guest, ROM setup, compile-key
make prove # generate the proof for the bundled input
make verify # verify the generated proof
The first run includes the proving-key generation step, which takes approximately 30-45 minutes depending on the machine. Subsequent runs skip key generation and reuse ./build/provingKey.
What gets built
| Path | Produced by | Description |
|---|---|---|
target/release/cargo-zisk |
make build |
Venus CLI binary (built with --features gpu). |
build/provingKey/ |
make generate-key |
Proving key generated from the bundled PIL. |
guest/zisk-eth-client/bin/guests/stateless-validator-reth/target/.../zec-reth |
make build-guest |
Default guest ELF (zec-reth, an Ethereum stateless validator). |
tmp/vadcop_final_proof.bin |
make prove |
Final aggregated zk-STARK proof. |
If everything succeeds, make verify finishes with a line similar to:
3. Choose a Different Input
The default input is guest/zisk-eth-client/bin/guests/stateless-validator-reth/inputs/mainnet_24628607_66_7_zec_reth.bin. Override it with the INPUT variable:
4. Use the Hints Stream
The Makefile exposes a hints workflow via USE_HINTS=true. With hints enabled, the hot precompile operations are precomputed during a native run of the guest and streamed back into the prover:
Internally, this:
- Builds the guest natively with
RUSTFLAGS='--cfg zisk_hints'(make build-guest-native). - Runs the native guest to emit
hints.binintoguest/.../hints/<block>_hints.bin(make generate-hints). - Re-runs
rom-setupwith the-nflag to enable hint support in the ROM. - Calls
cargo-zisk provewith-H <hints-file>instead of-i <input-file>.
See Hints Stream for the full protocol and how to add hints to your own guest.
5. Inspecting the Proof
Once make verify succeeds, the proof artefacts live under tmp/:
You can re-run verification at any time without regenerating the proof:
6. Cleanup
make clean # remove ./target, ./tmp, and guest build artifacts
make purge # also remove ./build/provingKey, ./pil/zisk.pilout, and node_modules
Next Steps
- Write your own guest program: Writing Programs.
- Accelerate cryptographic primitives: Precompiles.
- Scale proof generation across machines: Distributed Execution.
- Deep-dive into the hints protocol: Hints Stream.