This is a Testnet release. It is not recommended for Mainnet Beta
Upgrade notes
Node operators, please delete your <ledger>/calculate_accounts_hash_cache
directory (if you have one, to reclaim unused disk space). It has been moved/renamed to <ledger>/accounts_hash_cache/full
.
Changes
-
Geyser improvements
- geyser: add parent slot/blockhash to block (#29855)
-
Incremental snapshots will use incremental accounts hash in a future release
- Node operators, please delete your
<ledger>/calculate_accounts_hash_cache
directory (if you have one, to reclaim unused disk space). It has been moved/renamed to<ledger>/accounts_hash_cache/full
.
- Node operators, please delete your
-
AccountsDB
- use only one store per slot
- As a result of this change:
- The structure/file format of a snapshot has not changed, BUT 1.15 will only LOAD and only write snapshots that contain a single store per slot.
- 1.14 (and just considering this issue, 1.13) will be able to load anything 1.15 creates
- Importantly 1.15 will assert if a snapshot contains more than 1 store per slot.
- 1.14 was changed to remove the cli argument that enabled a validator to DISABLE the write cache. The result is that 1.14 validators will ONLY create one store per slot.
- However, 1.14 ledger-tool create-snapshot does NOT use the write cache, so snapshots generated by 1.14 ledger-tool create-snapshot can contain more than 1 store per slot. This results in an assert when loading the snapshot on 1.15.
- The structure/file format of a snapshot has not changed, BUT 1.15 will only LOAD and only write snapshots that contain a single store per slot.
- As a result of this change:
- use atomicu64 for bucket maxsize instead of lock (#29569)
- ancient append vecs enabled at -10k by default (#29565)
- feature: don't do rewrites in rent collection (#26491)
- Feature: Epoch Accounts Hash (#27539)
- use only one store per slot
-
Blockstore improvements
- Reduce the amount of IO that LedgerCleanupService performs (#29239)
-
Hotswap identity improvements
- patches bug in sigverify-shreds when identity is hot-swapped (#29802)
-
Turbine improvements
-
Runtime VM improvements
- Adds big integer modular exponentiation (EIP-198) (#28503)
- Adds alt_bn syscalls (EIP-196, EIP-197) (#27961)
- Update compute costs of curve25519 syscalls (#29610)
- Disable built-in loader ownership chains (#29959)
- Program un-/redeployment cooldown (#29136)
- Limit max instruction trace length to 64 (#27938)
- Disable CPI setting is_executable and rent_epoch (#26987)
- Stop sibling instruction search at parent (#27289)
-
Duplicate shred handling improvements
- Ingest duplicate proofs sent through Gossip (#29227)
-
RPC changes
-
Client reorg
- 1.15 brings a large reorganization of client crates, intended to reduce the number of dependencies downstream users have to pull in to use client apis. All of the client types from
solana-client
are now featured in their own crates to be pulled in separately as needed: - New crates of note:
solana-rpc-client
andsolana-rpc-client-api
;solana-quic-client
andsolana-udp-client
;solana-tpu-client
;solana-connection-cache
- 1.15 brings a large reorganization of client crates, intended to reduce the number of dependencies downstream users have to pull in to use client apis. All of the client types from
-
Gossip improvements
-
Ledger-tool improvements
-
Security
-
Banking
- Make it possible to record all of incoming transactions with
--enable-banking-tracer
, to be simulated later for benchmark and investigation (#29196)
- Make it possible to record all of incoming transactions with