testnet-v1.70.1

MystenLabs/suitestnet-v1.70.1Apr 14, 2026by ebmifa

AI Summary

Upgrades the Sui protocol to version 121, adds new math functions, and refactors the indexing framework traits.

Key Highlights

  • Adds new Move stdlib math functions `mul_div` and `mul_div_ceil` for all integer types.
  • Deprecates `divide_and_round_up` in favor of `div_ceil`.
  • Refactors `Connection` trait into `ConcurrentConnection` and `SequentialConnection` subtraits.

Breaking Changes

  • Removal of `SequentialStore::sequential_connect` method.
  • Removal of `CheckpointData::Raw` raw variant.

New Features

  • Implicitly formats fields using the `json` transform in Display v2.
  • Treats all ingestion errors as transient (retryable).
  • Added `IngestionClientTrait::latest_checkpoint_number()`.

Full Release Notes

## Protocol
#### Sui Protocol Version in this release: `121`

https://github.com/MystenLabs/sui/pull/26095: Shifts 120 to 121, and adds an additional check in 120 to enforce cleanliness around jumps.

https://github.com/MystenLabs/sui/pull/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`

https://github.com/MystenLabs/sui/pull/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

https://github.com/MystenLabs/sui/pull/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.

https://github.com/MystenLabs/sui/pull/26062: Display v2: Implicitly format fields using the `json` transform, if the `str` transform would not work for them.

## JSON-RPC

https://github.com/MystenLabs/sui/pull/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.

https://github.com/MystenLabs/sui/pull/26062: Display v2: Implicitly format fields using the `json` transform, if the `str` transform would not work for them.

## GraphQL

https://github.com/MystenLabs/sui/pull/26061: Bugfix in how GraphQL fetches Display v2 formats

https://github.com/MystenLabs/sui/pull/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.

https://github.com/MystenLabs/sui/pull/26062: Display v2: Implicitly format fields using the `json` transform, if the `str` transform would not work for them.

## Indexing Framework

https://github.com/MystenLabs/sui/pull/25881: Refactors `Connection` trait into `ConcurrentConnection`/`SequentialConnection` subtraits and `Store` trait into `ConcurrentStore`/`SequentialStore` subtraits.

https://github.com/MystenLabs/sui/pull/26092: Removes `SequentialStore::sequential_connect` which was introduced in a recent refactoring but is not used.

https://github.com/MystenLabs/sui/pull/26133: Implements `ConcurrentConnection` for `ObjectStoreConnection` to support backwards indexing.

https://github.com/MystenLabs/sui/pull/26096: Remove `CheckpointData::Raw` raw variant. Treat all ingestion errors as transient (retryable). Populate `total_ingested_bytes` during gRPC ingestion.

https://github.com/MystenLabs/sui/pull/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