Solana validators adopt the v1.16 update

by Solana Labs

Solana validators adopt the v1.16 update

On Sept. 25, 2023, Solana Labs engineers notified validators that v1.16, a proposed update to the Solana Labs validator client, would soon be available for mainnet-beta. This comes after numerous audits and the work of volunteer adopters, who were able to identify and help engineers correct earlier issues (learn more below).

Version 1.16 contains nearly ten months of work and includes a number of developments that will be activated over time. Here’s what you can expect.

Feature updates

  • Improve runtime support for zero-knowledge math:
  • Supports SPL Token22 Confidential Transfers.
  • Supports 128 elliptic curve operations (equivalents of EIP-196, EIP-197, and EIP-198).
  • Support for resizeable program data accounts.

Performance updates

  • The ledger data cleanup service has been optimized to reduce disk IO and time spent searching for entries to remove.
  • Gossip pull-requests peer sampling has been reworked to reduce startup bandwidth.
  • Accounts index has been moved to disk by default, which reduces memory usage while increasing IOPS.

Resiliency

  • Several small changes were made to improve performance and resilience of the repair process:
  • Repair requests are now prioritized by stake
  • The delay threshold for issuing shred repairs was increased (100ms -> 200ms) to reduce the number of repair requests for shreds that would ultimately be served through turbine anyway.
  • Epoch accounts hash: If no transaction interacts with an account during a block, the contents of that account will have no effect on the block. Accounts that are rarely accessed could be corrupted on individual validators and the corruptions would go undetected. The epoch accounts hash project generates the hash of all accounts once per epoch and includes the result in a bank’s hash. Nodes with corrupted accounts will fork off within an epoch, so corruptions will be detected quickly.

How was v1.16 tested

Testnet

Testnet has been running v1.16 since June 7, 2023. In addition to handling public transactions testnet is stress tested regularly with high transaction volume. More recently core contributors have built a regression and capacity testing framework that is used regularly on testnet.

Canaries

Solana Labs operates canary nodes on mainnet-beta including seven that run the beta branch (currently v1.16). Those v1.16 nodes have been stable for several months. To follow the canaries in real time checkout the #canaries-monitoring channel on the Solana Tech Discord.

Fuzzers

Multiple runtime fuzzers have also been developed. Their implementations vary, but they execute partially randomized transactions against multiple versions of the runtime to ensure that the results are consistent. This is especially useful for catching edge cases or race conditions that manifest infrequently.

Audits

Version 1.16 has been extensively audited by multiple external auditors. Reports will be published to the security-audits repo as they become available.

Volunteer adoption

A small subset of volunteers updated their mainnet-beta nodes to v1.16 starting on Aug. 23, 2023. These early adopters helped identify and resolve remaining issues including slow startup for RPC nodes and general protection faults.

Thanks to these volunteers, these issues have been corrected and v1.16 is now available for widespread use.

Where can I monitor for future releases?

If you are not a validator, the best place to monitor for updates is the Solana Status Twitter account.

For more information about features that will be activated over time see the Feature Gate Activation Schedule.