Skip to main content

Release Notes


v1.84.0​

🔶 Testnet | Source: GitHub Release

Sui Protocol Version in this release: 142​

#28590: Protocol version 141 counts accumulator writes, ID-only object changes and unchanged consensus objects toward the transaction effects size limit, and limits a transaction to 1024 accumulator events. The changes previously planned for version 141 move to version 142.

#28230: groth16::verify_groth16_proof now aborts with EInvalidVerifyingKey when the prepared verifying key does not contain exactly one more vk_gamma_abc element than the number of public inputs, instead of returning false.

#28241: Adds sui::clock::borrow(): &Clock to the Sui framework. It returns the Clock without it being a transaction input, at the same timestamp as a Clock passed into the same transaction, so functions can read the time without callers passing a Clock down. Available from protocol version 141 with the framework upgrade.

#28418: Adds sui::derived_object::release.

#28460: secp256r1_ecrecover now aborts with EFailToRecoverPubKey on a signature whose recovered x-coordinate r + n overflows, instead of returning a key that does not verify it. Honest signers never produce such a signature.

#28544: Refactor to enable binary limits to be configurable via protocol config rather than hardcoded constants.

#28136: Protocol version 141 enables defer_owned_object_double_spend on testnet and mainnet.

Nodes (Validators and Full nodes)​

#28443: Full nodes with the embedded rpc-store make each checkpoint readable from their indexes as soon as it is indexed, instead of up to 500 ms later.

#28425: Adds the optional p2p-config.state-sync.checkpoint-content-hedge-delay-ms setting, which sends a slow checkpoint contents download to a second peer, hedges sooner around peers that are slow from this node, and prefers peers expected to answer soonest, plus metrics for checkpoint contents downloads by peer. Without the setting, behavior is unchanged.

#28559: Full nodes with the embedded RPC indexes enabled accept a new optional setting, authority-store-pruning-config.rpc-store-num-checkpoint-snapshots-to-retain (default 0, which keeps snapshots disabled). They also export new rpc_store_indexer_* metrics: live_sst_files_size, estimate_live_data_size, compaction_read_bytes, and compaction_write_bytes.

#28563: /health accepts an optional max_history_lag query parameter; when set, a full node reports unhealthy while its ledger-history indexes are more than that many checkpoints behind its live-object indexes, or if it has no RPC indexes at all.

#28566: State sync downloads checkpoint contents in pages when a full contents download does not complete.

gRPC​

#28426: ListTransactions, ListEvents and ListCheckpoints requests whose after (ascending) or before (descending) cursor lies past the end of the requested checkpoint range now end with CheckpointBound instead of CursorBound, and their closing cursor resumes where the request's cursor does.

#28443: Checkpoint subscriptions on full nodes with the embedded rpc-store deliver checkpoints about 180 ms sooner on average.

#28412: Signature verification accepts both supported zkLogin circuits regardless of the network's current circuit activation rules.

#28471: VerifySignatureRequest accepts check_address_aliases to verify against address's current address aliases. The response sets address_aliases_checked when the check was applied.

#27712: sui-kv-rpc always serves ListCheckpoints/ListTransactions/ListEvents, and its served checkpoint height always includes the List API pipelines. The enable-list-apis and enable-experimental-query-apis config fields are ignored.

#28516: ListTransactions and ListEvents accept start_transaction_index and end_transaction_index, and ListEvents also accepts start_event_index and end_event_index, to start and end a query at a position inside its first and last checkpoint.

#28527: ListCheckpoints, ListTransactions, ListEvents, SubscribeTransactions and SubscribeEvents frames carry Watermark.cursor_position, the frame's resume point as a public ledger position. Use it to order frames and drop duplicates instead of comparing cursor bytes. kv-rpc List* requests with an invalid filter fail with INVALID_ARGUMENT even when nothing is left to scan. On a fullnode, a descending request whose start_checkpoint is below the pruning floor fails with BELOW_EARLIEST_AVAILABLE even when its before cursor is past the tip.

