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(thecheck-fullvalidator) andbuild_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-fullreportedroot_matches=falseon 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-2reject-path suite passes.reproducible-image-idCI confirms36a0415dis unchanged.
Assets
hazync-host-x86_64-linux-gnu— CPU build, reproducible at36a0415d(glibc 2.34+ (Ubuntu 22.04+, Debian 12+)). Verify:docker build -f reproduce/Dockerfile -t hazync-repro . && docker run --rm hazync-reproprints36a0415d….hazync-host-x86_64-linux-gnu-cuda— CUDA build (glibc 2.34), multi-architecture: SASS forsm_80/86/89/90(Ampere, Ada, Hopper — A100, RTX 30xx/40xx, L4/L40/L40S, H100) +compute_90PTX for forward-compat to newer GPUs. Reproducible at36a0415d; 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.