電漿鏈
電漿鏈是一條獨立的區塊鏈,錨定在以太坊主網上,但在鏈下執行交易,並擁有自己的區塊驗證機制。電漿鏈有時被稱為「子鏈」,本質上是以太坊主網的縮小版副本。電漿鏈使用(類似於樂觀匯總)來仲裁爭議。
默克爾樹允許創建無窮無盡的此類鏈堆疊,這些鏈可以分擔父鏈(包括以太坊主網)的頻寬壓力。然而,儘管這些鏈從以太坊獲得了部分安全性(透過欺詐證明),但它們的安全性和效率受到了一些設計限制的影響。
先決條件
您應該對所有基礎主題有良好的理解,並對以太坊擴容有高層次的認識。
什麼是電漿?
電漿 (Plasma) 是一個用於提高以太坊等公共區塊鏈可擴展性的框架。正如最初的電漿白皮書 (opens in a new tab)所述,電漿鏈建立在另一條區塊鏈(稱為「根鏈」)之上。每條「子鏈」都從根鏈延伸出來,通常由部署在父鏈上的智能合約進行管理。
電漿合約的功能之一是作為一座跨鏈橋,允許使用者在以太坊主網和電漿鏈之間轉移資產。儘管這使它們類似於側鏈,但電漿鏈至少在某種程度上受益於以太坊主網的安全性。這與完全對自身安全性負責的側鏈不同。
電漿如何運作?
電漿框架的基本組成部分包括:
鏈下計算
以太坊目前的處理速度限制在每秒約 15-20 筆交易,降低了短期內擴容以處理更多使用者的可能性。這個問題的存在主要是因為以太坊的共識機制要求許多點對點節點驗證區塊鏈狀態的每一次更新。
儘管以太坊的共識機制對於安全性是必要的,但它可能並不適用於每個使用案例。例如,Alice 每天買一杯咖啡付給 Bob 的款項,可能不需要整個以太坊網路來驗證,因為雙方之間存在一定的信任。
電漿假設以太坊主網不需要驗證所有交易。相反,我們可以在主網之外處理交易,使節點免於驗證每一筆交易。
鏈下計算是必要的,因為電漿鏈可以針對速度和成本進行最佳化。例如,電漿鏈可以(而且通常也是)使用單一「營運者」來管理交易的排序和執行。由於只有一個實體驗證交易,電漿鏈上的處理時間比以太坊主網更快。
狀態承諾
雖然電漿在鏈下執行交易,但它們在以太坊主執行層上結算——否則,電漿鏈無法受益於以太坊的安全保證。但是,在不知道電漿鏈狀態的情況下最終確定鏈下交易,將破壞安全模型並導致無效交易的激增。這就是為什麼營運者(負責在電漿鏈上產生區塊的實體)被要求定期在以太坊上發布「狀態承諾」。
承諾方案 (opens in a new tab)是一種密碼學技術,用於對某個值或陳述做出承諾,而不向另一方透露該值或陳述。承諾具有「約束力」,這意味著一旦您做出承諾,就無法更改該值或陳述。電漿中的狀態承諾採用「默克爾根」(源自默克爾樹)的形式,營運者會定期將其發送到以太坊鏈上的電漿合約。
默克爾根是能夠壓縮大量資訊的密碼學原語。默克爾根(在這種情況下也稱為「區塊根」)可以代表一個區塊中的所有交易。默克爾根還使得驗證一小段資料是否為較大資料集的一部分變得更加容易。例如,使用者可以產生一個默克爾證明,以證明某筆交易包含在特定區塊中。
默克爾根對於向以太坊提供有關鏈下狀態的資訊非常重要。您可以將默克爾根視為「儲存點」:營運者在說:「這是電漿鏈在 x 時間點的狀態,這是作為證明的默克爾根。」營運者使用默克爾根對電漿鏈的_當前狀態_做出承諾,這就是為什麼它被稱為「狀態承諾」。
進入和退出
為了讓以太坊使用者能夠利用電漿,需要有一種機制在主網和電漿鏈之間轉移資金。但是,我們不能隨意將以太幣發送到電漿鏈上的地址——這些鏈是不相容的,因此交易要麼會失敗,要麼會導致資金遺失。
電漿使用在以太坊上運行的主合約來處理使用者的進入和退出。該主合約還負責追蹤狀態承諾(如前所述),並透過欺詐證明懲罰不誠實的行為(稍後會詳細介紹)。
進入電漿鏈
要進入電漿鏈,Alice(使用者)必須將 ETH 或任何 ERC-20 代幣存入電漿合約中。監控合約存款的電漿營運者會重新創建一個等於 Alice 初始存款的金額,並將其釋放到她在電漿鏈上的地址。Alice 被要求證明在子鏈上收到了資金,然後就可以使用這些資金進行交易。
退出電漿鏈
退出電漿鏈比進入它更複雜,原因有幾個。最大的原因是,雖然以太坊擁有關於電漿鏈狀態的資訊,但它無法驗證該資訊是否真實。惡意使用者可能會做出錯誤的斷言(「我有 1000 ETH」),並透過提供虛假證明來支持該申領而逃脫懲罰。
為了防止惡意提款,引入了「挑戰期」。在挑戰期(通常為一週)內,任何人都可以使用欺詐證明來挑戰提款請求。如果挑戰成功,則提款請求將被拒絕。
然而,通常情況下使用者是誠實的,並對他們擁有的資金做出正確的申領。在這種情況下,Alice 將透過向電漿合約提交交易,在根鏈(以太坊)上發起提款請求。
她還必須提供一個默克爾證明,以驗證在電漿鏈上創建其資金的交易已包含在區塊中。這對於使用 未花費交易輸出 (UTXO) (opens in a new tab) 模型的電漿迭代(例如 Plasma MVP (opens in a new tab))是必要的。
其他迭代(如 Plasma Cash (opens in a new tab))將資金表示為非同質化代幣,而不是 UTXO。在這種情況下,提款需要證明在電漿鏈上擁有代幣的所有權。這是透過提交涉及該代幣的最新兩筆交易,並提供驗證這些交易包含在區塊中的默克爾證明來完成的。
使用者還必須在提款請求中添加保證金,作為誠實行為的保證。如果挑戰者證明 Alice 的提款請求無效,她的保證金將被罰沒,其中一部分將作為獎勵發給挑戰者。
如果挑戰期結束而沒有人提供欺詐證明,Alice 的提款請求將被視為有效,允許她從以太坊上的電漿合約中取回存款。
爭議仲裁
像任何區塊鏈一樣,電漿鏈需要一種機制來強制執行交易的完整性,以防參與者採取惡意行為(例如,雙重支付資金)。為此,電漿鏈使用欺詐證明來仲裁有關狀態轉換有效性的爭議,並懲罰不良行為。欺詐證明被用作電漿子鏈向其父鏈或根鏈提出投訴的機制。
欺詐證明簡而言之就是聲明特定狀態轉換無效的申領。一個例子是,如果使用者 (Alice) 試圖將同一筆資金花費兩次。也許她在與 Bob 的交易中花費了該 UTXO,並希望在另一筆交易中花費同一個 UTXO(現在屬於 Bob)。
為了防止提款,Bob 將透過提供 Alice 在先前交易中花費上述 UTXO 的證據,以及該交易包含在區塊中的默克爾證明來構建欺詐證明。同樣的過程也適用於 Plasma Cash——Bob 需要提供證明,證明 Alice 之前已經轉移了她試圖提款的代幣。
如果 Bob 的挑戰成功,Alice 的提款請求將被取消。然而,這種方法依賴於 Bob 監控鏈上提款請求的能力。如果 Bob 處於離線狀態,那麼一旦挑戰期結束,Alice 就可以處理惡意提款。
電漿中的大規模退出問題
當大量使用者試圖同時從電漿鏈提款時,就會發生大規模退出問題。這個問題之所以存在,與電漿最大的問題之一有關:資料不可用性。
資料可用性是指驗證提議區塊的資訊是否確實發布在區塊鏈網路上的能力。如果生產者發布了區塊本身,但隱瞞了用於創建該區塊的資料,則該區塊是「不可用的」。
如果節點要能夠下載區塊並驗證交易的有效性,區塊就必須是可用的。區塊鏈透過強制區塊生產者將所有交易資料發布在鏈上來確保資料可用性。
資料可用性還有助於保護建立在以太坊基礎層之上的鏈下擴容協議。透過強制這些鏈上的營運者在以太坊上發布交易資料,任何人都可以透過參考鏈的正確狀態構建欺詐證明來挑戰無效區塊。
電漿鏈主要將交易資料儲存在營運者處,並且不在主網上發布任何資料(即除了定期的狀態承諾之外)。這意味著如果使用者需要創建欺詐證明來挑戰無效交易,他們必須依賴營運者提供區塊資料。如果這個系統有效,那麼使用者總是可以利用欺詐證明來保護資金。
當營運者(而不僅僅是任何使用者)成為惡意行為方時,問題就開始了。因為營運者完全控制著區塊鏈,他們有更大的動機在更大範圍內推進無效的狀態轉換,例如竊取屬於電漿鏈上使用者的資金。
在這種情況下,使用經典的欺詐證明系統是行不通的。營運者可以輕易地進行一筆無效交易,將 Alice 和 Bob 的資金轉移到自己的錢包中,並隱藏創建欺詐證明所需的資料。這是可能的,因為營運者不被要求向使用者或主網提供資料。
因此,最樂觀的解決方案是嘗試讓使用者從電漿鏈「大規模退出」。大規模退出減緩了惡意營運者竊取資金的計畫,並為使用者提供了一定程度的保護。提款請求根據每個 UTXO(或代幣)創建的時間進行排序,防止惡意營運者搶跑誠實使用者。
儘管如此,我們仍然需要一種方法來驗證大規模退出期間提款請求的有效性——以防止投機取巧的人在混亂中處理無效退出而獲利。解決方案很簡單:要求使用者發布鏈的最後一個有效狀態才能退出他們的資金。
但這種方法仍然存在問題。例如,如果電漿鏈上的所有使用者都需要退出(在惡意營運者的情況下是可能的),那麼電漿鏈的整個有效狀態必須一次性傾倒在以太坊的基礎層上。考慮到電漿鏈的任意大小(高吞吐量 = 更多資料)以及以太坊處理速度的限制,這不是一個理想的解決方案。
儘管退出遊戲在理論上聽起來不錯,但現實生活中的大規模退出很可能會引發以太坊本身的網路範圍擁堵。除了損害以太坊的功能外,協調不佳的大規模退出意味著使用者可能無法在營運者耗盡電漿鏈上的每個帳戶之前提取資金。
電漿的優缺點
| 優點 | 缺點 |
|---|---|
| 提供高吞吐量和較低的單筆交易成本。 | 不支援通用計算(無法運行智能合約)。僅透過謂詞邏輯支援基本的代幣轉帳、交換和少數其他交易類型。 |
| 適合任意使用者之間的交易(如果雙方都在電漿鏈上建立,則每對使用者沒有額外開銷) | 需要定期監控網路(活躍度要求)或將此責任委託給其他人,以確保您的資金安全。 |
| 電漿鏈可以適應與主鏈無關的特定使用案例。任何人(包括企業)都可以自訂電漿智能合約,以提供在不同環境中運作的可擴展基礎設施。 | 依賴一個或多個營運者來儲存資料並根據請求提供資料。 |
| 透過將計算和儲存移至鏈下,減輕以太坊主網的負載。 | 提款會延遲幾天以允許挑戰。對於同質化資產,這可以由流動性提供者來緩解,但會產生相關的資本成本。 |
| 如果太多使用者試圖同時退出,以太坊主網可能會變得擁堵。 |
電漿 vs 第二層擴容協議
雖然電漿曾經被認為是以太坊有用的擴容解決方案,但它後來被放棄,轉而支持第二層 (L2) 擴容協議。L2 擴容解決方案彌補了電漿的幾個問題:
效率
零知識匯總會為鏈下處理的每批交易的有效性產生密碼學證明。這防止了使用者(和營運者)推進無效的狀態轉換,消除了對挑戰期和退出遊戲的需求。這也意味著使用者不必定期監控鏈來保護他們的資金。
支援智能合約
電漿框架的另一個問題是無法支援以太坊智能合約的執行 (opens in a new tab)。因此,大多數電漿的實作主要是為了簡單的支付或 ERC-20 代幣的交換而建立的。
相反,樂觀匯總與以太坊虛擬機相容,並且可以運行以太坊原生的智能合約,使其成為擴展去中心化應用程式 (dapp) 的有用且_安全_的解決方案。同樣,目前正在計畫創建 EVM 的零知識實作 (zkEVM) (opens in a new tab),這將允許 ZK 匯總處理任意邏輯並執行智能合約。
資料不可用性
如前所述,電漿面臨資料可用性問題。如果惡意營運者在電漿鏈上推進了無效轉換,使用者將無法挑戰它,因為營運者可以隱瞞創建欺詐證明所需的資料。匯總透過強制營運者在以太坊上發布交易資料來解決這個問題,允許任何人驗證鏈的狀態並在必要時創建欺詐證明。
大規模退出問題
ZK 匯總和樂觀匯總都以各種方式解決了電漿的大規模退出問題。例如,ZK 匯總依賴於密碼學機制,確保營運者在任何情況下都無法竊取使用者資金。
同樣,樂觀匯總對提款施加了延遲期,在此期間任何人都可以發起挑戰並防止惡意提款請求。雖然這與電漿類似,但區別在於驗證者可以存取創建欺詐證明所需的資料。因此,匯總使用者不需要參與瘋狂的、「爭先恐後」遷移到以太坊主網的行動。
電漿與側鏈和分片有何不同?
電漿、側鏈和分片非常相似,因為它們都以某種方式連接到以太坊主網。然而,這些連接的層級和強度各不相同,這影響了每種擴容解決方案的安全屬性。
電漿 vs 側鏈
側鏈是一條獨立營運的區塊鏈,透過雙向跨鏈橋連接到以太坊主網。跨鏈橋允許使用者在兩條區塊鏈之間交換代幣以在側鏈上進行交易,從而減少以太坊主網上的擁堵並提高可擴展性。 側鏈使用獨立的共識機制,通常比以太坊主網小得多。因此,將資產橋接到這些鏈會增加風險;鑑於側鏈模型缺乏從以太坊主網繼承的安全保證,使用者在側鏈受到攻擊時面臨資金遺失的風險。
相反,電漿鏈的安全性源自主網。這使得它們明顯比側鏈更安全。側鏈和電漿鏈都可以有不同的共識協議,但區別在於電漿鏈會在以太坊主網上發布每個區塊的默克爾根。區塊根是一小段資訊,我們可以用它來驗證在電漿鏈上發生的交易資訊。如果電漿鏈上發生攻擊,使用者可以使用適當的證明安全地將資金提款回主網。
電漿 vs 分片
電漿鏈和分片鏈都會定期向以太坊主網發布密碼學證明。然而,兩者具有不同的安全屬性。
分片鏈向主網提交包含每個資料分片詳細資訊的「校對標頭」。主網上的節點驗證並強制執行資料分片的有效性,減少無效分片轉換的可能性,並保護網路免受惡意活動的影響。
電漿則不同,因為主網只接收關於子鏈狀態的最少資訊。這意味著主網無法有效驗證在子鏈上進行的交易,使其安全性較低。
注意,以太坊區塊鏈的分片已不再路線圖上。它已被透過匯總和丹克分片進行擴容所取代。
使用電漿
多個專案提供了電漿的實作,您可以將其整合到您的 dapp 中:
- Polygon (opens in a new tab)(前身為 Matic Network)
延伸閱讀
- 學習電漿 (opens in a new tab)
- 快速回顧「共享安全」的含義及其重要性 (opens in a new tab)
- 側鏈 vs 電漿 vs 分片 (opens in a new tab)
- 了解電漿,第 1 部分:基礎知識 (opens in a new tab)
- 電漿的生與死 (opens in a new tab)
知道有幫助過您的社群資源嗎?編輯此頁面並加入它!
教學:以太坊上的電漿鏈
- 編寫保護隱私的特定應用程式電漿 – 使用零知識證明和鏈下元件建立保護隱私的電漿應用程式。