Oracles

智能合約使用的 Oracle 不再可用

  • February 4, 2020

乙太坊依靠預言機來提供有關智能合約使用的外部世界的資訊。此外,當節點同步(慢速模式)時,它必須檢查所有交易(包括 SmartContract 交易)以驗證整個交易歷史。那麼,如果在新節點同步時,預言機不再可用怎麼辦?

我認為要理解的重要一點是,由於 OP 在問題中描述的確切原因,契約無法諮詢預言機。預言機使用合約輸入來簽署交易,因此無論預言機未來的可用性和一致性如何,該輸入都是鏈的一部分。

類似回調的模式可以使合約看起來像呼叫 Oracle。

大致:

第 1 步:客戶端(合約)向 Oracle 合約發送請求。

第 2 步:Oracle 的鏈下組件觀察請求,例如觀察事件。

第 3 步:Oracle 的鏈下組件對客戶端回調的交易進行簽名。

第 4 步:客戶(契約)收到 Oracle 的輸入,可以繼續其流程的下一步。

在這樣的序列中,啟動第 1 步的發送方交易和第 4 步的 Oracle 響應都是不可變的交易,其他節點將使用這些交易來計算客戶端合約的狀態。Oracle 保持可用並不重要。它所說的,一次,被記錄下來,這就是客戶所採取的行動。

希望能幫助到你。

區塊鏈與任何外部互動隔離,您擁有隨時驗證區塊和交易所需的所有數據。

一些事務可能包括來自預言機的語句,但它們處於更高的抽象級別,因此正常網路客戶端無法驗證它們。

預言機協議必須提供驗證此類聲明的方法。一個典型的解決方案是提供一個投票期,如果達到多數,則聲明得到確認。所有投票都記錄在區塊鏈中,您可以對其進行驗證。

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