預言機如何「預言」 | 三分鐘入門Neo3

買賣虛擬貨幣
今天我們將繼續深入介紹Oracle的事務機制與廣播模式,瞭解其是如何確保資料的順利傳輸。先簡單科普下事務機制的概念。事務機制是指,遵循原子性、一致性、隔離性和持續性(ACID)的屬性,以使資料能夠正確地提交到資料庫中。將一系列資料庫更改歸入一個邏輯操作。更改資料庫後,所做的更改可以作為一個單元進行提交或取消。為了發出由Oracle網路驗證的資料請求,Oracle的事物機制必須由合約或獨立使用者建立。透過「目標URL」和「縮短下載內容的過濾器」這兩個所需引數來觸發新建立的Oracle系統,這些特殊事務才會允許與Oracle網路進行互動。例如,透過採用分散式市場形式的智慧合約,使用者可以在其中買賣商品。如果商品以GAS定價,一旦GAS的價格發生較大波動會導致市場動盪。如果使用Oracle網路,透過其來監控GAS的市場價格,就能夠以法幣對商品進行定價,再透過智慧合約動態計算出相應的GAS價格。在此示例中,Oracle呼叫URL接入了價格監控API。在Oracle網路中使用目標URL,每個Oracle節點將會透過三個指令實時監測GAS的法幣價格。- 目標URL -

https://min-api.cryptocompare.com/data/price?fsym=GAS&tsyms=USD,EUR,GBP

過濾器可用於過濾掉一部分無用資料,以便Oracle只需以OracleAgreement的確認機制驗證返回響應的特定部分,並最終儲存在區塊中。該過程允許使用者或智慧合約透過使用Oracle網路直接訪問任何必需的資訊,再將其帶入區塊鏈做進一步使用。

事務結構

與Neo3上的常規事務機制相比,Oracle事務機制有兩個區別,它是由已簽名和未簽名的資料組成。在一個常規事務中,已簽名部分保留著諸如發件者,版本和其他屬性之類的資訊。未簽名部分由事務簽名組成。

一個可行的Oracle事務結構是將一個名為ExpectedResultHash的新屬性新增到已簽名部分的屬性中。儘管很可能會在事先不知道結果的情況下發出大多數Oracle請求,但是這種包含很有用,因為它使使用者可以指定要檢查的結果以驗證交易。核心開發者Belane認為,這還便於節點檢查,可以快速瞭解這個事務是否為Oracle事務。

在使用者不期望任何特定結果的情況下,該雜湊將改為零填充,從而導致結果完全取決於Oracle節點之間的共識。

另一個區別是新的OracleAgreement部分,該節位於未簽名的部分中,並且是DownloadCache的宿主,其中包含了三個重要資訊:從中檢索資料的URL,用於限制下載內容僅限於必需內容的過濾器(如JSONPath或XPath)資訊和內容本身(由Oracle節點執行)。

廣播模式

實施Neo Oracle的一個顯著優勢是,它充分利用了dBFT提供的獨立塊事務終局性來最佳化確認時間,網路流量和鏈儲存空間。這是因為在Neo網路上執行的Oracle呼叫僅需要在單個塊內處理和確認單個事務,使結果可以立即用於智慧合約中。

所提出的記憶體池和廣播模式顯示瞭如何透過網路進行Oracle事務,除了Oracle的節點外,網路中的所有節點也會協助事務的執行。當Oracle事務已廣播到網路中後,每個節點會將當前未驗證的事務作為已知的雜湊儲存在其記憶體池中,並將其傳遞給其他節點。

透過此過程,會發現Oracle事務的Oracle節點將使用URL並應用DownloadCache中提供的過濾器來完成所有包含的請求。然後,透過將結果和簽名附加到Oracle事務的OracleAgreement部分,這些節點將就返回響應的資料達成共識。

一旦收集到足夠的簽名以透過批准閾值(當前為TBD),就可以將Oracle事務視為已驗證,並由共識節點將其儲存在一個區塊中。實際上,同一事務既用於Oracle呼叫,又用於確定結果,而以前的鏈下資料現儲存在鏈上,可由智慧合約使用。

在「預言機篇」的第三講中,我們將更深入地探討Oracle的請求機制與達成共識的確認規則。

新年伊始,我們特別推出了「三分鐘入門Neo3」系列專題,帶大家率先了解Neo3的方方面面。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;