debug_storageRangeAt
curl --request POST \
--url https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"id": 1,
"params": [
"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd",
25,
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"0x00000000000000000000000000000000",
2
]
}
'import requests
url = "https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload = {
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"id": 1,
"params": ["0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd", 25, "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "0x00000000000000000000000000000000", 2]
}
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_storageRangeAt',
id: 1,
params: [
'0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd',
25,
'0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'0x00000000000000000000000000000000',
2
]
})
};
fetch('https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14', 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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14",
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_storageRangeAt',
'id' => 1,
'params' => [
'0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd',
25,
'0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'0x00000000000000000000000000000000',
2
]
]),
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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
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_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {
"storage": {},
"complete": true
}
}Base node API
debug_storageRangeAt | Base
The debug_storageRangeAt RPC method retrieves storage entries from a contract at a specific block. Available on Base via Chainstack.
POST
/
2fc1de7f08c0465f6a28e3c355e0cb14
debug_storageRangeAt
curl --request POST \
--url https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14 \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"id": 1,
"params": [
"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd",
25,
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"0x00000000000000000000000000000000",
2
]
}
'import requests
url = "https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload = {
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"id": 1,
"params": ["0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd", 25, "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "0x00000000000000000000000000000000", 2]
}
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_storageRangeAt',
id: 1,
params: [
'0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd',
25,
'0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'0x00000000000000000000000000000000',
2
]
})
};
fetch('https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14', 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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14",
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_storageRangeAt',
'id' => 1,
'params' => [
'0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd',
25,
'0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'0x00000000000000000000000000000000',
2
]
]),
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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\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://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://base-mainnet.core.chainstack.com/2fc1de7f08c0465f6a28e3c355e0cb14")
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_storageRangeAt\",\n \"id\": 1,\n \"params\": [\n \"0xc40b7058b5b80e565dfb986fe852c047733291291c8de1be8888ae64b5457bbd\",\n 25,\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"0x00000000000000000000000000000000\",\n 2\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {
"storage": {},
"complete": true
}
}Use eth_getStorageAt insteadChainstack Base nodes are on Reth. Reth does not support the
debug_storageRangeAt method. See Using eth_getStorageAt instead of debug_storageRangeAt on Reth.debug_storageRangeAt RPC method retrieves storage entries from a contract at a specific block. This method is useful for developers and analysts who need to inspect the state of a contract’s storage at a particular point in time.
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_storageRangeAt, send a POST request with a JSON RPC call in the body.
Parameters
- Block Hash (
string): The hash of the block. - Transaction Index (
integer): The index of the transaction in the block. - Contract Address (
string): The address of the contract. - Storage Key (
string): The starting point of the storage to inspect. - Max Results (
integer): The maximum number of storage entries to return.
Response
The response includes storage entries within the specified range and a flag indicating if the storage snapshot is complete.- storage (
object): A map of storage entries. - complete (
boolean): Indicates whether the snapshot of storage is complete.
Use case
Thedebug_storageRangeAt method is essential for:
- Developers debugging smart contracts by inspecting storage states at specific blocks.
- Analysts conducting forensic analysis of contract interactions.
- Tools and services that provide insights into contract state changes over time.
Body
application/json
Last modified on June 22, 2026
Was this page helpful?