#28535: AffectedAddress transaction filters (list transactions, list checkpoints, and subscriptions) also match transactions sent by the address, including sponsored transactions that touch only shared objects. A filter whose AffectedAddress literals would expand it to more than 64 terms, summed across the terms that contain them (for example, seven AffectedAddress literals ANDed in one term), is rejected with INVALID_ARGUMENT. Sender(X) AND NOT AffectedAddress(X) now matches nothing, because AffectedAddress(X) includes transactions sent by X.

#28563: /health on the gRPC server accepts an optional max_history_lag query parameter (see Nodes).

#28541: ListTransactions and ListEvents reject cursors minted by servers older than 1.83, including such cursors a 1.83 server returned, and every List* method rejects cursors in the original cursor format, with INVALID_ARGUMENT; restart such a scan from a ledger position instead. Every List* frame's Watermark carries cursor_position.

GraphQL​

#28426: transactions and events pages that are empty because the cursor lies past the beforeCheckpoint/afterCheckpoint bound now report hasNextPage: false (or hasPreviousPage: false), so clients that follow it no longer re-request the same page forever.

#28395: Signature verification accepts both supported zkLogin circuits and ML-DSA-65 multisig members independently of network activation rules. Scoped JWK and epoch checks still apply.

#28470: verifySignature accepts an optional checkAddressAliases argument. When it is true, the signature must be from one of author's current address aliases instead of from author itself.

#28483: transactions and events pages with both after and before cursors that contain nothing now report hasNextPage: false and hasPreviousPage: false with no cursors, so clients that follow them no longer re-request the same page forever.

#27666: transactions and events connections are always served by the ledger gRPC List APIs, so the service at --ledger-grpc-url must serve them (a kv-rpc archival service with the List APIs enabled, or a full node with rpc.enable-indexing). --enable-list-apis / --experimental-query-apis are ignored and will be removed in a future release. Previously-issued cursors remain valid.

#27723: GraphQL uses one pool of ledger-grpc-num-connections connections to the ledger gRPC service instead of two, and List API calls report under the graphql_ledger_grpc metrics instead of graphql_alpha_ledger_grpc.

#28534: transactions subscriptions filtered by affectedAddress include transactions that only change that address's address balance, or that change an object it owns through party (consensus address) ownership, matching paginated transactions queries.

#28535: Transaction lists filtered on affectedAddress also return transactions sent by the address.

#27611: Package resolution reads packages from the ledger gRPC endpoint (--ledger-grpc-url) instead of the kv_packages table.

#28515: Cursors in the protobuf format, which GraphQL issued before 1.83 (and in testnet and devnet 1.83.0), and cursors taken straight from the gRPC ledger service, are no longer accepted; restart pagination without a cursor.

#28528: Transaction and event cursors from pages that started from a pre-1.84 cursor format are rejected; restart pagination without a cursor. Page startCursor/endCursor values can differ from earlier releases for the same page.

CLI​

#28479: sui start --with-graphql now enables GraphQL subscriptions on the local network's GraphQL service. Paginated transactions and events queries are served by the local fullnode, and GraphQL starts once the indexer has caught up.

#28481: The Move compiler no longer reports ID leak errors (that check is now disabled on mainnet).

#28480: acquires is no longer a reserved keyword in Move and can be used as an identifier.

#28507: sui keytool multi-sig-combine-partial-sig accepts the partial signatures in any order. Previously they had to match the order of the public keys or the combined signature failed verification.

#28569: The sui::clock test helpers are deprecated in favor of test_scenario::set_clock_timestamp and increment_clock_timestamp.

Rust SDK​

#28471: Bumps to the sui-rust-sdk revision with check_address_aliases support.

#28507: MultiSig::combine in sui-types orders member signatures by committee index, so callers no longer need to pre-sort them.

Indexing Framework​

#28444: - Breaking (Rust API): CommitterConfig::collect_interval_ms and CommitterConfig::collect_interval(), ConcurrentConfig::min_eager_rows, SequentialConfig::min_eager_rows, and the MIN_EAGER_ROWS constant of the concurrent, sequential and Postgres Handler traits are removed. Delete any uses. To keep batches large (for example for ClickHouse), set the new CommitterConfig::min_batch_rows and CommitterConfig::max_batch_delay_ms instead.

  • Behavior: pipelines cut pending rows into a batch as soon as the committer has room for one, instead of every collect_interval_ms or once min_eager_rows were pending. Batches grow only while the committer is busy.
  • New config: min-batch-rows (default 0, off) and max-batch-delay-ms (default 500): wait until this many rows are pending, or until the oldest has waited this long, before cutting a batch.
  • Deprecated config keys: collect-interval-ms and min-eager-rows are still accepted in config files but ignored, with a warning. Remove them.
  • Watermarks: concurrent pipelines write their watermark as soon as it advances; watermark_interval_ms is now the minimum time between two watermark writes rather than a fixed interval.

Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.84.0​

v1.83.1​

✅ Mainnet | Source: GitHub Release

Correction (Nov 5, 2026): The archives attached to this release between Nov 4 and Nov 5 18:40 UTC contained the testnet v1.83.1 build (1.83.1-0e0ede4cbf48, max protocol 140) instead of the mainnet build. They have been replaced with the mainnet build (1.83.1-6a567faf6de1). Nodes running the testnet build stopped at epoch 1304, when mainnet moved to protocol 141. If your binary reports 0e0ede4cbf48, please re-download and restart. Docker images were not affected.

Sui Protocol Version in this release: 141​

#28562: Protocol version 141 refines the transaction effects size estimate and limits a transaction to 1024 accumulator events.

#27829: Adds bulk vector operations: replace_range, keep_range, copy_range, remove_range, and truncate

#28271: Adds bulk vector operations: replace_range, keep_range, copy_range, remove_range, and truncate

#28144: Adds the shuffle_consensus_commit_blocks feature flag (devnet only in version 140). When enabled, consensus orders the blocks within each round of a commit by a hash seeded from the leader block digest instead of by authority index.

#28291: References returned from Move functions can now be used in PTBs.

#28265: Disables the ID leak verifier

#28290: Protocol version 140 enables check_object_funds_withdraw_in_execution on mainnet. Object funds withdrawals that exceed the available balance now fail with a Move abort (EObjectFundsInsufficient in sui::funds_accumulator) instead of the post-execution InsufficientFundsForWithdraw error, and the failure is decided during execution rather than by re-execution.

#28410: Protocol version 140 enables disable_effects_tx_dependencies on mainnet. Transaction effects no longer report transaction dependencies; the effects encoding retains an empty dependency vector, and object versions and per-object previous-transaction metadata are unchanged.

Nodes (Validators and Full nodes)​

#28301: tidehunter nodes now keep up to 2 GiB of hot objects-index blobs in memory once they age out of the mmap window; set TH_INDEX_BLOB_CACHE_BYTES=0 to disable or another value to resize.

#28413: Fullnodes no longer run ML-DSA-65 signature verification on networks where mldsa65_auth is off; such transactions are rejected at verification instead of after it.

#28313: validators now cap the user transaction bytes they propose to consensus, defaulting to two full blocks per second. Set consensus-transaction-pool.max-user-bytes-per-second to change it or consensus-transaction-pool.rate-limit-user-bytes: false to turn it off.

#28546: State sync downloads checkpoint contents in pages when a full contents download does not complete.

gRPC​

#28314: When SimulateTransaction gas selection can't find enough SUI to cover the gas budget, the INVALID_ARGUMENT error carries a google.rpc.ErrorInfo with reason INSUFFICIENT_GAS_BALANCE (domain sui.io) and metadata owner, requiredBudget, coinBalance and addressBalance, so clients can read the required budget without parsing the message. If the server estimated the budget and the transaction fails in that estimation, the error instead reports the execution failure ("Transaction fails in simulation: …") with an ErrorInfo of reason TRANSACTION_EXECUTION_FAILED (metadata kind, command) and the ExecutionError detail.

