Solana Tech Roundup
This past week Devnet did its duty by failing when applications were trying out the new Compute Budget instruction. Promptly fixed, the cluster returned to normal. Thank you for testing out the Compute Budget program in Devnet!
Proposal Highlight
Leader Duplicate Block Slashing
When a leader produces multiple blocks for the same slot, the number of potential forks increase. For each fork, the cluster has to do work in order to come to consensus. In order to remove that extra work, slashing is proposed.
This proposal breaks down how:
- Duplicates are tracked and confirmed
- Network stabilizes and repairs
Commit Highlight
Devnet went down twice last week due to a consensus halting bug around the Compute Budget Program. Users that were submitting transactions with invalid Compute budget instructions were incrementing the bank's signature count even if the transaction was not executed.
If the Banking stage incremented the signature count with transactions that were never executed, the replay stage later(with only valid executed transactions) would have a signature count mismatch, causing consensus to fail.
This change is important to note, as the failure did not occur in Testnet, but in Devnet.
List of Changes
April 15
- Return data on SimulateTransactions
- You can now return data from an instruction call and see it return via the RPC.
- Deserialize packets only once in the Banking stage
- Reduce metrics/logs on rpc-pubsub
- Fix .sol domain lookups
- Add ability to have multiple build-bpf and test-bpf jobs
- Added test to understand if skipped slots impact recent blockhash queue
- Spoiler alert: They do!
- Add slot info in epoch
- Log secondary index onstartup
- This is helpful when debugging what indexes are costing too much on your validator
- Increase keep-alive time for QUIC
- Remove flow type generation
- Making way for some major changes coming to web3.js
April 16
- Optimize explorer search
- Support overriding fetch in web3.js
- Fix .sol lookups on explorer
- Separate staked and un-staked connection pools for QUIC
- This change keeps unstaked rpc nodes from out-competing the staked validators
- Fix transactions populating and retain original account order
- This is a temporary fix until the Transaction class can be rewritten to handle Messages correctly.
- Fix failed transactions from having their cost added to the cost tracker
April 17
April 18
April 19
- Fix signature count consensus issue
- When Devnet was down, it was due to a signature count bug with invalid ComputeBudget instructions. This was the fix
- Fix partial signing of populated transactions
- Enforce the size of a stake account
- Separate cost tracking of builtins and bpf programs
- Add token22 as known token id
- Charge each account for compute usage
- This is related to the cost changes for how much compute units are used in a transaction
- Token Program Id added to balance structs
April 20
- Report slot level progress while loading validator
- Packet/batches sent metric on QUIC
- RPC filter support for token22
- getTokenAccountsByOwner and getProgramAccounts can now be filtered for token22
April 21
- Track transaction executions units in cost tracker
- Only add hashes for completed blocks to recent blockhashes
- Update rewards at epoch boundary using cached accounts
- This is an effort to significantly speed up rewards at epoch boundaries
- Send transactions in batches
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.