Contract-Development

非確定性外部服務呼叫

  • August 8, 2019

根據區塊鏈的基本規則,我們相信在結果不確定的情況下,不應進行來自智能合約的服務呼叫。

我的理解是,如果在這種情況下結果是不確定的,那麼當交易將在不同的節點中執行時,不可能達成共識,因為每個人都可能得到不同的結果。

添加新節點時,預計首先同步以下載整個分佈式賬本。

相信區塊鍊網路上添加的每個新節點都會驗證所有先前生成的交易。所以在這種情況下,它也會呼叫這個外部服務來驗證結果,並根據輸出做出相應的行為。

但是發現使用 Oraclize 可以從智能合約呼叫外部服務。因此,如果上述假設是正確的,那麼呼叫外部服務是可行的,還是僅針對特定場景呼叫它們?

礦工永遠不會代表你的合約進行外部呼叫。預言機是由使用者(當然是機器)向 Oracle 合約發送一個 tx 來完成,數據放在那裡。然後你的合約從 Oracle 合約中讀取數據,而不是從鏈外世界中讀取數據。來自外部來源的數據可能是不確定的,但一旦它在區塊鏈上,它就被確定了。

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