Skip to content

v0.6.2 — delegated proving, Phase 1

Choose a tag to compare

@dendisuhubdy dendisuhubdy released this 28 Sep 17:04
· 541 commits to main since this release

v0.6.2 — delegated proving, Phase 1

A wallet that cannot hold a tier-14 bundle proof in memory hands its witness, sealed, to a prover the wallet's owner runs, and submits the proof it gets back after checking it. Node-only: no consensus, wire (chain) or genesis change; rolling it is optional. Runs chain 16 (constraint set 7), like v0.6.1.

  • rand-prover (new binary): the prover service — keygen, pair --name <label> --own [--qr] (a randprover: link; the token is printed once, never stored), unpair, pairings, run [--accept-spend-key] [--listen 127.0.0.1:8600] [--max-parallel 1] [--max-queue 8]. Jobs are sealed end to end (ML-KEM-768 + ChaCha20-Poly1305); the witness is zeroized on drop and never logged; the listener speaks JSON-RPC prover_info|submit|status|cancel with CORS for browser wallets. A free-memory gate (5.74 GB per parallel proof + 1 GiB) refuses to start on a machine that cannot fit a proof.
  • rand-node run --prover <ADDR> hosts the same service on its own listener (never the public RPC), bound before the database opens; --prover-home, --prover-accept-spend-key, --prover-max-parallel, --prover-max-queue, --prover-skip-memory-check, --prover-cuda.
  • rand prover pair <link> | show | forget and a global --prover flag on every proving command: the wallet seals its witness to the paired prover, polls, opens the reply and refuses it unless the digest read from the proof is the one it built, the proof fits max_proof_bytes, and it verifies locally (RAND_PROVER_NO_VERIFY=1 skips the verify). A spend-key witness goes only to a prover paired as your own (own=1); http:// only on loopback, https:// anywhere.
  • Trust model (Phase 1): today's guest takes the spend key, so delegating a proof is handing over custody — pair only a machine you run. Phase 2 (split authorisation, a hard fork) removes that; see docs/prover.md and the spec.
  • Every rand-node now handles SIGTERM like ctrl-c (a graceful systemctl stop); a stop may wait for an in-flight proof (~100 s) on a node with --prover — set TimeoutStopSec=180.
  • Not in this release: fees for a prover, viewing-key jobs, Phase 2.

Docs: docs/prover.md. Companion: the clients repo's delegated-proving branch (light wallets pair a prover; the desktop app can be one).

Build: rand-node, rand, rand-prover built on Linux from this tag; SHA256SUMS attached — check it before installing.