Solana Tech Roundup
This past week there has been more work on QUIC, compute fee changes, and stake weighted connections. Testnet went down due to a datacenter dropping validator connections. The downtime highlights how a blockchain needs not only be decentralized in who runs nodes, but where they are run too. Thankfully mainnet-beta is more decentralized in that case and was mostly unaffected.
Proposal Highlight
Stake Account Version 2
Note: This proposal is not final and still being discussed. Join the discussion here.
There's a couple problems with the way Stake Accounts today:
- Redelegations are not possible without losing out on an epoch of rewards
- Reward calculations at epoch boundaries take a long time
For #1, we can expand the Stake struct to include information such as Delegation and Meta. That way multi-epoch redelegations can be calculated. Updating the struct would increase the original account size from 200 bytes to 256 bytes.
For #2, an update instruction is instead required in order to receive rewards. This instruction can be called every epoch in order to receive the new rewards, instead of always on an epoch boundaries. Legacy stake accounts will not have to concern themselves with this instruction.
Commit Highlights
- Web3.js: Fix client subscriptions
- Subscriptions for web3.js now work as you would expect them to! You can read a full writeup of the changes here
- Metaplex Fungible Token Metadata used in the explorer
- Adoption of the new fungible token metadata format in the explorer!
List of Changes
April 22
- Metaplex Fungible Token Metadata used in the explorer
- Stop a program from detecting that an instruction is a simulation
- Add NFT attributes tab to the explorer
- Declare syscalls with macro
- DRY-ing up our code!
- Support incremental snapshots and run blockstore proccessung at validator startup
April 23
- Error counters are only reported by the leader at the end of each slot
- Great performance boost for metrics
April 25
- Web3.js: PublicKey.isOnCurve accepts PublicKeyInitData
- Any way you currently create a public key can now be used in isOnCurve
- Web3.js: Get Multiple transactions in a single RPC call
- Add metrics around when QUIC streams are dropped
- Web3.js: Multiple unsubscribes will result in warning instead of fatal
- Support token2022 account parsing on RPC
- Optimize bank_forks inserts
- This optimization is done by inserting first and checking return vs checking before inserting
- Add skip account flag to local-test-validator
- Adds --skip-missing-accounts that will just skip accounts vs failing when copying accounts
April 26
- Web3.js: Add compute budget instruction
- Explorer: Parse compute budget instructions
- Log subscription for All no longer clobbers Some subscription for pubkey
- Remove vote instructions counters
- This log was producing a ton of spam on validators. Removed as it is no longer needed due to aggregated metrics
- This allows more more parallel work to be done in the QUIC streamer
- Fix bug in deleting and recreating stake account
- Stake rewards could possibly not be generated in this edge case. Now fixed. Full writeup here
- Explorer: Display slot leaders on block details page
April 27
- Convert tuples to structs in Stake rewards-calculation functions
- Much easier to read code when using structs
- Batch send transactions with bench-tps
- Web3.js: Eliminate circular dependencies
- Support token2022 instruction parsing on RPC
- Increase worker threads to 4 for QUIC Streamer runtime
April 28
- Fix get_first_available_block for genesis
- First two blocks were inaccessible previously. Now fixed
- Separate Sigverify metrics across TPU/TVU/TPU-vote
- Explorer: Option to sort transactions by Compute in block
- Explorer: Support filter transactions by account in block
- Leader info refresher added to keep leader info up to date when sending transactions
- Add parsing of token2022 extensions except for confidentialTransferMint and confidentialTransferAccount
- Web3.js: Fix client subscriptions
- Huge and welcome change that fixes web3js subscriptions
Signup for the Newsletter
Want to get these updates as a newsletter? Be sure to signup here to get this update once a week sent to you.