Makerdao

作者:扎克-赫斯, Zack Hess

https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/makerdao.md 创业者联盟(MakerDAO) MakerDAO是一个大型的稳定币项目。它用于在以太坊上创建一个名为dai的子货币(subcurrency)。它的设计目标是dai应该有一个相对稳定的价值。

本文件的目的是解释为什么MakerDAO会失败,并试图预测它将如何发生,以及有多少价值会被破坏。

MakerDAO有4个子货币(subcurrency)。

  • Dai - 稳定的价值
  • cdp - long-eth
  • peth
  • mkr - 治理代币

eth可以被吐到dai和cdp中。dai和cdp可以结合起来回收eth。

将dai和cdp结合起来的净风险必须与它们所产生的eth相同。由于dai是稳定的,这意味着cdp必须是long-eth。但这是一种不寻常的形成long-eth的方式。合约支付的eth数量是恒定的,但以eth衡量的dai的成本,从cdp中解锁的eth是一个变量。

mkr的持有者通过投票来决定一个受信任的feed团队,他们称之为 “预言机(oracle)"。受信任的feeds是用来让区块链知道eth和USD之间的当前汇率的。这个汇率被用来决定人们可以用dai兑换cdp的价格。

它是以一种奇怪的方式执行的。dai和cdp都是可以花费的,但只有dai是可以替换的。每份CDP合同都可以有不同的汇率来支付Dai和获取eth,这取决于合同订立时预言机(oracle)中的价格。

如果预言机(oracle)说eth的价格更高,这意味着生产同样数量的dai的成本更低。因此,每个人都会受到激励,把dai和他们的旧cdps结合起来,把eth拿出来,然后以新的更好的价格制造新的dai。如果Eth上升了5%,那么cdps的价值就增加了10%。

如果预言机(oracle)说eth的价格降低了5%,那么cdps的价值就会下降10%。

攻击事件的顺序。

  1. 攻击者购买CDP合同,以当前的高价出售所有的DAI。(花100美元的eth,得到100美元的CDP)
  2. 预言机(oracle)撒谎说Eth比它实际上更有价值。
  3. 攻击者以新的较低价格购买(或制造)dai币,用它来解锁步骤(1)中的eth。(花50美元的eth,得到100美元的eth)

净结果:攻击者eth的财富增加了50美元,有50美元的eth被锁定在CDP中,需要花费100美元的DAI才能解锁。该系统现在已经没有那么多抵押品了。

如果CDP合同的担保不足,这可能会导致CDP的自动清算。makerDAO的文件在这一点上很复杂,我不清楚这是否会导致peth的恶性通货膨胀,或者它是否会导致费用增加,直到不值得使用dai。

剩下的就是证明我们可以以便宜的价格让预言机(oracle)撒谎。投票不起作用,因为它是一个固有的不稳定的游戏https://vitalik.ca/general/2019/04/03/collusion.html, 它容易受到贿赂,因为公地悲剧use-cases-and-ideas/tragedy_of_commons_in_voting.md在数学上不可能赋予它我们想要的属性https://en.wikipedia.org/wiki/Arrow%27s_impossibility_theorem, 攻击者甚至可以通过贿赂投票来强迫结果,而且他们不需要支付贿赂https://blog.ethereum.org/2015/01/28/p-epsilon-attack/

Makerdao让mkr的持有者投票决定哪些受信任的feeds将参与到预言机(oracle)中。因此,有可能腐蚀mkr持有者,让自己一次又一次地被投票为预言机(oracle),直到你控制所有预言机(oracle)。

合并来自许多受信任的feeds的数据也是一种投票协议。因此,你也可以通过贿赂已经当选的被信任的feeds来操纵预言机(oracle)的结果。

mkr和dai的价值合计超过8亿美元,因此当这种盗窃发生时,可能会造成很大的损失。

dai的保证金是150%,所以你可以让预言机(oracle)在每个方向上最多撒谎150%,你做一次这种攻击就可以赚取你投资的%150。但是,如果你通过直接贿赂预言机(oracle)来做这种攻击,mkr持有者可能会迅速进行投票,把所有坏的价格信息踢出去。所以在这种情况下,会有很少的攻击,偷了很多的钱。

如果攻击者反而贿赂了mkr的持有者,那么他们就可以无限期地进行这种攻击。在这种情况下,一次只偷2%的钱可能是有意义的,也许人们不会注意到,所以攻击者可以长期偷钱。或者,也许一次做一个大的攻击,而不是拉长它的时间。

博弈论角度来说,这是一个4.2级的安全机制,所以不可避免地会发生攻击。你可以在这里阅读关于安全级别的信息