存儲共識範式:下一代區塊鏈不必是區塊鏈

2024-01-09 11:27 極客 Web3


來源:霧月,極客 Web3

設想一種公鏈擴容方案,具有下列特性:

  • 擁有媲美傳統Web2應用或交易所的速度,遠超任何公鏈、L2、rollup、側鏈等。

  • 沒有Gas費,使用成本爲0。

  • 資金安全性高,遠超中心化設施如交易所等,遜於Rollup但等於側鏈。

  • 與Web2相同的用戶體驗,無需對區塊鏈的公私鑰、錢包、基礎設施等有任何認知。

這樣的方案確實令人非常興奮:一方面它在擴容上基本已經做到了極致;另一方面在Web3的mass adoption上也奠定了很堅實的基礎,基本消除了Web2與Web3使用體驗的鴻溝。

不過目前我們似乎想不到有什么方案能做到如此完備,因爲主流的討論與實踐確實太少。本文將前瞻性地介紹這種非常優秀和超前的下一代Web3計算平台設計範式——存儲共識範式(SCP,Storage-based Consensus Paradigm)。

我們在上面用擴容這個大家非常熟悉的議題作爲引子,但實際上SCP並不僅限於擴容使用,其設計靈感確實來源於比特幣、以太坊等公鏈的擴容方案與社區討論。而它的愿景和實際應用是構建新一代的公鏈或非區塊鏈結構的運算平台

SCP基礎組件和工作原理

  • 數據可用性層:一條被廣泛認可且久經考驗的公鏈或永久存儲設施作爲數據可用性層,如以太坊、Arweave等。

  • 執行層:一台服務器用於接收用戶交易並執行,同時將用戶籤名後的交易原始數據批量提交到DA層上,與Rollup的排序器有較高相似性。但這一執行層並不一定需要具有區塊鏈的數據結構,或者EVM兼容性等區塊鏈相關的概念。它也可以完全是Web2的數據庫+計算系統,但整個計算系統必須是开源的。

  • 共識確認層:由一群節點組成,它們拉取執行層提交到DA層上的原始數據,並用執行層相同的算法對這些數據進行運算,用來確認執行層的結果輸出是否正確,並且可以作爲執行層的防災冗余。用戶也可以從共識確認層的各個節點返回的數據,來確保執行層沒有欺詐。

  • 結算層:由一群節點與其他鏈上的合約或地址組成,用於用戶充值進入SCP和提現離开SCP。節點同樣需要運行執行層相同的算法,並拉取數據進行驗算。節點通過多籤合約或基於TSS的地址來控制充值地址的提現功能。充值時用戶向所在鏈指定地址充值,提現時向執行層發送請求,在結算層節點讀取到DA層的數據後,進行多籤或TSS對資產放行。結算層的安全程度是與側鏈或跨鏈橋的跨鏈機制是相同的,它們也使用了相同的或等效的提現結算系統。

everPay

everPay是SCP的先行者,已經基於SCP率先構建了自己的產品,目前everPay的主要功能爲充值、轉账、提現、swap,在此基礎上日後幾乎可以擴展出任何Web3和Web2功能。

現在我們通過everPay的工作流程來完整地理解存儲共識範式。

everPay的DA層使用了永久存儲設施Arweave,即圖中的大圓圈。

協調者Coordinator,即執行層。用戶將交易提交至協調者,協調者執行運算並展現運算結果,然後將用戶的原始輸入數據批量提交至DA層。

檢測者Detector,從Arweave上拉取協調者提交的交易原始數據,使用與協調者一致的算法,對數據和結果進行驗證。檢測者的客戶端同樣也是开源的,任何人都可以運行。

守望者Watchmen,掌管了提現系統多籤的一組檢測者。會根據交易數據對提現請求進行驗證和放行。另外守望者也負責籤署提案。

我們可以看到整套系統他們達成的共識是全部位於鏈下的,這即存儲共識範式的精髓——它拋棄了區塊鏈式的節點之間的共識系統,從而讓執行層擺脫繁重的共識交流和確認過程,只需要做好一台服務器的工作即可,從而達到近乎不受限制的TPS和經濟性。這一點和Rollup非常類似,但SCP可以說是將Rollup這一概念更加抽象和拔高了,將其從一個擴容專屬的用例變爲了新一代Web3計算平台的設計範式。

