Privacy
如何查看儲存在私有變數中的字元串的值?
我讀過很多次敏感數據永遠不應該儲存在事務中,但是,具體來說,如果標記狀態變數的值將如何讀取
private
?
對於您提供的範例合約,在插槽 1 中似乎有一個
bytes32
狀態變數,其值為“A very strong secret password :)”。我只打電話
getStorageAt
幾次就發現了這一點:> web3.eth.getStorageAt('0x6260319bcbcbf33f84397ae0000e49b0f50ee075', 0, (e, v) => console.log(v)) 0x0000000000000000000000000000000000000000000000000000000000000001 > web3.eth.getStorageAt('0x6260319bcbcbf33f84397ae0000e49b0f50ee075', 1, (e, v) => console.log(v)) 0x412076657279207374726f6e67207365637265742070617373776f7264203a29 > web3.eth.getStorageAt('0x6260319bcbcbf33f84397ae0000e49b0f50ee075', 1, (e, v) => console.log(web3.toAscii(v))); A very strong secret password :)
如果我們有合約的原始碼,這會容易得多。如果契約被混淆了,這會有點困難。
但底線是區塊鏈上的所有內容(包括私有狀態變數)都是公開的。