Solidity
從另一個合約中讀取儲存
是否可以從 EVM 中的另一個合約中讀取合約中的任何儲存點?我不在乎它是否是hackish。
我的膽量說這是不可能的,因為它可以讀取這樣的內部或私有變數,但我想確定。
合約不能讀取其他合約的儲存。他們能做的就是呼叫其他合約並獲得一個返回值。因此,如果其他合約提供“getter”,他們可以間接獲取儲存數據。
請注意,“隱私”不是原因。區塊鏈上的一切都是公開的,與內部訪問模型無關。
從理論上講,“讀取”另一個合約的儲存槽的另一種間接方式是讓外部方為其提供 Merkle 證明,以證明該合約針對最近的區塊雜湊進行驗證。然而,這相對難以實現,會消耗大量氣體,是非同步的,並且可能不值得付出努力。