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. 找到一些区块链的应用,这个链上每个人都是一个完整的节点。制作工具,以便快速而容易地形成和解散这些区块链。