Unify membership checks (#2619)
Unify membership checks via BLS accumulator
Replaces the three separate UTxO hash fields (utxoHash, alphaUTxOHash,
omegaUTxOHash) used in Close/Contest redeemers and snapshot signing with
a single accumulatorHash derived from the BLS KZG accumulator. Since the
accumulator already commits to the full UTxO set (utxo ∪ alpha ∪ omega),
the SHA-256 hashes are redundant.
Key changes:
- Snapshot signing tuple shrinks from 7 fields to 4: (headId, version,
snapshotNumber, accumulatorHash)
- Full fanout now verifies outputs via KZG membership proof (same path
as partial fanout) instead of hash comparison; Fanout redeemer gains
proof, crsRef and numberOfFanoutOutputs fields
- Partial fanout chunk size is determined dynamically via binary search
(findLargestFitting) rather than a hardcoded constant
- isTxWithinSizeLimits added to TinyWallet for transaction size
validation in findFittingFanoutTx
- StalePartialFanoutTx error distinguishes "another node already posted
this step" from a construction failure
---
<!-- Consider each and tick it off one way or the other -->
* [x] CHANGELOG updated or not needed
* [x] Documentation updated or not needed
* [x] Haddocks updated or not needed
* [x] No new TODOs introduced or explained herafter