作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/blog_posts/oracles_overview.md
根据扎克和打火石先生(Mr Flintstone.)的讨论。
Amoveo预言机(oracle)是如何工作的?
预言机(oracle)者帮助我们以信任最小化的方式在区块链上记录某些现实世界事件的正确结果。用户可以向预言机(oracle)者提出一个真/假问题,并依赖它将如实回答的事实,只要问题结构良好。如果用户可以依赖这一事实,他们就可以通过智能合约为未来的答案附加金融衍生品。
在Amoveo中,有两种预言机(oracle)。问题预言机(oracle)的功能如上所述,回答关于过去发生的真实世界事件的真/假问题。治理预言机(oracle)确定Amoveo的治理变量(区块大小,区块时间,区块奖励等)的未来值,首先指定一个百分比的变化,然后询问预言机(oracle),治理变量是否应按该变化增加,按该变化减少或根本不改变。虽然应用不同,但这两个预言机(oracle)实际上以完全相同的方式运作,在大多数情况下。我们将在下面走过一个问题预言机(oracle)的过程。
我们可以使用下面的moveo-core节点命令向预言机(oracle)提出一个真/假问题。
api:new_question_oracle(Start, Question)。
我们将以两种方式描述预言机(oracle)如何回答这个问题。下一段是一个抽象的概述,之后的一段是一个具体的例子。
“开始 “是指预言机(oracle)开始时的区块高度。一旦预言机(oracle)开始,用户可以根据问题的内容,以VEO为单位对真、假、或坏的问题进行下注。我们把真、假和坏的问题称为类型。不同类型的赌注将以1:1的方式得到匹配。具有最高未匹配余额的类型决定了预言机(oracle)的输出类型。如果一个预言机(oracle)的输出类型在一定数量的区块内没有被改变,那么预言机(oracle)就可以以该输出类型最终确定,投注也就结束。已下的赌注被锁定,直到预言机(oracle)被最终确定,这时你将根据最终的输出类型获得赔付。下面是一个例子。
例如,一个Oracle开始。这意味着投注已经开始。问题是 “自Amoveo主网创世区块的时间戳以来,Amoveo主网是否生存了一个月?“我们知道,这个问题的答案是真实的。假设我在 “真 “上投注10个VEO,你在 “假 “上投注5个VEO。现在,我们两个人都以1:1的赔率匹配了5个,还剩下5个未匹配的true类型。这5个未匹配的真类型决定了预言机(oracle)现在的输出类型为真。如果输出类型在一定数量的区块内没有变化,那么预言机(oracle)就在这个状态下被最终确定。接下来,因为最终的状态是真,而我赌的是真,所以我赢得了价值10的匹配赌注,并拿回了未匹配的5,总共是15。你输掉了你的匹配赌注。任何与此结果相关的金融衍生品都会相应地支付。
正如你所看到的,Amoveo中问题预言机(oracle)的正常运作依赖于VEO持有者对不正确的投注的意愿。这种意愿依赖于一个假设,即矿工将遵循最终的预言机(oracle)类型是对所发生的事情的真实表述的链。这与比特币使用的共识是一样的。只要持有者能够依赖这一事实,他们就会放心地接受任何不正确的预言机(oracle)赌注的另一方。另外,如果这个假设成立,甚至没有人愿意在不正确的结果上下注,因为他们肯定会输钱。
如果预言机(oracle)即将以错误的方式关闭,那么你可以通过打赌让它以正确的方式关闭来加倍你的钱。
如果攻击者一直试图以错误的方式下注,他的赌注就会成为一种奖励,吸引更多的人以正确的方式下注。
一旦有足够的资金,那么对于矿工来说,手动检查结果就变得值得了。因为矿工们可以将他们所有的钱翻倍。