Solidity
如何通過 web3 讀取已部署合約儲存槽的內容?
如果我有一個已部署合約的地址,是否可以直接通過 web3 讀取任何特定儲存槽位置的內容?
是的,可以讀取合約中任何特定儲存槽位置的內容,如下所示:
const contents = await web3.eth.getStorageAt(contractAddress, storageSlotNumber)
where
storageSlotNumber
是一個以 0 開頭的數字,這將是合約中定義的第一個儲存變數的插槽號,因為 Solidity 根據聲明它們的順序將變數映射到儲存。請注意,您還可以使用它直接讀取任何私有或內部儲存變數的儲存內容,動態數組或映射除外,因為其中每個元素的儲存槽位置是根據元素的鍵和儲存槽計算的變數的位置。