vms/avm
: Simplify Peek
function in mempool
#2449
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why this should be merged
We currently iterate through all the transactions in the mempool to build as full of a block as possible. This could cause an instance where we do this iteration many times:
Suppose we have a mempool with txs of size
[5, 6, 6, 6, 6, 1, 1, 1, 1, 1]
and we are attempting to build a block of size10
.Pre-this PR, the blocks will be built like so:
However, to get the txs of size
1
into the first block, we iterate through all the txs of size6
five times. Instead, we could build a block with as many of the highest priority txs (oldest for avm and platformvm) and stop when we hit a transaction that exceeds our block size. This produces blocks like this with no iteration:How this works
Modify
Peek
to just return the oldest tx in the mempool. Check the size of the tx in the block builder itself.How this was tested
CI + added UT