#28345: SubscribeTransactions and SubscribeCheckpoints now fill effects object types, clever errors and event json when the read mask requests them, matching GetTransaction. ListTransactions and ListEvents requests below the node's retention now return OUT_OF_RANGE instead of INTERNAL.

#28308: kv-rpc's ListEvents, ListTransactions and ListCheckpoints no longer start and cancel a checkpoint lookup per progress watermark, the source of the too_many_internal_resets failures, and they are faster on large and sparse requests. While a scan finds no items, it sends a progress-only frame after every 256 buckets of scan work, where reopening a filter's scan past a gap counts as 50. Operators: the read-stage defaults change (table above), and the stage settings are renamed: chunk-size is max-seeks-per-read and min-split-size is min-seeks-per-split-read, with no alias, so old keys are ignored. On tx-seq-digest and the new tx-cp-resolve stage, seeks are buckets of 1,000 transactions rather than keys, and the new max-keys-per-read caps keys per read. New settings: ledger-history.watermark-beacon-buckets and max-keys-per-read. New metrics: kv_rpc_bigtable_reads_started_total and kv_rpc_bigtable_reads_finished_total. On full nodes and kv-rpc, ListCheckpoints, ListTransactions and ListEvents return OUT_OF_RANGE for a starting cursor past the server's indexed tip, instead of an empty page whose cursor is behind the one sent; the request can be retried once the server catches up.

#28394: GetEpoch now lists mldsa65_auth among protocol feature flags.

#28391: ListTransactions and ListEvents cursors can be sent back in either ordering without skipping items. A page that resumes at its window's edge ends with the window's end reason and claims the window's edge checkpoint. These requests return OutOfRange instead of an empty or clamped result: a descending after cursor past the latest indexed checkpoint; and a descending ListTransactions, ListEvents, or ListCheckpoints request whose end_checkpoint is above the latest indexed checkpoint + 1, or whose start_checkpoint is above the latest indexed checkpoint with no end_checkpoint. On a pruning fullnode, every request that needs data below the pruning floor returns OutOfRange. A descending request with no start_checkpoint streams everything down to the floor, then a watermark at the floor, before the error.

GraphQL​

#28249: Nullable, fallible multi-gets now return successful entries alongside indexed errors for failed keys instead of failing the entire batch. No schema changes or client migration are required.

#28362: Fix NameRecord.contents.json decoding and return only the NameRecord value in contents.bcs, matching contents.type.

#28343: Objects and packages resolved inside subscription, executeTransaction and simulateTransaction results no longer resolve to an unrelated object when the requested ID was not written by that transaction or checkpoint. Live subscription events now report the correct transactionModule.package.address.

#28355: Subscriptions resumed with after or afterCheckpoint no longer skip a checkpoint at the backfill-to-live handoff, and no longer drop the remaining matches in the resume cursor's checkpoint when the serving replica lags. A backfill waiting on a ledger that stops advancing now disconnects with the usual reconnect error after 3 minutes.

#28353: checkpoints with an after cursor at or below filter.afterCheckpoint, or a before cursor at or above filter.beforeCheckpoint, now returns the checkpoints within the bound instead of an empty page.

#28383: Transaction and event connections served by the List APIs no longer report hasNextPage: true (or hasPreviousPage: true) when a page exactly fits the remaining data, and paging backwards from a last + after page no longer skips the item at the after cursor.

#28394: protocolConfigs.featureFlags and featureFlag(key: "mldsa65_auth") now report the flag.

#28391: Transaction and event connections served by the List APIs derive hasNextPage/hasPreviousPage from the end reason. A page that resumes at its window's edge, or at the latest indexed checkpoint from a cursor other than that checkpoint's own boundary, reports no further page where it reported one before. A last/after page whose after cursor sits exactly at the latest indexed checkpoint reports hasPreviousPage: true where it reported false before.

