Solana Labs Inc has proposed upgrading Mainnet Beta to the v1.3 software release line of the core solana codebase. The major updates and changes are summarized below for visibility and discussion.
The latest v1.3 patch release has been deployed on the testnet and devnet as of 9/29 and the target date for validators to upgrade Mainnet Beta to this release is Oct 9th. Validators who approve this proposed release should do so by upgrading their nodes before this date. Support for this upgrade will be provided by Solana Labs Inc on the usual Solana Discord channels.
Unlike the v1.1 to v1.2 upgrade, there will not be an “Upgrade Epoch” where all non-vote transactions are disabled.
Main v1.3 Changes
- SPL (Solana Program Library) Token and Memo
- An early deployment of the SPL Token program contains a flaw in its multisig verification implementation. The v1.3.14 release contains a feature that will enable Solana Labs to redeploy a newer version of SPL Token to resolve the flaw. This workaround has been discussed and signed off by all known significant SPL Token users, and will be activated after the v1.3 upgrade is complete.
- Improvements to cross-program invocation (CPI) and program address derivation. Various performance optimizations to the BPF Loader were made as well.
- Feature activation framework for a smoother online activation of new features
- Built-in support for Secp256k1 signature verification in transactions
- A reduced inflation rate (0.01%) and reduced fee burn percentage (from 100% to 50%) are being tested on
testnet. These features are not enabled by default in this release and are to be enabled by the Foundation following community discussion and approval.
- Fixes in consensus to force cluster-wide compliance with optimistic confirmation. This guarantees optimistically confirmed blocks will not rollback unless > 5% of the network violates the consensus rules. Also added detection of optimistic confirmation on validators, enabling support of subscriptions and RPC queries on “optimistically confirmed” banks. This is now accessible through the “SingleGossip” commitment level, which was repurposed to uphold the guarantees of “optimistic” confirmation.
Compatibility with v1.2:
Most of the stability and performance fixes, as well as RPC and command-line tool improvements from the patch releases after the initial v1.3.0 have also been applied to the current v1.2 release line and are active on Mainnet Beta.
We know of no RPC or networking incompatibility between v1.2 and v1.3. Additionally the ledger format on disk is compatible between the latest v1.2 and v1.3 patch releases.
In the event of difficulty upgrading to v1.3, rolling back to the latest v1.2 release is recommended.
Further details of v1.3 changes can be found in the patch release notes below.
- Gossip protocol optimizations
- BPF VM optimizations
- Improve snapshot failure warning log message
- Add precompile verification to RPC sendTransaction preflight checks
- Websocket security fix
- Added feature activation framework
- Port-reachable checks for private rpc ports now performed correctly (fixes regression in v1.3.12 that kept validator from booting).
- Various helpers and utilities for offline signing are now more easily accessible outside the CLI.
- Validators now timestamp every vote, and block times are cached for every confirmed block, making block time available for every block going forward.
- Transaction and block performance is now sampled and exposed via RPC.
- Supports current spl-token crate.
- Eases AppendVecs-related lock contention.
- RPC simulateTransaction commitment parameter is now consistent with all other RPC methods
- RPC sendTransaction now returns transaction logs when simulation fails
- RPC stability improvements and bug fixes
- Ledger CLI tool improvements that help debug account state and snapshot archives
- Genesis creation tool now supports specifying a BPF loader when loading BPF programs
- Validator info CLI tool no longer crashes on bad input
- Solana CLI tool now confirms transactions correctly and efficiently
- Fixed panic in BanksServer
- Fixed validator CPU stepping bug
- Add initial Exchange documentation for SPL Token integration
- Don’t incorrectly perform port reachable checks for private rpc ports, which keeps validator from booting (This was a regression in v1.3.10).
- Capitalization (total-supply) is periodically checked by summing all account balances to ensure ledger integrity. And abort if mismatched
- Unintended memory growth when replaying from old snapshot is really fixed
- Slightly faster snapshot load due to less IO.
- Don’t stop voting in an edge case where a validator starts from snapshot at slot N, which is its leader slot as well
- Add new validator options for running in more restrictive environment
- solana-validator --rpc-bind-address argument now works as expected
- Restore compatibility when connected to the mainnet-beta
- Various rent collection edge case bug fixes starting at epoch 97
- Improve banking-stage transaction forwarding
- Add support for background BigTable ledger uploading
- RPC sendTransaction endpoint avoids a network hop when sending to the leader node
- Optimized bank hashing activates at testnet epoch 95
- Added solana block and solana first-available-block commands
- Snapshot archives are now compressed using zstd instead of bzip2 by default
- Add support in the Solana SDK for the deprecated BPF Loader
- Upgrade rayon threading library
- Work around for SPL Token 2 to ensure a valid Mint account for wrapped SOL
- Resolved RPC bug where occasionally the incorrect slot number for a transaction would be returned
- Improve banking-stage transaction forwarding
- Add getMultipleAccounts RPC endpoint
- RPC token endpoints now return token amounts with full precision
- Allow rent burn percentage to be modified in a snapshot
- Bump RPC banks up 1 port to avoid web3.js wss port conflict
- solana-ledger-tool improvements
- Support for spl-token 2.0
- Updated BPF loader
- Increased compute budget
- RPC developer experience improvements
- Stability improvements
- RPC breaking change: the newly added “binary64” encoding is now called “base64” to avoid confusion.
- Fix panic when loading ledger history from BigTable
- The end_slot argument to `solana-ledger-tool prune’ is now optional
- Stability and developer experience improvements
- Various RPC token methods update
- Fix build issue in v1.3.0
- Introducing the Solana Program Library! See https://spl.solana.com/ for documentation. Two SPL programs, spl-token and spl-memo, have been stabilized and are available for use on all Solana clusters. New RPC endpoints in support of these two programs are also available
- BigTable support for long-term transaction history storage for use by RPC
- Improvements to cross-program invocation (CPI) and program address derivation