Solana Tech Roundup
If you're a Solana developer like me, you may find it difficult to keep up with the latest updates to the Solana repository. This is because the Solana repository is a large and complex project with many contributors constantly adding new features and bug fixes. There's just so much content to read and digest.
This week's roundup is a summary of the most recent commits to the Solana repository.
Proposal Highlight
Bankless Leader
The bankless leader proposes a design to greatly increase the efficiency of getting transactions into a block and blocks produced. Currently Leaders do a number of things such as:
- Ordering transactions
- Deduping/verifying signatures
- Generate PoH
- Executing transactions
- Shredding entries
- Broadcasting shreds
This is a lot of work for a leader to do, and we could actually remove some of the work with bankless leaders. If we have both a bankless leader and a leader, we could have the leader just replay the transactions and execute, while doing all the memory intensive work in the bankless leader.
So we'd have a bankless leader doing:
- Ordering transactions
- Dedup/Verify signatures
- Generate PoH
- Ordering transactions
- Shred entries
Then a leader could just replay, execute, and broadcast the shreds. This could lead to multiple leaders doing transaction execution at once because PoH is already generated, leading to much faster slot times!
Commit Highlight
Previously you could get and understand all instructions in a transaction during the processing of a single instruction, but not what had been processed thus far. This is great for program composability to understand what instructions have processed vs not during a transaction.
List of Changes:
January 28
- Fix PoH recorder on startup
- The PoH working bank was moved to be set during the replay stage instead of on validator startup
- Limiting compiler jobs to 4gb per thread
- This is required to run the stable tests on CI
January 29
January 31
- includes zero weighted entries in WeightedShuffle
- Including zero weight entries and adding to the end after the shuffle is more efficient in due to how turbine works
- Refactor: Unify SysvarCache
- Sysvars RecentBlockhashes and StakeHistory are added to the SysvarCache
- Dedupe transactions before sending to the leader
February 1
February 2
- RPCs now use minimal mode by default
- RPCs now have a smaller method set by default and have to manually enable endpoints such as getProgramAccounts
- Reject close of active vote accounts
- If a vote account is active, it should not be allowed to be closed before the end of an epoch
February 3
- Add get_processed_sibling_instruction syscall
- Excellent addition. You can now get what instructions have been processed in your transaction
- Enable maxRetries in web3.js
- You can find more information on this in the solanacookbook