#28367: Filtered transactions and events subscriptions take a new progress: Boolean = false argument. When enabled, the subscription interleaves progress payloads whose node is null and that carry only a cursor, letting a client on a sparse filter advance its resume point without a match; a null node with no errors is progress, while a null node with errors is a match that failed to resolve. The subscription fields now return TransactionSubscriptionEdge / EventSubscriptionEdge (nullable node) rather than the paginated TransactionEdge / EventEdge; existing { cursor node { ... } } selections stay valid. Clients that leave progress off see no behavior change; subscribers that opt in must handle node: null.

#28543: Event and checkpoint cursors issued by releases before 1.83 are accepted for this release only. Responses return cursors in the current format; clients holding older cursors should switch to the cursors in responses before 1.84.

Indexing Framework​

#28369: When --streaming-url also serves LedgerService (any Sui fullnode does), checkpoints between the indexer and a newly connected stream are fetched from it with GetCheckpoint, at the configured ingest-concurrency, instead of from the ingestion source. Endpoints that don't serve LedgerService keep the previous behavior. IngestionService::new is now async, and IngestionService::with_clients and Indexer::with_ingestion_clients take an optional gap-fill client (None keeps the previous behavior).


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.83.1​

v1.82.3​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 139​

#27989: Adds protocol version 139 with the enable_forwarding_addresses flag (devnet only). When enabled, the forwarding address registry is sequenced as an implicitly read system object and may be passed as a shared input.

#28223: Protocol version 139 reduces the non-refundable storage fee from 1% to 0.01% of the storage rebate.

#27328: Under protocol version 131, random-beacon DKG that misses its timeout round now keeps running and can re-enable randomness mid-epoch if it completes, instead of disabling randomness for the whole epoch.

#28233: On mainnet, protocol version 138 reduces the non-refundable storage fee from 1% to 0.01%.

#28224: Protocol version 139 charges non-system package inputs 1% of the per-byte object read cost.

Nodes (Validators and Full nodes)​

#28182: Full nodes that do not enable object or checkpoint pruning now drop executed_transaction_digests entries older than the previous epoch, bounding that table's disk and (on tidehunter) memory footprint. No action required.

#27909: Consensus consumers can opt into full-epoch replay with application acknowledgements and progress notifications. Opt-in consumers must drain commits during startup and acknowledge them after application. Existing Sui consumers require no migration.

gRPC​

#27981: kv-rpc accepts an optional x-sui-consistent-read-checkpoint request header. When set, the server waits until it can serve data up to that checkpoint before answering, and returns Unavailable if it cannot within its timeout. Requests without the header are unaffected.

#28157: When enable-simulate-allowed-proposers is on, SimulateTransaction only restricts the returned transaction to allowed proposers for clients that send an x-sui-client-protocol-version header of 136 or higher.

#28257: Adds SignatureScheme::MLDSA65 = 7. ML-DSA-65 signatures and multisig members can be submitted through ExecuteTransaction and are verified by VerifySignature.

#28348: SubscribeTransactions and SubscribeCheckpoints now fill effects object types, clever errors and event json when the read mask requests them, matching GetTransaction. ListTransactions and ListEvents requests below the node's retention now return OUT_OF_RANGE instead of INTERNAL.

JSON-RPC​

#27907: JSONRPC service is removed from the Fullnode and on startup the old DB will be removed to free up disk space.

GraphQL​

#28162: Resuming a subscription with after/afterCheckpoint no longer replays checkpoints at or below the resume point when the serving replica's streamed tip lags that point.

#28158: Forwards the caller's x-sui-client-protocol-version header to fullnode gRPC requests, allowing simulation responses to respect the caller's supported protocol version.

#28176: New [limits] ledger-grpc-num-connections config (default 4) sets how many connections GraphQL opens to the ledger service.

#28257: Adds MlDsa65Signature and MlDsa65PublicKey (additive).

CLI​

