時間:2021-11-23|瀏覽:4169
有一種說法是,如果你控制比特幣、以太網或其他區塊鏈超過 50% 如果你有計算能力,你可以在網上做任何你想做的事情。股權證書的類似重申是,如果你控制了三分之二以上的股權,你可以做任何事情。你可以拿走別人的硬幣。你可以打印新硬幣,這不是真的。讓我們討論一下 51% 攻擊能做什么?它們可以阻止你使用鏈條,也就是阻止任何你不喜歡的交易。這叫審查制度。它們可以恢復鏈條,即取消一定數量的塊,改變交易順序。他們不能做的是改變系統的規則。這意味著例如:除了區塊鏈系統的規定,他們不能簡單地印刷新的代幣。
例如,比特幣現在給每個新的區塊生產者 6.25 BTC;他們不能簡單地把它變成 100 萬個 BTC。他們不能從沒有私鑰的地址消費代幣。它們不能制造比共識規則允許的更大的塊。這并不是說 51% 攻擊沒有破壞性。他們仍然是非常糟糕的攻擊。重新排序允許雙花硬幣,這是一個很大的問題。但是他們能做的有限。現在,包括比特幣和以太網在內的大多數區塊鏈如何確保這一點?礦工開采違規塊會怎么樣?還是大部分股權都簽了違規塊?
區塊鏈安全模型
有時候人們聲稱最長的鏈條是有效的比特幣或者以太坊鏈。它有點不完整。當前鏈條的正確定義是:總難度最高的有效鏈。因此,在接受應用鏈表示當前歷史記錄之前,客戶端需要驗證兩個屬性:1. 它必須有效。這意味著所有的狀態轉換都是有效的;例如,在比特幣中,這意味著所有交易只花費以前沒有花費的交易輸出。coinbase 只有交易費用和區塊獎勵等。2. 它必須是最困難的鏈條。
一般來說,這是最長的鏈條,但它不是用塊來衡量的,而是在這個鏈條上花費了多少總挖掘能力。這聽起來可能有點抽象。問誰來驗證第一個條件,就是鏈條上的所有塊都要有效,這是合理的?因為如果只有礦工驗證這個鏈條有效,那么這就是同義反復,我們并沒有真正得到什么。但是區塊鏈不不同。讓我們看看為什么,從普通客戶端。/服務器數據庫架構開始:
請注意,對于典型的數據庫,用戶信任數據庫服務器。他們不檢查反應是否正確;客戶端保證根據協議有效格式化,僅此而已。客戶端(這里用空方塊表示)是啞巴:不能驗證任何內容。
所以我們來總結一下這里發生的事情。有生產鏈的礦工(或質押者)。有一個點對點網絡——它的作用是保證一個有效的鏈總能被所有人使用,即使有些節點不誠實(你需要至少連接一個誠實良好的鏈接 P2P節點,以確保您將始終與有效鏈保持同步)。還有一個客戶端,他將交易發送到 P2P 網絡,并從網絡中的其他節點接收最新的鏈更新(或完整的鏈,如果它們同步)。它們其實是網絡的一部分,會通過轉發塊和交易做出貢獻,但這在這里并不重要。
重要的部分是用戶正在運行一個完整的節點,如客戶端中的圓柱體所示。每當客戶端得到一個新塊,就像任何其他節點一樣,無論是礦工還是 P2P 在網絡中一個節點將驗證該節點是否是有效的狀態轉換。如果不是有效的狀態轉換,這一塊就會被忽略。這也是礦工試圖在網絡中挖掘無效狀態轉換意義不大的原因。大家只會忽略。
許多用戶運行自己的節點來與以太網或比特幣等區塊鏈互動。許多社區已經把它作為他們文化的一部分,并非常重視每個人都在運行自己的節點,所以它們是驗證過程的一部分。其實你可以說大部分用戶,尤其是有很多價值的用戶,運行整個節點真的很重要;如果大部分用戶變得太懶,礦工可能會突然被誘惑產生無效塊,這種模式將不再成立。
類比:三權分立
你可以把它想象成一個有點像自由民主國家的權力分立——政府有不同的部門,只是因為你在其中一個部門(比如立法)中占大多數,并不意味著你可以做任何你想做的事情,喜歡并忽略所有的法律。礦工或權益持有者有權在區塊鏈訂購交易;他們沒有權利簡單地為社區規定新規則。
但是所有的區塊鏈都是這樣工作的嗎?這是個好問題。需要注意的是,這只有在完整節點易于運行時才有效。作為普通用戶,如果這意味著必須花錢 5,000 美元購買另一臺計算機永久需要 1 GBit/s 如果你連接互聯網,你根本不會這么做。即使你能在某些地方得到這樣的連接,也不一定方便它被你的區塊鏈節點永久堵塞。在這種情況下,你可能不會運行自己的節點(除非你的交易非常有價值),這意味著你會信任別人為你做。
想象一下,一條鏈的運營成本如此之高,以至于只有質押者和交易所才能運營一個完整的節點。你剛剛改變了信任模式,大部分質押者和交易所都可以聯合起來改變規則。我不會和用戶爭論——如果用戶根本控制不了鏈條,就無法領導分叉。他們可以堅持舊規則,但除非他們開始運行完整的節點,否則他們不知道是否使用符合他們想要的規則的鏈條來回答他們的要求。這就是為什么關于增加塊大小(如以太網或比特幣)的爭論——每次這樣做,都會增加運行自己節點的人的負擔。對于礦工來說,這不是什么大問題——相對于實際的采礦操作,運行節點的成本很小——所以它將權力的平衡從用戶轉移到礦工(或抵押者)。