Releases: MystenLabs/sui
testnet-v1.70.1
Protocol
Sui Protocol Version in this release: 121
#26095: Shifts 120 to 121, and adds an additional check in 120 to enforce cleanliness around jumps.
#23295: Adds the Move standard library function std::u8::mul_div
Adds the Move standard library function std::u8::mul_div_ceil
Adds the Move standard library function std::u16::mul_div
Adds the Move standard library function std::u16::mul_div_ceil
Adds the Move standard library function std::u32::mul_div
Adds the Move standard library function std::u32::mul_div_ceil
Adds the Move standard library function std::u64::mul_div
Adds the Move standard library function std::u64::mul_div_ceil
Adds the Move standard library function std::u128::mul_div
Adds the Move standard library function std::u128::mul_div_ceil
Adds the Move standard library function std::u256::mul_div
Adds the Move standard library function std::u256::mul_div_ceil
#26051: Deprecated std::u8::divide_and_round_up in favor of std::u8::div_ceil.
Deprecated std::u16::divide_and_round_up in favor of std::u16::div_ceil.
Deprecated std::u32::divide_and_round_up in favor of std::u32::div_ceil.
Deprecated std::u64::divide_and_round_up in favor of std::u64::div_ceil.
Deprecated std::u128::divide_and_round_up in favor of std::u128::div_ceil.
Deprecated std::u256::divide_and_round_up in favor of std::u256::div_ceil.
gRPC
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
JSON-RPC
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
GraphQL
#26061: Bugfix in how GraphQL fetches Display v2 formats
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
Indexing Framework
#25881: Refactors Connection trait into ConcurrentConnection/SequentialConnection subtraits and Store trait into ConcurrentStore/SequentialStore subtraits.
#26092: Removes SequentialStore::sequential_connect which was introduced in a recent refactoring but is not used.
#26133: Implements ConcurrentConnection for ObjectStoreConnection to support backwards indexing.
#26096: Remove CheckpointData::Raw raw variant. Treat all ingestion errors as transient (retryable). Populate total_ingested_bytes during gRPC ingestion.
#26116: Added IngestionClientTrait::latest_checkpoint_number(), concurrent pipelines with pruning enabled now start indexing at network tip - retention.
Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.70.1
devnet-v1.70.0
Protocol
Sui Protocol Version in this release: 121
#26095: Shifts 120 to 121, and adds an additional check in 120 to enforce cleanliness around jumps.
#23295: Adds the Move standard library function std::u8::mul_div
Adds the Move standard library function std::u8::mul_div_ceil
Adds the Move standard library function std::u16::mul_div
Adds the Move standard library function std::u16::mul_div_ceil
Adds the Move standard library function std::u32::mul_div
Adds the Move standard library function std::u32::mul_div_ceil
Adds the Move standard library function std::u64::mul_div
Adds the Move standard library function std::u64::mul_div_ceil
Adds the Move standard library function std::u128::mul_div
Adds the Move standard library function std::u128::mul_div_ceil
Adds the Move standard library function std::u256::mul_div
Adds the Move standard library function std::u256::mul_div_ceil
#26051: Deprecated std::u8::divide_and_round_up in favor of std::u8::div_ceil.
Deprecated std::u16::divide_and_round_up in favor of std::u16::div_ceil.
Deprecated std::u32::divide_and_round_up in favor of std::u32::div_ceil.
Deprecated std::u64::divide_and_round_up in favor of std::u64::div_ceil.
Deprecated std::u128::divide_and_round_up in favor of std::u128::div_ceil.
Deprecated std::u256::divide_and_round_up in favor of std::u256::div_ceil.
gRPC
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
JSON-RPC
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
GraphQL
#26061: Bugfix in how GraphQL fetches Display v2 formats
#26070: When 0x1::type_name::TypeName Move values show up in structured outputs, it will show up as a simple string representation of the type, rather than an object with a name field.
#26062: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
Indexing Framework
#25881: Refactors Connection trait into ConcurrentConnection/SequentialConnection subtraits and Store trait into ConcurrentStore/SequentialStore subtraits.
#26092: Removes SequentialStore::sequential_connect which was introduced in a recent refactoring but is not used.
#26133: Implements ConcurrentConnection for ObjectStoreConnection to support backwards indexing.
#26096: Remove CheckpointData::Raw raw variant. Treat all ingestion errors as transient (retryable). Populate total_ingested_bytes during gRPC ingestion.
#26116: Added IngestionClientTrait::latest_checkpoint_number(), concurrent pipelines with pruning enabled now start indexing at network tip - retention.
Full Log: https://github.com/MystenLabs/sui/commits/devnet-v1.70.0
testnet-v1.69.2
Protocol
Sui Protocol Version in this release: 120
#26098: adds an additional check in protocol version 120 to enforce cleanliness around jumps.
#25792: metadata hardening in Sui System
#25838: Enables the new Move VM in protocol version 118.
#25911: New VM pushed to 119 instead of 118 due to cherry-pick
gRPC
#25908: Fix X_SUI_CHAIN_ID header to return full 32-byte, base58 encoded chain id
#25828: Wire up balance changes and object set for archival
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
JSON-RPC
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
GraphQL
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
CLI
#25862: sui client object now displays decoded Move struct fields instead of raw BCS-encoded byte arrays.
#25444: sui move build --dump can now be run without an active network connection if tree shaking is disabled.
fixes for ephemeral publication with local dependencies on windows.
improved error message when building against an undefined environment.
Indexing Framework
#25838: Fix a clippy lint in mocks/store.rs
Co-authored-by: @cgswords
#25834: Renamed IngestionClientTrait::fetch to IngestionClientTrait::checkpoint.
#25895: Adds new IngestionClientTrait::chain_id to retrieve the chain_id from that ingestion source.
#25905: Changed Processor's receiver to accept new CheckpointEnvelope type containing the chain_id.
#25875: Add Connection::init_chain_id method to store and retrieve chain_id.
Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.69.2
mainnet-v1.69.2
Protocol
Sui Protocol Version in this release: 120
#26098: adds an additional check in protocol version 120 to enforce cleanliness around jumps.
#25792: metadata hardening in Sui System
#25838: Enables the new Move VM in protocol version 118.
#25911: New VM pushed to 119 instead of 118 due to cherry-pick
gRPC
#25908: Fix X_SUI_CHAIN_ID header to return full 32-byte, base58 encoded chain id
#25828: Wire up balance changes and object set for archival
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
JSON-RPC
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
GraphQL
#26112: Display v2: Implicitly format fields using the json transform, if the str transform would not work for them.
CLI
#25862: sui client object now displays decoded Move struct fields instead of raw BCS-encoded byte arrays.
#25444: sui move build --dump can now be run without an active network connection if tree shaking is disabled.
fixes for ephemeral publication with local dependencies on windows.
improved error message when building against an undefined environment.
Indexing Framework
#25838: Fix a clippy lint in mocks/store.rs
Co-authored-by: @cgswords
#25834: Renamed IngestionClientTrait::fetch to IngestionClientTrait::checkpoint.
#25895: Adds new IngestionClientTrait::chain_id to retrieve the chain_id from that ingestion source.
#25905: Changed Processor's receiver to accept new CheckpointEnvelope type containing the chain_id.
#25875: Add Connection::init_chain_id method to store and retrieve chain_id.
Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.69.2
testnet-v1.69.1
Protocol
Sui Protocol Version in this release: 119
#25911: New VM pushed to 119 instead of 118 due to cherry-pick
#25792: metadata hardening in Sui System
#25838: Enables the new Move VM in protocol version 118.
gRPC
#25908: Fix X_SUI_CHAIN_ID header to return full 32-byte, base58 encoded chain id
#25828: Wire up balance changes and object set for archival
CLI
#25862: sui client object now displays decoded Move struct fields instead of raw BCS-encoded byte arrays.
#25444: sui move build --dump can now be run without an active network connection if tree shaking is disabled.
fixes for ephemeral publication with local dependencies on windows.
improved error message when building against an undefined environment.
Indexing Framework
#25838: Fix a clippy lint in mocks/store.rs
Co-authored-by: @cgswords
#25834: Renamed IngestionClientTrait::fetch to IngestionClientTrait::checkpoint.
#25895: Adds new IngestionClientTrait::chain_id to retrieve the chain_id from that ingestion source.
#25905: Changed Processor's receiver to accept new CheckpointEnvelope type containing the chain_id.
#25875: Add Connection::init_chain_id method to store and retrieve chain_id.
Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.69.1
devnet-v1.69.0
Protocol
Sui Protocol Version in this release: 119
#25911: New VM pushed to 119 instead of 118 due to cherry-pick
#25792: metadata hardening in Sui System
#25838: Enables the new Move VM in protocol version 118.
gRPC
#25908: Fix X_SUI_CHAIN_ID header to return full 32-byte, base58 encoded chain id
#25828: Wire up balance changes and object set for archival
CLI
#25862: sui client object now displays decoded Move struct fields instead of raw BCS-encoded byte arrays.
#25444: sui move build --dump can now be run without an active network connection if tree shaking is disabled.
fixes for ephemeral publication with local dependencies on windows.
improved error message when building against an undefined environment.
Indexing Framework
#25838: Fix a clippy lint in mocks/store.rs
Co-authored-by: @cgswords
#25834: Renamed IngestionClientTrait::fetch to IngestionClientTrait::checkpoint.
#25895: Adds new IngestionClientTrait::chain_id to retrieve the chain_id from that ingestion source.
#25905: Changed Processor's receiver to accept new CheckpointEnvelope type containing the chain_id.
#25875: Add Connection::init_chain_id method to store and retrieve chain_id.
Full Log: https://github.com/MystenLabs/sui/commits/devnet-v1.69.0
testnet-v1.68.1
Protocol
Sui Protocol Version in this release: 118
#25907: Add missing function for display migration cap
#25674: Enables address aliases feature on mainnet.
#23710: Enables Display V2 (0xd system object is created)
#25827: metadata hardening in Sui System
Nodes (Validators and Full nodes)
#25624: Fixes a potential fullnode panic when simulating a malformed transaction with invalid funds withdrawals.
JSON-RPC
#25360: Adds support for Display Registry to JSONRPC: When showDisplay is set, the RPC will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
GraphQL
#25479: Introduce MoveValue.asVector for paginating through vectors of Move Values.
#25657: Introduce a new union SignatureScheme for UserSignature
#25715: ZkLoginVerifyResult will not contain error anymore. Error will not be part of GraphQL response error
#25242: Adds support for Display Registry to GraphQL: MoveValue.display will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
Indexing Framework
#25641: Processor concurrency (fanout) and ingestion concurrency (ingest_concurrency) now use adaptive concurrency control by default. Instead of a fixed number of workers, concurrency starts at 1 and scales automatically based on downstream channel backpressure — up to num_cpus for processors and up to 500 for ingestion.
Breaking changes:
Processor::FANOUTtrait constant has been removed. Processor concurrency is now configured via thefanoutfield onConcurrentConfig/SequentialConfig, which accepts aConcurrencyConfigenum instead ofusize.ingest_concurrencyinIngestionConfigchanged fromusizetoConcurrencyConfig.- A new
processor_channel_sizefield controls the channel between the processor and downstream stage (defaults tonum_cpus / 2). This channel previously sized itself fromFANOUT + PIPELINE_BUFFER.
Migration: To preserve previous fixed-concurrency behavior, set fanout: Some(ConcurrencyConfig::Fixed { value: N }) or ingest_concurrency: ConcurrencyConfig::Fixed { value: N }. Otherwise, no changes are needed — the adaptive defaults should work well for most workloads.
Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.68.1
mainnet-v1.68.1
Protocol
Sui Protocol Version in this release: 118
#25907: Add missing function for display migration cap
#25674: Enables address aliases feature on mainnet.
#23710: Enables Display V2 (0xd system object is created)
#25827: metadata hardening in Sui System
Nodes (Validators and Full nodes)
#25624: Fixes a potential fullnode panic when simulating a malformed transaction with invalid funds withdrawals.
JSON-RPC
#25360: Adds support for Display Registry to JSONRPC: When showDisplay is set, the RPC will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
GraphQL
#25479: Introduce MoveValue.asVector for paginating through vectors of Move Values.
#25657: Introduce a new union SignatureScheme for UserSignature
#25715: ZkLoginVerifyResult will not contain error anymore. Error will not be part of GraphQL response error
#25242: Adds support for Display Registry to GraphQL: MoveValue.display will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
Indexing Framework
#25641: Processor concurrency (fanout) and ingestion concurrency (ingest_concurrency) now use adaptive concurrency control by default. Instead of a fixed number of workers, concurrency starts at 1 and scales automatically based on downstream channel backpressure — up to num_cpus for processors and up to 500 for ingestion.
Breaking changes:
Processor::FANOUTtrait constant has been removed. Processor concurrency is now configured via thefanoutfield onConcurrentConfig/SequentialConfig, which accepts aConcurrencyConfigenum instead ofusize.ingest_concurrencyinIngestionConfigchanged fromusizetoConcurrencyConfig.- A new
processor_channel_sizefield controls the channel between the processor and downstream stage (defaults tonum_cpus / 2). This channel previously sized itself fromFANOUT + PIPELINE_BUFFER.
Migration: To preserve previous fixed-concurrency behavior, set fanout: Some(ConcurrencyConfig::Fixed { value: N }) or ingest_concurrency: ConcurrencyConfig::Fixed { value: N }. Otherwise, no changes are needed — the adaptive defaults should work well for most workloads.
Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.68.1
testnet-v1.68.0
Protocol
Sui Protocol Version in this release: 117
#25827: metadata hardening in Sui System
#25674: Enables address aliases feature on mainnet.
#23710: Enables Display V2 (0xd system object is created)
Nodes (Validators and Full nodes)
#25624: Fixes a potential fullnode panic when simulating a malformed transaction with invalid funds withdrawals.
JSON-RPC
#25360: Adds support for Display Registry to JSONRPC: When showDisplay is set, the RPC will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
GraphQL
#25479: Introduce MoveValue.asVector for paginating through vectors of Move Values.
#25657: Introduce a new union SignatureScheme for UserSignature
#25715: ZkLoginVerifyResult will not contain error anymore. Error will not be part of GraphQL response error
#25242: Adds support for Display Registry to GraphQL: MoveValue.display will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
Indexing Framework
#25641: Processor concurrency (fanout) and ingestion concurrency (ingest_concurrency) now use adaptive concurrency control by default. Instead of a fixed number of workers, concurrency starts at 1 and scales automatically based on downstream channel backpressure — up to num_cpus for processors and up to 500 for ingestion.
Breaking changes:
Processor::FANOUTtrait constant has been removed. Processor concurrency is now configured via thefanoutfield onConcurrentConfig/SequentialConfig, which accepts aConcurrencyConfigenum instead ofusize.ingest_concurrencyinIngestionConfigchanged fromusizetoConcurrencyConfig.- A new
processor_channel_sizefield controls the channel between the processor and downstream stage (defaults tonum_cpus / 2). This channel previously sized itself fromFANOUT + PIPELINE_BUFFER.
Migration: To preserve previous fixed-concurrency behavior, set fanout: Some(ConcurrencyConfig::Fixed { value: N }) or ingest_concurrency: ConcurrencyConfig::Fixed { value: N }. Otherwise, no changes are needed — the adaptive defaults should work well for most workloads.
Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.68.0
devnet-v1.68.0
Protocol
Sui Protocol Version in this release: 117
#25827: metadata hardening in Sui System
#25674: Enables address aliases feature on mainnet.
#23710: Enables Display V2 (0xd system object is created)
Nodes (Validators and Full nodes)
#25624: Fixes a potential fullnode panic when simulating a malformed transaction with invalid funds withdrawals.
JSON-RPC
#25360: Adds support for Display Registry to JSONRPC: When showDisplay is set, the RPC will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
GraphQL
#25479: Introduce MoveValue.asVector for paginating through vectors of Move Values.
#25657: Introduce a new union SignatureScheme for UserSignature
#25715: ZkLoginVerifyResult will not contain error anymore. Error will not be part of GraphQL response error
#25242: Adds support for Display Registry to GraphQL: MoveValue.display will look for a Display<T> stored in the Display Registry and will use that as the source of truth for its type's format. This takes precedence over any Display v1 formats that exist for this type.
Indexing Framework
#25641: Processor concurrency (fanout) and ingestion concurrency (ingest_concurrency) now use adaptive concurrency control by default. Instead of a fixed number of workers, concurrency starts at 1 and scales automatically based on downstream channel backpressure — up to num_cpus for processors and up to 500 for ingestion.
Breaking changes:
Processor::FANOUTtrait constant has been removed. Processor concurrency is now configured via thefanoutfield onConcurrentConfig/SequentialConfig, which accepts aConcurrencyConfigenum instead ofusize.ingest_concurrencyinIngestionConfigchanged fromusizetoConcurrencyConfig.- A new
processor_channel_sizefield controls the channel between the processor and downstream stage (defaults tonum_cpus / 2). This channel previously sized itself fromFANOUT + PIPELINE_BUFFER.
Migration: To preserve previous fixed-concurrency behavior, set fanout: Some(ConcurrencyConfig::Fixed { value: N }) or ingest_concurrency: ConcurrencyConfig::Fixed { value: N }. Otherwise, no changes are needed — the adaptive defaults should work well for most workloads.