Release Notes - v0.203.0
v0.203.0
Section titled “v0.203.0”Title: Expand compatibility and strengthen validation
Version: v0.203.0
This release expands typed query and accounting APIs, improves decoding and hash reliability, and strengthens validation across certificates, addresses, headers, signatures, and script purposes.
💪 Improvements
Section titled “💪 Improvements”-
Improved LocalStateQuery DRep stake distribution results:
DRepStakeDistrEntryandDRepStakeDistrResultnow return typed results with strict CBOR wrapper and map validation, duplicate rejection, canonical encoding, and typed query coverage. Callers must remove the extra decode layer previously required for raw CBOR results. -
Ensured non-pipelined BlockFetch shutdown completion: When shutdown terminates a started
GetBlockRangerequest, the request invokesBatchDoneFuncexactly once. -
Preserved unknown Byron address attributes: Unparsed attributes retain their original bytes and round trip without data loss.
-
Expanded Go test matrix status names: Status names now include the Go version, platform, and architecture, making results easier to identify.
-
Stabilized 32-bit decoding: Genesis and LocalStateQuery decoding now safely use fixed-width integers on
GOARCH=386, with updated exported field types where required. -
Recomputed LeiosHash values from current CBOR: Current CBOR now determines each hash, preventing stale results and data races after CBOR changes.
-
Deduplicated transaction info signatories:
txInfoSignatoriesno longer contains duplicate entries.
⚠️ Breaking changes and migration
Section titled “⚠️ Breaking changes and migration”-
Widened operational certificate and KES period values: Sequence numbers, KES periods, and validation inputs now use
uint64instead ofuint32. Consumers ofOpCertExtractorandValidateHeaderInputmust update their types accordingly. -
Removed the Dijkstra decode-time transaction size limit: Dijkstra decoding no longer applies the hard-coded 16 KiB limit, while UTxO validation continues to enforce
max_tx_size. The library preserves oversized Dijkstra classification, bounds malformed component-array decoding, and removesdijkstra.MaxTxSize. -
Decoded MIR reward deltas as signed values: MIR deltas now use
*big.Int, negative deltas follow protocol-version validation, andRewardsmap values change fromuint64to*big.Int. Consumers must update code that reads or constructs these map values. -
Retained pool reward-account credential types: Encoding now requires canonical 29-byte reward-account metadata. Programmatically or JSON-created certificates must call
SetRewardAccountCredentialbeforeMarshalCBOR. -
Applied strict Ed25519 verification outside Byron: Non-Byron signatures now undergo strict verification, while Byron keeps its permissive verification behavior.
-
Rejected null block headers: Header decoding now rejects null headers. Controlled internal decoding can opt into
SkipHeaderValidationwhen that behavior is explicitly required. -
Required redeemers for every script purpose: Validation now requires redeemers for minting, certifying, rewarding, voting, proposing, and Dijkstra guarding; missing redeemers fail validation.
Recommended Network Compatibility ⚠️
Section titled “Recommended Network Compatibility ⚠️”| Network | Compatible |
|---|---|
| mainnet | ⛔ |
| preprod-testnet | ✅ |
| preview-testnet | ✅ |
| musashi | ✅ |
Release: v0.203.0
Compare: v0.202.10…v0.203.0
Docs authored by Doc Holiday