We are upgrading our Sui mainnet infrastructure to mainnet-v1.83.1 on 2026-11-05. This release advances the protocol to version 141, introducing refined transaction effects size estimation, a 1024 accumulator event limit per transaction, new bulk vector operations (replace_range, keep_range, copy_range, remove_range, truncate), and significant gRPC and GraphQL improvements. Brief interruptions to RPC availability may occur on that date.
RPC Changes: - SubscribeTransactions — Now fills effects object types, clever errors, and event json when the read mask requests them, matching GetTransaction behavior. - SubscribeCheckpoints — Now fills effects object types, clever errors, and event json when the read mask requests them, matching GetTransaction behavior. - ListTransactions — Returns OUT_OF_RANGE instead of INTERNAL for requests below the node's retention. Cursors can now be sent back in either ordering without skipping items. Returns OUT_OF_RANGE for a descending 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 needing data below the pruning floor returns OUT_OF_RANGE. Faster performance with improved scan logic (progress frames sent after every 256 buckets of scan work). - ListEvents — Returns OUT_OF_RANGE instead of INTERNAL for requests below the node's retention. Cursors can now be sent back in either ordering without skipping items. Returns OUT_OF_RANGE when applicable. Faster performance with improved scan logic. - ListCheckpoints — Returns OUT_OF_RANGE for a starting cursor past the server's indexed tip instead of an empty page. Cursors at or below filter.afterCheckpoint or at or above filter.beforeCheckpoint now return checkpoints within the bound instead of an empty page. Faster performance with improved scan logic. - GetEpoch — Now lists mldsa65_auth among protocol feature flags. - GraphQL multi-get operations — Nullable, fallible multi-gets now return successful entries alongside indexed errors for failed keys instead of failing the entire batch. No schema changes required. - GraphQL NameRecord — contents.json decoding fixed; contents.bcs now returns only the NameRecord value, matching contents.type. - GraphQL object and package resolution — Objects and packages resolved inside subscription, executeTransaction, and simulateTransaction results no longer resolve to unrelated objects. Live subscription events now report the correct transactionModule.package.address. - GraphQL subscriptions — Subscriptions resumed with after or afterCheckpoint no longer skip a checkpoint at the backfill-to-live handoff. A backfill waiting on a stopped ledger disconnects with a reconnect error after 3 minutes. - GraphQL checkpoints subscription — With an after cursor at or below filter.afterCheckpoint or before cursor at or above filter.beforeCheckpoint, now returns checkpoints within the bound instead of an empty page. - GraphQL transaction and event connections — No longer report hasNextPage: true (or hasPreviousPage: true) when a page exactly fits remaining data. Pages derive hasNextPage/hasPreviousPage from the end reason. A page resuming at its window's edge reports no further page where it reported one before. - GraphQL filtered transactions and events subscriptions — Take a new progress: Boolean = false argument. When enabled, the subscription interleaves progress payloads (node: null, carrying only a cursor) to let clients advance resume points without a match. Subscription fields now return TransactionSubscriptionEdge / EventSubscriptionEdge (nullable node) rather than paginated TransactionEdge / EventEdge; existing { cursor node {... } } selections remain valid. Clients leaving progress off see no behavior change. - GraphQL protocolConfigs.featureFlags and featureFlag — Now report the mldsa65_auth flag.