Ouroboros 分析

作者:扎克-赫斯, Zack Hess

https://github.com/zack-bitcoin/amoveo-docs/blob/master/other%5Fblockchains/ouroboros.md Ouroboros是一種股權證明類型的區塊鏈共識機制。以下是描述它的論文https://eprint.iacr.org/2016/889.pdf

我已經寫了一篇關於PoS不可能的論文

本文的目的是分析Ouroboros,看看他們是否設法證明我是錯的。我將嘗試證明Ouroboros不可能是安全的。

在這裏,人們試圖證明本文中的攻擊是不可行的

其他人已經寫了爲什麼說PoS比PoW便宜是錯誤的,所以我將直接鏈接到他們的文章

自從2016年我在twitter上告訴Cardano的CEO Charles Hoskinson這個漏洞以來,人們或多或少地瞭解了這個漏洞,https://twitter.com/zack%5Fbitcoin/status/812921755199242240?s=20

一個數學策略 #

Ouroboros的設計目標是能夠證明它是安全的,而不是大多數人在設計區塊鏈時使用的臨時試錯方法。這是一個令人耳目一新的觀點,我對此表示贊同。

這就是爲什麼我想出了這個系統來量化我們對 “安全 “的確切含義。信任理論 這種方式可以計算出一種區塊鏈機制是否比另一種更安全或更不安全。

Ouroboros論文中的證明可能都是正確的,我不會試圖推翻其中任何一個證明。

  • 證明區塊鏈安全的過程有這些步驟。
    1. 我們建立一個模型來描述安全對我們的情況意味着什麼。
    2. 我們證明我們建立的機制遵守安全模型中定義的必要屬性。

步驟(2)是我們可以用不可否認的數學方式證明的部分。

步驟(1)是當今區塊鏈中一個有爭議的話題。例如,我們甚至不能同意哪種安全模型在保障比特幣bitcoin.md的安全。

在本文中,我將試圖解釋Ouroboros是基於什麼安全模型,我將試圖證明他們的安全模型不足以保護加密貨幣。

這意味着,他們所有的證明,即使是有效的,但他們所證明的事實,對於Ouroboros是否能確保加密貨幣的安全,實際上並不重要。

因此,我將主要關注他們白皮書的第2部分。

安全模型的目標 #

Ouroboros的安全是基於持久性和有效性的目標。 “持久性persistence”,他們的意思是區塊鏈需要有終結性。如果一個tx深入到歷史中,我們需要有越來越多的信心,它不會被逆轉。

“有效性liveness”,他們的意思是,TXS不會被審查。一個有足夠費用的有效tx將被包括在一些有限數量的區塊中。

就我所知,這2個目標確實完全包含了加密貨幣的需求。

我將試圖表明,Ouroboros模型未能實現有效性的目標。

Tx審查是一個深刻的問題。做任意審查的能力被稱爲 “軟分叉”。這是一種攻擊,讓攻擊者對區塊鏈的共識規則進行任意修改。

由於公地悲劇,投票協議很容易受到賄賂。因此,賄賂PoS驗證者參與審查攻擊應該是很便宜的。

安全模型 #

白皮書中的Ouroboros安全模型部分描述了一個隨機數發生器。由於多方環境中的隨機數生成已經解決了幾十年,我們將假設Ouroboros可以正確地重新實現現有的有效解決方案之一。

Ouroboros隨機選擇投幣者,根據他們的投幣量進行加權,並給他們機會做下一個區塊。

因此,我在本文中的目標是表明,即使我們可以隨機選擇stakers,並且不破壞隨機數生成器,我們仍然可以破壞liveness的保證。

這將表明,ouroboros安全模型實際上沒有提供有效性保證。因此,即使Ouroboros中的所有證明都是正確的,並且該模型是對區塊鏈的有效描述,它仍然不安全,因爲所有這些證明都在證明一些與Ouroboros是否能成爲安全的加密貨幣無關的東西。

