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-Elite users with an annual payment plan and who are approved by bloXroute.
Options
Fields to include in the transaction stream.
Examples
wscat Node.js Python Golang
Copy wscat -c wss://backrunme.blxrbdn.com/ws --no-check --header "Authorization: <YOUR-AUTHORIZATION-HEADER>"
> { "id" : 1, "method" : "subscribe" , "params" : [ "arbOnlyMEV" , { "include" : [ "transactions" ]}]}
< ......
Copy 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);
Copy 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 ())
Copy 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
}
}
Response (Tx Events)
Transaction Event
Copy <<< {
"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 updated 4 months ago