Skip to content

Dugite v2.0.6

Choose a tag to compare

@github-actions github-actions released this 12 Jun 21:26
· 39 commits to main since this release

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 genesis node booted from a
    Mithril snapshot froze at exactly snapshot_tip + k: with zero big-ledger
    peers at startup (no peerSnapshotFile; ledger discovery deferred ~5 min)
    the GSM stayed in PreSyncing, where LoE caps selection at k. Oracle-confirmed
    Haskell semantics (isHaaSatisfied under UseBootstrapPeers is 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 at snapshot_tip + k unstuck 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 with MissingSpendRedeemer — native scripts have no
    redeemers. Haskell's hasExactSetOfRedeemers filters redeemersNeeded to
    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 same TxIn twice was falsely
    rejected. Haskell's decodeSet at PV<9 routes through Set.fromList and
    silently drops the duplicate (no DuplicateInput predicate exists pre-Conway);
    only PV≥9 uses decodeSetEnforceNoDuplicates. 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.6

Available 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=preview

See 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