# MEVBlocker Compatible (V3)

The V3 WebSocket is an extension of the [V2 Websocket](broken://pages/oTaCqHGEYJQcfBjkP7wA) so please refer to that for core functionality this page highlights the differences / additions.

During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to <contact@blinklabs.xyz> or @YNBlink / @ciaranmcveigh on telegram or discord for access.

## Connecting to Blink's WebSocket

You can connect to Blink's WebSocket via `wss://ethauction.blinklabs.xyz/ws/v3/{$API_KEY}`

## V3 Differences

Below are the differences between the V3 and V2 websockets.

### 1 . Websocket Subscriptions

The V2 websocket auto-subscribed you to the transaction flow. V3 will require eth\_subscribe to have been called to begin streaming data.

The are 2 flows you can subscribe to, transactions and "originator bundles".

"Originator Bundles" are **non-searcher** bundles, an example of one would be a telegram bot that is sending a bundle with an approve ERC-20 & swap ERC-20 so that can be executed sequentially in the same block \[ approveTx, swapTx] .

#### Transaction Subscription

Transactions can be subscribed to using either

```
{"method":"eth_subscribe","params": ["blink_partialPendingTransactions"]}

or

{"method":"eth_subscribe","params": ["mevblocker_partialPendingTransactions"]}
```

#### Originator Bundle Subscription

Originator bundles can be subscribed to using either

```
{"method":"eth_subscribe","params": ["blink_partialPendingBundles"]}

or

{"method":"eth_subscribe","params": ["mevblocker_partialPendingBundles"]}
```

#### Multiple Subscriptions

You can also subscribe to multiple data streams at once

```
{
    "method":"eth_subscribe",
    "params": [
        "blink_partialPendingTransactions",
        "blink_partialPendingBundles"
    ]
}
```

### 2. Access to Originator Bundles

The V3 websocket gives you access to originator bundles data streams that can be searched on. The same principles apply as with individual txs, the searcher tx must go after the "originator bundle".

The MEVBlocker Schema will again be used for exposing the data with one slight change. Result will change from a single tx JSON object to an array of tx JSON objects.

Here's an example

```
{
    "jsonrpc": "2.0", 
    "method": "eth_subscription", 
    "params": {
        "subscription": "0xd58bbbc0f5190962eff01b6f0ec17724", 
        "result": [
            {
                "chainId": "0x1", 
                "to": "0x6215589d293fdf52886484f46f0d6a11c76b4a7e", 
                "value": "0x4fefa17b724000", 
                "data": "0x", 
                "accessList": [], 
                "nonce": "0x10", 
                "maxPriorityFeePerGas": "0x0", 
                "maxFeePerGas": "0x7e1c65b04", 
                "gas": "0x5208", 
                "type": "0x2", 
                "hash": "0x5f08dd372fce1a44dda27bed60ca036acb4979fad6ca37b9c388e351a870fe4c", 
                "from": "0xcb1588f3f7e92a1278c68a6aed4bdcbc68534b29"
            },
            {
                "chainId": "0x1", 
                "to": "0x8765589d293fdf52886484f46f0d6a11c76b4a7e", 
                "value": "0x0", 
                "data": "0x", 
                "accessList": [], 
                "nonce": "0x11", 
                "maxPriorityFeePerGas": "0x0", 
                "maxFeePerGas": "0x7e1c65b04", 
                "gas": "0x5208", 
                "type": "0x2", 
                "hash": "0x3456dd372fce1a44dda27bed60ca036acb4979fad6ca37b9c388e351a870fe4c", 
                "from": "0xcb1588f3f7e92a1278c68a6aed4bdcbc68534b29"
            },
        ]
    }
}   
```

#### Originator Bundle Bids

The bidding process is the same as for a normal transaction. Reference the **last transaction's hash** in the originator bundle — Blink will look up the full bundle and prepend it ahead of your backrun before simulation and builder submission.

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "method": "eth_sendBundle",
    "params": [
        {
            "txs": [ 
                "lastTxHashInBundle",
                "searcherRawTxHex"
            ],
            "blockNumber": "0x779352"
        }
    ]
}
```

Blink will resolve `lastTxHashInBundle` to the full originator bundle and prepend all of its transactions ahead of your backrun before being sent to the builders.

> **Note:** Originator bundles are constructed greedily, which means some of the earlier transactions in a bundle may already have been included on-chain by the time you receive it. Your simulation and bid logic should handle this gracefully — treat already-included or reverting transactions as drops, similar to how builders handle `droppingTxHashes`. Only the last transaction's hash is used to index the bundle, so if that transaction is already included the bundle will no longer be available to bid on.
>
> Individual transactions from a bundle (e.g. the approve and the swap) may appear via `blink_partialPendingTransactions` early in the block, but a bundle is only available to bid on once it has been constructed and broadcast via `blink_partialPendingBundles`. Do not rely on individual transactions to infer the bundle — wait for the bundle broadcast.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.blinklabs.xyz/blink/ethereum/searchers/integration/listen-to-transactions/mevblocker-compatible-v3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
