作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/proof_of_stake.md 第4版
本文的目標是表明權益證明的區塊鏈共識是行不通的。我們對 “權益證明 “的定義非常籠統:任何區塊鏈共識機制,你對哪個區塊被添加到鏈上的影響與你在區塊鏈的共識狀態中擁有的一些價值成正比。
在這裏你可以看到對這篇論文的反駁: https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/the_defence_of_pos.md
攻擊 #
我們需要讓>2/3的驗證者在不同的區塊鏈上鎖定第二個安全債券,即攻擊者債券,這個債券要大於或等於他們在PoS區塊鏈上的安全債券。爲了做到這一點,我們向他們提供價值略高於他們在主鏈上賺取的賭注獎勵。
一旦我們有>2/3的人蔘與,這些驗證者就開始忽略沒有參與攻擊的1/3的人,導致這1/3的人失去他們的安全保證金。由於說話人-聽話人的故障等價性(speaker-listener fault equivalence),後來沒有辦法證明這1/3的人是正確參與的,不應該失去他們的保證金。因此,沒有參與攻擊的擔保驗證人,他們的全部擔保金都會被燒燬。
現在,攻擊者擁有100%的控制權,我們可以阻止任何新的人綁定,我們可以在保持100%控制權的同時開始解除綁定。這允許每個參與攻擊的人在我們執行破壞性攻擊之前從網絡中兌現。當他們從PoS網絡中套現時,我們也可以減少攻擊者的債券規模,這就減少了進行這種攻擊的成本。因此,那些參與攻擊的綁定驗證者,他們可以在攻擊發生前從網絡中移除>99%的綁定。這意味着在最壞的情況下,只有<1%的安全債券被燒燬,作爲對參與攻擊的懲罰。
在Cosmos中,解除綁定的時間是3周。在Cardano,它是15天。
一旦我們擁有100%的控制權,並且攻擊者已經從系統中移除他們的絕大部分股權,我們就可以執行任何形式的攻擊,並且我們在系統中幾乎沒有任何價值可以被燒燬來懲罰我們。根據這個區塊鏈可用的應用程序,它看起來會有所不同。
由於我們對驗證者的股權有100%的控制權,我們可以允許我們的股權的任何部分被燒燬,之後仍然有100%的控制權。這就爲雙重消費攻擊提供了可能。我們可以支付一大筆錢來購買東西,然後重寫區塊來撤銷付款。如果有必要,我們可以撤銷幾天的歷史。特別是,我們可以在交易所出售PoS區塊鏈上的代幣以換取比特幣,然後撤銷將我們的PoS代幣存入該交易所的tx。所以我們可以同時保留比特幣和PoS代幣。
如果這個區塊鏈支持預測市場,我們可以在市場解決後重寫歷史,所以我們可以審查每一個下了勝負賭注的人,並用我們自己的勝負賭注來取代他們。因此,我們可以從該博彩市場竊取所有的價值。
歷史 #
已經有很多人試圖證明PoS區塊鏈共識不起作用。Paul Sztorc證明了PoS不能用於分發新的代幣http://www.truthcoin.info/blog/pow-cheapest/ 所以PoS不能完全取代PoW。
Vitalik解釋了關於攻擊PoS的一些方法,以及他們用來防止這些攻擊的設計策略 https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
Nothing at stake 問題。這是一個試圖表明PoS不起作用的問題,因爲參與所有可能的歷史不需要任何成本。這個問題通過要求驗證者交納押金來解決,如果他們參與了多個版本的歷史,押金會被銷燬。
遠距離攻擊( Long range attack),這試圖表明PoS不起作用,因爲總是有可能通過購買歷史上某一時刻的所有無價值的私鑰來重建歷史。這個問題是通過讓驗證者在足夠長的時間內鎖定資金來解決的,這樣他們的私鑰就不會在那個時間段內失去價值。這樣就有足夠長的時間,使網絡中足夠多的參與者可以同步最近的區塊,這樣我們就可以達成共識。基本上,它是一個檢查點系統。
激勵問題。這是一個嘗試,表明PoS不起作用,因爲它不可能使驗證者的激勵與網絡的成功保持一致。這個問題通過在PoS共識中整合futarchy元素而得到解決。
道德主義的執行 #
這裏有一篇1992年的論文,解釋了爲什麼PoS不能工作。http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.405.286&rep=rep1&type=pdf “如果被懲罰的成本足夠大,合作、懲罰不合作者、懲罰不懲罰不合作者的道德主義策略可以在進化上保持穩定。然而,我們也表明,道德主義的策略可以使任何個人有代價的行爲在進化上是穩定的,無論它是否創造了羣體利益。”
PoS的問題是,由於驗證者的價值是系統內部的,攻擊可以做二階懲罰。攻擊可以懲罰那些沒有參與執行懲罰的驗證者。而且,這允許任意改變協議的主導地位。
POS系統都需要在系統中的價值,和關於哪些區塊要添加到區塊鏈的決定之間有一些邏輯聯繫。如果我們要解決無利害關係和遠程攻擊的問題,就需要在每個共識層面的決定中鎖定大量的資金。所以在POS系統中,多數人聯盟總是有可能懲罰那些不按多數人意願參與共識的賬戶。大多數人只是簡單地審查他們,不讓他們再接觸到他們的錢。因此,在POS系統中,一旦一個多數聯盟形成,它就會非常穩定。聯盟中的參與者很容易相互信任,因爲如果他們中的任何一個人作弊,聯盟中的其他成員可以知道誰作弊並通過凍結他們的錢來懲罰他們。所以多數聯盟可以利用軟分叉來推動他們想要的對共識規則的任何改變,他們可以偷任何錢,他們可以把費用提高到他們想要的高度。
審查制度可以是好的 #
POW的一個基本屬性是,不可能對審查制度進行懲罰。礦工不一定在系統中擁有任何貨幣,所以就是不可能懲罰他們不包括tss。
這與說 “POW不懲罰審查制度 “是不同的。在POW中,不可能做一個軟分叉來增加懲罰審查制度的能力。
長期以來,這一直被視爲POW的一個弱點。人們喜歡想象審查是不好的,我們應該懲罰礦工的審查行爲。但這實際上是POW共識的一個極其重要的屬性,使其對某些攻擊具有安全性,我們將表明,任何沒有這個屬性的區塊鏈共識都不如集中式替代方案安全。
在POW系統中,系統中的價值和礦工之間沒有聯繫。許多礦工甚至不擁有任何硬幣。多數聯盟唯一能做的事情就是審查區塊。形成一個多數聯盟的hashpower來控制區塊鏈,需要花費C量來協調不同的礦工,而且它爲每個礦工支付P量的額外獎勵。但是,由於不可能懲罰審查制度,聯盟的一個子聯盟可以協調使用審查制度來控制,而第一個聯盟沒有辦法懲罰這個子聯盟。次聯盟有一半的hashpower來協調,所以他們的成本是C/2。他們在一半的礦工之間分享獎勵,所以他們支付的額外獎勵是2*P。
在POW中,創建一個子聯盟來推翻一個聯盟總是比創建第一個聯盟更容易、更有利。這一事實使得沒有礦工對組建聯盟感興趣,因爲他們知道這很可能是竊取他們哈希力的把戲。
從礦工的角度來看,如果他們參加你的聯盟,他們可能會失去所有的利潤。
發起攻擊的賄賂成本 #
如果你是一個認爲攻擊會失敗的驗證者,那麼你就可以放心地接受賄賂。因爲你知道攻擊無論如何都會失敗,所以你還不如接受免費的錢。如果你認爲攻擊會成功,那麼你會把你的硬幣賣給認爲攻擊會失敗的人。
根據公地悲劇,賄賂驗證者以形成多數聯盟並破壞區塊鏈的成本是:
LU=(驗證者要鎖定多少錢) #V = (有多少驗證者) 賄賂 = LU / (2 * #V)
現實上,PoS區塊鏈被設計爲有>100個驗證者,並鎖定多達90%的股權。在這種情況下,插入上面的公式。賄賂=(0.9/(2*100))=(市值的0.45%)
如果摧毀一個區塊鏈的成本低於該區塊鏈價值的1%,這甚至比關閉一箇中心化替代方案的法律努力的成本更不安全。
爲了讓PoS達到3級信任,賄賂驗證者的成本需要大於控制共識的潛在利潤。你可以在這裏閱讀信任等級的內容
PP = (控制共識的潛在利潤) LU / (2 * #V) > pp
讓我們做一個合理的假設,即有10個以上的驗證人:
LU > (20*PP)
控制系統的潛在利潤包括系統中所有的價值,包括LU。所以我們知道:
PP > LU
不可能使這兩個不等式同時爲真。這表明,PoS不可能實現3級信任,它將永遠是4級。
公地悲劇的細節 #
我們如何確定公地悲劇模型是建立賄賂成本模型的正確方式?
在機制設計中,一個基本的假設是,用戶更喜歡擁有更多的價值,而不是更少。這意味着我們可以計算用戶的行爲,因此,我們可以計算出這是否是一個安全的機制。
因此,讓我們站在PoS幣持有者的角度,想象他們的處境。
有人公開行賄,投票給區塊鏈的破壞者。我不知道還有多少人報名參加了賄賂。如果我報名了,而攻擊失敗了,我可以保留賄賂,不會受到懲罰。
讓我們對你的硬幣的價值進行建模。我們知道,如果攻擊成功,硬幣就一文不值。由於你不知道還有多少人接受了賄賂,所以你必須對你的硬幣的價值進行建模,就像這樣。價值=(如果攻擊失敗的價值)*(攻擊失敗的可能性)
因此,如果我們想計算用戶的成本,如果他們接受了賄賂,那將是。價值(無賄賂)-價值(賄賂)=(如果攻擊失敗的價值)*(如果你接受賄賂,攻擊成功的可能性有多大)。
(如果你接受賄賂,攻擊成功的可能性有多大),另一種說法是(你的投票很可能是關鍵性的),另一種說法是(你對結果的影響)。
因此,我們需要一種方法來模擬如果你接受賄賂,攻擊成功的可能性有多大。根據概率法則,相互排斥的結果需要加起來達到100%。如果我們把PoS區塊鏈的每個驗證者的控制力加起來,需要加到100%。讓他們所有的影響力加起來達到100%的一種方法是,如果每個人的影響力是(他們的股份)/(總股份),這與(該用戶控制的股份部分)相同。
這被稱爲 “市場失效模型”,或 “公地悲劇模型”。
(對一個用戶的賄賂)=(他們的硬幣價值)*(他們控制的賭注部分)
(對1/2股權的賄賂)=(1/2股權的價值)*(被賄賂的普通股東所控制的股權比例)。
因此,插入一些例子的數值。如果有1000個驗證者,區塊鏈的價值是10億美元,90%的價值是被押注的,那麼賄賂>50%的驗證者的總成本將是。(10億美元)*(0.9)*(1/2)*(1/1000)=>450 000美元
因此,少於1/2萬美元的賄賂足以完全摧毀一個10億美元的PoS區塊鏈。