Bid on transactions
The private mempool broadcasts an auction for every transaction it receives. The auction reveals certain parts of the transaction that searchers can use to post a backrun bid.
1. Listen for Pending Auctions
Auctions are streamed over the following websocket:
wss://mempool.merkle.io/stream/auctionsHere is an example of an what an auction looks like:
{
  "chain_id": 1, // 1 (ethereum), 56 (bsc)
  "id": "6397ad29b5c6edb1a7eeea18",
  "transaction": {
    "data": "0502b1c500000000000000000000000004969cd041c0cafb6ac462bd65b536a5bdb3a67000000000000000000000000000000000000000000002f38ca25d4a70c3ab633d000000000000000000000000000000000000000000000000282a2d9685378c260000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000003b6d0340b767c20d9773adce84d0f0a5bc64e2f114ad3076e26b9977",
    "from": "0x37a89da7BfF274F9E773418ef49caA2aFe393D70",
    "gas": 355000,
    "hash": "0xe3f7d4b7eb34b37e47bd54cd225c79f579d2b52869d87e7b288062ef817e9445",
    "to": "0x1111111254EEB25477B68fb85Ed929f73A960582",
    "value": "0",
    "function_selector": "0x0502b1c5",
    "logs": [
      {
        "address": "0x0319000133d3AdA02600f0875d2cf03D442C3367",
        "data": "0x",
        "topics": [
          "0x5f6ebb64ba012a851c6f014e6cad458ddf213d1512049b31cd06365c2b059257",
          "0x000000000000000000000000c5017be80b4446988e8686168396289a9a62668e",
          "0x0000000000000000000000000f0a35351b1c5512e50c1c7410c59d5bc52bfe37"
        ]
      }
    ]
  },
  "closes_at": "2022-12-12T22:37:32.937Z",
  "created_at": "2022-12-12T22:37:28.937Z"
}2. Submit Bids
Bids can be submitted using any Flashbot client with the relay url:
POST https://mempool.merkle.io/relayHowever, the first transaction needs to be the hash of the target transaction, since the full transaction data is not available to you.
Bid payment is different based on chains:
- Ethereum: Bids must be paid by transfer to the block builder (block.coinbase). 
- BSC: Bids must be paid via fee recipient transfer. 
To recap, a bid is a bundle with 2 transactions:
- The hash of the target transaction 
- A backrun transaction 
For example, if we wanted to bid on the auction above, the bundle would be:
[
    "0xe3f7d4b7eb34b37e47bd54cd225c79f579d2b52869d87e7b288062ef817e9445", // hash of the transaction
    "0x.....", // my backrun
]The full request would for this example would be:
// POST https://mempool.merkle.io/relay
{
    "method": "eth_sendBundle",
    "jsonrpc": "2.0",
    "params": [
        {
            "txs": [        
                "0xe3f7d4b7eb34b37e47bd54cd225c79f579d2b52869d87e7b288062ef817e9445", // hash of the transaction
                "0x.....", // my backrun
            ] 
        }
    ]
}The API responds with a bid id:
{
    "jsonrpc": "2.0",
    // bid uuid
    "result": "0000-0000-0000-0000"
}Check the status of your bid using the Bid status API endpoint.
Last updated
Was this helpful?
