Skip to content

v0.6.1 — the archive-node bridge

Choose a tag to compare

@defenwycke defenwycke released this 23 Jul 16:41

Hazync v0.6.1 — the archive-node bridge

METHOD_ID is unchanged: 601d7ca298f32c54137fdb395d0debd31e95e4f084615fa710e5db5c785f05e6. The guest is byte-for-byte the v0.6.0 guest — this release only changes the host (how witnesses are produced and served), so every proof made against v0.6.0 still verifies, and docker build -f reproduce/Dockerfile . still yields exactly this id.

This release kills the quadratic replay that kept the board pinned near genesis: a persistent archive node now drives one resident Utreexo forest forward over the chain and emits a ready-made witness per block, so a prover proves a block with no replay — O(1) per block instead of O(N).

What changed, file by file

  • prover/host/src/main.rs — new host bridge: drives one resident forest forward over the chain from a local bitcoind, emitting a per-block bundle (in-boundary + the real root_prev + inclusion proofs). Checkpoints the forest + UTXO-metadata map + MTP/difficulty carry and resumes mid-chain instead of rebuilding from genesis; advances only to tip-100 and then follows the tip, so the resident forest never enters the re-org zone. New host prove-range-bridge <n> proves a block straight from its bundle (mode 6, no replay); the receipt is byte-identical to the replay path's. verify-any and the guest are untouched.
  • coordinator/server.py/api/witness/<n> now serves the archive bundle from the bridge directory (local read, no cross-box copy), falling back to the legacy per-block witness. Genesis seed: a [1..hi] receipt is accepted for a claimed [0..hi] range (block 0 is unprovable) and recorded as the proven [1..hi] so the frontier chains from genesis.
  • coordinator/hazync (CLI) — hazync run uses the bridge path (prove-range-bridge, O(1)/block) when the coordinator serves bundles for the whole range, and falls back to genesis replay otherwise.
  • coordinator/deploy/hazync-bridge.service (the persistent bridge), the coordinator unit wired to the bundle directory, and migrate-coordinator.sh (WAL-safe DB + receipts migration for co-locating the coordinator beside the bridge).
  • .github/workflows/release-sign.yml — signs whatever hazync-host-* binaries a release carries (CPU-only or CPU+CUDA) rather than a hardcoded pair.
  • README.md — leads with the moat (Bitcoin Core's own consensus code proven in a zkVM) and an honest "proving the chain, live" status.

Binaries

  • hazync-host-x86_64-linux-gnu — CPU build. Use this to verify proofs (./host verify-any proof.bin); no GPU needed.
  • hazync-host-x86_64-linux-gnu-cuda — CUDA build for GPU proving. Same guest METHOD_ID.

Both are the reproducible guest (reproduce/Dockerfile). SHA256SUMS + SHA256SUMS.asc are PGP-signed with the maintainer key (fingerprint in SECURITY.md).