eth_getStorageAt
- shell
- csharp
- php
- python
- javascript
- go
- ruby
- java
curl --request POST \
--url https://ethereum-mainnet-geth-archive.node.coinapi.io \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'X-CoinAPI-Key: 73034021-THIS-IS-SAMPLE-KEY' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"params": [
"0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8",
"latest"
],
"method": "eth_getCode"
}'
using RestSharp; {
var options = new RestClientOptions("https://ethereum-mainnet-geth-archive.node.coinapi.io");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json","X-CoinAPI-Key: 73034021-THIS-IS-SAMPLE-KEY");
request.AddJsonBody("{\"id\":1,\"jsonrpc\":\"2.0\",\"params\":[\"0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8\",\"latest\"],\"method\":\"eth_getCode\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content); }
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ethereum-mainnet-geth-archive.node.coinapi.io",
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',
'params' => [
'0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8',
'latest'
],
'method' => 'eth_getCode'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"content-type: application/json",
"X-CoinAPI-Key": "73034021-THIS-IS-SAMPLE-KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import requests
url = "https://ethereum-mainnet-geth-archive.node.coinapi.io"
payload = {
"id": 1,
"jsonrpc": "2.0",
"params": ["0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8", "latest"],
"method": "eth_getCode"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-CoinAPI-Key" : "73034021-THIS-IS-SAMPLE-KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const options = {
method: 'POST',
headers: {accept: 'application/json', 'content-type': 'application/json', 'X-CoinAPI-Key': '73034021-THIS-IS-SAMPLE-KEY'},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
params: ['0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8', 'latest'],
method: 'eth_getCode'
})
};
fetch('https://ethereum-mainnet-geth-archive.node.coinapi.io', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ethereum-mainnet-geth-archive.node.coinapi.io"
payload := strings.NewReader("{\"id\":1,\"jsonrpc\":\"2.0\",\"params\":[\"0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8\",\"latest\"],\"method\":\"eth_getCode\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("accept", "application/json")
req.Header.Add("content-type", "application/json")
req.Header.Add("X-CoinAPI-Key", "73034021-THIS-IS-SAMPLE-KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://ethereum-mainnet-geth-archive.node.coinapi.io")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request["X-CoinAPI-Key"] = '73034021-THIS-IS-SAMPLE-KEY'
request.body = "{\"id\":1,\"jsonrpc\":\"2.0\",\"params\":[\"0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8\",\"latest\"],\"method\":\"eth_getCode\"}"
response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"id\":1,\"jsonrpc\":\"2.0\",\"params\":[\"0xe5cB067E90D5Cd1F8052B83562Ae670bA4A211a8\",\"latest\"],\"method\":\"eth_getCode\"}");
Request request = new Request.Builder()
.url("https://ethereum-mainnet-geth-archive.node.coinapi.io")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("X-CoinAPI-Key", "73034021-THIS-IS-SAMPLE-KEY")
.build();
Response response = client.newCall(request).execute();
Overview
The 'eth_getStorageAt' method returns the value from a storage position at a given address.
Request
replace 'mainnet' with any other supported network.
Request Parameters
- 'address': [ Required ] A string representing the address (20 bytes) of the storage.
- 'storage positio'n: [ Required ] A hexadecimal code of the position in the storage.
- 'block parameter': [ Required ] A hexadecimal block number, or the string 'latest', 'earliest' or 'pending'. Refer to the default block parameter section for more details.
Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
- 'storage value': A hexadecimal equivalent of the integer indicating the value of the storage position at the provided address.
Notes on Storage Retrieval:
- Calculating the correct position depends on the storage to retrieve. For instance, consider the following contract deployed at '0x407d73d8a49eeb85d32cf465507dd71d507100c1' by address '0x391694e7e0b0cce554cb130d723a9d27458f9298':
contract Storage {
uint pos0;
mapping (address => uint) pos1;
function Storage() {
pos0 = 1234;
pos1[msg.sender] = 5678;
}
}
Retrieving the value of 'pos0' is straightforward. However, retrieving an element of the map requires a more complex calculation. The position of an element in the map is calculated using the 'keccak' function and padding techniques. Tools like the geth console which comes with the web3 library can be used to make these calculations.
Was this section helpful?