Web3js

如何進行鏈下呼叫以獲取儲存在鏈上特定儲存槽中的數據?

  • June 11, 2020

我想從鏈上獲取未通過 getter 明確可用的數據。例如,如果我知道0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcaddress的位置有數據0xd0A7333587053A5BAe772BD37b9AAe724E367619,如果合約中沒有 getter 函式,我該如何檢索該數據?

如果您知道數據的儲存位置,您可以從任何鏈上合約中檢索任何數據。您可以通過使用getStorageRPC 呼叫或通過任何 web3 庫來執行此操作。


對於您的具體問題,您可以通過以下幾種方式檢索數據:

ethers.js

> ethersProvider.getStorageAt('0xd0A7333587053A5BAe772BD37b9AAe724E367619', '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc')

0x00000000000000000000000020af9e54a3670ef6a601bca1f1ec22b1f93cbe23

web3.js:

> web3.eth.getStorageAt('0xd0A7333587053A5BAe772BD37b9AAe724E367619', '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc')

0x00000000000000000000000020af9e54a3670ef6a601bca1f1ec22b1f93cbe23

重擊:

> curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0xd0A7333587053A5BAe772BD37b9AAe724E367619", "0x0", "latest"], "id": 1}' localhost:8545

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

引用自:https://ethereum.stackexchange.com/questions/84176