Solana Tech Roundup
This past week 1.10.25 went live on mainnet-beta, bringing a number of optimizations to the Solana network. QUIC is not currently enabled on mainnet-beta and is not the reason for the network being better. The many different optimizations in 1.10 has brought the network to the current state. Durable Nonce transactions were re-enabled on mainnet-beta with recent feature activations in 1.10.25.
Proposal Highlight
Diet Clients
Diet clients is a protocol for users using the Solana network to get an honest minority security guarantee for confirmations.
Usually users rely on RPC nodes to see at best the supermajority confirmed signatures. Diet clients would sample the network to understand if the minority believes that the supermajority is signing invalid blocks. The diet client can then stall confirmations for the user until they verify that the supermajority was valid or not with a full node.
This proposal is still being discussed! Join the discussion.
Commit Highlights
Release versions for features are now added to their associated feature-gate issues. This is super helpful to track features and when they're available.
Transaction signatures can now be used to track account updates when using geyser plugins. This is useful when reading large amounts of data with a Geyser-enabled backend for faster read times
List of Changes
June 10
- Add connection pool support in connection cache
- Add transaction signatures on account update for geyser
June 12
June 13
- Do not exclude failed simple vote transactions from consensus
- Failed simple votes should be included in overall consensus regardless of whether or not they successfully execute.
- Parallelize rent collection across multiple partitions
- Update zk token ops to use curve 25519 syscalls
- Serialize snapshots directory first so we can begin indexing quicker
- Avoid possible divide by zero when computing max rayon threads
- Add forwarding counters to leader slot metrics
- Add minimum iterator packet count for rayon verification threads
- There is a spike of CPU time consumption when becoming a leader due to high packet intake. Reduce the amount of CPU consumed by adding a dynamic minimum length iterator to lower packets per thread.
- Add VoteInstruction::AuthorizeWithSeed and VoteInstruction::AuthorizeWithSeedChecked
- Be able to authorize a derived key to be a 'withdrawer' while also allowing those with the base key to still sign the authority to something else.
June 14
- Avoid adding 'uncleaned_roots' when generating index
- Avoid oom errors with large account numbers
- Accounts Index: Avoid race conditions by only advancing age in the first thread in the flushing pool
- Add minimum beta/stable releases for features
- Paginate feature accounts using multiple getMultipleAccounts RPC calls
June 15
- AccountsDB: Generate and batch index straight to disk
- Reduces index time from 60s to 40s
- Add ability to use non-default app profile id in bigtable requests
- Enforce max accounts data size limit per block in replaystage
June 16