Skip to content

v0.5.1 — pre-release hardening + docs

Choose a tag to compare

@defenwycke defenwycke released this 19 Jul 14:23

Hazync v0.5.1 — pre-release hardening + docs

A hardening and documentation release following an adversarial pre-release audit. The zkVM guest is unchanged — METHOD_ID is still c029cee4be0a0478af667b03d95112304e574beb93e23ffd97afb93d66742059. Every existing proof still verifies, and the version-less download URLs are unchanged. This release repackages the same guest with an improved host binary and updated docs.

Download (URLs stable across releases)

  • Verify a proof (any Linux x86-64, glibc 2.39+): releases/latest/download/hazync-host-x86_64-linux-gnu
  • Prove (NVIDIA GPU + CUDA 12.6): releases/latest/download/hazync-host-x86_64-linux-gnu-cuda

What changed, by file

  • prover/host/src/main.rsverify-any now distinguishes a genuinely invalid/forged proof from a build (METHOD_ID) mismatch, using the proof's own committed guest id. A real forgery is no longer reported as a benign build mismatch. (Verification still fails closed either way — this is diagnostics, not soundness.)
  • coordinator/server.py — DoS/abuse hardening for the public coordinator: per-IP read rate-limit + a short /api/state cache; X-Forwarded-For trusted only from a configured proxy + a bounded rate map (anti-spoof / anti-memory-exhaustion); reserved-handle rejection + a pubkey takedown list; and a startup guard that refuses a public bind while verification/signatures are in a permissive mode.
  • coordinator/deploy/nginx-hazync.conf — adds limit_req/limit_conn, a 1-second /api/state micro-cache, and client_max_body_size 8m (so folded multi-block receipts don't 413 at the proxy).
  • coordinator/deploy/backup.sh (new) + RUNBOOK.md — back up both the ledger DB and the proof receipts, offsite, with a documented restore drill; plus moderation notes.
  • coordinator/hazyncrun <range> fails fast when the range is outside the served witness window, instead of claiming it and then 404-ing mid-fetch.
  • provision-vps.sh — pins Bitcoin Core v28.0 and libsecp256k1 v0.5.1 by immutable commit hash (asserts the checkout), so a re-pointed upstream tag can't silently change the guest. Source is unchanged — METHOD_ID is unaffected.
  • prover/ci_negative_tests.sh (new) + .github/workflows/adversarial.yml — wires the COV-1 (time-too-old) and COV-2 (CVE-2012-2459 merkle-mutation) consensus reject-paths into CI, so a future guest change can't silently regress them.
  • DocsREADME (glibc prereq, licence section), SECURITY.md (H2 resolved), ROADMAP.md (canonical id corrected to c029cee4), THIRD_PARTY_NOTICES.md (new), and misc currency fixes.

Soundness

Unchanged and re-verified in CI: block-170 regression, the adversarial suite (every known hole REJECTs), BIP30, the new COV negative tests, and reproducible-image-id asserting the guest builds bit-for-bit to c029cee4.