Skip to content

v0.7.2 — in-block spend detection by leaf (host fix)

Latest

Choose a tag to compare

@defenwycke defenwycke released this 25 Jul 09:51
f0fd2cc

v0.7.2 — in-block spend detection by leaf, not txid (host fix)

METHOD_ID unchanged: 36a0415d5763ed62e71c44915d36caa34ae840cfd1051587bce1de27be0dd7f5. This is a host-only fix — proofs made with v0.7.0/v0.7.1 still verify, and the guest image is byte-identical.

What changed

  • Host: in-block spend cancellation (H1) now keyed on the coin leaf, not its txid — in both build_full (the check-full validator) and build_block_carried (the production bridge). The guest has always detected in-block-created coins by leaf membership in the block's created-output set; the host builders used txid membership. These diverge on a pre-BIP34 coinbase-txid collision — a block that spends an older coin whose funding transaction shares a txid with a transaction in the spending block. Because the leaf carries the coin's real (older) creation height, the guest correctly treats such a coin as external, while the txid heuristic falsely cancelled it. Effects fixed:
    • check-full reported root_matches=false on any busy block with in-block spends (e.g. segwit block 500000);
    • the bridge could emit a witness the guest rejects, stalling a genesis→tip proof at the first block that spends a colliding-txid coin — a liveness bug on the full-chain path.
  • Both builders now recompute the block's created-output leaf set (coinbase + every transaction, unspendable outputs skipped, using the block's creation median-time-past) and detect in-block spends by leaf — the guest's exact rule.

Validation

  • Busy segwit block 500000 (thousands of in-block spends) now validates with every consensus flag true (archive node, execute mode).
  • Pre-BIP34 blocks 130000 / 140000 validate; the COV-1 / COV-2 / SEC-2 reject-path suite passes. reproducible-image-id CI confirms 36a0415d is unchanged.

Assets

  • hazync-host-x86_64-linux-gnu — CPU build, reproducible at 36a0415d (glibc 2.34+ (Ubuntu 22.04+, Debian 12+)). Verify: docker build -f reproduce/Dockerfile -t hazync-repro . && docker run --rm hazync-repro prints 36a0415d….
  • hazync-host-x86_64-linux-gnu-cuda — CUDA build (glibc 2.34), multi-architecture: SASS for sm_80/86/89/90 (Ampere, Ada, Hopper — A100, RTX 30xx/40xx, L4/L40/L40S, H100) + compute_90 PTX for forward-compat to newer GPUs. Reproducible at 36a0415d; needs the CUDA 12.6 runtime. Verified proving on an L40S in ~3.3s.

Verify

SHA256SUMS.txt is PGP-signed by the maintainer key (fingerprint 777FE81F8CC077FD3D08055E852C2B3190F5B928): gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt.