This week there has been a flurry of activity regarding performance on the Solana network. The discussion and commits have been fun to follow. Be sure to check out the recent Twitter space with Anatoly, @buffalu__, @leolukde, and @dadadadaffy found here.
Currently transaction fees are only based on the number of signatures in a transaction, but this does not account for the validator's work involved to validate this transaction.
The new fee will be calculated based on:
The max transaction fee can be computed beforehand, and a rebate for any unused compute or write locks will be sent back as a rebate. This may change fees to not be deterministic in the future.
When a transaction is made on a program, a number of accounts become write-locked and can slow down other transactions from being made on that account. A great example is liquidators. Liquidators will write lock a number of accounts to attempt to liquidate any pending eligible orders. If there's no current eligible orders for liquidation, the transaction locked accounts but didn't use them.
Not paying for unused write locked accounts can incentivize spamming the network. The discussion proposes the following:
Let's take this example:
Let's say Raydium's new IDO pool account has a compute cap of 1m units. When launched, people submitting orders over 10 slots reach a total compute amount of 2m on the IDO pool account. For the next 20 slots, the fees for submitting orders on the IDO pool will double. Exponentially increasing fees forces spam bots to better execute their orders or pay an increasing fine.
If you want to read more or contribute to the discussion, join the issue here.
= Community Contribution! Add JSON5 config support to accountsDB
getBlock
, getLatestBlockhash
, and getTransaction
.