State-Trie

讀取乙太坊合約狀態變數

  • October 29, 2020

這個假設正確嗎?

乙太坊合約絕對不可能將數據發送到外部世界。它只能修改其狀態變數(後來儲存在新區塊中)並向其他合約發送消息。狀態只能通過離線/離線應用程序獲得,這些應用程序模擬合約並從區塊鏈/狀態的本地副本中的任何塊中讀取。

是的,這是正確的。區塊鏈上的一切都是公開的,但智能合約只能看到目前狀態。

有趣的是,使用默克爾證明,您可以向合約證明另一個合約在過去 256 個區塊的任何區塊中具有或具有特定價值,因為該合約可以訪問過去 256 個區塊雜湊。

一點點更正:合約在區塊執行期間更新其狀態變數,而不是在以後的區塊中。這可能很棘手,因為合約可以按礦工決定的任意順序呼叫,因此根據執行順序,合約可以做不同的事情。

在您的問題的上下文中,您可以將區塊鏈視為數據庫。數據庫本身不能“向外部世界發送數據”——它需要一些腳本來查詢數據庫,然後使返回的資訊可用,例如通過 Web 界面向世界其他地方提供。

您與世界的介面可能集中託管或本地託管,但除非您談論的是私有鏈,否則底層數據庫通常不會託管。

引用自:https://ethereum.stackexchange.com/questions/8903