模塊化執行案例
區塊鏈空間正越來越多地轉向模塊化架構,以實現真正的可擴展性。即使是像以太坊這樣以前完全單片的鏈,也正在轉向模塊化設計,以克服單片區塊鏈設計帶來的挑戰。
模塊化區塊鏈堆棧的核心組件之一是執行層,Fuel正在為模塊化區塊鏈堆棧構建最快的執行層。
什麼是模塊化執行層?他們將如何實現更具可擴展性的區塊鏈系統?
與單片執行層相比,模塊化執行層具有兩個核心優勢:
1,單片鏈將計算和驗證耦合在同一層,導致安全性低於標準和有限的可擴展性。模塊化執行層通過解耦計算和驗證來避免這種情況,從而大規模提供更強大的安全保證。
2,單片鏈在可以支持的速度和計算種類方面被鎖定在低效的技術中。另一方面,可以專門設計模塊化執行層,以優化高效計算。
這篇文章會詳細闡述了第一個核心好處,第二個好處將在第2部分中探討,鏈接:
單片區塊鏈基礎:計算與驗證
要了解模塊化執行層(MEL)帶來的創新,首先我們需要了解單體區塊鏈如何處理計算和驗證。
區塊鏈依賴於執行交易並將它們捆綁成一個區塊的實體網絡- 這些被稱為區塊生產者。如果沒有製衡,惡意區塊生產者可能會在區塊中包含無效交易(例如,將代幣鑄造到他們自己的地址)。為了防止這種情況,區塊鏈依靠其他節點的網絡來確定區塊的有效性,然後再將其添加到其鏈版本中。
這導致了區塊鏈運行所需的兩個核心功能:
區塊生產(即計算) – 執行交易並應用單個狀態轉換來構建區塊。
塊驗證(即驗證) – 確認狀態轉換有效。
單片鏈的計算與驗證
注意:為了便於理解,本文提供了關於區塊生產和驗證如何在單片區塊鏈上工作的簡化說明。實際上,該過程更為複雜,並且可能因特定鏈的設計而異。但是,許多相同的核心原則適用。
在大多數單體區塊鏈設計中,計算和驗證由相同的實體執行- 驗證者(即全節點)。當用戶發送交易時,驗證器將執行交易,然後將相應的狀態轉換包含在塊中。
一旦一個區塊被創建和傳播,其他完整節點就會下載該區塊並重新執行該區塊中的交易,以確認其有效。如果區塊是有效的,假設它們是誠實的,則全節點將該區塊附加到他們的鏈版本上,從而證明其有效性。
有時,應用程序或用戶需要訪問區塊鏈的狀態,但不希望產生運行完整節點和獨立驗證所有交易的高資源需求。為此,它們可以運行輕量級客戶端,這些客戶端假定全節點提供的區塊僅包含有效交易。
他們不會下載完整的區塊鏈,也不會驗證所有以前的交易是否有效。相反,他們必須相信大多數完整節點是誠實的(即只在他們的鏈副本中包含有效的區塊)。
這被稱為誠實多數假設,也是大多數單體區塊鏈容易受到51%攻擊的原因。在單片模型下,由於需要誠實的大多數完整節點來驗證區塊鍊是否有效,因此輕客戶端被迫信任大多數。
如果超過一半的完整節點是不誠實的,輕客戶端無法知道這一點,因此他們最終將遵循無效鏈。
誠實多數假設- 可擴展性的限制
單片鏈的可擴展性受到它們對這種誠實多數假設的依賴的嚴重限制。這是因為,為了增加交易吞吐量,必須增加區塊大小和/或頻率,以便在相同的時間內處理更多的交易。這增加了全節點的資源需求(和相關成本);更大/更快的塊=更多的計算=更高的成本。
隨著運行全節點的成本增加,更多的實體將選擇運行輕客戶端,依靠越來越小的全節點網絡來驗證鏈的有效性。區塊驗證的日益集中化是對單體鏈安全的主要威脅,因為更集中的驗證者池更容易受到攻擊,也更容易串通。
模塊化執行:解耦計算和驗證
好消息是,區塊鏈系統可以擺脫依賴於誠實多數假設的設計。為了避免這種單片設計的陷阱,模塊化區塊鏈堆棧將計算與驗證分離。通過將執行(即計算)移出基礎鏈(通常稱為“父鏈”),可以在不影響去中心化的情況下實現更大的規模。
什麼是模塊化執行層?
在模塊化區塊鏈堆棧中,執行層負責計算- 換句話說,處理交易和應用單個狀態轉換。
Fuel將模塊化執行層定義為:為模塊化區塊鏈堆棧設計的可驗證計算系統。更具體地說,一種欺詐或有效性可證明的區塊鏈(或其他計算系統),它利用模塊化區塊鏈來實現數據可用性。
為了進一步澄清,如果計算系統:1)不能證明欺詐或有效性,或者2)不將數據可用性卸載到另一層,則計算系統不是模塊化執行層。
與單體區塊鏈一樣,模塊化執行層採用專用區塊生產者網絡。這些實體處理執行交易和生成區塊的資源密集型過程。然而,與單片系統不同,驗證不是在執行層處理的,而是在模塊化區塊鏈堆棧的較低級別處理的。
驗證- 保持區塊生產者的誠實
模塊化執行的天才之處在於,只要驗證(即區塊驗證)是去中心化的,計算(即區塊生產)就不需要去中心化。區塊大小可以增加,導致產生區塊的節點中心化- 但只要驗證解耦,無效區塊就不會添加到鏈中。
但這是如何工作的呢?如果我們允許區塊生產保持中心化,我們如何確保安全性得到保護?這就是模塊化發揮作用的地方。
模塊化執行層將執行的資源密集型功能抽象為強大的區塊生產者,這些生產者捆綁並執行批量交易,並定期將這些交易作為區塊發佈到父鏈(結算/共識/數據可用性層)。為了保持這些區塊生產者的誠實,還有其他非區塊生產的完整節點(通常稱為“驗證者”或“證明者”),它們下載並重新執行發佈到父鏈的區塊,以確保它們只包含有效的交易。
這些全節點如何傳達交易的有效性或無效性的細節取決於模塊化執行層是採用樂觀模型還是零知識模型。在樂觀MEL 的情況下,全節點僅在檢測到無效交易時才採取行動(通過欺詐證明)。相反,在零知識MEL的情況下,全節點主動證明交易的有效性(通過有效性證明)。在任何一種情況下,區塊生產者提供的所有交易的有效性或無效性都在父鏈上得到證明,而不是在模塊化執行層上。
示例:Optimistic模塊化執行層上的欺詐證明
為了提供更深入的說明,讓我們探討Optimistic MEL 的情況(假設所有交易都是有效的,除非另有證明)。如果即使是模塊化執行層上的單個完整節點在父鏈上發布的區塊中檢測到無效交易,它們也可以生成欺詐證明(在預定義的“爭議解決窗口內”),以加密方式證明交易無效。
根據特定模塊化堆棧的結構,可以通過多種方式處理,例如:
1,在具有沉降層的模塊化堆棧中:
全節點將欺詐證明提交給結算層上的專用爭議解決合約,該合約直接重新執行交易(請注意,這要求MEL交易的結構使其能夠以確定性的方式在結算層的虛擬機上證明欺詐- 例如,FuelVM被設計為在EVM中可證明欺詐,以便在以太坊上進行結算)。
如果交易無效,違規的區塊生產者將受到砍殺的懲罰(即他們損失資金),“舉報人”將獲得這些資金的一部分獎勵,並且鏈的狀態將恢復到無效交易之前的狀態。由於無法保證無效事務之後的任何事務都對應於有效狀態,因此這些後續事務將重新執行。
2,在沒有沉降層的模塊化堆棧中:
全節點通過點對點網絡八卦欺詐證明,以警告輕客戶端該區塊包含無效交易。使用欺詐證明作為區塊生產者不誠實行為的證據,全節點可以在父鏈上提出懲罰交易,從而削減區塊生產者的資金。
由於沒有結算層來決定鏈的“規範”版本,惡意全節點理論上可以選擇不拒絕該區塊;但是,欺詐證明已經傳達給輕客戶端,因此他們知道不要遵循惡意全節點的鏈版本。因此,社會共識保證了無效區塊將被拒絕。
在任何一種情況下,由於驗證過程被載入在父鏈而不是執行層上,因此安全性被外包給父鏈,這意味著執行層本身可以在較低的安全保證下運行。即使執行層上99%的全節點是不誠實的,也只需要一個誠實的全節點來確保執行層只包含有效的交易。
這意味著模塊化執行層(和MEL 輕客戶端)可以基於單個誠實的少數假設運行,而不是依賴於誠實的多數全節點。
在模塊化執行層上,輕客戶端只需要依靠一個誠實的全節點來保證鏈的有效性。
無效區塊只能由單片系統中的大多數完整節點還原,而模塊化系統中的單個完整節點可以使用欺詐/有效性證明強制還原無效交易。
這如何實現可擴展性
允許計算在父鏈下進行,可以大幅增加交易吞吐量。區塊大小可以顯著增加,而不必擔心區塊生產的集中化,因為單獨的區塊驗證過程使區塊生產者保持誠實。
雖然較大的區塊確實給執行驗證的完整節點帶來了更高的負擔,但誠實的少數假設意味著該領域的中心化威脅較小,因為依賴於不誠實多數的基於中心化的漏洞變得不可能。
輕客戶端還可以在模塊化架構下以更高的安全保證運行,因為欺詐證明使他們能夠根據來自單個誠實完整節點的證明來識別無效交易(與單片系統相反,單片系統要求輕客戶端相信至少有一半的完整節點是誠實的)。
模塊化執行層上的輕型客戶端比單片客戶端具有更高的安全保證
此外,區塊生產者知道任何惡意活動都會被檢測到並導致砍伐,因此他們甚至不太可能試圖做出不誠實的行為。因此,執行層可以進行計算優化(即處理大量事務),同時依賴於模塊化堆棧的安全優化的較低級別。
模塊化執行:潛在挑戰
這種模塊化架構確實帶來了一些額外的技術和博弈論挑戰。
數據可用性
雖然欺詐/有效性證明使誠實的完整節點能夠證明欺詐,但還有一個問題:數據可用性。為了生成證明,全節點依賴於區塊可用性,因為它們需要下載並重新執行區塊中的所有交易以確定其有效性並生成證明。
理論上,惡意區塊生產者可以只將區塊頭髮佈到父鏈,可能會扣留部分或全部相應數據。這可以防止全節點生成欺詐/有效性證明來提醒輕客戶端注意該問題。
在嘗試驗證塊時,全節點很容易識別數據何時被惡意塊生產者扣留。在這種情況下,他們可以簡單地假設鍊是無效的,並從中分叉。但是,輕客戶端如何在不下載整個區塊的情況下確定數據是否被區塊生產者扣留?
一種稱為數據可用性抽樣 (DAS) 的新技術使輕客戶端能夠概率地確定整個塊是否已發布。簡而言之,輕客戶端從全節點請求塊的一小部分隨機小部分(或“樣本”)。
如果所有請求的樣本都可用,則假設有足夠的輕客戶端執行數據可用性採樣,這很可能證明整個塊都可用。如果塊的任何部分不可用,輕客戶端知道數據已被保留,因此可以從該版本的鏈中分叉。
這項技術的完整解釋超出了本文的範圍,但您可以在此處閱讀有關它的更多信息。最終,重要的一點是,DAS 使輕客戶端能夠識別無效塊,即使惡意塊生產者隱瞞數據也是如此。
驗證者的困境
另一個潛在的問題是被稱為“驗證者困境”的現象。簡化版本如下:
如果區塊生產者知道全節點會識別不誠實的活動,他們將誠實行事以避免被砍伐。
隨著時間的推移,如果全節點假設區塊生產者將繼續誠實行事,他們就沒有動力繼續驗證區塊,因為他們永遠不會因識別無效交易而獲得獎勵。
如果全節點沒有經濟激勵繼續驗證區塊,他們可能會停止這樣做。在這一點上,區塊生產者不誠實的行為變得可行。即使仍然有非零數量的全節點,區塊生產者賄賂剩餘的全節點以忽略足夠有價值的無效交易在財務上也可能變得可行。
這以一個循環難題告終,即模塊化執行層變得越安全(即區塊生產者不誠實行為的動機越小),它就越傾向於降低安全性(即全節點不再被激勵來驗證區塊)。另一方面,它的安全性越低,安全性就越高。
這種困境可以通過多種途徑來緩解(有關這些因素的博弈論分析,請參閱這篇廣泛的文章):
利他主義 – 因為MEL 只需要一個誠實的驗證者,只要至少有一個利他主義的完整節點在運行,系統就會保持安全。然而,雖然這在實踐中可能足夠安全,但對於控制大量資產的系統來說,這並不能提供足夠的保證。
經濟利益 – 有許多實體有經濟激勵來運行超出潛在舉報人獎勵的完整節點。例如,區塊瀏覽器、流動性提供商或dapp 等產品和服務需要訪問MEL 的完整狀態才能有效地運行其業務。然而,這些實體(理論上)容易受到惡意區塊生產者的賄賂。
鯨魚 – 在MEL上擁有大量資產的實體可以選擇運行一個完整的節點,以確保他們的利益得到保護並且鍊是安全的。
快速提款 – 由於樂觀的MEL 在保證模塊化堆棧的較低層的最終性之前依賴於爭議解決窗口,因此在此窗口過後,從MEL 到和解層的提款不會最終確定。因此,第三方服務有一個市場,這些服務提供快速提款,接受MEL上的代幣,並立即將相同的代幣(減去費用)發送給結算層的用戶。為了確保在結算層發送資金後不會恢復MEL狀態,服務提供商被激勵在進行此類交易之前驗證鏈的有效性。
區塊生產者 – 可以對提交基於先前無效區塊構建的區塊的區塊生產者進行處罰。有了這樣的機制,區塊生產者將被激勵在提交區塊之前驗證鏈的有效性。
雖然上述緩解策略本身可能並不完全有效,但當結合起來時,有明顯的動機讓許多不同的各方繼續在MEL 上運行完整節點並驗證鏈的狀態。
新的設計空間:超越EVM
通過採用在單一誠實的少數假設下實現高安全性的設計,模塊化區塊鏈堆棧能夠開發比以前在單片設計下可能實現的更高吞吐量的區塊鏈。
然而,除了將計算與驗證分離所帶來的可擴展性優勢外,通過專門關注堆棧頂部的設計:模塊化執行層,可以在可擴展性方面取得進一步進展。使這一層的計算更具可擴展性和效率是構建更好的區塊鏈的下一步。
目前正在開發的大多數模塊化執行層都使用以太坊作為其父鏈,因此默認使用EVM 作為執行環境。這相當於提高內燃機能源效率的設計:對已經過時技術的漸進式改進。
實際上,模塊化堆棧開闢了更廣闊的設計空間,消除了模塊化執行層依賴低效EVM 的需要。 Fuel正在利用這個新擴展的設計空間來構建一個超越EVM的模塊化執行層,優化高效和可擴展的計算,卓越的開發人員體驗和最大的安全性。
在第2 部分中,我們將探討模塊化執行層如何超越上一代區塊鏈設計的技術限制,以實現真正的可擴展性。 (第2部分鏈接:)
fuel官網:https://www.fuel.network/
推特:https://twitter.com/fuellabs_
Discord社區:https://discord.com/invite/fuelnetwork
油管視頻:https://www.youtube.com/channel/UCam2Sj3SvFSAIfDbP-4jWZQ
來源:bress