debug_storageRangeAt
curl --request POST \
--url https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"params": [
"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a",
0,
"0x00000000000000000000000000000000000a4b05",
"0x0",
"0x10"
]
}
'import requests
url = "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a", 0, "0x00000000000000000000000000000000000a4b05", "0x0", "0x10"]
}
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_storageRangeAt',
params: [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a',
0,
'0x00000000000000000000000000000000000a4b05',
'0x0',
'0x10'
]
})
};
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_storageRangeAt',
'params' => [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a',
0,
'0x00000000000000000000000000000000000a4b05',
'0x0',
'0x10'
]
]),
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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {}
}Robinhood Chain node API
debug_storageRangeAt | Robinhood
Robinhood Chain API method that returns a range of storage slots for a contract at a given block and transaction index. It requires an archive node because it reads historical contract storage.
POST
/
debug_storageRangeAt
curl --request POST \
--url https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"params": [
"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a",
0,
"0x00000000000000000000000000000000000a4b05",
"0x0",
"0x10"
]
}
'import requests
url = "https://robinhood-mainnet.core.chainstack.com/23cf4479b299ab4835d76c05c468ca6e/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a", 0, "0x00000000000000000000000000000000000a4b05", "0x0", "0x10"]
}
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_storageRangeAt',
params: [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a',
0,
'0x00000000000000000000000000000000000a4b05',
'0x0',
'0x10'
]
})
};
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_storageRangeAt',
'params' => [
'0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a',
0,
'0x00000000000000000000000000000000000a4b05',
'0x0',
'0x10'
]
]),
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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\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_storageRangeAt\",\n \"params\": [\n \"0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a\",\n 0,\n \"0x00000000000000000000000000000000000a4b05\",\n \"0x0\",\n \"0x10\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": {}
}Robinhood Chain API method that returns a range of storage slots for a contract at a given block and transaction index. It requires an archive node because it reads historical contract storage.
Parameters
blockHash— the block hashtxIndex— the transaction index within the blockaddress— the contract addressstartKey— the storage key to start frommaxResult— the maximum number of storage entries to return
Response
storage— the map of storage entries in the requested rangenextKey— the next storage key, ornullif the range is complete
debug_storageRangeAt code examples
const { JsonRpcProvider } = require("ethers");
const provider = new JsonRpcProvider("CHAINSTACK_NODE_URL");
async function call() {
const result = await provider.send("debug_storageRangeAt", ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a", 0, "0x00000000000000000000000000000000000a4b05", "0x0", "0x10"]);
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_storageRangeAt", ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a", 0, "0x00000000000000000000000000000000000a4b05", "0x0", "0x10"])
print(result)
curl -X POST "CHAINSTACK_NODE_URL" \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"method": "debug_storageRangeAt",
"params": ["0xf4aab7a559489b816aca197b9a9315b5363a9932c52c3e8bfcf4152588ee096a", 0, "0x00000000000000000000000000000000000a4b05", "0x0", "0x10"],
"id": 1
}'
Last modified on July 18, 2026
Was this page helpful?
⌘I