FAQ's

Pease refer to the list below for some FAQ's:

Performance and Speed

Which one is faster: Cloud-API or Local Gateway?

The Local Gateway is faster than the Cloud-API, as it provides a private entry point to the BDN and better latency. Additionally, an additional Cloud-API endpoint is offered to enterprise customers (wss://<REGION>.<NETWORK>.blxrbdn.com/ws) for improved speed over the professional cloud API endpoint (api.blxrbdn.com).

What are the speed differences between plans?

Each plan is assigned a priority level, with Ultra and Enterprise Elite plans being 1-2ms faster than the Enterprise plan. Nevertheless, the Enterprise plan still provides significant speed improvements.

Can I Run Multiple Streams on the same machine?

Yes, your gateway can handle multiple streams, however, you must take into consideration the machine's resource utilization.

Can I connect to a specific relay?

The gateway will connect to the nearest relay by default. If you prefer, you can connect to a specific relay by using the argument --relay-ip when starting the gateway. Please see Relay IPs for a list. Also see Gateway installation page.

Note: This process is the same for Ultra users connecting to Backbone relays.

What is the speed difference between newTxs and pendingTxs Streams?

The newTxs stream is expected to perform faster than the pendingTxs stream. The performance difference can be significant. Users interested in timely transaction information may prefer the newTxs stream, while those who require strict correctness of transaction data should use the pendingTxs stream.

Account and service

As an Enterprise Elite customer, how do I connect to a private relay?

You don't have to do anything specific to connect to a private relay. Once you launch your gateway in a region close to the private relays, it will automatically connect to one of the closest private relays instead of a public one.

Can I upgrade from Enterprise to Enterprise Elite at any time?

Yes, you can upgrade to Enterprise Elite at any time. Once you've upgraded, contact a member of the support team to receive credit for the remaining days in your Enterprise plan. For example, if you have 20 days left in your Enterprise plan and the corresponding USD amount is 830 USD, you can pay for the Enterprise Elite plan and we'll adjust the expiration time in the backend. Your 830 USD will equate to 5 days in the Elite subscription, so we'll extend your plan by 5 days.

How can I check the most current transaction count and number of online gateways?

Use the quota_usage command to check your account quota status. Send the following payload to your local gateway or cloud API:

{"method": "quota_usage", "id": "1", "params": null}

Can I use the gateway as a replacement for local RPCs?

No, the gateway can only help you with sending and receiving transactions. Depending on your trading strategy, you may need a node for other functions, such as receiving and sending transactions, getting the nonce, getting the balance, and making an eth call. Additionally, the gateway and bloXroute service are not compatible with the traditional web3 interface.

How do I measure the latency from my gateway to the relays?

You can measure the latency from your gateway to the relays by pinging each relay IP from the machine hosting your gateway. For example, if you have a gateway set up in Virginia, USA, you can use the following command: ping 47.253.9.21. For more relays, see Relays IPs.

Where can I find my authorization header?

You can find your authorization header by logging into the customer portal and navigating to the "Account" section.

General debugging

I sent a transaction to the Cloud-API, but the connection was closed immediately. How do I fix this?

All customers (Enterprise and non-Enterprise) should send their transactions to Cloud-API endpoint api.blxrbdn.com; make sure that you are NOT sending transactions to an endpoint used for transaction streaming only. Sending Transactions.

I sent a transaction to gateway/Cloud-API and received a tx hash as response, but I couldn't find it on a block explorer (e.g. etherscan). How can I troubleshoot this?

The BDN doesn't perform the same detail of transaction validation that the nodes (e.g. geth) do. Your transaction may have passed the basic validations (e.g. checksums and other sanity checks) but may not be accepted by the TxPool. Common errors include incorrect sender nonce and low sender balance. We recommend sending the transaction to a node (personal node or public RPC endpoint), which usually gives a more descriptive error message.

I keep receiving an "unexpected server response 404" when interacting with the Gateway.

/ws is required for use with Gateways. Try switching your endpoint to ws://127.0.0.1:28333/ws.

I cannot connect to the Cloud-API, I am getting an error that IP is not in the certs list.

When interacting with a Cloud-API IP directly, use an unsecure connection, i.e., If using wscat, pass in the --no-check flag when connecting.

I am trying to add my gateway as a trusted peer, but I can not find the enode in the logs.

Try running docker logs bxgateway-go | head -n 30. You should be able to find it there.

I am using the Private Transactions service. How can I check if the transaction I just sent was private?

You can use tx-trace (Tx-Trace). If the response is "message":"received no info about transaction", then it was successfully sent private. Note: This message can also be returned if the tx is too old. The sooner you trace, the more accurate the information will be.

I started a gateway, and in my logs, I have the error

"panic: could not register with bxapi: {"message":"Bad request","details":"Node ID in certificate is being used by a different account ID; please contact support@bloxroute.com if you think you are using the correct IP address. (There is a chance that your current IP address was previously used by another bloXroute customer.)"}"

This error could happen if you have used a different bloXroute account (ssl cert) to start a gateway on this machine (IP address). A simple workaround is to change the --port.

pendingTxs stream sent me a tx at time t, etherscan shows that tx is confirmed at time t - x, what is the reason for this?

Etherscan's block timestamp is the block construction start time. Most of the tx's appear in the mempool between block X's timestamp and block X+1's timestamp may be included in block X.

Sending a tx through cloud API on ETH, returns err 32600

{"id":0,"error":{"code":-32600,"message":"","data":"blxr_tx is not allowed when account authentication is different from the node account"}

Users should NOT send transactions to the streaming endpoint wss://<REGION>.<NETWORK>.blxrbdn.com/ws (wss://virginia.eth.blxrbdn.com/ws).This endpoint does not support sending transactions. Please refer to the following page for information on sending transactions. Sending Transactions.

How do I add my gateway as a trusted peer to geth?

Please follow the steps on page: Adding the Gateway as a Trusted Peer.

Error: trying to do a websocket subscription via cloud API: "code":-32602,"message":"Invalid params","data":"duplicate feed request - account

As the error message shows, you cannot send multiple websocket requests with the same content/request body to Cloud-API. Cloud-API, as a shared resource, has this limit. There are two reasons to get a duplicate feed error:

  1. Your gateway has two identical feeds from the same IP - stop one in this case.

  2. Your bot closed the connection without an unsubscribe command, and then it reopened the same feed again. In this case - wait 10 - 20 seconds for the old connection to be freed in Cloud-API or use the unsubscribe command.

{"code":-32602,"message":"Invalid params","data":"cannot subscribe to the feed duplicate feed request - account xxx tier Professional ip xxx previous subscription ID xxx"

As the error message shows, you cannot send multiple web socket requests with the same content/request body to Cloud-API. Cloud-API, as a shared resource, has this limit. You may also want to consider using a local gateway instead, it is expected to be faster than Cloud-API and it doesn't have this limit. If the previous request/connection was not closed properly, you may need to wait a few minutes for the first connection to be removed from the connection pool. After that, you can send a new request.

This error occurs if you attempt to subscribe to a feed to which you are already subscribed. Duplicate feed requests are not allowed. If you need to subscribe to the same feed twice, you can modify the filters in your request.

To resolve this error, you can unsubscribe from the previous subscription ID using the following JSON-RPC request:

{"jsonrpc": "2.0", "id": "1", "method": "unsubscribe", "params": ["<subscription_ID>"]}

MEV Bundles / Flashbots

Does bloXroute MEV Bundle service compete with Flashbots?

No, you may send bundles to flashbots builders using our service.

Are MEV bundles (blxr_submit_bundle) and front-running protection (blxr_private_tx) the same?

blxr_private_tx allows you to send a single tx that gets added directly to the blocks from bloXroute’s builder Frontrunning Protection.

blxr_submit_bundle allows you to submit a bundle (multiple atomically ordered tx's) to the cloud api.

What are the pros and cons of submitting private transactions (blxr_private_tx) vs. bundles (blxr_submit_bundle) with regards to costs, transaction inclusion and revert behavior. Can you summarize the differences, please?

You can think of private transactions as a single transaction MEV bundle. Single transaction MEV bundles will not get included in a block if reverted so it is cheaper and safer in terms of gas. However, some builders might have restrictions on the number of bundles in the block so private transactions should have a better inclusion rate. We advise to start with a single transaction MEV bundle and later consider using private transactions.

Please refer to the following page for bundle limits: Bundle Submission.

How does bloXroute prioritize transaction order?

We have several types of workers and each prioritizes transactions in different ways. Some place bundles at the top of the block based on effective gas price and sort mempool transactions by gas price.

What are Batch tx’s? How are they different from MEV bundles?

Batch tx's (blxr_batch_tx) and MEV bundles (blxr_submit_bundle) are NOT the same. Batch tx's are a group transactions sent within one request and may land on chain in any order. MEV bundles are atomically ordered and should not break the order they are sent in. Please take a look at: Batch Transaction.

What is the process of a builder selecting a bundle/tx?

Different builders will use their own specific strategy for selecting bundles/tx's to generate a block with the highest profit. They will then submit this block to a validator/proposer.

I sent a private transaction but am still seeing it in the mempool. Why is this?

Some builders will decide if your transaction is not complex enough to be considered private and will publish them to the public mempool. If this happens, we recommend you send a more complex transaction/swap.

What is the valid way to add tx bytes to your bundle?

Take a look at our code examples for raw tx construction here: Raw Tx Construction.

What are the differences between the 3 bloXroute relays?

Please review the following page for bloXroute relay information: MEV Relay for Validators.

Gateway, Transactions & Blocks

What is the priority of transactions for various plans?

The Elite and Ultra plans have a higher transaction prioritization compared to lower tier plans.

Does the gateway transfer blocks and newTxs to the local node?

The gateway does not transfer newTxs to the local node. Most transactions are received by the geth node through the traditional p2p network using the default settings of the gateway. To send all transactions to the node, an additional parameter must be added in your gateway start up (all-txs). Please visit the link for flags: https://github.com/bloXroute-Labs/gateway/blob/master/utils/flags.go

TX Trace

What is TX-Trace and how can I use it?

Please see the following page: Tx-Trace.

Example response of Tx-Trace:

{"txTrace":[{"region":"NA US Virginia","txTime":"2023-01-23 16:58:36.763","diff":"+0ms"},
{"region":"NA US California","txTime":"2023-01-23 16:58:36.793","diff":"+30ms"},
{"region":"EU United Kingdom","txTime":"2023-01-23 16:58:36.801","diff":"+38ms"},
{"region":"EU Germany","txTime":"2023-01-23 16:58:36.807","diff":"+44ms"},
{"region":"AS Japan","txTime":"2023-01-23 16:58:36.835","diff":"+72ms"},
{"region":"CN HongKong","txTime":"2023-01-23 16:58:36.858","diff":"+95ms"},
{"region":"CN Beijing","txTime":"2023-01-23 16:58:36.865","diff":"+102ms"},
{"region":"AS Singapore","txTime":"2023-01-23 16:58:36.866","diff":"+103ms"},
{"region":"CN Hangzhou","txTime":"2023-01-23 16:58:36.879","diff":"+115ms"}],
"txHash":"<TXHASH>","numberOfRegions":9}

To gain insight into why a competitor's transaction has outperformed yours, a useful starting point is to employ the TX-Trace tool to compare and analyze the transaction timestamps.

I am using TX-Trace, but it is only returning a couple of regions / no regions at all. What is going on?

Tx-Trace only holds data for a couple of hours. As time progresses each region will be removed until there are none left.

Last updated