everPay的協調者是一台服務器,但這並不意味着協調者可以爲所欲爲。和Rollup的排序器道理類似,在將用戶提交的原始數據批量地在Arweave上提交後,任何人都可以運行檢測者程序對其進行驗證,並和協調者返回的狀態進行對比。這一點本身是因爲狀態轉換函數(STF)是確定性的函數,輸入 —> STF —>輸出。只要大家的STF相同,輸入相同(全部提交至DA,無法篡改,公开可見),那么得到的輸出一定是一樣的。

在這種架構下,一個中心化的服務器、數據庫並不構成根本的挑战。這也是SCP範式另一點精髓,將“中心化”和“單一實體”這兩個概念綁定解耦了——一個去中心化的體系裏,是完全可以有中心化的組件的,甚至可以是一個核心部件,但這並不影響整體上的去中心化。

由此我們可以喊出一個聳人聽聞但又符合邏輯的口號——“下一代區塊鏈不必是區塊鏈”。因爲人們發明和使用區塊鏈的初衷是去中心化、账本一致、不可僞造、可溯源等等老生常談的基本面,所以不論是舊公鏈的擴容方案還是一條全新的公鏈,大家都形成了一定的思維定式:我們做的東西必須是一條區塊鏈(由節點交流的共識組成),或者是Rollup這種看起來是一條鏈的方案(只是有區塊鏈的數據結構,但並沒有節點交流共識)。但現在來看,基於SCP的方案即使它不是區塊鏈,也可以滿足中心化、账本一致、不可僞造、可溯源等等一系列需求。

執行層

執行層是在整個系統中是至關重要的,它承擔了整個系統的吞吐量與運算,也決定了整個系統上可以運行怎樣的應用。

無限可能的執行環境

理論上執行層中的執行環境可以做成任何形態,可能性是無窮無盡的,具體取決於項目方如何定位自己的項目:

  • 交易所。基於SCP可以構建公开、透明的、無限TPS的交易所,該交易所既可以有CEX迅速、0成本的特點,又保持了DEX的去中心化。CEX和DEX的分野在這裏就變得模糊起來。

  • 支付網絡。類似於支付寶、PayPal等。

  • 支持加載程序/合約的虛擬機/區塊鏈。任意开發者可以部署任意的應用程序在其上,和其他程序共享所有用戶的數據並根據用戶的指令進行操作。

因爲用戶完全擺脫了區塊鏈形態的錢包,也只與服務器交互,它的用戶體驗與傳統互聯網應用是一致的,但同時又是去中心化的。

可以看到上述過程中已經包含了跨鏈swap和账戶抽象等類似概念,當然僅僅是類似,我們僅僅是在SCP的語境下來理解。尤其是像账戶抽象這種概念,對SCP來講天然是不需要的,這個應該說是以太坊遺留的包袱。以太坊社區經過了很多輪的努力,終於推出了EIP-4337標准,來解決Web3大規模採用的問題之一——账戶問題。而且EIP-4337僅僅是一個標准,其上的應用實踐還有待考驗。而在SCP架構下本身就不存在账戶抽象的概念——你可以隨意採用Web2標准账戶和區塊鏈账戶等。從這個角度講,許多成熟的Web2用例不需要重新思考和構建,就可以直接用於SCP上。

透明與非對稱性

上面提到了账戶系統,敏感的讀者應該已經發現SCP雖然可以利用Web2的账戶體系,但原封不動地使用似乎也有問題。

因爲這整個系統,是完全透明的!直接使用用戶對服務器的交互模型會出現嚴重問題,導致整個系n統毫無安全性可言。我們先回顧下傳統的服務器-用戶模型是如何工作的:

1. 账號注冊:用戶在應用程序的注冊頁面輸入用戶名和密碼。爲保護用戶的密碼,服務器收到後會通過哈希函數來處理密碼。爲增加哈希的復雜性並抵御彩虹表攻擊,通常會爲每個用戶的密碼連接一個隨機生成的字符串(稱爲“鹽”),一起哈希處理。用戶名、鹽、哈希被明文存儲在服務提供商的數據庫中,並不對外公开。但即使如此,也需要做加鹽和安全處理,一防內鬼,二防攻擊。

2. 用戶登錄:用戶在登錄表單上輸入他們的用戶名和密碼。系統比對處理後的密碼哈希值和數據庫中存儲的哈希值。如果兩個哈希值匹配,表明用戶提供了正確的密碼,登錄進程繼續。

3. 操作認證:登錄驗證通過後,系統會爲用戶創建一個會話。通常情況下,會話信息被存儲在服務器上,並且服務器發送一個標識(例如cookie或token)給用戶的瀏覽器或應用。用戶在接下來的操作中不再需要重復輸入用戶名和密碼:瀏覽器或應用會保存標識,並在每個請求中附帶標識。

