besu
besu copied to clipboard
Block builder interrupt, incremental block building option
Description
As a validator, I want besu to produce a block within a specified duration so that I do not miss block proposals.
In some cases besu might take a too long to build a full block, and when the consensus client asks for the prepared block, only an empty block is available. Conversely, if besu builds a block quickly (with few or low value transactions) and susequent high value transaction arrive after the block is constructed, besu will produce a suboptimal block.
Both of these situations can be mitigated by having besu's block building process continue to iterate on building the highest value block until it reaches a timeout threshold and/or it is interrupted via engine_getPayload.
Acceptance Criteria
- implement an interruptible block builder that will save a partial block on interruption
- implement continuous block transaction selection, to re-pack or re-build new blocks as new transactions arrive
- engine_getPayload should interrupt block creation, causing the current partial block to be saved (and if it is the highest value block yet produced, returned to the calling consensus layer)
relates to #4400