FAQ

Frequently Asked Questions regarding Ironforge RPC Gateway.


Does Ironforge increase RPC request latency?

Yes and no.

  • p50: 0ms
  • p90: 14ms
  • p99: 54ms

Should I worry about the amount of request per second I send to Ironforge?

If you're asking yourself the question, more probably than not, the answer is no. Although everything has a limit, our infrastructure is designed to handle a very large amount of requests.

If you're an enterprise customer with very high volumen of requests, please reach out to us at support@ironforge.cloud.

How does Parallel Routing work?

Assuming you have a routing strategy with 3 RPC endpoints, the request will be sent to all 3 endpoints at the same time, and we will wait only for the first successful response and return it.

For example, if endpoint A return a sucefull response, we will start streaming it to the client without having to wait for the other endpoints to finish responding.

How does Sequential Routing work?

Assuming you have a routing strategy with 3 RPC endpoints, the request will be sent to the first endpoint, and if it fails, the request will be sent to the second endpoint, and so on.

Can I setup a custom routing strategy?

Yes, you can setup a custom routing strategy by using the Dynamic Routing strategy. You can assign specific endpoints for specific RPC methods.

Why I see "RPC Provider failed" or "All providers failed" in Web3.js sendTransaction response instead of the actual error?

Since our Gateway is a proxy, the response from the RPC endpoints is wrapped to provide context about which RPC provider failed and with what error.

In the case where all RPC endpoints fail, the response will be wrapped with the error message "All providers failed".

{
    "id": "0",
    "jsonrpc": "2.0",
    "error": {
        "message": "All providers failed",
        "responses": [
            {
                "endpointName": "Quicknode",
                "response": {
                    "jsonrpc": "2.0",
                    "error": {
                        "code": -32002,
                        "message": "Transaction simulation failed: Blockhash not found",
                        "data": {
                            "accounts": null,
                            "err": "BlockhashNotFound",
                            "innerInstructions": null,
                            "logs": [],
                            "returnData": null,
                            "unitsConsumed": 0
                        }
                    },
                    "id": "0"
                }
            },
            {
                "endpointName": "Helius",
                "response": {
                    "jsonrpc": "2.0",
                    "error": {
                        "code": -32002,
                        "message": "Transaction simulation failed: Blockhash not found",
                        "data": {
                            "accounts": null,
                            "err": "BlockhashNotFound",
                            "innerInstructions": null,
                            "logs": [],
                            "returnData": null,
                            "unitsConsumed": 0
                        }
                    },
                    "id": "0"
                }
            }
        ]
        ...
    }
}

What load balancing algorithms Websocket requests follow?

Websocket requests always follow a 'sequential' routing strategy.