我們再回顧下典型的Web3的區塊鏈-用戶交互體系:

1. 账戶注冊:實際上沒有账戶注冊這一過程,也沒有用戶名-密碼體系。账戶(地址)不需要注冊,天然存在,誰掌握其私鑰誰控制該账戶。私鑰由錢包在本地隨機生成,也不涉及聯網過程。

2. 用戶登錄:區塊鏈的使用並不需要登錄,大部分dApp沒有登錄這個過程,而是連接錢包。有的dApp在連接錢包後會要求用戶對連接錢包的身份進行籤名驗證,確保用戶真的持有這個錢包的私鑰,而不是僅僅是向前端傳了個錢包地址。

3. 操作認證:用戶直接向節點提交籤名後的數據,節點驗證後會向整個區塊鏈網絡廣播該交易,滿足區塊鏈網絡共識後用戶的操作即被確認。

兩種模式的差異是由對稱和非對稱導致的。在服務器-用戶架構中,雙方掌握相同的祕密。在區塊鏈-用戶架構中,只有用戶掌握祕密。SCP的執行層雖然可以不是區塊鏈,但所有的數據又需要同步到公开可見的DA層,因此SCP所使用的登錄、操作的驗證方式必須是非對稱的。但又因爲不想有讓用戶保管私鑰、使用錢包等影響大規模採用的累贅動作和較差體驗,在SCP上構建的應用使用傳統的ID密碼或者OAuth三方認證登錄的需求也很強,那么如何結合二者呢?

由於非對稱密碼學和零知識證明對具有不對稱性,我設想了兩種可能的方案:

  • 如果想使用ID-密碼體系,可以將這個保存密碼的模塊不做進SCP中,這樣其他人也就不可見。SCP執行層內部依然使用區塊鏈的公私鑰账戶和操作邏輯,沒有注冊,沒有登錄等。用戶的ID實際上會對應一個私鑰。這個私鑰當然不能保存在項目方,比較可行的方案是使用2-3的MPC來解決中心化存儲的問題,同時又不讓用戶有使用私鑰的累贅。

  • 當依賴OAuth登錄時,可以利用JWT(Json Web Token)可以作爲身份認證的方式。這個方式會比上面的顯得稍微中心化一些,因爲它本質上需要依靠Web2大廠提供的第三方登錄服務作爲身份認證。第一次使用第三方登錄時,將JWT中表徵用戶身份和服務商身份的字段注冊在系統內。在用戶的後續操作中,將操作指令作爲public input,而JWT整體作爲一個secret witness,用ZKP驗證每一筆用戶的交易。每個JWT有過期時限,用戶下次登錄時也會申請新的JWT,所以無需保管。另外這個系統內還需要依賴JWK,這裏可以理解爲大廠爲驗證JWK提供的公鑰。那么JWK去中心化地如何輸入到系統內,日後應對私鑰輪替的方法等,也值得探討。

不論使用哪種方式,這樣都比傳統方式的开發和運算的成本都要高一些,但這也是去中心化所付出的必要代價。當然,項目方如果並不認爲做到極致的去中心化是必要的,或者在开發的不同階段有不同的milestone,沒有這些設計也是可以的,因爲去中心化不是非黑即白,而是存在中間的灰色區域。

隱私性

上面剛才提到的透明的問題,不僅對用戶的交互範式造成影響,也會對用戶數據造成影響。用戶的數據都是直接暴露的。雖然在區塊鏈中不是問題,但這在某些應用中是不太能接受的,所以开發者也可以構建隱私交易系統。

收費

執行層如何收費是另一個值得關注的點。因爲向DA層提交數據也需要成本,包括自身服務器的運行等。傳統區塊鏈向用戶收取gas費的第一個核心目的是避免用戶刷大量重復的交易來破壞交易網絡,第二個才是根據gas來排序交易。Web2沒有類似的擔憂,所以只有對洪水、DDoS這些基本的概念。

執行層可以自定義各種的收費策略,比如完全免費或部分收費,也可以從其他的行爲如MEV(在排序器中已經非常成熟),市場活動等進行獲利。

抗審查性

執行層不具備抗審查性,理論上可以無限制地拒絕用戶的交易。在Rollup中抗審查性可以由L1合約的強制歸集功能來保證,而側鏈或公鏈是完整的分布式區塊鏈網絡,也難以進行審查。

