Skip to content

Release Notes - 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.

  • Improved LocalStateQuery DRep stake distribution results: DRepStakeDistrEntry and DRepStakeDistrResult now 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 GetBlockRange request, the request invokes BatchDoneFunc exactly 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: txInfoSignatories no longer contains duplicate entries.

  • Widened operational certificate and KES period values: Sequence numbers, KES periods, and validation inputs now use uint64 instead of uint32. Consumers of OpCertExtractor and ValidateHeaderInput must 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 removes dijkstra.MaxTxSize.

  • Decoded MIR reward deltas as signed values: MIR deltas now use *big.Int, negative deltas follow protocol-version validation, and Rewards map values change from uint64 to *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 SetRewardAccountCredential before MarshalCBOR.

  • 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 SkipHeaderValidation when 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.

NetworkCompatible
mainnet
preprod-testnet
preview-testnet
musashi

Release: v0.203.0

Compare: v0.202.10…v0.203.0


Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: