Skip to content

Implement builder tx bundle submission - #5116

Draft
jmg-duarte wants to merge 1 commit into
jmgd/submission-submitterfrom
jmgd/submit-builders
Draft

jmg-duarte wants to merge 1 commit 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant