Skip to content

Implement builder tx bundle submission - #5116

Closed
jmg-duarte wants to merge 10 commits into
jmgd/submission-submitterfrom
jmgd/submit-builders
Closed

jmg-duarte wants to merge 10 commits into
jmgd/submission-submitterfrom
jmgd/submit-builders

Conversation

@jmg-duarte

Copy link
Copy Markdown
Contributor

Description

Adds [submission.builders]: the driver signs the settlement and sends it directly to block builders with eth_sendBundle, as one bundle for each block until the deadline. The bundles have no revertingTxHashes, so builders drop a settlement that reverts. Each bundle is only valid for the declared block, so there is no pre-simulation and no cancellation.

[submission.builders]
urls = ["https://rpc.titanbuilder.xyz", "https://rpc.buildernet.org"]

Changes

  • infra::Builders sends all bundles at the same time and returns when the first builder accepts. The other requests continue in the background, because if we drop them, the bundles for the later blocks are cancelled. Each request has a 3s timeout.
  • The settlement account signs the tx and the X-Flashbots-Signature header (the refund identity). Each block's request is signed once and sent as the same bytes to all builders.
  • wait_for_inclusion is now shared by the mempool path and the builders path. Mempool change: at the deadline, it checks getLogs before it returns Expired.
  • New metrics: builder_submission{builder, result} and builder_submission_time{builder}.

Known limitations

  • A settlement that starts to revert is reported as Expired. No builder reports dropped bundles in time (Titan's stats come ~5 min later).
  • nonce-block-number, target-confirm-time and retry-interval are ignored for builders.

How to test

Driver tests

@jmg-duarte
jmg-duarte force-pushed the jmgd/submission-submitter branch from 9f7da35 to d678601 Compare October 21, 2026 13:31
@jmg-duarte jmg-duarte closed this Oct 21, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant