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.
Transactions v2 - On-chain Address Lookup Tables
Due to transaction size limitations, you are currently limited to a max of 35 accounts(max of 19 signatures) used in a single transaction. Developers wanting to compose with many programs may run into this cap and be limited in what they can build. On-chain address lookup tables can enable a transaction to load more accounts, granting access for developers to compose more with many programs at once.
- Using lookup tables will enable you to access up to 256 accounts per transaction
- Tables can be deactivated at any time
- Cost for transactions using a lookup table with increase
- Transactions must now be versioned
⛽ Octane ⛽
Octane is a gasless transaction relayer for Solana. The idea is that people can use an Octane relayer to either get a free transaction or a transaction paid by a token other than SOL. Octane is currently untested.
💳 Solana Pay 💳
Solana Pay is a standard schema for payment across wallets. This will enable a standard format for creating QR codes for:
- Requesting payment
- Adding a memo to a payment
- Adding a label to a payment
- Requesting payment of amount in SOL or SPL-token
🤐 SPL-ZK-Token 🤐
SPL-ZK-Token is a token program companion to the current SPL Token Program to enable confidential transfers of tokens.
- 🎉 Full M1 Support on local test validators 🎉
- Max accounts locked by a single transaction changed to 64 accounts
- Creating accounts must be rent exempt
- Max compute units a block can have for votes is now ~75%
Full list of changes:
- Checks the earliest missing leader block for propagation instead of the most recent
- This helps with consensus and keeping the cluster in check
- LTO can help optimize crates
- Non-zero lamport accounts just haven’t been cleaned up yet
- This will help performance when there are a lot of failed transactions in a row
- With this change you can use the ledger tool to find any missing blocks in your personal Bigtable
- Test that verifies that even if votes are taking too long to land and some of the referenced slot are slots no longer present in the slot hashes sysvar, consensus will still be attained
- Community Contribution! Add getFeeForMessage RPC call to web3.js
- Massive refactor to use crossbeam_channel
- Optimizing ReadOnlyAccountsCache LRU Eviction on AccountsDB
- All accounts are now required to be rent exempt
- Handle account data size change due to rent collected accounts
- Deserializing these can be slow, and they’re accessed often. Let’s cache them!
- A vote account’s authorized voter may only be changed by the existing authorized voter. To prevent a compromised voter key killing a validator, the vote account withdrawal authority is now permitted to change the authorized voter
- Vec has a bad remove(0) performance, and is called a lot when discarding a lot of excess packets(often duplicate signatures). Updating to VecDeque shows a 40x improvement benching on a single sender when discarding the excess packets