Contract-Invocation
可以修改區塊鏈二進製文件以讀取私有變數/執行內部函式嗎?
據我所知,私有變數只能在合約內訪問,內部函式只能在內部呼叫。
但是有沒有辦法讓黑客修改他們的區塊鏈二進製文件(他們自己的區塊鏈),以便呼叫函式或訪問變數?
打個比方,就像 C# 類中的私有函式仍然可以通過反射呼叫。但是我們沒有使用反射,而是修改了 mono 執行時以忽略 private 關鍵字。
提前致謝
您無需修改二進製文件即可讀取合約中的私有數據;你可以打電話
eth_getStorageAt
。(請參閱https://programtheblockchain.com/posts/2018/01/02/making-smart-contracts-with-public-variables/了解狀態變數的private
含義public
。)所以對於只讀訪問,是的,任何人都可以閱讀所有內容。至於修改狀態,當然有人可以修改他們的本地程式碼,讓他們根據需要呼叫函式或更改餘額等。但所有這些都只在他們的電腦上;乙太坊網路中的所有其他節點都不會接受它們產生的無效區塊或交易。