社羣爭議:側鏈算不算L2?

買賣虛擬貨幣

本文總結了社羣中對於 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

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读