Dugite v2.0.6
dugite v2.0.6
Ledger byte-exactness and genesis-mode bootstrap release. Four fixes, each
root-caused against a confirmed mainnet/preprod artifact and the Haskell
reference, validated live, and pinned with regression tests.
Fixes
-
node: genesis-mode reaches the tip when bootstrapped from a Mithril
snapshot (closes #757). A--consensus-mode genesisnode booted from a
Mithril snapshot froze at exactlysnapshot_tip + k: with zero big-ledger
peers at startup (nopeerSnapshotFile; ledger discovery deferred ~5 min)
the GSM stayed in PreSyncing, where LoE caps selection at k. Oracle-confirmed
Haskell semantics (isHaaSatisfiedunderUseBootstrapPeersis satisfied by
trusted bootstrap peers, and a recent/Mithril-certified selection is past the
from-genesis-vulnerable regime where GDD alone guards the bounded gap): the
GSM now suppresses the Syncing→PreSyncing HAA-loss regression while the tip is
recent, only regressing if HAA is lost AND the tip is stale. Cold-start from
genesis still requires full HAA; Praos is byte-identical. Proven live on
preprod: a node frozen atsnapshot_tip + kunstuck and reached the live
tip in Syncing. -
ledger: redeemers required only for Plutus-script purposes, not native
(closes #758). A confirmed Babbage tx spending a native-multisig-locked input
was falsely rejected withMissingSpendRedeemer— native scripts have no
redeemers. Haskell'shasExactSetOfRedeemersfiltersredeemersNeededto
Plutus scripts only. Now all purposes (Spend/Reward/Cert/Vote) gate the
redeemer requirement — and the extra-redeemer check — on the credential's
locking script resolving to Plutus, matching the reference. Pinned with a
real on-chain tx plus native/Plutus positive+negative controls per purpose. -
ledger: duplicate-input rejection only at PV≥9 (closes #759). A confirmed
Babbage tx whose spend-inputs array carried the sameTxIntwice was falsely
rejected. Haskell'sdecodeSetat PV<9 routes throughSet.fromListand
silently drops the duplicate (noDuplicateInputpredicate exists pre-Conway);
only PV≥9 usesdecodeSetEnforceNoDuplicates. The check is now gated on
protocol_version_major >= 9. Conway+ rejection unchanged; pinned with the
real on-chain tx. -
ledger: pin Conway RUPD inputs survive snapshot round-trip (closes #755).
A forensic investigation traced a ~996K ADA reserves over-allocation in one
validation DB to a v2.0.2-line binary at boundary 388→389 — a state
artifact, not a live-code defect (current code verified clean across 60+
live epoch boundaries; the #736 fixes closed the pv≤6 restart-during-RUPD
window). Adds a regression test pinning that the Conway RUPD inputs
(go/bprev/ss_fee/prevPParams) survive snapshot save/restore byte-exact, so the
artifact's mechanism can never silently regress.
Validation
just check, conformance (6027/6027), an adversarial multi-agent code review
(which caught and forced corrections to the first #757 and #758 attempts), live
preprod genesis-bootstrap validation, and devnet-validate-extended (3 rounds)
all green on the tag commit.
Container Image
docker pull ghcr.io/michaeljfazio/dugite:2.0.6Available for linux/amd64 and linux/arm64.
Helm Chart
helm install dugite-relay \
oci://ghcr.io/michaeljfazio/charts/dugite-node \
--version 2.0.6 \
--set network.name=previewSee Kubernetes Deployment for the full chart reference.
Binary Downloads
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | dugite-x86_64-linux.tar.gz |
| Linux | aarch64 | dugite-aarch64-linux.tar.gz |
| macOS | x86_64 | dugite-x86_64-macos.tar.gz |
| macOS | Apple Silicon | dugite-aarch64-macos.tar.gz |
Verify checksums: sha256sum -c SHA256SUMS.txt
Full Changelog: v2.0.5...v2.0.6