testnet-v1.75.1

dubinc/dubtestnet-v1.75.1Jul 7, 2026by ebmifa

AI Summary

Introduces a new protocol version, enhances logging capabilities with new environment variables, and improves GraphQL and gRPC APIs with new cursor types and request tracing.

Key Highlights

  • New protocol version 129 with explicit bounds for binary pools
  • New RUST_LOG_TAILS env var for dedicated log file output
  • GraphQL request payloads can be captured for replay
  • Support for gs:// (Google Cloud Storage) in state-sync archive fallback

Breaking Changes

  • Opaque pagination cursors in scanning APIs (list_transactions, list_events, list_checkpoints) have a new internal encoding, requiring clients to restart pagination from the beginning if an error occurs.

New Features

  • insert_before and insert_after methods added to sui::linked_table
  • IAddressable.asTransactionObject generalization
  • Cursor field added to Checkpoint object
  • Resumable checkpoints subscription in staging features
  • GCS support in state-sync archive fallback

Full Release Notes

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

https://github.com/MystenLabs/sui/pull/27096: Introduces a new protocol version that adds explicit bounds for binary pools that were otherwise implicitly constrained before. No user-visible change.

https://github.com/MystenLabs/sui/pull/26914: adds `insert_before` and `insert_after` to `sui::linked_table`

https://github.com/MystenLabs/sui/pull/27067: use `defining_ids` in `sui::coin`

## Nodes (Validators and Full nodes)

https://github.com/MystenLabs/sui/pull/27063: the state-sync archive fallback now supports `gs://` (Google Cloud Storage) ingestion URLs. A new `remote-store-headers` option under `state-archive-read-config` attaches default HTTP headers to archive requests, which enables requester-pays GCS buckets via `x-goog-user-project`. Previously only `file` / `s3` / `http` archive stores were supported.

https://github.com/MystenLabs/sui/pull/27026: New optional `RUST_LOG_TAILS` env var additionally writes individual tracing targets to dedicated files (format inferred from the file extension — `.jsonl`/`.ndjson` for JSON, otherwise text), leaving normal log output unchanged. Backward-compatible — unset by default, so log output is unchanged and no action is required.

## gRPC

https://github.com/MystenLabs/sui/pull/27035: Opaque pagination cursors returned by the scanning apis `list_transactions`, `list_events`, and `list_checkpoints` have a new internal encoding. Cursors remain opaque and clients should continue treating them as such. Users should restart pagination from the beginning if they encounter a cursor-related error.

## GraphQL

https://github.com/MystenLabs/sui/pull/27018: Introduce `IAddressable.asTransactionObject` as a generalization of `Address.asTransactionObject`.

https://github.com/MystenLabs/sui/pull/27004: GraphQL request payloads can be captured for replay by enabling the `graphql_request` tracing target at trace level — all kinds via `RUST_LOG=graphql_request=trace`, or a single operation kind via `RUST_LOG="graphql_request[{kind=mutation}]=trace"`. Disabled by default.

https://github.com/MystenLabs/sui/pull/26731: Add cursor field to Checkpoint object

https://github.com/MystenLabs/sui/pull/27035: The opaque pagination cursor returned for a `Transaction` edge of the `TransactionConnection` have a new internal encoding. Cursors remain opaque and clients should continue treating them as such. Users should restart pagination from the beginning if they encounter a cursor-related error.

https://github.com/MystenLabs/sui/pull/26714: Support resumable checkpoints subscription in features `staging`

## CLI

https://github.com/MystenLabs/sui/pull/27094: `sui start` respects the fullnode RPC socket address that's part of its network config, if one is provided.

## Indexing Framework

https://github.com/MystenLabs/sui/pull/27026: The same `RUST_LOG_TAILS` env var is available to indexer binaries (e.g. `sui-indexer-alt-graphql`). Set it alongside `RUST_LOG` (e.g. `RUST_LOG="info,graphql_request=trace"` with `RUST_LOG_TAILS="graphql_request=/var/log/sui/graphql_request.jsonl"`) to capture that target as NDJSON for replay while normal logs stay readable. Opt-in; no action required otherwise.

---
#### Full Log: https://github.com/MystenLabs/sui/commits/testnet-v1.75.1