UMA

作者:扎克-赫斯, Zack Hess

https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/UMA.md

评价UMA DVM oracle白皮书 2019年7月


被评价论文的链接:https://drive.google.com/file/d/1OfdCsaIf5tCDEMS0nnPjF7-QidY1h0hJ/view

UMA是一个基于投票币(votecoin)的预言机(oracle),与Augur或Bitcoin Hivemind非常相似。

就像Augur和Bitcoin Hivemind一样,他们设置了使用预言机(oracle)的费用,试图维持votecoins的市值大于被预言机(oracle)执行的赌注的总价值。 如果有太多的赌注,没有足够的投票币,使用UMA的预言机(oracle)的成本增加,以奖励人们锁定更多的投票币价值。如果赌注不多,而投票币很多,那么UMA的预言机(oracle)的成本就会降低,以尝试与其他预言机(oracle)替代品相比更具成本竞争力,并吸引客户回来。

如果一个altcoin的市值较低,其价值的波动性就会增加。因此,小市值的Votecoin是非常不稳定的。你需要支付的说服别人锁定资产价值的成本与该资产的波动性成正比。这意味着我们需要向UMA/Augur/Hivemind等系统的votecoin持有者支付高额费用。

像UMA这样的Votecoin类型的预言机(oracle)总是比Amoveo的预言机(oracle)要昂贵几个数量级。

UMA对预言机(oracle)问题的定义。 #

“Oracles “在概念上可以分解为两种功能:一种是向区块链报告链外数据的机制,另一种是验证报告信息准确性的机制。在大多数智能合约设计中,如果合约参与者同意报告机制提供的数据,就不需要进行验证。只有在发生争议的情况下才需要验证机制。这种验证系统是本文的重点”

所以从一开始他们就给自己设置了限制,所以只有3.2级的oracle系统对他们来说才是可能的。你可以在这里阅读安全级别:basics/trust_theory.md 通过拒绝使用升级机制(escalation mechanisms) 来顺利地从报告步骤过渡到验证步骤,他们不可能拿出比3.2更好的东西,像Augur或Bitcoin Hivemind那样。

UMA声称对研究有新的贡献。 #

“尽管现有大量关于预言机(oracle)系统设计的研究,但目前的方法缺少一个关键特征:围绕破坏预言机(oracle)系统的成本的经济保证。”

请看Truthcoin白皮书的第27页:http://bitcoinhivemind.com/papers/truthcoin-whitepaper.pdf 你可以看到围绕腐蚀预言机(oracle)系统的成本,对经济保障的计算。这个计算至少从2014年我第一次读到这个白皮书时就已经存在了。

在Augur白皮书中搜索 “对攻击者的最大利益”(“maximum benefit to an attacker”)https://www.augur.net/whitepaper.pdf

UMA引用了Truthcoin、Augur和Amoveo,认为它们 “极大地影响了UMA的设计”。然而,UMA并没有意识到,这3个项目都花了很多时间来计算破坏预言机(oracle)系统的成本,并提出了有关的经济保证。

关于机制设计的错误假设 #

UMA所建立的最大的错误假设之一,在这句话中得到了体现。

“由于无权制限制的区块链上的行为只受经济激励,存在一些贿赂,可以腐蚀验证机制,产生不诚实的行为。”

我们在机制设计理论方面已经有了大量的研究,知道这是错误的。在有些经济机制中,任何贿赂的尝试只能使机制更加准确http://mason.gmu.edu/~rhanson/biashelp.pdf 诀窍是把报告设为赌注,让虚假报告作为奖励,激励其他人做出诚实的报告。你可以利用攻击者的势头来对付他们。这允许安全量与攻击的大小成比例地升级,所以我们总是刚刚好够安全。

UMA对Amoveo的攻击性描述。 #

“Truthcoin、Augur和Amoveo等预测市场系统对验证机制设计做出了重要贡献;这些系统都使用谢林点(Schelling Point)投票方案来激励真实投票,并对UMA的设计产生了很大影响。”