目前並沒有明確的方案來修正這一問題,是SCP範式的一個問題。

共識確認層

該層是由松散的節點組成,這些節點並不主動構成任何網絡,因此不是共識層,僅僅是用來向外界(如用戶)確認當前執行層的狀態的。例如,如果你對everPay的運行狀態有所懷疑,可以下載其檢測者客戶端,其中會運行與協調者相同的STF。

不過這和Rollup類似,由於數據是批量提交的,執行層給用戶返回的狀態總是比DA層上的更新的。這裏面就涉及一個軟硬最終性的問題。執行層給用戶的是軟最終性,因爲還沒有提交到DA層;而共識確認層給用戶提供的是硬最終性。用戶對此可能不是特別在意,不過對於跨鏈橋等應用,必須遵循硬最終性。比如,交易所的充值提現系統是不會依賴Rollup序列器的瞬時最終性的。

除了能用來確認結果以外,共識確認層還有一點很重要的作用,就是作爲執行層的防災冗余。如果執行層永久罷工、嚴重作惡,這個時候理論上任意的共識確認層都可以接手執行層的工作,接收用戶的請求。如果發生如此嚴重的情況,社區應該會選擇出穩定可靠的節點來作爲執行層的服務器。

結算層

由於SCP並不是Rollup,所以無法做到像Rollup提現結算層同樣的不需要人工介入的、完全基於數學和智能合約代碼的免信任的提現。它的安全程度是與側鏈或跨鏈橋的跨鏈機制相同的,需要依賴有權限的觀察者爲資產放行,我們稱爲見證人模式。

將見證人橋做的盡可能去中心化,是很多跨鏈橋研究的議題。篇幅所限這裏就不具體展开了。一個設計良好的SCP平台,在實踐中也必須有信譽良好的去中心化橋的多籤合作方,如everPay與MPC服務提供商Safeheron就進行了深度合作。

有人可能會問SCP爲什么不使用有智能合約的鏈作爲DA層?這樣可以做出給予合約,完全免信任的結算層。

長遠來看,只要克服一些技術困難,如果將DA層放到以太坊等有合約的DA層上並能構建出相應的用於驗證的合約,SCP也可以獲得與Rollup相同的結算安全性,而不需要使用多籤。

但實踐中這未必是最優選擇:

1. 以太坊並不專門用於數據保存,相對於純粹的數據存儲公鏈來說價格太高。而對於SCP範式來講,足夠低的或者固定的存儲成本是至關重要的。

2. 證明系統非常難以开發,因爲SCP中不光可以模擬EVM,而可以實現任何邏輯。而我們看大像Optimism這種團隊目前其欺詐證明仍然沒有上线,以及zkEVM的开發難度,就可以想象在以太坊上想實現各式各樣的系統的證明,是難度極高的一件事。

另外更關鍵的一點是,這個所謂的與Rollup相同的結算安全性,也僅僅是對於有智能合約的DA層這條鏈本身來說,比如以太坊,因爲原始數據全部是傳遞到以太坊的,那么你在以太坊上的結算合約才能“引用”到原始的輸入數據,來證明最終狀態的正確性(注意,不是直接引用而是間接通過哈希或accumulator等留下原始calldata的狀態標記,因爲歷史交易的calldata本身不能被合約引用)。但對於其他鏈來說,都無法享受到同樣的安全性,因爲他們上面什么數據也沒有。如果要跨去其他鏈最終還是只能使用見證人模式的跨鏈橋。

所以Rollup這個方案只在特定的視角下有更優秀的結算安全性,也即你將一條鏈視爲你的母鏈的情況下。SCP並不是某種公鏈的擴容方案,而是一種更大的Web3計算平台架構,所以也不一定要在某某鏈中心主義的視角下來施行。將結算層建立在智能合約上,除了母鏈以外它並不能保障其他鏈的結算安全,如果你不是專門來給這條鏈擴容的這就顯得完全不合理。

總結

一張圖對比SCP與其他範式。

SCP是一種全新的Web3計算平台範式,媲美傳統的Web2交易的應用速度,交易成本可以忽略,在其上可以構建出無限可能的應用,且安全性上與主流方案保持一致。目前SCP範式下已經湧現出一批應用如everPay、PermaSwap、Mind Network等,基於其優秀的設計理念,非常有希望在本輪和下一輪牛市迎來爆發式的增長。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:存儲共識範式:下一代區塊鏈不必是區塊鏈

地址:https://www.sgitmedia.com/article/20426.html

相關閱讀: