Subscribe Bundle

Introduction

Currently, Searcher can receive bundle stream from Scutum without subscribing to a plan.

The bundle stream of Scutum is based on the SSE protocol and pushed uniformly in the form of a bundle, including transactions submitted via eth_sendRawTransaction and bundles submitted via eth_sendMevBundle. Transactions in the data stream are uniformly desensitized and only authorized transaction data is disclosed.

Searcher can obtain data through the RPC endpoint to execute the backrun strategy. To avoid data interruption due to network fluctuations, it is recommended to establish a reconnection mechanism.

RPC Endpoint

Ethereum:https://eth.blockrazor.xyz/stream

BSC:https://bsc.blockrazor.xyz/stream

Rate Limit

Data stream limit:5 Streams / IP

Bundle Type

Raw Bundle

Raw Bundle refers to the bundle that has not been implemented by Scutum's Searcher with the backrun strategy. Transactions in Raw Bundle come from two channels.

Transactions submitted through eth_sendRawTransaction will be automatically constructed as a bundle by Scutum and pushed to Searcher to execute the backrun strategy. The Raw Bundle in this scenario only contains one transaction;

For the Raw Bundle submitted through eth_sendMevBundle, the transactions come from the public mempool or are self-constructed. The Raw Bundle in this scenario can contain up to 50 transactions.

First Backrun Bundle

After the Searcher executes the backrun strategy on Raw Bundle, it can choose to continue to disclose the bundle to other Searchers to execute the nested backrun strategy. At this time, the bundle disclosed to the data flow is the First Backrun Bundle, which contains all transactions in Raw Bundle, and one backrun transaction.

Data Stream Structure

Bundle

PatametersFormatRemark

chainID

string

ETH: 1, BSC:56

hash

string

bundle hash, data streams are pushed uniformly in the form of bundles

transactions included in bundle

nextBlockNumber

uint64

the block number where the bundle is going to be included

maxBlockNumber

uint64

the maximum block number valid for this bundle

proxyBidContract

string

proxy contract address of bundle bidding, biding call for detail can be found in Send Bundle.

refundAddress

string

input parameter of bidding call, the bidding will be refunded to refundAddress in proportion.

refundCfg

int

input parameter of bidding call

state

[]state

state change of state objects in EVM, data stream example

txs

PatametersFormatRemark

hash

string

transaction hash

from

string

sender of the transaction

to

string

receiver of the transaction

value

hex

value being transacted

nonce

uint64

nonce

calldata

string

calldata

functionSelector

string

the first 4 bytes of the contract function signature hash

gasLimit

uint64

gas limit

gasPrice

uint64

gas_price

logs

event logs emitted during transaction execution

log

PatametersFormatRemark

address

string

the smart contract address that triggered the event

topics

[]string

event log topcis

data

string

storage area for non-index data

state

the default data stream does not contain state field, if you need it, please modify the url of RPC Endpoint to

Ethereum:https://eth.blockrazor.xyz/stream?state=true

BSC:https://bsc.blockrazor.xyz/stream?state=true

PatametersFormatRemark

"0x7C3b……3cb9E2"

[]string

The address of the state object where the data changes, which can be EOA or smart contract

"0x935b……6cf608"

string

the Key of the changed data in state object

"0x0000……3ffc00"

string

the Value of changed data in state object

Data Stream Example(default)

{
    "chainID":"56" //ETH: 1, BSC:56
    "hash":"0x2ba4c05436d4a48a0ce30341a3164b34b31c091a28ed62618f7b0512aba41f51" // bundle hash
    "txs":[{
          "hash":"0x2ba4c05436d4a48a0ce30341a3164b34b31c091a28ed62618f7b0512aba41f51"
          "from":"0xB4647b856CB9C3856d559C885Bed8B43e0846a47"
          "to":"0x0000000000000000000000000000000000001000"
          "value":"0x1c4eda9192000"
          "nonce":88036
          "calldata":"0xf340fa01000000000000000000000000b4647b856cb9c3856d559c885bed8b43e0846a47"
          "gasLimit":35000
          "gasPrice":1
          "functionSelector":"0xe47d166c"
          "logs":[
              {
                "address": "0x6c1bcf1b99d9f0819459dad661795802d232437e",
                "topics": ["0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000"],
                "data": "0x"
              }
              {
                "address": "0x6c1bcf1b99d9f0819459dad661795802d232437e",
                "topics": ["0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000"],
                "data": "0x"
              }
          ]
    }]
    "nextBlockNumber":39177941  //the block number where the bundle is going to be included
    "maxBlockNumber":39177941  //the maximum block number valid for this bundle
    "proxyBidContract":"0xE7cFc930d385783B3AD156A533EF097202014982" //bidding contract address, call the contract's proxyBid method to bid
    "refundAddress":"0x6c1bcf1b99d9f0819459dad661795802d232437e", //the bidding amount will be refunded to refundAddress in proportion
    "refundCfg":10380050 //refund configuration
}

Data Stream Example(including state)

The default data stream does not contain state field, if you need to obtain it, please modify the url of RPC Endpoint to

Ethereum:https://eth.blockrazor.xyz/stream?state=true

BSC:https://bsc.blockrazor.xyz/stream?state=true

{
    "chainID":"56" //ETH: 1, BSC:56
    "hash":"0x2ba4c05436d4a48a0ce30341a3164b34b31c091a28ed62618f7b0512aba41f51" // bundle hash
    "txs":[{
          "hash":"0x2ba4c05436d4a48a0ce30341a3164b34b31c091a28ed62618f7b0512aba41f51"
          "from":"0xB4647b856CB9C3856d559C885Bed8B43e0846a47"
          "to":"0x0000000000000000000000000000000000001000"
          "value":"0x1c4eda9192000"
          "nonce":88036
          "calldata":"0xf340fa01000000000000000000000000b4647b856cb9c3856d559c885bed8b43e0846a47"
          "gasLimit":35000
          "gasPrice":1
          "functionSelector":"0xe47d166c"
          "logs":[
              {
                "address": "0x6c1bcf1b99d9f0819459dad661795802d232437e",
                "topics": ["0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000"],
                "data": "0x"
              }
              {
                "address": "0x6c1bcf1b99d9f0819459dad661795802d232437e",
                "topics": ["0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000"],
                "data": "0x"
              }
          ]
    }]
    "nextBlockNumber":39177841  //the block number where the bundle is going to be included
    "maxBlockNumber":39177941  //the maximum block number valid for this bundle
    "proxyBidContract":"0xE7cFc930d385783B3AD156A533EF097202014982" //bidding contract address, call the contract's proxyBid method to bid
    "refundAddress":"0x6c1bcf1b99d9f0819459dad661795802d232437e", //the bidding amount will be refunded to refundAddress in proportion
    "refundCfg":10380050 //refund configuration
    "state": { //state change of state objects
	"0x7C3b00CB3B40Cc77d88329A58574E29cFA3cb9E2": { //The address of the state object where the data changes, which can be EOA or smart contract
	      "0x935b605129a438014d6ae0692623c5e1fbf83d5a631f5a0f8489a301966cf608": "0x00000000000000000000000000000000000000000000010c86a7e418723ffc00"
	      //"the Key of the changed data in state object":"the Value of changed data in state object"
	      }
      }
}

Last updated