-
Notifications
You must be signed in to change notification settings - Fork 4.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ability to filter transactions pre-sigverify when accounts hit write-compute limit #24657
Comments
Wrote this in discord but this could encourage more spam bc it’d drop transactions that could have fit in the next block but didn’t fit in the current one. If I saw this happening to my arb bot I’d spam a little more |
If done for all 4 slots like @sakridge mentions in discord that’d make more sense |
Use a fixed sized vec So we don’t need a write lock. Collisions there are fine as long as they are machine diversified. |
Tracking accounts write CU limits cross all leader slots is a good solution to discourage spamming, but also changes the scope of this task. Instead of leader reports saturated account while building block for current slot, it now needs to predict if account(s) will be saturated by packets in banking buffer. This requires to adjust 4 slots' cu limit utilization as packets inserted and dropped (eg being out-prioritized) from banking buffer; which in turn requires to sanitize transactions and loaded account addresses at point of On the other side in sigverify stage, packets are also required to be deserialized/sanitized/load-address in order to determine if packet writes to saturated accounts. So the prerequisites would be:
|
Problem
Once an account hits the write-compute limit, we need to throttle the number of transactions that touch that account.
Proposed Solution
account_tx_throttle: HashMap<Pubkey, (Atomic<usize>, timestamp)>
between banking threads and sigverifyAtomic<usize>
exists for that account already. If not, add it to the mapaccount_tx_throttle
to be thefee-per-cu
of the transaction that hit the compute limit. Call thisfee-per_cu
value thethrottle_minimum
.throttle_minimum
cc @aeyakovenko
The text was updated successfully, but these errors were encountered: