本文總結了社區中對于 Polygon 側鏈與 L2 的相關爭議討論,并且翻譯了 Dankrad Feist 的文章《關于 51% 攻擊,大家都搞錯了什么》以便讀者從中參考對這些爭議的解答,
5 月 16 日,以太坊擴容解決方案 Polygon 的市值躋身加密貨幣市值前 20,隨后 StarkWare 的聯合創始人 Uri Kolodny 轉推祝賀,但同時他強調:“Polygon 是側鏈,而不是 Layer-2。L2 的安全性依賴于以太坊;而側鏈的安全性與以太坊的不相關 (甚至更低),” 因此,社區圍繞 Polygon 到底是不是 L2 開始了激烈的討論,
針對 Uri Kolodny 的評論,Mihailo Bjelic 做了以下回復 [1]:
首先,Polygon 并不是一條側鏈,它是一套擴容解決方案。其次 (也是最重要的),默認 L2 比 PoS 側鏈 (我們的是提交鏈 commit chain) 更安全是絕對錯誤的。為了解釋其中原因,我將簡單地比較一下 Polygon 的 PoS 鏈和 StarkWare 的 zkRollup 或者 Validium。
我們的 PoS 鏈的確有自己的驗證者集,但這是完全無需許可的,且質押金額已達到 28 億美元,此外,該實現已經經過了實戰測試 (1400 萬個區塊且零事故)。
然而 StarkWare Rollup 只有一個 PoA 運營者,這個運營者可能會宕機,搶跑、審查用戶的交易等。并且,它由 STARKs 提供安全性,這是一個全新的、未經過驗證的密碼學,至于 Validium,情況甚至更令人擔憂,DeversiFi 所使用的 Validium 方案還依賴于一小組 PoA 數據可用性節點。這些節點可以合謀,通過拒絕訪問數據來阻止任何或所有用戶提取資金。
考慮到上述情況,我認為那種默認 L2s 比側鏈/提交鏈更加安全的想法是錯誤的,
針對 Mihailo Bjelic 的回復,社區分別從三個角度進行了討論:1) Layer-2 與側鏈在安全性上的區別;2) Layer-2 能否達到與 Layer-1一樣的安全性;3) Eth2 與側鏈在安全性上的區別。而對于社區上的困惑,以太坊基金會開發者 Dankrad Feist 發布了文章《關于 51% 攻擊,大家都搞錯了什么》[2](見下文),該文章基本上囊括了以上討論中的問題與解答。
1.首先,關于第一個問題,Dankrad Feist 表示不贊同,他說 L2 確實更安全,因為作為 L2 必須提供與基礎層相同的安全性,而 PoS 側鏈具有較弱鏈 (通常是側鏈) 的安全性,[3]
James Prestwich 也參與了討論 [4]:“與側鏈相比,L2 需要更少新的安全假設,但其安全性并非與主網完全一樣,”他指出 L2 與側鏈相比,具有以下不同的特點:
- 依賴于非審查 (欺詐證明)
- 依賴于新的密碼學和可信的設置 (有效性證明) 補充一點,Starks 不需要依賴可信的設置
- 更高的硬件和帶寬需求
在下文中,Dankrad Feist 指出“側鏈不驗證有效性,僅驗證共識條件的絕大部分,并且其不具有數據可用性檢查,”關于側鏈的安全性問題,詳見文章中“側鏈如何運作?”那一部分,
2.至于 L2 能否達到與 L1 一樣的安全性。Patrick McCorry 認為[5],L2 的目標是盡可能地接近 L1 的安全性,但想要完全一樣,是不可能的:
- 欺詐證明不是尚方寶劍,尤其是當發布欺詐證明的費用太高時,其安全性就更小了
- 同樣的,零知識證明也不是萬能的,會出現排序者掉線以及 L1 無法應對大規模退出的情況
他還提到,L2 解決方案可以歸結為以下四點:
- 數據可用性 (委員會/rollup/等)
- 狀態轉換完整性 (零知識證明/欺詐證明)
- 提款完整性 (退出保證)
- 協議活性 (排序者的選擇)
這個混合的方案難以完全達到 L1 的安全性。
回到下面的文章,Dankrad Feist 解釋了“區塊鏈的安全模型”,以強調為何 L1 的安全性如此難達到,
3.那么 Polygon 的 PoS chain 與 Eth2 的 PoS 機制對比呢?在討論中, Dankrad Feist 指出[5],在長期發展來看,PoS 側鏈會是一個很大的隱患,在 Eth2 中我們盡量移除大多數誠實假設,然而 PoS 橋接并不能做到,
以下是文章內容:
關于 51% 攻擊,大家都搞錯了什么
請大家原諒標題中的挑釁意味,顯然,并不是每個人都會誤解 51% 攻擊,但還是有相當一部分人沒有搞清楚,因此寫一篇相關的文章并無壞事,
區塊鏈圈內大概有一個神話:只要有人控制了比特幣、以太坊或者其他區塊鏈的超過 50% 的算力,那么 ta 就可以對網路做任何事,在 PoS (權益證明) 機制中,只要有人聚集了質押總額的 2/3,ta 同樣可以對網路做任何事情,ta 可以轉走別人的資產,隨意發行代幣等等,
這種想法是錯誤的,以下是 51% 攻擊可以做的事情:
- 攻擊者可以阻止用戶使用區塊鏈,即,攔截任何他們不喜歡的交易,這叫做審查。
- 他們可以回滾區塊鏈的交易,即撤銷一定數量的區塊并更改其中的交易順序。
他們不能做到的是:更改系統的規則。這意味著:
- 他們不能簡單地在區塊鏈系統規定之外發行新代幣;例如,比特幣目前為每個新的區塊生產者 6.25 BTC;他們不能將這個數字變成 100 萬比特幣
- 如果他們沒有某個地址的私鑰,他們就不能使用該地址的代幣
- 他們生產的區塊不能比共識規則規定的大
這并非說明 51% 攻擊的后果不嚴重,這仍然是十分惡劣的攻擊,重新排序交易可以造成雙花,這是非常嚴重的問題。但他們能做的事情仍然有局限性,
那么包括比特幣和以太坊的大多數區塊鏈,他們現在如何確保這一點?如果有一名礦工挖出了違法共識規則的區塊會如何?或者,如果絕大部分質押者對一個違反共識規則的區塊簽名會發生什么?
區塊鏈安全模型
有時人們聲稱最長鏈為有效的比特幣或者以太坊鏈。這個說法不太完整,對當前鏈頭的正確定義是
- 總難度最高的有效鏈,
因此,在客戶端接受區塊鏈應該用來記錄當前歷史數據這個條件之前,他們需要驗證兩個屬性:
- 該區塊鏈必須有效。這意味著,所有狀態轉換都是有效的。比如,在比特幣上,所有交易只花費此前沒有花費的交易輸出,coinbase 僅接收交易費和區塊獎勵,等等,
- 它必須是難度最高的鏈。通俗地說,這是一條最長鏈,然而“最長”不是以區塊的數量來衡量的,衡量的是總共花了多少挖礦算力在這條鏈上,
這聽起來可能有點抽象。我們有理由提出一個疑問,上述中的第一個條件由誰來驗證,即誰來驗證者區塊鏈上的所有區塊均應有效?因為如果還是礦工驗證該鏈有效,那么這只是重復工作了,我們并沒有真正從中獲得什么,
但區塊鏈不一樣。讓我們分析一下為什么,先從一個普通的客戶端/服務器資料庫架構開始:
請注意,對于典型的資料庫,用戶信任資料庫服務器,他們不會檢查回應是否正確;客戶端確保已按照協議對其有效格式化,僅此而已。客戶端 (此處用一個空白的方塊表示) 是“非智能的”:它無法驗證任何內容,
但是在區塊鏈的架構中,是這樣的:
我先來總結一下上圖包括的組件。首先礦工 (或質押者) 生產區塊鏈,P2P (點對點) 網路確保每個人都能夠使用有效的鏈,盡管存在一些不誠實節點 (你需要連接到至少一個誠實且連接良好的 P2P 節點,以確保自己始終與有效鏈保持同步)。最后,客戶端將交易發送至 P2P 網路并從網路中的其他節點接收最新的鏈更新 (或者是完整的鏈,如果它們正在同步的話)。客戶端實際上是網路的一部分,它們也將通過轉發區塊和交易來做貢獻,但在這里不是那么重要。
重要的部分是,用戶正在運行一個全節點,上圖中由客戶端中的柱體表示,只要客戶端獲得一個新的區塊,就像任何其他節點一樣,無論是一個礦工還是 P2P 網路中的一個節點,這些客戶端都將驗證該區塊是否為有效的狀態轉換,
如果這不是一個有效的狀態轉換,該區塊則會被忽略。這就是為什么網路中的礦工試圖挖掘無效的狀態轉換是沒有意義的,所有人都只會忽略它。
許多用戶運行自己的節點,與以太坊或比特幣等區塊鏈交互,許多社區已將此模式作為其文化的一部分,并且非常強調每個人都運行自己的節點,由此他們就成為驗證過程的一部分。確實,讓大多數用戶 (尤其是那些質押了大筆資產的用戶) 運行全節點是非常重要的;如果大多數用戶變得懶惰,那么礦工可能會突然被誘使生產無效區塊,如此一來該模型將不再適用,
打個比方:三權分立
這有點像民主制中的三權分立 —— 政府有不同的分支,而僅僅因為你在其中一個分支擁有多數席位 (比如立法機構),并不意味著你可以做任何你喜歡的事以及藐視所有的法律。同樣,礦工或質押者有權排序區塊鏈中的交易;而他們無權輕易對社區制定新規則,
But do all blockchains work like this?但是所有區塊鏈都是這樣運作的嗎?
這是個好問題,需要注意的一個重點是,以上所說的模型只有在全節點易于運行的情況下才會奏效,作為普通用戶,如果運行全節點必須要花 $5000 購買另一臺計算機,并且一直需要 1 GBit/s 的網路連接,那么 ta 根本不會選擇運行全節點,盡管 ta 可以在某些地方達到該網路要求,但是永久地保持以運行自己的區塊鏈節點很可能不那么方便。在這種情況下,普通用戶很有可能不會選擇自己運行節點 (除非 ta 的交易非常有價值),這意味著 ta 將信任其他人來為其執行該操作,
假設有一條鏈,其運行成本太高,以至于只有質押者和交易所會運行全節點。你剛剛改變了信任模型,然后大多數質押者和交易所能夠聚集在一起并改變共識規則。對于這一點,用戶是沒有任何爭議的 —— 如果用戶對該鏈完全沒有控制權,那么他們無法發起分叉。他們可以堅持使用舊的規則,然而,除非他們開始運行全節點,否則,他們根本不知道自己的請求是否在自己想要的鏈 (滿足其共識要求的鏈) 上得到了回應。
這就是為什么每當出現提高以太坊或比特幣的區塊大小的討論時,總會引起大量的爭論 —— 區塊大小每提高一次,都會增加大家自己運行節點的負擔。這對礦工來說不是什么大問題 —— 與實際的挖礦操作相比,運行一個節點的成本要小得多 —— 因此,這將權力的天平從用戶轉移到了礦工 (或質押者) 身上,
輕客戶端如何運作?
但是,如果用戶只是想用加密貨幣來買咖啡,該怎么辦?Ta 需要在行動電話上運行全節點嗎?
當然,沒人希望需要這樣做,用戶也不希望,那么這時候就是輕客戶端發揮作用的時候了。輕客戶端是較簡單的客戶端,它們不需要驗證整條鏈 —— 它們僅驗證共識,即總難度或者已投票的質押金額數量。
換句話說,輕客戶端會被誘使跟隨一條包含無效區塊的鏈。對此有補救措施,例如數據可用性檢查和欺詐證明,據我所知,目前還沒有任何一條鏈實現了這些,但至少以太坊未來會這樣做。
因此,使用具有數據可用性檢查和欺詐證明的輕客戶端,用戶在不需要運行全節點的情況下,也可以使用區塊鏈的安全模型了,這是我們最終的目標,即任何智能行動電話都能夠輕松地運行以太坊輕客戶端。
側鏈如何運作?
側鏈是當前的熱門話題,它們似乎可以提供一種簡單的擴容方案,不像 rollups 那么復雜,簡而言之:
- 創建一條新的 PoS 鏈
- 在自身和以太坊之間創建一個雙向橋接
- …
- 重點!請注意,側鏈的安全性幾乎完全依賴于橋接 —— 這是一種允許某條鏈讀取另一條鏈的狀態的構造。畢竟,如果攻擊者能夠欺騙主鏈上的橋,讓橋接鏈上的所有資產都為其所有,那么即便 PoS 鏈上的全節點提出異議也沒辦法了。所以一切都取決于橋,
不幸的是,橋的狀態與輕客戶端相同。它們不驗證有效性,僅驗證共識條件的絕大部分,然而,側鏈有兩個方面比輕客戶端更糟糕:
- 橋接用于價值非常高的交易,其中大多數用戶會選擇一個全節點,如果可以的話
- 不幸的是,我們沒有辦法加固橋接,而我們可以對輕客戶端這樣做 —— 原因就是它們無法驗證數據可用性檢查
第二點很微妙,可以花一到兩篇文章講解一下。但是簡單來說,橋接不能做數據可用性檢查,而沒有數據可用性檢查,欺詐證明也幾乎沒用了,而如果使用零知識證明,可以要求橋接打包所有有效區塊的證明,從而改善這個問題 —— 不幸的是,這樣還是有可能會受到數據可用性攻擊,但也是一種改進了。
總言而止,側鏈的安全模型與以太坊和比特幣等區塊鏈不同,而且要弱得多。它們無法防止無效的狀態轉換,
這些問題都需要靠分片來解決嗎?
實際上,所有這些都與分片有很大的關系,我們之所以需要分片來進行擴容,是因為只有分片能夠實現這樣的擴容方式:既不需要提高運行全節點的門檻,同時又能夠盡可能地維護區塊鏈的完整安全性保證。
但如果有人撤銷所有歷史數據呢?那么 ta 還是可以盜取所有比特幣/ETH/等
理論上說,在一條非檢查點的 PoW 鏈上,可以通過回滾所有交易來盜取比特幣,是的,你不能發行一萬億個比特幣,但你仍然可以盜取現存的所有比特幣,這也很好,對吧?
我認為這一點非常理論化,社區會接受一個修改其好幾年數據 (甚至只是好幾個小時) 的分叉的機率幾乎為零。在所有可能的分叉中,都會出現大規模的爭搶,很快就會得出結論并拒絕分叉,只同意有效的鏈為現存的那條鏈。
有了 PoS 和敲定,這種機制將變得形式化 —— 客戶端永遠不能回滾已敲定的區塊。
[1] https://twitter.com/MihailoBjelic/status/1393686451255226368
[2] https://dankradfeist.de/ethereum/2021/05/20/what-everyone-gets-wrong-about-51percent-attacks.html
[3] https://twitter.com/dankrad/status/1393721324300865537?s=20
[4] https://twitter.com/_prestwich/status/1393730794238005253
[5] https://twitter.com/stonecoldpat0/status/1393869662572748801