General

Our builder is max profit. No filtering of any kind.
Endpoint address: https://rpc.titanbuilder.xyz
Coinbase address: titanbuilder.eth
Rate limit: 50 requests/sec

API

eth_sendBundle

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_sendBundle",
  "params": [
    {
      txs,               // Array[String], A list of signed transactions to execute in an atomic bundle, list can be empty for bundle cancellations
      blockNumber,       // (Optional) String, a hex-encoded block number for which this bundle is valid. Default, current block number
      minTimestamp,      // (Optional) Number, the minimum timestamp for which this bundle is valid, in seconds since the unix epoch
      maxTimestamp,      // (Optional) Number, the maximum timestamp for which this bundle is valid, in seconds since the unix epoch
      revertingTxHashes, // (Optional) Array[String], A list of tx hashes that are allowed to revert or be discarded
      replacementUuid,   // (Optional) String, any arbitrary string that can be used to replace or cancel this bundle
      refundPercent,     // (Optional) Number, the percentage (from 0 to 99) of the  ETH reward of the last transaction, or the transaction specified by refundIndex, that should be refunded back to the ‘refundRecipient’
      refundIndex,       // (Optional) Number, the index of the transaction of which the ETH reward should be refunded. Default, last transaction in the bundle
      refundRecipient,   // (Optional) Address, the address that will receive the ETH refund. Default, sender of the first transaction in the bundle
    }
  ]
}


Note: If the refundPercent field is set, the builder will construct a refund transaction automatically. However, if the refund amount does not cover the cost of the transaction (i.e., gas_used * base_fee), the bundle will be discarded.

Refund Example:

Consider the following Bundle:

TXN 1 - User swap (Base fee: 50 Gwei, Piority fee 3 Gwei, Gas: 280k)
TXN 2 - Backrun (Base fee: 50 Gwei, Priority fee 100 Gwei, Gas: 150k)
refundPercent: 90%
Current block base fee: 50 Gwei


Calculation:

ETH reward of the last transaction in the bundle = (150k x 100 Gwei) = 15000 Gwei
ETH reward after transfer transaction fees = 15000 - (21k x 50 Gwei) = 13950 Gwei
Refund amount = 0.9 x 13950 Gwei = 12555 Gwei

Sponsored Bundles:

Our builder supports Sponsored Bundles. If we receive a bundle that fails with LackOfFundForGasLimit error, we will automatically send the ETH required to cover the gas fees and value transfer for the transaction to succeed.

The caveat here is that the bundle must of course increase the builder balance, as we will need to recoup this sponsoring cost with the bundle’s execution.

For further details, see our substack article.

CURL example:

curl -s --data '{"jsonrpc": "2.0","id": "1","method": "eth_sendBundle","params": [{"txs": ["0x12…ab","0x34..cd"], "blockNumber": "0x102286B","replacementUuid": "abcd1234"}]}' -H "Content-Type: application/json" -X POST https://rpc.titanbuilder.xyz

Response example:

{"result":{"bundleHash":"0x164d7d41f24b7f333af3b4a70b690cf93f636227165ea2b699fbb7eed09c46c7"},"error":null,"id":1}

eth_cancelBundle

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_cancelBundle",
  "params": [
    {
      replacementUuid, // String, to uniquely identify submission
    }
  ]
}

Note: the replacementUuid must have been set when the bundle was submitted.

CURL example:

curl -s --data '{"jsonrpc": "2.0","id": "1","method": "eth_cancelBundle", "params": [{"replacementUuid": "abcd1234"}]}' -H "Content-Type: application/json" -X POST https://rpc.titanbuilder.xyz

Response example:

{"result":200,"error":null,"id":1}

N.B.: We cannot guarantee that the bundle will be canceled if the cancellation is submitted within 4 seconds of the final relay submission.

eth_sendRawTransaction / eth_sendPrivateRawTransaction

{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "eth_sendRawTransaction”,
  "params": ["0x…4b"],  // Signed raw tx hex
}

CURL example:

curl -s --data '{"jsonrpc": "2.0","id": "1","method": "eth_sendRawTransaction","params": ["0x…12"]}' -H "Content-Type: application/json" -X POST https://rpc.titanbuilder.xyz

Response example:

{"result":200,"error":null,"id":1}

eth_sendPrivateTransaction

{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "eth_sendPrivateTransaction",
  "params": [
    {
      tx,               // Signed raw tx hex
      maxBlockNumber,   // (Optional) String, a hex-encoded string representing the block number of the last block in which the transaction should be included
    }
  ]

CURL example:

curl -s --data '{"jsonrpc": "2.0","id": "1","method": "eth_sendPrivateTransaction","params": [{"tx": "0x12…ab"}]}' -H "Content-Type: application/json" -X POST https://rpc.titanbuilder.xyz

Response example:

{"result":200,"error":null,"id":1}

mev_sendBundle

Bundle and refund preferences for Flashbots MEV Share protocol (full payload specification details here)

{
    jsonrpc: "2.0",
    id: string | number,
    method: "mev_sendBundle",
    params: [{ /* MevSendBundleParams */
        inclusion: {
            block: string,      // hex-encoded number
            maxBlock?: string,  // hex-encoded number
        },
        body: Array<
            { hash: string } |
            { tx: string, canRevert: boolean } |
            { bundle: MevSendBundleParams }
        >,
        validity: {
            refund: Array<{
                bodyIdx: number,
                percent: number,
            }>,
            refundConfig: Array<{
                address: string,
                percent: number,
            }>,
        },
    }]
}

CURL example:

curl -s --data '{"jsonrpc": "2.0", "id": "1", "method": "mev_sendBundle", "params": [{"inclusion": {"block": "0x102286B", "maxBlock": "0x1056402"}, "body": [{"hash": "0x32B.."}, {"tx": "0x020..", "canRevert": false}], "validity": {"refundConfig": [{"address": "0x8EC1237b1E80A6adf191F40D4b7D095E21cdb18f", "percent": 100}]}}]}' -H "Content-Type: application/json" -X POST  https://rpc.titanbuilder.xyz

Response example:

{"result":{"bundleHash":"0x6a115261e5bf1cd10b9ba18b7edde9b8a4cf464cc399f80993199eaae1ec277c"},"error":null,"id":"1"}

Authentication

Authentication via Flashbots standard is optional but encouraged. By default, authentication moves you into the Medium Priority queue.

There are three priority queues:

  • High: signed header + reputation
  • Med: signed header
  • Low: unsigned header

Higher priority queues have higher inclusion rates as bundles will be added to the pool faster, allowing for later submissions.

Builder Public Keys

Our builder will submit only using the following public keys:

  • 0xb67eaa5efcfa1d17319c344e1e5167811afbfe7922a2cf01c9a361f465597a5dc3a5472bd98843bac88d2541a78eab08
  • 0x94a076b27f294dc44b9fd44d8e2b063fb129bc85ed047da1cefb82d16e1a13e6b50de31a86f5b233d1e6bbaca3c69173
  • 0xb26f96664274e15fb6fcda862302e47de7e0e2a6687f8349327a9846043e42596ec44af676126e2cacbdd181f548e681
  • 0x95c8cc31f8d4e54eddb0603b8f12d59d466f656f374bde2073e321bdd16082d420e3eef4d62467a7ea6b83818381f742

Any public key not included in the above list should be considered unrelated to our builder.

Block Building Algorithm

Our builder runs multiple sorting algorithms concurrently that compete against each other to produce the most valuable block possible.

Sorting of bundles and transactions is not necessarily ranked by effective gas price, and as such top-of-block execution is not guaranteed. Based on how transactions interact with each other and the current state, including transactions with lower effective gas prices before higher paying ones may yield more valuable blocks, which is what our algorithms optimise for.

We will never unbundle a bundle, and will never broadcast any bundles or private transactions to the public mempool.

Coming Soon

View searcher priority status with eth_getUserStatsV2.