#28096: In sui move test, the test-only allowance::new_withdrawal_for_testing and allowance::new_sponsor_withdrawal_for_testing now take the inner Withdrawal<T> instead of a funder and amount; build it with test_scenario::withdraw_balance_from_address(funder, amount) after sending the funder a balance. test_scenario now aborts with EUnbackedWithdrawal when a transaction withdraws more from an owner than it holds, instead of clamping the balance to zero.

#28213: sui client faucet now supports Testnet as well as Devnet, using the faucets' proof-of-work API. The CLI solves a challenge before the faucet pays out, so requests take longer than before, and funds go to the recipient's address balance. With --url, pass a proof-of-work faucet's base URL, or a full /gas or /v2/gas URL for a faucet that doesn't use proof of work, such as the local one.

Rust SDK​

#28257: Bumps to the sui-rust-sdk revision with ML-DSA-65 support.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.82.3​

v1.81.1​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 138​

#27049: gas model changes, implementation related no user impact

#27975: Adds new memory invariant check for reference/value usage in PTBs.

#28034: Enable check_object_funds_withdraw_in_execution on testnet in protocol version 138.

#27943: On devnet and testnet at protocol 138, transaction effects no longer report transaction dependencies. The effects encoding retains an empty dependency vector; object versions and per-object previous-transaction metadata are unchanged.

#28131: In protocol version 138, colliding deferred-transaction keys in the consensus handler merge their entries instead of overwriting, so re-deferred transactions can no longer displace previously deferred ones.

Nodes (Validators and Full nodes)​

#27936: Adds optional execution-time-observer-config.object-utilization-metric-tracked-ids, a map from object ID to name. Utilization of listed objects is reported in the new epoch_execution_time_observer_tracked_object_utilization metric with object_id and name labels. No action required; default behavior is unchanged.

#28037: Fullnodes no longer restrict simulated transactions to their preferred proposers by default. Operators who want the previous behavior must set enable-simulate-allowed-proposers: true in the node config.

#28076: Validators now pull transactions from a consensus-side pool at block proposal time instead of the admission queue pushing them. To keep the previous behavior, set consensus-transaction-pool.enabled: false in the node config; authority-overload-config.admission-queue-enabled only applies when the pool is disabled.

gRPC​

#28022: Rosetta now fetches latest checkpoint data in one request, preventing transient Checkpoint N not found failures when fullnodes behind a load balancer have different heights. No user action is required.

GraphQL​

#27721: Adds derivedObject and multiGetDerivedObjects to IAddressable.

#27743: Adds Query.multiGetDynamicFields for fetching multiple dynamic fields across different parent objects.

#27758: Adds the nullable Balance.coinMetadata field.

#28010: Transaction.effects.checkpoint now resolves for transactions delivered over a subscription; it was previously always null.

CLI​

#27351: sui client ptb now accepts withdrawal(amount) and withdrawal<T>(amount) inputs for address balance withdrawals.

#28048: In sui move test, test_scenario now tracks address and object funds across transactions. balance::withdraw_funds_from_object succeeds only up to the funds actually sent to the object, and otherwise aborts with sui::funds_accumulator error 5 (previously every object withdrawal succeeded in unit tests). Two new test-only functions: test_scenario::withdraw_balance_from_address creates a withdrawal from an address, reserved against its settled balance, and test_scenario::settled_balance reads an address's or object's settled balance.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.81.1​

v1.80.1​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 137​

#27844: Ristretto255 range proof verification is cheaper and the limit on the number of commitments times the range bit length is raised from 512 to 1024, so larger batches can now be verified in a single call.

#27528: adds allowances feature

#27524: Protocol v137 enables check_object_funds_withdraw_in_execution on devnet only. Object-funds withdrawal sufficiency is checked inside the Move VM at the point of withdrawal, insufficient withdrawals abort with a sui::funds_accumulator Move abort, and the first settled-balance read for each (owner, type) pair costs 184 internal gas units.

#27930: In protocol version 137, LdConst charges gas for the abstract value size of the constant rather than its serialized byte length, slightly increasing gas costs for constant-heavy code.

#27939: TransactionExpiration::Validity is now accepted on all networks, allowing a transaction to restrict which validators may propose it in consensus.

#27938: Enables additional signing time checks to reject structurally invalid txs earlier.

#27984: Adds new memory invariant check for reference/value usage in PTBs.

Nodes (Validators and Full nodes)​

#27507: Adds an opt-in consensus-transaction-pool config for validators: when set, consensus pulls transactions from a validator-side, gas-price-prioritized pool at block-proposal time instead of the admission queue pushing them to consensus.

#27863: Validators using the pull-based consensus transaction pool stop proposing system transactions and pings after their submitter abandons them. No operator action is required.

#27528: adds allowances support

gRPC​

#27833: V1 transaction effects now include their derived lamport version in v2 RPC responses.

#27876: Terminal metadata on queries that end on an empty natural interval (such as passing an after cursor pointing to the last item of a bounded window) now emits QueryEndReason::CheckpointBound with watermark.checkpoint = None instead of CursorBound. No client migration required.

#27528: adds allowances support

#27613: The Bigtable-backed archival gRPC service (sui-kv-rpc) now serves MovePackageService (GetPackage, GetDatatype, GetFunction, ListPackageVersions), previously only available on fullnodes.

JSON-RPC​

#27523: SuiTransactionBlockEffects.shared_objects is derived from the effects' accessed consensus objects, which can now include implicitly read system objects such as the accumulator root once a consumer activates. Consumers that treat the field as declared shared inputs must filter against the transaction inputs; legacy sui-replay has been updated accordingly.

GraphQL​

#27833: Historical subscription backfill can consume V1 effects from archival KV-RPC.

#27528: adds allowances support

#27942: The Subscription root type (checkpoints, events, transactions) is now part of the production schema, previously available only in staging builds. Operators must still enable it per deployment; there is no change for clients beyond the type being present.

CLI​

#27486: Move packages on the 2024.alpha edition can now declare constants public(package), making them usable from other modules of the same package, both in code and in other constant definitions.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.80.1​

v1.79.1​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 136​

#27791: Adds protocol versions 135 and 136. defer_unpaid_amplification is disabled on mainnet at v134 and on all networks from v135; v135 also applies v134's original_package_id costs and consensus block limits on mainnet. v136 carries the previously pending v135 features.

#27454: Adds TransactionExpiration::Validity, which restricts the transaction to a named set of consensus proposers. Behind the allowed_proposers feature flag, enabled on devnet only; no change on mainnet or testnet.

#27451: New feature flag ptb_tx_context_restrictions (protocol version 135). TxContext in a PTB Move call signature may appear at most once as &mut TxContext or any number of times as &TxContext, never by value, and never in return position. Transactions calling functions that violate these rules now fail up front with the new InvalidTxContext command argument error (previously they failed with borrow-checking, arity, or serialization errors, or in dev-inspect could partially succeed).

#27832: Add additional invariant checks around packages.

#27826: Adds package_arena_size_in_bytes (10MB, matching prior hardcoded behavior) to protocol version 136, bounding the arena a package is loaded into by the Move VM.

Nodes (Validators and Full nodes)​

#27599: Full nodes now submit a proposer-restricted transaction only to the validators it names, instead of to any validator. No configuration change is needed; transactions without a proposer set are unaffected.

gRPC​

#27598: SimulateTransaction now returns a VALIDITY expiration carrying the validators allowed to propose the transaction, where it previously returned VALID_DURING. Clients that sign and submit the returned transaction unchanged need no action; clients that reconstruct the expiration themselves should carry the new allowed_proposers field through, or the transaction digest will not match.

JSON-RPC​

#27557: sui-indexer-alt-jsonrpc no longer accepts --bigtable-instance, --bigtable-project, --bigtable-app-profile-id, or --bigtable-watermark-pipeline. Operators must use --ledger-grpc-url instead.

#27653: --ledger-grpc-url is now required to run sui-indexer-alt-jsonrpc — it no longer falls back to Postgres for key-value lookups (objects, checkpoints, transactions) when unset.

GraphQL​

#27557: sui-indexer-alt-graphql no longer accepts --bigtable-instance, --bigtable-project, --bigtable-app-profile-id, or --bigtable-watermark-pipeline. Operators must use --ledger-grpc-url instead.

#27653: --ledger-grpc-url is now required to run sui-indexer-alt-graphql, for the same reason.

#27685: Adds Query.multiGetBalances for fetching balances across multiple addresses in one query.

CLI​

#27828: Impacts the dev experience for users clicking on the move coding conventions link. No extra actions.

#27826: sui move test now accepts --package-size <MB> to bound the maximum size of a loaded package during unit tests.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.79.1​

v1.78.1​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 135​

#27794: Adds protocol version 135, which disables defer_unpaid_amplification on all networks and applies v134's original_package_id costs and consensus block limits on mainnet. Mainnet's v134 config now contains only the deferral disable, matching the 1.77 branch.

#27330: Adds a new function to the sui-framework to allow getting the original package ID of an UpgradeCap.

#27675: Add the ability to get the original package ID from an upgrade cap in version 134

Nodes (Validators and Full nodes)​

#27439: Fixed a spurious "upgraded system packages are not locally available" invariant violation during framework upgrades.

#27567: Fullnode operators can override the embedded RPC store's bitmap periodic-compaction interval. Omission retains 30 days; zero disables periodic compaction.

#27570: Embedded RPC-store bitmap pruning state is isolated to each database. No operator action is required.

gRPC​

#27632: The TransactionExecutionService simulate/resolve path now includes the offending object id in version-mismatch and digest-mismatch error messages, and renders the provided/actual values consistently. No API shape change; error message text only.

#27676: sui-kv-rpc can now bind a second, unencrypted gRPC listener (plaintext-address config field) alongside its existing TLS listener, for trusted internal callers that shouldn't need to negotiate TLS.

GraphQL​

#27140: Support transaction subscription from historical cursor

#27665: Fixes a race where transactions/events GraphQL queries could non-deterministically omit recently-created data when served via --ledger-grpc-url.

CLI​

#27604: Fixes bug in Move compiler that would inline cast (as) operations that always error

#27647: Move compiler will now warn against constant expressions that will always error at runtime.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.78.1​

v1.77.3​

✅ Mainnet | Source: GitHub Release

Sui Protocol Version in this release: 134​

#27675: Add the ability to get the original package ID from an upgrade cap in version 134

#27330: Adds a new function to the sui-framework to allow getting the original package ID of an UpgradeCap.

Nodes (Validators and Full nodes)​

#27439: Fixed a spurious "upgraded system packages are not locally available" invariant violation during framework upgrades.

#27567: Fullnode operators can override the embedded RPC store's bitmap periodic-compaction interval. Omission retains 30 days; zero disables periodic compaction.

#27570: Embedded RPC-store bitmap pruning state is isolated to each database. No operator action is required.

gRPC​

#27632: The TransactionExecutionService simulate/resolve path now includes the offending object id in version-mismatch and digest-mismatch error messages, and renders the provided/actual values consistently. No API shape change; error message text only.

#27676: sui-kv-rpc can now bind a second, unencrypted gRPC listener (plaintext-address config field) alongside its existing TLS listener, for trusted internal callers that shouldn't need to negotiate TLS.

GraphQL​

#27140: Support transaction subscription from historical cursor

#27665: Fixes a race where transactions/events GraphQL queries could non-deterministically omit recently-created data when served via --ledger-grpc-url.

CLI​

#27604: Fixes bug in Move compiler that would inline cast (as) operations that always error

#27647: Move compiler will now warn against constant expressions that will always error at runtime.


Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.77.3​


info

This page has been truncated to stay within size limits. View the complete release history on GitHub Releases.