debug_traceBlockByHash
curl --request POST \
--url https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "debug_traceBlockByHash",
"id": 1,
"params": [
"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3"
]
}
'import requests
url = "https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300"
payload = {
"jsonrpc": "2.0",
"method": "debug_traceBlockByHash",
"id": 1,
"params": ["0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3"]
}
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({
jsonrpc: '2.0',
method: 'debug_traceBlockByHash',
id: 1,
params: ['0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3']
})
};
fetch('https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300', 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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300",
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([
'jsonrpc' => '2.0',
'method' => 'debug_traceBlockByHash',
'id' => 1,
'params' => [
'0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3'
]
]),
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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300")
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 \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}Optimism node API
debug_traceBlockByHash | Optimism
The debug_traceBlockByHash RPC method is used to retrieve detailed execution traces for all transactions. debug_traceBlockByHash on Optimism via Chainstack.
POST
/
efb0a5eccd2caa5135eb54eba6f7f300
debug_traceBlockByHash
curl --request POST \
--url https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "debug_traceBlockByHash",
"id": 1,
"params": [
"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3"
]
}
'import requests
url = "https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300"
payload = {
"jsonrpc": "2.0",
"method": "debug_traceBlockByHash",
"id": 1,
"params": ["0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3"]
}
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({
jsonrpc: '2.0',
method: 'debug_traceBlockByHash',
id: 1,
params: ['0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3']
})
};
fetch('https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300', 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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300",
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([
'jsonrpc' => '2.0',
'method' => 'debug_traceBlockByHash',
'id' => 1,
'params' => [
'0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3'
]
]),
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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\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://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300")
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 \"jsonrpc\": \"2.0\",\n \"method\": \"debug_traceBlockByHash\",\n \"id\": 1,\n \"params\": [\n \"0xf743b97fb82f007654f7832e88659c6d0bca832ad8bdb9902370fd301d81ddb3\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}The
debug_traceBlockByHash RPC method is used to retrieve detailed execution traces for all transactions included in a block, identified by the block’s hash. This method is particularly useful for developers and analysts who need to deeply understand transaction execution and state changes within a specific block.
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.
Request
To usedebug_traceBlockByHash, send a POST request with a JSON RPC call in the body.
Parameters
- Block Hash (
string): The hash of the block for which to retrieve the execution traces.
Response
The response includes detailed execution traces for all transactions in the specified block.- result (
array): An array of execution traces for each transaction in the block. Each trace provides comprehensive details about the execution, including calls, state changes, and gas usage.
Use case
Thedebug_traceBlockByHash method is essential for:
- Developers debugging complex interactions within a block.
- Analysts conducting forensic analysis of block transactions.
- Tools and services that provide insights into the Ethereum Virtual Machine (EVM) execution and state changes.
Body
application/json
Last modified on June 22, 2026
Was this page helpful?