Fast oracles

作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/fast_oracles.md 這是對詹姆斯-李在這裏提出的預言機(oracle)設計的回顧和評論:https://medium.com/@jameslee777/decentralized-trustless-oracles-dtoby-piggybacking-on-timestamp-consensus-rules-2adce34d67b6

與Amoveo的預言機(oracle)比較 #

Amoveo的預言機(oracle)有一個新穎的設計,它沒有建立第二個共識機制來控制預言機(oracle)的結果,而是重新利用現有區塊鏈的共識機制來保證預言機(oracle)的安全。這使得它能夠實現2.2級的安全,並且更加經濟實惠。jl777的預言機(oracle)也是這樣的。它是將區塊鏈的共識重用於預言機(oracle),而不是建立第二個共識機制來控制預言機(oracle)。

對於Amoveo來說,我們不希望礦工幾乎永遠關注預言機(oracle)。我們建立了一些護送機制,這樣一來,造成礦工需要關注預言機(oracle)的情況是非常昂貴的。如果礦工確實需要關注,這必然意味着礦工可以從攻擊者的損失中獲得巨大利潤。

jl777的預言機(oracle)走的是另一個極端。礦工需要參與查詢和記錄所有預言機(oracle)的結果。所以它不需要升級機制。在某些方面,它是一個更簡單更優雅的設計。

中本聰 #

中本聰共識的核心是這樣一個遊戲。礦池必須運行礦工想要開採的軟件版本,否則他們就沒有客戶了。礦工必須開採出用戶願意支付的軟件版本,否則他們就買不起電。因此,分叉的每一方的代幣的相對價值是控制中本聰共識的原因。如果我們想重用中本共識來提供更多的數據,我們需要應用 這個相同的原則。分叉中誠實一方的代幣需要更有價值。

我喜歡jl777的預言機(oracle)的原因 #


很好,jl777避免使用任何已知的4.1級或更差的機制。你創建的機制只能像你用來構建它的最不安全的工具一樣安全。

在Komodo中用專門的共識製作新的區塊很容易,這種新的預言機(oracle)設計利用了這一點。利用Komodo的這些工具,似乎是尋找預言機(oracle)設計創新的一種有希望的方式。

jl777的設計要輕得多。提供一點數據的成本可能還不到Amoveo的oracle中提供一點數據的1/1000。

我很榮幸,jl777會考慮在他的作品中重新使用Amoveo的預言機(oracle)思想。

速度問題 #

縱觀DAO黑客事件,以及以太坊是如何恢復的。在我看來,爲了防止錢從DAO上被盜而做硬更新的決定,與在jl777的oracle中做出的關於結果應該是什麼的決定幾乎是一樣的。

以太坊之所以能夠進行硬更新以防止DAO被黑,是因爲被盜的錢被鎖定了足夠長的時間。這些錢需要被鎖定足夠長的時間,以使用戶能夠對分叉的任何一方的價格形成一定的預期,如果只有分叉的一方讓DAO被黑掉的話。

中本聰的共識可以控制以太坊硬更新的結果,但前提是它的速度要足夠慢,讓用戶瞭解正在發生的事情,並就他們想要哪一個分叉上的幣做出明智的決定。 我擔心的是,jl777的預言機(oracle)速度太快,中本聰共識無法控制結果。沒有足夠的時間讓用戶做出明智的決定,以確定他們希望代幣在哪一分叉上。 如果一個決定做得如此之快,以至於用戶沒有時間意識到分叉正在發生,那麼分叉的每一方的價格就不會以它們應該有的方式變化。礦工們不是被限制在誠實的版本上挖礦,而是被限制在流行的版本上挖礦,即使它是不誠實的。因爲少數人分叉上的代幣看起來毫無價值。當網絡意識到預言機(oracle)中包含了一個謊言時,已經來不及修復了。攻擊者已經把偷來的錢洗乾淨了。

同步問題 #

無論完整的節點使用什麼軟件來查詢他們所記錄的預言機(oracle)數據,都不可能是跨時間有確定性的。最終互聯網上的API會發生變化。 這意味着不可能驗證預言機(oracle)所提供的歷史數據的準確性。因此,無論網絡中的哪一部分人在同一時間運行,他們都可以一起工作,將謊言插入預言機(oracle)。

前面關注的例外情況 #

如果每個節點都在運行一個完整的節點,而且它們都能100%保持同步,那麼我之前的擔憂就不成立了。用戶可以立即知道他們想在哪一邊控制代幣,因爲他們的完整節點可以查詢預言機(oracle)的結果,與其他每個完整節點完全相同。不存在同步的問題,因爲沒有人重新同步任何歷史。

有可能,側鏈幾乎可以立即從互聯網的任何地方獲得數據,這些側鏈可能非常有用。即使他們有這些限制:

  • 每個能參與區塊鏈的人都是一個完整的節點
  • 開始後新的人不能加入
  • 每個人都能100%保持同步

建議 #

我看到有3個選項可以讓這個預言機(oracle)取得進展

  1. 在預言機(oracle)中放一個延遲,這樣它就可以在正常的區塊鏈上得到安全。
  2. 證明中本聰的共識仍在控制結果,即使事情發生的速度比用戶的能意識到的要快。
  3. 找到一些區塊鏈的應用,這個鏈上每個人都是一個完整的節點。製作工具,以便快速而容易地形成和解散這些區塊鏈。