Get storage value from an address
curl --request POST \
--url https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_getStorageAt",
"params": [
"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc",
"0x0",
"latest"
]
}
'import requests
url = "https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "eth_getStorageAt",
"params": ["0x0b7007c13325c48911f73a2dad5fa5dcbf808adc", "0x0", "latest"]
}
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: 'eth_getStorageAt',
params: ['0x0b7007c13325c48911f73a2dad5fa5dcbf808adc', '0x0', 'latest']
})
};
fetch('https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e', 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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e",
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' => 'eth_getStorageAt',
'params' => [
'0x0b7007c13325c48911f73a2dad5fa5dcbf808adc',
'0x0',
'latest'
]
]),
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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e")
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\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Ronin node API
eth_getStorageAt | Ronin
This example makes a call to slot 0 of the USDC contract on the Ronin Mainnet. Reference for eth_getStorageAt on Ronin via Chainstack.
POST
/
3997273fc956a67dc6982384500e669e
Get storage value from an address
curl --request POST \
--url https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_getStorageAt",
"params": [
"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc",
"0x0",
"latest"
]
}
'import requests
url = "https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "eth_getStorageAt",
"params": ["0x0b7007c13325c48911f73a2dad5fa5dcbf808adc", "0x0", "latest"]
}
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: 'eth_getStorageAt',
params: ['0x0b7007c13325c48911f73a2dad5fa5dcbf808adc', '0x0', 'latest']
})
};
fetch('https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e', 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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e",
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' => 'eth_getStorageAt',
'params' => [
'0x0b7007c13325c48911f73a2dad5fa5dcbf808adc',
'0x0',
'latest'
]
]),
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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\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://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ronin-mainnet.core.chainstack.com/3997273fc956a67dc6982384500e669e")
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\": \"eth_getStorageAt\",\n \"params\": [\n \"0x0b7007c13325c48911f73a2dad5fa5dcbf808adc\",\n \"0x0\",\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}This example makes a call to slot 0 of the USDC contract on the Ronin Mainnet.
The
eth_getStorageAt method returns the value stored at a specific position of the storage of a given address, expressed in hexadecimal. This method is useful for inspecting the state of smart contracts at specific storage slots.
When called against a block older than the latest ~128 blocks, this method is treated as an archive request (2 RUs instead of 1 RU). See request units.
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
address: The address to get the storage from. For example,0x0b7007c13325c48911f73a2dad5fa5dcbf808adc.position: The storage position to inspect, given as a hexadecimal value. For example,0x0for the first position.blockParameter(optional): This can be a hexadecimal block number, or the strings “latest”, “earliest”, or “pending”, indicating the state from which to get the storage value. The default islatest.
Response
result: The value at the specified storage position, returned as a hexadecimal string.
Use case
This method is particularly useful for developers and auditors who need to verify the state of a smart contract’s storage directly on the blockchain. It allows for detailed inspection of contract state and can be used to debug or verify contract behavior.Last modified on June 22, 2026
Was this page helpful?