Enable submit tx's directly to block builders - #4881
Conversation
|
Claude finished @jmg-duarte's task in 4m 23s —— View job PR Review: Submit tx's directly to block buildersNice, well-documented change — the Flashbots signature scheme, the "accept if any builder accepts" semantics, the revert-protection default flip for builder mempools, and the I left 2 inline comments and have 1 additional finding below that couldn't be anchored inline because it lives in an unchanged file ( Additional finding (unchanged file:
|
| if !config.builders.is_empty() { | ||
| // Builders get txs we sign ourselves. An address-only account | ||
| // relies on the node to sign and would fail on every settlement. | ||
| let address_only: Vec<_> = signers | ||
| .iter() | ||
| .filter(|(_, account)| matches!(account, Account::Address(_))) | ||
| .map(|(address, _)| address) | ||
| .collect(); | ||
| assert!( | ||
| address_only.is_empty(), | ||
| "mempool {} submits to builders but accounts {address_only:?} cannot sign", | ||
| config.name | ||
| ); | ||
| } |
There was a problem hiding this comment.
This misconfiguration (a builder mempool whose settlement account can't sign locally) is a static, config-time invariant, but it's enforced with an assert! inside Mempool::new, so it surfaces as a runtime panic during run() rather than a clean config-load error. Consider validating it in config/file/load.rs (alongside the other mempool checks that already return errors) so an operator gets a proper error message instead of a panic/stack trace on startup.
c18c3bb to
a4ec9d3
Compare
Description
Enables submitting transactions directly to block builders, leading to faster inclusion times.
After some experimenting, adding the main 10 block builders leads to 90% of auctions achieving 1 block settlements. One can check with the following query:
Changes
How to test
Tested in staging and prod