debug_printBlock
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_printBlock",
"params": [
30000000
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_printBlock",
"params": [30000000]
}
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_printBlock', params: [30000000]})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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_printBlock',
'params' => [
30000000
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_printBlock\",\n \"params\": [\n 30000000\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_printBlock\",\n \"params\": [\n 30000000\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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_printBlock\",\n \"params\": [\n 30000000\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Arbitrum node API
debug_printBlock | Arbitrum
Arbitrum API method that returns a human-readable representation of a block. Unlike eth_getBlockByNumber which returns structured JSON.
POST
/
66f812de2a6724a75a51f60dd6f2a154
debug_printBlock
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_printBlock",
"params": [
30000000
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_printBlock",
"params": [30000000]
}
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_printBlock', params: [30000000]})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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_printBlock',
'params' => [
30000000
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_printBlock\",\n \"params\": [\n 30000000\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_printBlock\",\n \"params\": [\n 30000000\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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_printBlock\",\n \"params\": [\n 30000000\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Arbitrum API method that returns a human-readable representation of a block. Unlike
eth_getBlockByNumber which returns structured JSON, this method returns a verbose text dump of the entire block structure including all header fields, transactions, and uncles. The output format uses Go’s spew.Sdump formatting.
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
number— the block number as a decimal integer.
Response
result— a human-readable string representation of the block, including all internal fields and nested structures.
debug_printBlock code examples
const ethers = require('ethers');
const NODE_URL = "YOUR_CHAINSTACK_ENDPOINT";
const provider = new ethers.JsonRpcProvider(NODE_URL);
const debugPrintBlock = async (blockNumber) => {
const result = await provider.send("debug_printBlock", [blockNumber]);
console.log(result);
};
debugPrintBlock(30000000);
from web3 import Web3
node_url = "YOUR_CHAINSTACK_ENDPOINT"
web3 = Web3(Web3.HTTPProvider(node_url))
result = web3.provider.make_request('debug_printBlock', [30000000])
print(result)
Use case
Thedebug_printBlock method is useful for quick debugging when you need a comprehensive view of a block’s internal structure. The human-readable output format reveals all fields including those not typically exposed by standard RPC methods, making it valuable for diagnosing block-level issues and understanding the complete block composition.Last modified on June 22, 2026
Was this page helpful?