BackRunMe: arbOnlyMEV
Name:
arbOnlyMEV
arbOnlyMEV
is an opt-in stream of private transactions that are available for arbitrage opportunities where the searcher shares the profit with the transaction sender, miner, and bloXroute. Full transaction details are not made available on this stream (no signature fields) to retain the privacy of the sender, though MEV bundles that reference these transaction hashes can be created via submit_arb_only_bundle
. Transactions that appear in the arbOnlyMEV
stream are not available in public mempool and do not appear in the newTxs
or pendingTxs
feeds.This stream is only available on special Cloud API instance (
backrunme.blxrbdn.com
) to Enterprise users.Options
Key | Description | Values |
include | Fields to include in the transaction stream. | transactions |
Examples
wscat
Node.js
Python
Golang
wscat -c wss://backrunme.blxrbdn.com/ws --no-check --header "Authorization: <YOUR-AUTHORIZATION-HEADER>"
> {"id": 1, "method": "subscribe", "params": ["arbOnlyMEV", {"include": ["transactions"]}]}
< ......
var fs = require('fs');
const WebSocket = require('ws');
const ws = new WebSocket(
"wss://backrunme.blxrbdn.com/ws",
{
headers: {
"Authorization" : <YOUR-AUTHORIZATION-HEADER>
},
rejectUnauthorized: false,
}
);
function proceed() {
ws.send(`{"jsonrpc": "2.0", "id": 1, "method": "subscribe", "params": ["arbOnlyMEV", {"include": ["transactions"]}]}`);
}
function handle(nextNotification) {
console.log(nextNotification.toString()); // or process it generally
}
ws.on('open', proceed);
ws.on('message', handle);
import asyncio, json, websockets
async def main():
auth_key = "YOUR_AUTHORIZATION_HEADER"
uri = 'wss://backrunme.blxrbdn.com/ws'
async with websockets.connect(
uri,
header=["Authorization:{}".format(auth_key)],
sslopt={"cert_reqs": ssl.CERT_NONE},
) as websocket:
subscribe_request = {
"jsonrpc": "2.0",
"id": 1,
"method": "subscribe",
"params": ["arbOnlyMEV", {"include": ["transactions"]}]
}
await websocket.send(json.dumps(subscribe_request))
response = await websocket.recv()
subscription_id = json.loads(response)["result"]
while True:
next_notification = await websocket.recv()
print(next_notification) # or process it generally
unsubscribe_request = {
"jsonrpc": "2.0",
"id": 2,
"method": "unsubscribe",
"params": [subscription_id]
}
await websocket.send(json.dumps(unsubscribe_request))
if __name__ == '__main__':
asyncio.run(main())
package main
import (
"crypto/tls"
"fmt"
"github.com/gorilla/websocket"
"net/http"
)
func main() {
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
}
dialer := websocket.DefaultDialer
dialer.TLSClientConfig = tlsConfig
wsSubscriber, _, err := dialer.Dial("wss://backrunme.blxrbdn.com/ws", http.Header{"Authorization": []string{<YOUR-AUTHORIZATION-HEADER>}})
if err != nil {
fmt.Println(err)
return
}
subRequest := `{"id": 1, "method": "subscribe", "params": ["arbOnlyMEV", {"include": ["transactions"]}]}`
err = wsSubscriber.WriteMessage(websocket.TextMessage, []byte(subRequest))
if err != nil {
fmt.Println(err)
return
}
for {
_, nextNotification, err := wsSubscriber.ReadMessage()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(nextNotification)) // or process it generally
}
}
Transaction Event
<<< {
"jsonrpc": "2.0",
"id": null,
"method": "subscribe",
"params": {
"subscription": "3c87cccd-0df5-4938-947e-b24f7602f147",
"result": {
"transactions": [
{
"txHash": "0x88b...296",
"txContents": {
"from": "0x6e9...f89",
"gas": "0x299b6",
"gasPrice": "0xf9982de00",
"hash": "0x88b...296",
"input": "0x18...cc2",
"nonce": "0xf",
"value": "0x0",
"type": "0x0",
"to": "0x7a2...88d"
},
"localRegion": true
}
]
}
}
}
Last modified 2mo ago