Use the closest builder when building blocks #3842
Open
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.
This PR
This PR makes it so that, when running with multiple builders configured, a sequencer will try to build a block using the closest one
The flow of building blocks changes a bit. When building a block, instead of querying a few builders and sleeping, we now first query the closest builder to us. If that fails, we query the second closest, and so on
Latency estimation is done actively through a task spawned by the builder clients that runs every 5 minutes. It uses a simple moving average of how long it took to get a response from the new
/pingendpoint on the builder. We could have instead done this on the block building path but that would incur an extra round tripA previous attempt also tried to get rid of the extra RT by using the
/get_available_blocksendpoint to estimate latency, but through benchmarking this turned out to be inaccurate