Protocol
Sui Protocol Version in this release: 104
#24239: 104 - update CoinMetadata post updates in Coin in 103
Nodes (Validators and Full nodes)
#24420: Disable using Quorum Driver for transaction submission. Setting TRANSACTION_DRIVER env var is now a no-op.
JSON-RPC
#23737: This PR, in tandem with #24192, unifies how indexers determine their ingestion starting point and introduce watermark-gated backfill tasks.
--skip-watermarkis removed, and the previous ability to bypass
watermark safety checks for concurrent pipelines is no longer supported.--first-checkpointno longer forces the indexer to start ingesting
from the configured checkpoint. The indexer now always determines its
starting ingestion point as the minimum next checkpoint across all
pipelines to resume processing from. From this release,
--first-checkpointnow only applies to pipelines that do not yet have
a committer watermark. These pipelines will resume processing from the
configured value. Pipelines with existing watermarks will always resume
processing from their own next checkpoint.- A new mechanism, watermark tasks, allows operators to run the same
pipelines on multiple indexer instances for historical backfilling. Two
new flags,--taskand--reader-interval-ms, enable this mechanism.
These flags create a tasked indexer whose pipelines commit checkpoint
data as long as the checkpoint is not below thereader_lowatermark of
their corresponding main pipelines. The indexer controls how frequently
these tasked pipelines poll the main pipelines' watermarks
per--reader-interval-ms.
Migration guidance:
- If you use
--first-checkpointonly for initial ingestion of a
fresh pipeline, no further action is needed. - If you previously used
--first-checkpointand
optionally--skip-watermarkto backfill existing tables, you can
achieve the same workflow by starting a new indexer instance with a
configured--task,--reader-interval-ms, and--first-checkpoint. - Like
--skip-watermark,--taskcannot be used to run sequential
pipelines.
GraphQL
#24319: Fixes a bug where the transaction payloads that were part of simulateTransaction calls were incorrectly classified as part of the query payload (and therefore subject to a lower payload size limit).
#23928: Removed events field from SimulationResult. Events are now only accessible via effects.events() to eliminate redundancy.
#23929: Returns null for simulated/executed transactions timestamp as they are not included in a checkpoint.
#24486: Validate types and fields passed into AvailableRange queries.
CLI
- Refactored
sui validatorcommands to use a shared
TxProcessingArgs
struct for transaction arguments, improving consistency withsui client. Updatedserialize_unsigned_transactionhelp text to provide
clearer instructions for offline signing.