作者:Brendan Farmer
翻譯:白話區塊鏈
正文開始前我想提出兩個觀點:
無論是L1 或L2 鏈,都無法支援達到網路規模所需的吞吐量。
擴展區塊鏈意味著擴展對流動性和共享狀態的存取。如果透過多個鏈增加區塊空間,而導致流動性瓦解,則這種方法行不通。
這對於模組化和單體化的區塊鏈可擴展性觀點都構成了挑戰。
(1) 對於單體化觀點構成了挑戰,單體化觀點認為單一高吞吐鏈是擴展的最佳方式。
(2) 對於模組化觀點構成了挑戰,因為這意味著在有意義實現層面,多鍊或多Rollup 生態系統並不足以實現擴展:需要增加對共享狀態和流動性的存取。
如果(1) 和(2) 成立,那麼解決可擴展性問題就需要在多個鏈之間擴展對共享狀態和流動性的存取。 Polygon 的解法是聚合層(Aggregation Layer),或稱為「AggLayer」。聚合層為幾乎即時的跨鏈交易提供安全性,並實現了鏈間的統一狀態和流動性。
本文將深入探討聚合層是什麼,它是如何運作的,以及它與共享順序器或證明者的差異。
1.當前存在問題
L2 存在一個問題:流動性和狀態在Rollup 和L1 之間是分散的。
從可用性的角度來看,這是不好的,因為它引入了複雜性,而且也很昂貴。流動性的分散意味著更高的滑點和執行效果更差。樂觀Rollup(OR)要求用戶支付昂貴的第三方橋接費用,以避免七天的提款延遲。即使是零知識Rollup(ZKR),使用者也需要往返到以太坊進行無信任的跨鏈交易。
以下是目前無法實現低延遲、無信任的跨鏈交易的原因。
假設有兩個Rollup,ChainA 和ChainB,它們共享與L1 的橋接。 ChainA 上的Alice 想要向ChainB 上的Bob 付款,因此Alice 在ChainA 上鎖定或銷毀Token 以進行轉帳到ChainB。
ChainB 要安全地將這些Token 歸屬於Bob,需要滿足兩個條件:
包含Alice 交易的批次必須在以太坊L1 上最終確認。
ChainB 必須能夠驗證Alice 交易後ChainA 的狀態是否有效。
如果包含Alice 交易的批次在以太坊上沒有最終確認,那麼Chain A 可能會向Chain B 發出虛假信息,並通過在Chain A 上保留Alice 的資金並在Chain B 上鑄造Bob 的資金來進行雙重支付。同樣,如果Chain B 沒有對Chain A 的有效性證明進行檢查,那麼Chain A 可能會包含一個無效交易,並從Chain B 中竊取資金。
(1) 和(2) 意味著無信任的跨鏈交易無法達到低延遲。 (1) 目前需要12 分鐘,而(2) 則需要等待OR 的挑戰期限和ZKR 的幾分鐘來產生證明。
良好的使用者體驗與20 分鐘的延遲不相容。聚合層旨在解決這個問題。
2、聚合層
Polygon 是一個採用ZK 技術的L2 生態系統,可以結算為以太坊。聚合層是一個去中心化協議,由質押節點操作,旨在確保跨鏈交易的低延遲和統一橋接的安全性。
在這種情況下,「安全性」指的是以下內容:如果一個鏈的狀態依賴於另一個鏈的無效或尚未最終確定的狀態,或者包含一個在所有其他鏈上尚未成功執行的原子捆綁交易,那麼該鏈的狀態將無法最終確定或結算到以太坊。換句話說,如果鏈A 的狀態依賴於鏈B 的無效或尚未最終確定的狀態,那麼鏈B 的狀態就無法最終確定到以太坊上。
這項保證非常重要,因為它允許鏈B 在鏈A 的狀態最終確定到以太坊上或證明已經產生之前,以極低的延遲安全地與鏈A 進行互通。
3.聚合層的工作原理
聚合層的功能可以分成三個階段,以下是一個例子來說明這個過程。假設鏈A 是在Polygon 生態系統中運作的一個基於零知識技術的鏈。
1)預確認階段:鏈A 向聚合層提交一個新區塊/ 批次的頭部,並提供一個輕客戶端證明。頭部包含了所有依賴該區塊/ 批次的其他區塊和捆綁的承諾。當新批次被接受但尚未被驗證為有效時,聚合層將其視為「預先確認」。
2)確認階段:鏈A 或鏈A 上的任何完整節點產生一個第一個區塊的證明,並提交給聚合層。一旦聚合層驗證了該證明,並且確認了所有依賴第一個區塊的批次,那麼第一個區塊就被確認了。
3)最終確定階段:在第一個區塊被確認後,它的證明與其他批次的證明一起被聚合成一個單一的證明,然後發佈到以太坊。這個聚合證明確保了依賴鏈狀態和捆綁的一致性。
鏈可以根據自己的需求在延遲和活性保證之間進行權衡。例如,一條鏈可以選擇在預確認階段之後與另一條鏈進行互操作,以實現超低延遲的跨鏈交易。但總體來說,這個設計模型與等待確認或最終確定的鍊是相容的。
為了確保跨鏈交易的安全性,安全保證是在第三個階段執行的。聚合層的設計透過整合證明的方式來實現安全的跨鏈互動。
異步互通性
讓我們以一個跨鏈轉帳的實例來說明。在ChainA 上,Alice 希望在區塊1 中鎖定或銷毀一些Token,以便將Token 鑄造並轉移到ChainB 上的Bob。但如果ChainB 不等待區塊1 在以太坊上得到有效證明和最終確認,那麼ChainA 可能會發出虛假信息,或者給ChainB 一個無效的狀態。
聚合層透過簡單的方法解決了這個問題。 ChainB 可以暫時假設區塊1 是有效的,並將在以太坊上最終確認,甚至無需等待證明。在提交給聚合層之前,ChainB 的順序器將聲稱的ChainA 狀態根1 作為區塊1 的依賴項包含在頭部中(表示為根1)。這樣一來,ChainB 建立區塊1 所需的延遲從20 分鐘減少到最多幾秒鐘。
原子互通性
安全機制可以擴展到原子情況。假設使用者將一組原子交易提交到多個鏈上。這些交易是有序的,因此在Chain A 上執行的交易結果傳遞給ChainB,ChainB 的更新狀態傳遞給ChainC,以此類推。如果所有交易在所有鏈上都成功執行,那麼交易包將被接受;否則,它將被拒絕。
在理想情況下,我們希望能夠在不滿足以下條件的情況下包含原子交易:
1)不要求ChainB 的操作者為交易包中涉及的所有其他鏈運行一個完整的節點;或者
2)不依賴共享的順序器。
這引發了與非同步情況類似的安全問題:ChainA 可能會發出虛假訊息,並提交一個實際上不包含原子交易包的批次,或向ChainB 發送無效的結果。
幸運的是,非同步情況下的相同機制可以在原子情況下重複使用。 ChainB 承諾捆綁包並接收來自其他鏈的交易結果。聚合層(和證明聚合電路)檢查捆綁包在各個鏈上的一致性。只有在捆綁包中的所有交易都成功執行時,才能在以太坊上最終確認/ 結算包含來自Chain B 的捆綁包的批次。
跨鏈可組合性
聚合層透過非同步跨鏈呼叫實現了超低延遲的跨鏈可組合性。這是一個非常強大的原語:合約可以在超低延遲下安全地調用其他鏈上的合約,而無需等待以太坊的最終確認。使用者可以透過Polygon 上的OKX 鏈入金,並在點擊一次的操作中立即將資金存入另一條鏈上的高流動性借代市場(例如Aave),而不需要將其換成封裝的合成資產。
新興的協調基礎設施
聚合層旨在簡化跨鏈交互,以確保安全性並提供基礎設施來促進活力。鏈操作者可以根據他們的信任假設選擇不同的協調機制,如中繼、共享的證明基礎設施或共享的有效性順序器集群,以保護鏈免受活力問題的影響。
在Polygon 生態系統中,鏈的選擇和主權是優先考慮的。鏈可以自行修改執行環境,使用自己的Token 進行質押和支付gas 費用,並選擇資料可用性機制。此外,鏈需要決定如何權衡互通性和活力故障風險。以下是幾種選擇:
1)Chain B 可以選擇退出快速互通性和聚合層,直接將批次和證明提交到以太坊以避免延遲最終確認。
2)Chain B 只有在Chain A 的狀態經由聚合層確認時才接受Chain A 的狀態,只有在聚合層發出虛假訊息時才會延遲。
3)Chain B 只有在聚合層預先確認Chain A 時才接受Chain A 的狀態,只有在聚合層發出虛假資訊或Chain A 無法提供證明時才會延遲。
在點對點環境中,Chain B 可以接受Chain A 的狀態,而無需檢查Chain A 是否在聚合層上預先確認,只有當Chain A 發出虛假資訊或無法提供證明時才會延遲。
需要注意的是,使用者不會造成活力故障,只有不當行為或故障的鏈才會引發問題。透過削減或剔除鏈的聚合層參與權,並阻止其無縫互通能力,可以對虛假資訊和提交無效區塊進行嚴厲懲罰,因此活力故障應該非常罕見。
鏈可以採取額外的預防措施來最大限度地減少活力問題的風險,例如維護與其互通的其他鏈的白名單或黑名單,並對參與任何批次的鏈的數量設置限制。它們還可以依賴第三方運行完整節點,以確保如果一條鏈在能夠產生證明之前離線,就有備份證明者。
鏈之間協調接受原子捆綁包的機制也是靈活的。例如,一些鏈可以在共享的有效性順序器叢集中進行低延遲的互通性,或者它們可以依賴中繼機制。
透過為Chain A 和Chain B 同時運行完整節點,並驗證每個鏈的狀態是否有效,加密經濟安全的中繼器可以實現Chain A 和Chain B 之間的互通性。即使Chain A 或Chain B 預先確認了一個新的批次然後離線,共享的證明基礎設施可以介入產生證明。
可以想像,在AggLayer 提供的安全基礎之上,新的協調基礎設施將不斷湧現,實現新的、更好的互通性和共享流動性形式。重要的是,整個Polygon 生態系統不需要共享相同的基礎設施或信任假設。它不需要在單一共享的順序器或證明者下運作。這是相對於ORs 的一個極為重要的優勢。
4、總結
聚合層基本上讓我們能夠創造一個感覺上像是使用單一鏈的多鏈生態系統。它是整體和模組化論題的綜合:統一的狀態、流動性和可組合性,以及多鏈生態系的無限可擴展性。
聚合層與共享順序器的比較
這個願景從根本上只適用於基於零知識的系統。我將在以後的文章中詳細闡述這一點,但希望實現快速互通性的樂觀生態系統必須依賴共享順序器。這對鏈來說是個壞交易:它限制了它們重新分配順序器費用和MEV,共享有效性順序器迫使鏈使用同質化的執行環境,並且共享順序器在施加更高延遲的同時代表著可擴展性瓶頸。
聚合層不是一個共用順序器。它不需要接收或處理發生在各個鏈上的交易,因此它不會成為可擴展性瓶頸。你可以將其大致視為鏈狀態或批次的共享順序器,但每個批次可以包含的交易數量沒有實際限制,因此聚合層不是一個瓶頸。
此外,跨鏈互通性打破了ORs 的一個重要屬性。對於單鏈ORs,任何人都可以運行一個OR 的完整節點,並在交易發佈到L1 時立即確認交易是否有效和最終化。但在多鏈情況下,這不再成立——現在需要為OR 與之互通的每個鏈運行一個完整節點。
相比之下,Polygon 的願景是鍊是主權的。它們可以使用任何執行環境,可以依賴任何集中化或去中心化的順序器,並且可以自行權衡跨鏈延遲和活性。
這是一個與現有網路類似的願景。網路是一個具有彈性可擴展性、無需許可和統一環境的地方。同樣,聚合層是可擴展和無需許可的——它對參與鏈沒有任何限制——並且允許用戶在生態系統中無縫移動資產和狀態,為互聯網的價值層提供統一介面。
這就是Polygon 的未來:不是整體化的,也不是完全模組化的,而是聚合的。
確保流動性的統一的一部分是消除橋接上封裝合成Token 的可怕使用者體驗。 Polygon 的LxLy 橋接的使用者可以在不損失同質性的情況下在鏈之間無縫轉移資產。然而,為了安全地進行操作,我們需要防止最薄弱連結安全性問題——即攻擊者破壞一個鏈並在橋接的所有鏈上轉移所有資金。我將在以後的文章中討論如何做到這一點,但聚合層可以利用證明聚合步驟來強制執行鏈級帳務,避免最薄弱連結安全性問題。
當我提到原子跨鏈交易時,我指的是用戶能夠在多個鏈上提交一個「捆綁」或一組交易的能力。原子捆綁具有這樣的特性:只有當所有交易成功執行時,相關鏈上的交易才會被包含在內。如果單一交易失敗,捆綁將無法在任何鏈上被包含。
最基本的例子又是我們的跨鏈轉移。假設Alice 想要將1 個ETH 發送給Bob,但Alice 在Chain A 上,而Bob 在Chain B 上。假設存在兩個Rollup 的共享本地橋接,Alice 可以在Chain A 上銷毀她的ETH,並在Chain B 上鑄造ETH 並轉移到Bob 那裡。但關鍵是要確保她不能在沒有銷毀ETH 的情況下鑄造ETH,也不能在沒有鑄造ETH 的情況下銷毀它——否則她可能會失去ETH 或者在橋接中資產不足。
這就是為什麼原子交易如此重要。為了允許鏈之間的低延遲交互,並使使用Polygon 生態系統感覺像使用單一鏈,需要原子保證。
這是一個微妙的問題,但從生態系統的角度來看,聚合層提供了安全性,但從單一鏈的角度來看,這種設計更注重活性而不是安全性,因為Chain B 可能依賴來自Chain A 的無效鏈狀態。在這種情況下,聚合層將不接受Chain B(由證明聚合電路強制執行),並且需要在沒有對A 的依賴的情況下建立新的區塊。