Web3js
如何進行鏈下呼叫以獲取儲存在鏈上特定儲存槽中的數據?
我想從鏈上獲取未通過 getter 明確可用的數據。例如,如果我知道
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
address的位置有數據0xd0A7333587053A5BAe772BD37b9AAe724E367619
,如果合約中沒有 getter 函式,我該如何檢索該數據?
如果您知道數據的儲存位置,您可以從任何鏈上合約中檢索任何數據。您可以通過使用
getStorage
RPC 呼叫或通過任何 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"}