Makerdao

作者:扎克-赫斯, Zack Hess

https://github.com/zack-bitcoin/amoveo-docs/blob/master/other%5Fblockchains/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級的安全機制,所以不可避免地會發生攻擊。你可以在這裏閱讀關於安全級別的信息