oracle服務如何與日誌互動?
我是第一次接觸區塊鍊和智能合約,我無法理解一些概念。我閱讀了這篇文章https://medium.com/decentlabs/building-your-first-ethereum-oracle-1ab4cccf0b31,我對日誌伺服器有疑問。
- 我的智能合約需要區塊鏈之外的數據,所以我的合約向預言機智能合約發送請求。
- 預言機合約發出一個事件來引起預言機服務提供者的注意。
- oracle 的後端從外部來源檢索該資訊,並將交易發送到 oracle 合約以及請求的資訊。
閱讀文章後,我猜測 oracle 合約將事件記錄到日誌事件伺服器。我的智能合約是否需要從該伺服器獲取資訊?如果是這樣,怎麼做?兩個合約之間的互動是如何發生的?互動是非同步的嗎?
如果你想通過 API 呼叫獲取鏈下數據,唯一的方法就是使用區塊鏈預言機。Chainlink 是一個不錯的選擇。
Oracle 不會發出任何東西。Emit 是某種意義上的合約成員,當某個函式執行時會被觸發。您也可以使用它來獲取有關前端應用程序契約的更新。
這是使用 HTTP GET 請求獲取數據的方法。
一旦預言機讀取了您的 API 請求,它將將該函式發送回您的智能合約。這樣,您就不需要從 oracle 請求更多數據。如果您喜歡觀看,Chainlink 還提供了影片解釋。這是一個youtube連結
我的智能合約是否需要從該伺服器獲取資訊?如果是這樣,怎麼做?
在乙太坊中,日誌儲存在區塊鏈的“旁邊”。它們不是共識的一部分,但是它們作為交易收據雜湊的一部分進行驗證並儲存在塊中。此日誌記錄允許 oracle 服務讀取這些日誌並在日誌中查找指令。
兩個合約之間的互動是如何發生的?
Chainlink 執行日誌啟動器就是一個很好的例子,它按照你的建議去做。它讀取 ETH 日誌,尋找何時執行和執行什麼操作的說明。
您可以在ETH 發布/訂閱文件中了解有關記錄和使用區塊鏈的更多資訊。
互動是非同步的嗎?
是的。預言機服務將讀取 1 個區塊中的日誌和指令,對其進行處理,進行所需的任何 API 呼叫,然後在稍後的區塊中將事務返回到鏈上。