eth_sendDeterministicBundle

Submit a bundle for deterministic placement relative to watched addresses. The builder monitors the watched addresses during block construction and places the bundle once all of them have been touched at least once.

This is useful for strategies that depend on specific addresses having been touched — for example, executing after a DEX pool rebalances or after a lending protocol's state changes.

Requires the X-Flashbots-Signature header.

Parameters

Extends eth_sendBundle with an additional watchedAddresses field:

Field
Type
Required
Description

txs

string[]

Yes

Array of signed transactions as 0x-prefixed RLP-encoded hex strings

blockNumber

string

Yes

Target block number as a hex string (e.g. "0x1234567")

watchedAddresses

string[]

Yes

Addresses to watch for state changes. The bundle is placed after the last transaction that modifies any of these addresses.

minTimestamp

number

No

Minimum block timestamp (Unix seconds) for inclusion

maxTimestamp

number

No

Maximum block timestamp (Unix seconds) for inclusion

revertingTxHashes

string[]

No

Tx hashes allowed to revert without invalidating the bundle

droppingTxHashes

string[]

No

Tx hashes that, if already included on-chain, cause the bundle to be dropped

replacementUuid

string

No

UUID to enable bundle replacement

replacementNonce

number

No

Monotonically increasing nonce for replacement ordering

refundPercent

number

No

Percentage (0–100) of builder profit to refund to refundRecipient

refundRecipient

string

No

Address that receives the refund payment

Request

Response

Field
Type
Description

bundleHash

string

0x-prefixed bundle hash. Use with eureka_getBundleStats to track inclusion.

Placement Behavior

  • The builder waits until all watched addresses have been touched at least once, then attempts to place the bundle.

  • If the bundle execution fails, the builder may reattempt placement after additional state changes to the watched addresses.

  • If none of the watched addresses are touched by other transactions, the bundle is not included in the block.

Notes

  • Bundle replacement and cancellation work the same as with eth_sendBundle — use replacementUuid to replace or call eth_cancelBundle to cancel.

  • The bundle is only eligible for the specified blockNumber and is discarded after that block is built.

Last updated