mainnet-v1.71.1

MystenLabs/suimainnet-v1.71.1May 6, 2026by ebmifa

AI Summary

Bumps the Sui protocol to version 123, introduces new dynamic field functions in the Move stdlib, and updates the indexing framework with adaptive ingestion and chain ID support.

Key Highlights

  • Adds new dynamic field functions like `borrow_or_add`, `get_do`, and `get_fold`.
  • Deprecates `vector::empty` and `vector::singleton` in the MoveStdlib.
  • Adds new native function `verify_bulletproof_ristretto255_internal`.
  • Introduces adaptive ingestion for sequential pipelines and removes `checkpoint_lag` and `checkpoint_buffer_size` config fields.

Breaking Changes

  • Removal of `checkpoint_lag` and `checkpoint_buffer_size` configuration fields in the indexing framework.

New Features

  • Adds `sui::dynamic_field::replace` and `sui::dynamic_object_field::replace`.
  • Adds `sui::dynamic_field::get_fold` and `get_mut_fold` variants.
  • Adds `verifySignature` to GraphQL.
  • Implements `accepts_chain_id` in consistent store, analytics indexer, and object store.

Full Release Notes

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

https://github.com/MystenLabs/sui/pull/26492: Bump protocol version

https://github.com/MystenLabs/sui/pull/26166: - Adds `sui::dynamic_field::borrow_or_add`
- Adds `sui::dynamic_field::borrow_mut_or_add`
- Adds `sui::dynamic_field::get_do`
- Adds `sui::dynamic_field::get_mut_do`
- Adds `sui::dynamic_field::get_fold`
- Adds `sui::dynamic_field::get_mut_fold`
- Adds `sui::dynamic_object_field::borrow_or_add`
- Adds `sui::dynamic_object_field::borrow_mut_or_add`
- Adds `sui::dynamic_object_field::get_do`
- Adds `sui::dynamic_object_field::get_mut_do`
- Adds `sui::dynamic_object_field::get_fold`
- Adds `sui::dynamic_object_field::get_mut_fold`

https://github.com/MystenLabs/sui/pull/26196: deprecates `vector::empty` and `vector::singleton` in the MoveStdlib

https://github.com/MystenLabs/sui/pull/26226: - Deprecated `sui::dynamic_field::exists_` in favor of `sui::dynamic_field::exists`.
- Deprecated `sui::dynamic_field::remove_if_exists` in favor of `sui::dynamic_field::remove_opt`.
- Deprecated `sui::dynamic_object_field::exists_` in favor of `sui::dynamic_object_field::exists`.
- Adds `sui::dynamic_object_field::remove_opt`.

https://github.com/MystenLabs/sui/pull/25959: Add a new native function, **verify_bulletproof_ristretto255_internal** and enable on devnet.

https://github.com/MystenLabs/sui/pull/26248: - Adds `sui::dynamic_field::replace`.
- Adds `sui::dynamic_object_field::replace`.

https://github.com/MystenLabs/sui/pull/26318: Adds amendments to certain linkages to allow them to be loaded into the new VM.

## GraphQL

https://github.com/MystenLabs/sui/pull/25863: Add new verifySignature

https://github.com/MystenLabs/sui/pull/26208: Fixes an issue where a derived object or dynamic field load could be incorrectly bounded by the version of the object containing the derived object key, instead of the parent.

## Indexing Framework

https://github.com/MystenLabs/sui/pull/26181: Implement `accepts_chain_id` in consistent store.

https://github.com/MystenLabs/sui/pull/26171: Implement `accepts_chain_id` in analytics indexer.

https://github.com/MystenLabs/sui/pull/26247: Implement `accepts_chain_id` in object store

https://github.com/MystenLabs/sui/pull/26150: Implements `ConcurrentConnection` for `BigTableConnection` to support backwards indexing. Updates `BigTableReader` to use new watermark format.

https://github.com/MystenLabs/sui/pull/26302: ## Adaptive ingestion for sequential pipelines

Sequential pipelines now participate in the adaptive ingestion concurrency system alongside concurrent pipelines. Fetch concurrency is driven by per-subscriber bounded-channel fill across both pipeline types — one mechanism, no special cases.

### Removed

- **`checkpoint_lag`** is gone. The sequential committer no longer holds writes back behind a lag window; it commits whenever contiguous checkpoints are available.
- **`checkpoint_buffer_size`** is gone.

### Added

- **`subscriber_channel_size`** is now a per-pipeline knob under the pipeline's `ingestion` section. Defaults to `max(num_cpus / 2, 4)`.

  ```toml
  [pipeline.my_pipeline.ingestion]
  subscriber_channel_size = 32
  ```

### Migration

Config layers carry `#[serde(deny_unknown_fields)]`, so stale fields will fail to parse on upgrade. Before deploying:

- Remove `checkpoint_buffer_size` from `[ingestion]`.
- Remove `checkpoint_lag` from any `[pipeline.*]` section.

**We recommend omitting these overrides entirely** — the adaptive controller sizes fetch concurrency against the slowest subscriber automatically.

---
#### Full Log: https://github.com/MystenLabs/sui/commits/mainnet-v1.71.1