API Reference

eth_getStorageAt - DogeOS

Returns the value from a storage position at a given address, or in other words, returns the state of the contract's storage, which may not be exposed via the contract's methods.

Returns the value from a storage position at a given address, or in other words, returns the state of the contract's storage, which may not be exposed via the contract's methods.

PARAMETERS

Address - (required) A 20-byte address of the storage.

Position - (required) An integer of the position in the storage.

Block Number - (optional) An integer block number, or the string "latest", "earliest", or "pending" as described in the default block parameter.

REQUEST

{
  "jsonrpc": "2.0",
  "method": "eth_getStorageAt",
  "params": [
    "0x5300000000000000000000000000000000000002",
    "0x0",
    "latest"
  ],
  "id": 1
}

RESPONSE

Result - The value at this storage position.

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x000000000000000000000000bbdd6eb051df173373e36fc418d22667ec4294c1"
}

EXAMPLE

Calculating the correct position depends on the storage to retrieve. Consider the following contract deployed at 0x295a70b2de5e3953354a6a8344e616ed314d7251 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.

Retrieving an element of the map is harder. The position of an element in the map is calculated with:

keccack(LeftPad32(key, 0), LeftPad32(map position, 0))

This means to retrieve the storage on pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] we need to calculate the position with:

keccak(
 decodeHex(
  "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
   "0000000000000000000000000000000000000000000000000000000000000001"
 )
);

The geth console which comes with the web3 library can be used to make the calculation:

> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
undefined
> web3.sha3(key, {"encoding": "hex"})
"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"

Now to fetch the storage:

REQUEST

{
    "jsonrpc":"2.0",
    "method":"eth_getStorageAt",
    "params":[
        "0x295a70b2de5e3953354a6a8344e616ed314d7251",
        "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9",
        "latest"
    ],
    "id":1
}

RESPONSE

{
 "jsonrpc": "2.0",
 "id": 1,
 "result": "0x000000000000000000000000000000000000000000000000000000000000162e"
}
Language
Click Try It! to start a request and see the response here!