debug_traceBadBlock
curl --request POST \
--url https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBadBlock",
"params": [
"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"
]
}
'import requests
url = "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBadBlock",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'debug_traceBadBlock',
params: ['0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a']
})
};
fetch('https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_traceBadBlock',
'params' => [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}Robinhood Chain node API
debug_traceBadBlock | Robinhood
Robinhood Chain API method that traces all transactions in a block that has been marked as ‘bad’ by the node. Chainstack Robinhood Chain reference.
POST
/
debug_traceBadBlock
curl --request POST \
--url https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBadBlock",
"params": [
"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"
]
}
'import requests
url = "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBadBlock",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'debug_traceBadBlock',
params: ['0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a']
})
};
fetch('https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_traceBadBlock',
'params' => [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBadBlock\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}Robinhood Chain API method that traces all transactions in a block that has been marked as “bad” by the node. Bad blocks are blocks that failed validation during import. This method works similarly to
debug_traceBlockByHash but looks up the block from the bad blocks cache instead of the canonical chain. It is primarily used for diagnosing why a block was rejected.
Learn how to deploy a node with the debug and trace API methods enabled.
This method is available for post-Nitro blocks only (block 22,207,815 and later). For pre-Nitro blocks, use the
arbtrace_* methods instead.Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
hash— the hash of the bad block to trace.object— (optional) an object identifying the type of tracer and its configuration:tracer— the name of the tracer to use (callTracer,prestateTracer,4byteTracer, or a custom JS tracer).timeout— the timeout for the tracing operation. Defaults to5s.reexec— the number of blocks to re-execute to reconstruct historical state. Defaults to 128.
Response
result— an array of trace results, one per transaction in the block:txHash— the hash of the transaction.result— the trace output for the transaction (format depends on the tracer used).error— an error message if the transaction trace failed.
debug_traceBadBlock code examples
const { JsonRpcProvider } = require("ethers");
const provider = new JsonRpcProvider("CHAINSTACK_NODE_URL");
async function call() {
const result = await provider.send("debug_traceBadBlock", ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"]);
console.log(result);
}
call();
from web3 import Web3
node_url = "CHAINSTACK_NODE_URL"
web3 = Web3(Web3.HTTPProvider(node_url))
result = web3.provider.make_request("debug_traceBadBlock", ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"])
print(result)
curl -X POST "CHAINSTACK_NODE_URL" \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"method": "debug_traceBadBlock",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a"],
"id": 1
}'
Body
application/json
Last modified on July 18, 2026
Was this page helpful?