testnet-v1.71.1

MystenLabs/suitestnet-v1.71.1May 5, 2026by ebmifa

AI Summary

Protocol v123 adds new Move stdlib functions for dynamic fields and a native bulletproof verification function. The Indexing Framework receives adaptive ingestion updates and removes legacy config options.

Key Highlights

  • New dynamic field methods in Move stdlib
  • Native verify_bulletproof_ristretto255_internal function
  • Indexing framework updates: Adaptive ingestion and config removals

Breaking Changes

  • Deprecates vector::empty and vector::singleton
  • Deprecates dynamic_field::exists_ and remove_if_exists
  • Removes checkpoint_lag and checkpoint_buffer_size from config

New Features

  • New dynamic field methods (borrow_or_add, get_do, etc.)
  • New dynamic_object_field methods
  • Native verify_bulletproof_ristretto255_internal function
  • New replace methods for dynamic fields
  • GraphQL verifySignature
  • accepts_chain_id implementation in stores
  • ConcurrentConnection for BigTable
  • Adaptive ingestion concurrency system

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/testnet-v1.71.1