我們可以爲審查txs付費 #

Ouroboros不會因爲區塊生產者沒有包括tx而受到懲罰。下一個區塊生產者應該包括它,而不是因爲他們想獲得費用。這意味着,如果你願意爲所有的TXS支付比TXS費用總和更多的費用,對於每一個你想審查的區塊,一個理性的區塊生產者應該願意接受你的賄賂並參與審查。

分叉選擇規則和孤兒區塊 #

Ouroboros的作者未能解釋分叉選擇規則。在他們的理論模型中,每個人都會以相同的順序發現區塊的情況。但在對抗性環境中,我們需要對節點進行編程以處理所有的例外情況。讓區塊鏈崩潰是不可接受的,只是因爲信息出現的順序與我們的模型所考慮的不同。

例如,一個攻擊者可能會在我們最近的歷史上的某個時刻建立一個看起來有效的區塊。我們需要能夠將這種區塊作爲一個孤兒來處理,因爲事後同步的人,他們無法知道區塊出現的順序。

有時,多個有效的區塊會幾乎同時出現,而網絡的不同部分會對它們出現的時間產生分歧,所以這是一個小的分叉,在找到下一個區塊時被修復。

有必要在程序中加入一些分叉選擇規則,這樣我們就可以處理孤兒的問題。

我們可以爲區塊的審查付費 #

如果區塊有可能成爲孤兒,那麼這意味着如果大多數驗證者一起工作,他們可以同意不僅對他們在自己的區塊中包含的TXS應用審查規則,他們可以同意永遠不會在違反任何新審查規則的區塊上建立。

因此,這意味着任何沒有更新參與軟分叉的股權證明區塊生產者,他們所有的區塊將繼續成爲孤兒,他們將不會收到獎勵,直到他們用新的軟分叉代碼更新他們的節點。

我們可以付費來改變共識規則 #

所以這表明,如果大多數區塊生產者想改變共識規則,他們可以使用審查制度來進行軟分叉,以進行這種改變,而其他人需要跟隨他們的改變。

所以這意味着,如果我想對ouroboros的共識規則做一個任意的改變,比如給自己一堆不知從何而來的假幣,我所要做的就是說服大多數股權證明的驗證者做一個軟更新,增加新的審查規則。

計算改變共識規則的成本 #

讓我們用一個2x2的博弈論矩陣來計算我需要向PoS驗證者支付多少賄賂來說服他們參與我的審查攻擊。

B = 賄賂 R = 區塊獎勵 D = 攻擊成功帶來的損失 P = 如果你參與,攻擊成功的可能性有多大

攻擊成功攻擊失敗
攻擊。B+R-(D*P)B+R
不攻擊。RR

由於B>0,我們知道B+R>R。

爲了知道我們需要多大的賄賂才能使攻擊成功,我們需要計算B,使B+R-(D*P)>R->B>(D*P)

因此,如果我願意支付大於D * P的賄賂,那麼他們應該願意參與審查攻擊。

因此,讓我們插入一些數字來估計這種攻擊的成本。10,000個區塊創建者,每個人都有相同的股份。市值爲100億美元。市值的10%用於區塊創建者的股份。

讓我們假設這是一個最壞的情況下的攻擊,所以它將破壞區塊鏈上100%的價值。並讓我們估計P=1/(驗證者的數量)。

賄賂總額=(100億美元)*(0.1部分鎖定在驗證者股份)*(1/(10000個驗證者))。*(1/2的驗證者)=50 000美元。

因此,總共5萬美元的賄賂,可以摧毀一個100億美元的區塊鏈。

結論 #

這表明,Ouroboros並不安全。Ouroboros中的所有證明可能都是正確的,但它們證明的是一個毫無價值的模型。這個模型對我們沒有用處,因爲它不足以證明Ouroboros可以作爲一個安全的加密貨幣使用。