Amoveo没有任何投票机制。我们使用futarchy和Nakamoto共识。

投票不可能比3.2更好,它永远比futarchy贵几个数量级。 design/voting_in_blockchains.md

你可以在这里阅读Amoveo的oracle设计:design/oracle.md

关于分层预言机(oracle)的困惑 #

UMA对来自预言机(oracle)设计的基本概念感到困惑: “UMA的验证机制可以分层在另一个预言机(oracle)之上,为该预言机(oracle)报告数据的准确性增加经济保证,并允许UMA作为 “最后手段 “的验证层发挥作用。”

哇,这听起来很有社会意义。好像我们大家可以互相帮助。但事实不是这样。 互相串联的机制使整个系统和最薄弱的环节一样脆弱。对于像UMA或Augur这样的投票方案,投票币的价值需要超过当时正在执行的所有赌注的价值。如果我们有2个投票类型的协议,那么这意味着投票币的总价值现在需要比赌注的价值大2倍,使系统运行所需的最低费用增加一倍。

所以,不,像这样把预言机层层叠加是没有意义的。这只能使它更不安全,更昂贵。

寄生虫和模糊化。 #

UMA很好地描述了寄生虫问题。这是一个发生在Augur/Hivemind/UMA等投票币系统的问题。寄生虫问题发生在他们身上,因为他们需要收集费用来支付给投票币持有者以维持安全。像Amoveo这样的预言机(oracle)没有寄生虫问题,因为我们没有任何投票币持有者。我们的预言机(oracle)不向交易者收取费用,所以在Amoveo中,如果赌注是链外(offchain)和私人的,这并不重要。 模糊化的解决方案依赖于一个错误的假设。他们假设寄生合约会看别人的赌注是如何被解决的,并且它将反映其他现有的赌注。但寄生合约也可以被编程为通过验证以太坊在特定区块高度的共识状态的默克尔证明来查询预言机(oracle)的结果。这样就可以把数据从以太坊导出到其他区块链,并有链外寄生合约。

贿赂和勾结 #

“如果系统被成功操纵代币的价格就会下降到零,根据这一前提,我们可以证明没有攻击者可以通过贿赂代币持有人获利。如果代币持有者认为如果系统被破坏,他们的代币价值将下降到零,那么每个代币持有者都会要求一个大于他们当前代币价格p的贿赂。”

攻击者需要的贿赂规模远远小于每个人持有的代币的价值。这就是所谓的公地悲剧。我将举一个反例来证明这是假的。

让我们想象一下,有100个代币持有人,每个人有1%的价值。我们正在报告 “今天是1+1=2吗?",而攻击者正在贿赂代币持有者,让他们错误地报告 “false”。让我们假设,正如UMA在他们的论文中所做的那样,如果攻击成功,那么代币的价值就会变成零。 攻击者使用智能合约向每个预言机(oracle)报告者做出这样的承诺:“如果你参与攻击,我将向你支付你所持代币价值的10%"。

因此,现在攻击者已经锁定了智能合约中所有代币价值的10%的承诺。 每个预言机(oracle)报告者持有1%的代币,他们必须做出这样的决定:参与攻击,或不参与。让我们计算一下他们的预期利润,看看哪个决定更有利可图。

M = 代币的起始市值
r = 预言机报告者有多少钱 = M/100
b = 一次贿赂 = r/10
p = 攻击成功的概率

假设如果你参与了攻击,就会使攻击成功的可能性增加1%。

参与攻击 -> b + (1-(p+(1/100))*r
不参与攻击 -> (1-p)*r

在以下情况下,参与攻击是有利可图的:

(b/r) + (1-(p+(1/100)) > 1-p
b/r > 1/100
b > r

因此,只要贿赂金额大于其代币价值的1%,预言机报告者就会有利可图地参与攻击。如果攻击者想贿赂100个投票者中的51个,他只需要支付代币总价值的0.51%。这就是机制设计者至少从1833年起就知道的公地悲剧的数学原理。