Oracles
Chainlink 是否在區塊鏈某處儲存 Oracle 對交易的響應?
讓我們考慮一個交易生命週期的範例,其中智能合約使用 Oracle 獲取實時更改的外部數據 ETH/USD 價格饋送。
交易是在挖礦過程中執行的,因此它會向 Chainlink 預言機創建返回 Price1 的請求。Price1 是否儲存/記憶體在區塊鏈的某個地方?
一旦區塊被挖出,挖礦節點會將其發送到其他乙太坊節點進行驗證。
驗證節點也執行該智能合約。後續呼叫 Oracle 以獲取 ETH/USD 價格會發生什麼?Oracle 會在塊驗證期間返回“記憶體”響應 Price1,否則我們會得到 Price2。這是否意味著如果我們得到 Price2 那麼區塊驗證會失敗?
對您的問題的簡短回答:是的,預言機響應儲存在鏈上。
長答案:你可以閱讀更多關於請求模型如何為鍊鍊接工作,以及它如何在鏈上獲取數據,但這裡是要點,這將有助於回答這個問題。了解架構的最簡單方法是了解執行日誌啟動器的工作方式。
- 鏈上合約通過向區塊鏈日誌發送事件來向鏈下 Chainlink 預言機發出請求。這個事件有關於獲取什麼樣的數據以及如何返回它的說明。Chainlink 節點正在尋找這些事件。
- 然後節點遵循指令,並在chainlink節點進行的交易中,然後將數據放在鏈上,由事件定義。該事件將指定數據將通過哪個函式執行。
您可以查看Chainlink 價格資訊頁面並查看鏈上數據。他們甚至有一個指向 etherscan 的連結,可以向您顯示合約和數據的儲存位置。
您的問題非常好,因為這就是為什麼無法將預言機系統內置到區塊鏈中的原因,如果獲取外部數據是驗證過程的一部分,那麼任何節點都無法達成共識。因此,Chainlink 預言機將數據放在鏈上的交易中,然後它會經歷與其他所有交易相同的驗證過程。