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的方方面面。