solana_kit_transactions 0.9.3 copy "solana_kit_transactions: ^0.9.3" to clipboard
solana_kit_transactions: ^0.9.3 copied to clipboard

Transaction compilation and signing for the Solana Kit Dart SDK.

Changelog #

All notable changes to this project will be documented in this file.

This changelog is managed by monochange.

0.9.3 - 2026-09-12 #

Changed #

  • No package-specific changes were recorded; solana_kit_transactions was updated to 0.9.3 as part of group main.

0.9.2 - 2026-09-06 #

🐛 Fixed #

Protect transaction signing integrity

Freeze transaction message and signature buffers so retained references cannot change reviewed signing payloads. Decode v1 message-first transaction envelopes with the correct signature ordering. Preserve v1 configuration when attaching signers and honor fee payer address replacements without retaining the old fee payer signer.

Owner: @ifiokjr · Review: PR #238

0.9.1 - 2026-08-30 #

Changed #

  • No package-specific changes were recorded; solana_kit_transactions was updated to 0.9.1 as part of group main.

0.9.0 - 2026-08-30 #

💥 Breaking Change #

Sync upstream @solana/kit v8.1.0

Tracks upstream APIs and behavior through v8.1.0:

  • solana_kit_transaction_messages (breaking): removed the deprecated compute-unit-limit helpers fillTransactionMessageProvisoryComputeUnitLimit and estimateAndSetComputeUnitLimitFactory, matching upstream @solana/kit's removal of the deprecated @solana/kit estimation helpers (#1948). Use fillTransactionMessageProvisoryResourceLimits and estimateAndSetResourceLimitsFactory instead, which additionally reserve and set the loaded accounts data size limit for version 1 transactions. setTransactionMessageComputeUnitLimit and setTransactionMessageConfig now reject compute unit limits the runtime will not honor — an integer outside [0, 1400000] — throwing SolanaErrorCode.transactionComputeUnitLimitOutOfRange, and reject invalid heap sizes — not a multiple of 1024 bytes in [32768, 262144] — throwing SolanaErrorCode.transactionInvalidHeapSize (upstream #1972). Added the upstream heap-size.ts module as getTransactionMessageHeapSize/setTransactionMessageHeapSize with the same validation, and resource_limit_validation.dart with assertIsValidComputeUnitLimit/assertIsValidHeapSize, minHeapSize, maxHeapSize, and heapSizeMultipleOf. Decoding is unaffected: decompileTransactionMessage still returns messages carrying out-of-range values.

    Migration:

    • fillTransactionMessageProvisoryComputeUnitLimit(m)fillTransactionMessageProvisoryResourceLimits(m).
    • estimateAndSetComputeUnitLimitFactory(estimate)estimateAndSetResourceLimitsFactory(estimateResourceLimitsFactory(estimate)).
  • solana_kit_transactions (breaking): removed the fixed-size constants transactionPacketSize, transactionPacketHeader, and transactionSizeLimit, matching upstream's removal of TRANSACTION_PACKET_SIZE, TRANSACTION_PACKET_HEADER, and TRANSACTION_SIZE_LIMIT (#1948). Use getTransactionSizeLimit to derive the limit for a specific transaction, or the per-version constants legacyTransactionSizeLimit (1232) and v1TransactionSizeLimit (4096).

    Migration: TRANSACTION_SIZE_LIMIT - getTransactionSize(t)getTransactionSizeLimit(t) - getTransactionSize(t).

  • solana_kit_errors: added the failedToSignTransaction (13) and failedToSignTransactions (14) error codes with upstream messages, plus the transaction codes transactionComputeUnitLimitOutOfRange (5663039) and transactionInvalidHeapSize (5663040) (upstream #1902, #1972).

  • solana_kit_instruction_plans: added createFailedToSendTransactionError, createFailedToSendTransactionsError, createFailedToSignTransactionError, createFailedToSignTransactionsError, and createFailedToExecuteTransactionPlanError, mirroring upstream @solana/instruction-plans' transaction-plan-errors.ts (#1902, #1434). The signing factories carry the same non-enumerable transactionPlanResult and optional logs/preflightData context as their sending counterparts, but the message includes no submission-location indicator because signing never submits. The executor now throws through createFailedToExecuteTransactionPlanError.

  • solana_kit: added the ClientWithTransactionSending and ClientWithTransactionSigning client interfaces, mirroring upstream @solana/plugin-interfaces (#1899). signTransaction/signTransactions accept the same flexible inputs as their sending counterparts and return signed transactions without submitting them. Sending results guarantee a signature-bearing context; signing makes no default guarantee about the context, matching the upstream TContext parameterization (adapted to Dart's map-based result contexts).

  • solana_kit_rpc_transformers (breaking): removed getBigIntDowncastRequestTransformer, matching upstream #1948. It was no longer used by the default Solana RPC request transformer: the Solana RPC transport serializes BigInt values losslessly as large integer literals via stringifyJsonWithBigInts, and Agave parses JSON integers across the full u64 range without precision loss, so downcasting BigInts to (potentially lossy) ints is unnecessary. getDefaultRequestTransformerForSolanaRpc no longer downcasts; if you still need this behavior, recreate it with getTreeWalkerRequestTransformer and a visitor that replaces BigInt nodes with int values.

  • solana_kit_rpc_transformers: the numeric allow-list keeps transactionConfig.computeUnitLimit, transactionConfig.heapSize, and transactionConfig.loadedAccountsDataSizeLimit from version 1 transaction responses as numbers instead of upcasting them to BigInt (upstream #1951).

  • Documentation now tracks @solana/kit v8.1.0, and the reference pin in config/reference-repos.json moved to bb54243d8a57 (tag v8.1.0).

Migration example:

// Before (removed):
// final estimate = estimateComputeUnitLimitFactory(rpc);
// var message = await estimateAndSetComputeUnitLimitFactory(estimate)(message);
// final freeBytes = transactionSizeLimit - getTransactionSize(transaction);

// After:
final estimate = estimateResourceLimitsFactory(rpc);
var message = await estimateAndSetResourceLimitsFactory(estimate)(message);
final freeBytes =
    getTransactionSizeLimit(transaction) - getTransactionSize(transaction);

Owner: @ifiokjr · Review: PR #225 · Related issues: #1899, #1902, #1910, #1913, #1948, #1951, #1957, #1970, #1971, #1972, #1979, #220

📖 Documentation #

Unslop package docs and code comments

Rewrote every package README from a reader's perspective with verified, compilable examples, removed AI-tell phrasing from docs and code comments, and added a test that analyzes every Dart block in Markdown so examples cannot drift from the API.

Owner: @ifiokjr · Review: PR #223

0.8.0 - 2026-08-19 #

Changed #

  • No package-specific changes were recorded; solana_kit_transactions was updated to 0.8.0 as part of group main.

0.7.0 - 2026-08-18 #

📖 Documentation #

Reformat package docs

Docs have been reformatted to remove line wrapping.

Owner: @ifiokjr · Review: PR #212

0.6.0 - 2026-08-12 #

📖 Documentation #

Centralize package version documentation

Centralize package version metadata in versions.json and render package installation snippets from the shared MDT data source. Published package behavior is unchanged.

Owner: @ifiokjr · Review: PR #188

Point package README website badges at package docs

Updated package README website badges to link directly to each package's docs catalog entry and added missing package entries to the documentation website catalog/index.

Owner: @ifiokjr · Review: PR #192

0.5.0 - 2026-06-01 #

💥 Breaking Change #

Raise minimum Dart SDK to 3.12

Raise the minimum supported Dart SDK constraint to ^3.12.0 across public Dart packages.

This is a breaking change because consumers must use Dart 3.12 or newer. Flutter consumers must use a Flutter SDK that bundles Dart 3.12 or newer.

environment:
  sdk: ^3.12.0

Owner: Ifiok Jr. · Introduced in: 32d5d36

🐛 Fixed #

Add well-known program, sysvar, SPL, Metaplex, and token mint address constants

Add centralized address constants to solana_kit_addresses so that any package can reference well-known on-chain addresses without importing the full domain package or hardcoding strings.

New exports:

  • program_addresses.dart — All Agave/Solana native program addresses (system, ALT, BPF loaders, compute budget, config, stake, vote, etc.)
  • sysvar_addresses.dart — All sysvar addresses (clock, rent, recentBlockhashes, fees, rewards, etc.) plus the sysvar owner address
  • spl_addresses.dart — SPL program addresses (Token, Token-2022, ATA, Memo, Memo Legacy)
  • metaplex_addresses.dart — Metaplex program addresses (Token Metadata, Bubblegum, Auth Rules, Core, SPL Account Compression, Noop)
  • well_known_addresses.dart — Well-known token mint addresses (Wrapped SOL, USDC, USDT)

Also re-exports from solana_kit_address (Address type, codecs, comparator, PublicKey) and solana_kit_address_constants (well-known address constants).

Owner: Ifiok Jr. · Introduced in: 3f596ef · Last updated in: 4643648

🧪 Testing #

Improve test coverage to 95%+ across all packages

Added 500+ tests covering equality/hashCode/toString, codec edge cases, error paths, and constructor variants. Removed dead code in fast_stable_stringify. Fixed concurrent modification bug in subscribable.

Owner: Ifiok Jr. · Introduced in: 48216f9 · Last updated in: b7f5419

0.4.0 - 2026-05-30 #

📝 Changed #

Restructure release groups

Move program-specific and domain-specific packages out of the main release group into standalone release schedules with independent versioning. Core SDK packages remain synchronized in the main group.

Owner: Ifiok Jr. · Introduced in: fccec7f · Last updated in: 93b3cd3

🐛 Fixed #

Add per-package coverage badges

Add codecov flags and per-package coverage badges to all package READMEs.

Owner: Ifiok Jr. · Introduced in: bed1b1f · Last updated in: 93b3cd3

Add version-aware transaction size helpers and constants

Owner: Ifiok Jr. · Introduced in: 9ee2e44 · Last updated in: a526ea3