解讀SCP:跳出Rollup定式的去信任化基礎設施範式

新手1/22/2024, 9:00:49 PM
本文介紹一種Web3基礎設施設計範式——存儲共識範式SCP(Storage-based Consensus Paradigm)。

導語:本文將前瞻性地介紹一種看起來有點特立獨行的Web3基礎設施設計範式——存儲共識範式SCP(Storage-based Consensus Paradigm),這種産品設計模式雖然在理論上,與以太坊Rollup等主流模塊化區塊鏈方案存在較大差異,但在落地簡易度以及與Web2平颱銜接的難易度上,可行性卻很高,因爲他從一開始就不打算像Rollup那樣把自己限製在一個狹窄的實現路徑上,想要以一種更寬泛、更開放的框架,將Web2平颱與Web3設施融合起來,可以説是一個腦洞大開、頗具想象力的做法。

正文:讓我們設想一種公鏈擴容方案,具有下列特性:

  • 擁有媲美傳統Web2應用或交易所的速度,遠超任何公鏈、L2、rollup、側鏈等。
  • 沒有Gas費,使用成本幾乎爲0。
  • 資金安全性高,遠超中心化設施如交易所等,遜於Rollup但大於等於側鏈。
  • 與Web2相衕的用戶體驗,無需對區塊鏈的公私鑰、錢包、基礎設施等有任何認知。

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

不過,我們似乎想不到多少方案能做到如此完備,因爲主流討論與實踐確實太少。

我們在上麵用擴容這個大家非常熟悉的議題作爲引子,實際上SCP併不僅限於擴容使用,其設計靈感確實來源於比特幣、以太坊等公鏈的擴容方案與社區討論。而它的願景和實際應用是構建新一代的去信任化基礎設施,甚至是非區塊鏈結構的運算平颱。

SCP基礎組件和工作原理

一般而言,SCP也像以太坊和Celestia社區所説的“模塊化區塊鏈”一樣,具有數據可用性層、執行層、共識層、結算層等模塊畫分。

  • 數據可用性層:由一條被廣泛認可且久經考驗的公鏈來承擔,或存儲類設施作爲數據可用性層,如以太坊、Arweave、Celestia等。
  • 執行層:一颱服務器,用於接收用戶交易併執行,衕時將用戶簽名後的交易數據批量提交到DA層,與Rollup的排序器相似。但執行層併不一定要有區塊鏈式的鏈錶結構,它可以完全是Web2數據庫+計算繫統,但整個計算繫統必鬚開源,具備透明度。

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

  • 結算層:由一群節點與其他鏈上的合約或地址組成,用於處理用戶充值進入SCP,或提現離開SCP的行爲,有點類似於跨鏈橋的運作模式。結算層節點通過多簽合約或基於TSS的地址,控製充值地址的提現功能。充值時用戶曏所在鏈的指定地址充入資産,提現時則髮送請求,結算層節點讀取到數據後,通過多簽或TSS對資産放行。結算層的安全程度,取決於採用的跨鏈機製。

SCP的實踐框架

我們可以通過如下框架,來理解SCP範式。一個滿足SCP框架的産品,可以具備如充值、轉賬、提現、swap等主要功能,在此基礎上還可以進一步擴展。下圖是一個此類産品的原理圖:

  • 該項目的DA層使用了永久存儲設施Arweave,即圖中的大圓圈。
  • 協調者Coordinator,即執行層。用戶將交易提交至協調者,協調者執行運算併展現運算結果,然後將用戶的原始輸入數據批量提交至DA層。
  • 檢測者Detector,從Arweave上拉取協調者提交的交易原始數據,使用與協調者一緻的算法,對數據和結果進行驗證。檢測者的客戶端衕樣也是開源的,任何人都可以運行。
  • 守望者Watchmen,掌管了提現繫統多簽的一組檢測者。會根據交易數據對提現請求進行驗證和放行。另外守望者也負責簽署提案。

我們可以看到整套繫統,他們達成的共識是全部位於鏈下的,這即存儲共識範式的核心——它拋棄了區塊鏈式的節點共識繫統,讓執行層擺脫繁重的共識交流和確認過程,隻需要做好一颱服務器的工作即可,從而達到近乎不受限製的TPS和經濟性。這一點和Rollup非常類似,但SCP走曏了和Rollup不衕的道路,將其從一個擴容專屬的用例,嘗試轉曏爲一種Web2到Web3的新的過渡模式。上麵提及的協調者是一颱服務器,但這併不意味著協調者可以爲所欲爲。和Rollup的排序器道理類似,在將用戶提交的原始數據批量地在Arweave上提交後,任何人都可以運行檢測者程序對其進行驗證,併和協調者返回的狀態進行對比。某種程度上,這和銘文類應用的思路如出一轍。在這種架構下,一個中心化的服務器、數據庫併不構成根本的挑戰。這也是SCP範式另一點,將“中心化”和“單一實體”這兩個概念綁定解耦了——一個去信任化的體繫裡,可以有中心化組件,甚至可以是一個核心部件,但這併不影響整體上的去信任化。

我們可以喊出這樣一個口號——“下一代去信任化基礎設施不是非要依賴於共識協議,但應當是開源的繫統與P2P節點網絡”。人們髮明和使用區塊鏈的初衷是去信任化、賬本一緻、不可僞造、可溯源等等老生常談的基本麵,這在比特幣白皮書裡有明確闡述。但在以太坊之後,不論是舊公鏈的擴容方案,還是Rollup或模塊化區塊鏈,大家都形成了思維定式:我們做的東西必鬚是一條區塊鏈(由節點的共識協議組成),或者是Rollup這種看起來是一條鏈的方案(隻是有區塊鏈的數據結構,但節點沒有直接的共識消息互換)。但現在來看,基於SCP的框架下,即使不是區塊鏈,也可以實現去信任化、賬本一緻、不可僞造、可溯源等等一繫列需求,當然前提是要有更明確的實現細節。

執行層

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

無限可能的執行環境

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

  • 交易所。基於SCP可以構建公開、透明的、高TPS的交易所,該交易所既可以有CEX迅速、0成本的特點,又保持了DEX的去中心化。CEX和DEX的分野在這裡就變得模糊起來。
  • 支付網絡。類似於支付寶、PayPal等。
  • 支持加載程序/合約的虛擬機/區塊鏈。任意開髮者可以部署任意的應用程序在其上,和其他程序共享所有用戶的數據併根據用戶的指令進行操作。

SCP這種支持任意執行環境的設計模式,有其獨特的好處:不必再依賴於某些存在歷史包袱的組件,尤其是像以太坊社區獨創的“賬戶抽象”概念,對SCP來講天生就不需要。而在SCP架構下,本身就不存在賬戶抽象的概念——你可以隨意採用Web2標準賬戶和區塊鏈賬戶等。從這個角度講,許多成熟的Web2用例不需要重新思考和構建,就可以直接用於SCP上。這一點或許是SCP相比於Rollup的益處。

透明與非對稱性

上麵提到了賬戶繫統,敏感的讀者應該已經髮現,SCP雖然可以利用Web2的賬戶體繫,但原封不動地使用似乎也有問題。因爲這整個繫統,是完全透明的!直接使用用戶對服務器的交互模型,會出現嚴重問題,導緻整個繫統毫無安全性可言。我們先回顧下傳統的服務器-用戶模型是如何工作的:

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

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

3.操作認證:登録驗證通過後,繫統會爲用戶創建一個會話。通常情況下,會話信息被存儲在服務器上,併且服務器髮送一個標識(例如cookie或token)給用戶的瀏覽器或應用。用戶在接下來的操作中不再需要重覆輸入用戶名和密碼:瀏覽器或應用會保存cookie標識,併在每個請求中附帶標識,錶明自己穫得了cookie關聯的服務器的許可。

我們再回顧下典型的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範式的一個問題。

共識層

該層是由鬆散的節點組成,這些節點併不主動構成網絡,因此不是嚴格意義的有共識的一層,而僅僅是用來曏外界(如用戶)確認當前執行層狀態的。例如,如果你對這些節點的運行狀態有所懷疑,可以下載其檢測者客戶端,其中會運行與協調者相衕的程序代碼。不過這和Rollup類似,由於數據是批量提交的,執行層給用戶返回的狀態總是比DA層上的更新的。這裡麵就涉及一個預確認的問題:執行層給用戶的是預確認、軟最終性的結果,因爲還沒有提交到DA層;而共識層給用戶提供的是硬最終性。用戶對此可能不是特別在意,不過對於跨鏈橋等應用,必鬚遵循硬最終性。比如,交易所的充提現繫統是不會相信Rollup序列器在鏈下廣播的數據的,必鬚要等這些數據上以太坊後,才認可。除了能用來確認結果以外,共識層還有一點很重要的作用,就是作爲執行層的防災冗餘。如果執行層永久罷工、嚴重作惡,這個時候理論上任意的共識層都可以接手執行層的工作,接收用戶的請求。如果髮生如此嚴重的情況,社區應該會選擇出穩定可靠的節點來作爲執行層的服務器。

結算層

由於SCP併不是Rollup,所以無法做到像Rollup的提現結算層那樣,不需要人工介入、完全基於密碼學和智能合約代碼的去信任化提現。SCP跨鏈橋的安全程度是與側鏈或第三方見證人跨鏈橋相衕的,需要依賴有權限的多簽管理者爲資産放行,我們稱爲見證人模式。

將見證人橋做的盡可能去中心化,是很多跨鏈橋研究的議題。篇幅所限這裡就不具體展開了。一個設計良好的SCP平颱,在實踐中也必鬚有信譽良好的去中心化橋的多簽合作方。有人可能會問SCP爲什麽不使用有智能合約的鏈作爲DA層?這樣可以做出給予合約,完全免信任的結算層。長遠來看,隻要剋服一些技術睏難,如果將DA層放到以太坊等有合約的DA層上,併能構建出相應的用於驗證的合約,SCP也可以穫得與Rollup相衕的結算安全性,而不需要使用多簽。

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

1.以太坊併不專門用於數據保存,相對於純粹的數據存儲公鏈來説價格太高。而對於SCP範式來講,足夠低的或者固定的存儲成本是至關重要的。隻有這樣才可能支撐的起Web2級別的吞吐量。

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

所以Rollup這個方案隻在特定的情況下,才有更優秀的實踐可行性,如果你打算實現一種更寬泛、更開放,擺脫EVM體繫轉而融入更多的Web2 feature,則以太坊Rollup的思路併不合適。SCP併不是某種公鏈的擴容方案,而是一種更大的Web3計算平颱架構,所以顯然不需要走以太坊Layer2的思路。

一張圖對比SCP與其他範式

聲明:

  1. 本文轉載自[極客Web3],著作權歸屬原作者[霧月,極客Web3],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

解讀SCP:跳出Rollup定式的去信任化基礎設施範式

新手1/22/2024, 9:00:49 PM
本文介紹一種Web3基礎設施設計範式——存儲共識範式SCP(Storage-based Consensus Paradigm)。

導語:本文將前瞻性地介紹一種看起來有點特立獨行的Web3基礎設施設計範式——存儲共識範式SCP(Storage-based Consensus Paradigm),這種産品設計模式雖然在理論上,與以太坊Rollup等主流模塊化區塊鏈方案存在較大差異,但在落地簡易度以及與Web2平颱銜接的難易度上,可行性卻很高,因爲他從一開始就不打算像Rollup那樣把自己限製在一個狹窄的實現路徑上,想要以一種更寬泛、更開放的框架,將Web2平颱與Web3設施融合起來,可以説是一個腦洞大開、頗具想象力的做法。

正文:讓我們設想一種公鏈擴容方案,具有下列特性:

  • 擁有媲美傳統Web2應用或交易所的速度,遠超任何公鏈、L2、rollup、側鏈等。
  • 沒有Gas費,使用成本幾乎爲0。
  • 資金安全性高,遠超中心化設施如交易所等,遜於Rollup但大於等於側鏈。
  • 與Web2相衕的用戶體驗,無需對區塊鏈的公私鑰、錢包、基礎設施等有任何認知。

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

不過,我們似乎想不到多少方案能做到如此完備,因爲主流討論與實踐確實太少。

我們在上麵用擴容這個大家非常熟悉的議題作爲引子,實際上SCP併不僅限於擴容使用,其設計靈感確實來源於比特幣、以太坊等公鏈的擴容方案與社區討論。而它的願景和實際應用是構建新一代的去信任化基礎設施,甚至是非區塊鏈結構的運算平颱。

SCP基礎組件和工作原理

一般而言,SCP也像以太坊和Celestia社區所説的“模塊化區塊鏈”一樣,具有數據可用性層、執行層、共識層、結算層等模塊畫分。

  • 數據可用性層:由一條被廣泛認可且久經考驗的公鏈來承擔,或存儲類設施作爲數據可用性層,如以太坊、Arweave、Celestia等。
  • 執行層:一颱服務器,用於接收用戶交易併執行,衕時將用戶簽名後的交易數據批量提交到DA層,與Rollup的排序器相似。但執行層併不一定要有區塊鏈式的鏈錶結構,它可以完全是Web2數據庫+計算繫統,但整個計算繫統必鬚開源,具備透明度。

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

  • 結算層:由一群節點與其他鏈上的合約或地址組成,用於處理用戶充值進入SCP,或提現離開SCP的行爲,有點類似於跨鏈橋的運作模式。結算層節點通過多簽合約或基於TSS的地址,控製充值地址的提現功能。充值時用戶曏所在鏈的指定地址充入資産,提現時則髮送請求,結算層節點讀取到數據後,通過多簽或TSS對資産放行。結算層的安全程度,取決於採用的跨鏈機製。

SCP的實踐框架

我們可以通過如下框架,來理解SCP範式。一個滿足SCP框架的産品,可以具備如充值、轉賬、提現、swap等主要功能,在此基礎上還可以進一步擴展。下圖是一個此類産品的原理圖:

  • 該項目的DA層使用了永久存儲設施Arweave,即圖中的大圓圈。
  • 協調者Coordinator,即執行層。用戶將交易提交至協調者,協調者執行運算併展現運算結果,然後將用戶的原始輸入數據批量提交至DA層。
  • 檢測者Detector,從Arweave上拉取協調者提交的交易原始數據,使用與協調者一緻的算法,對數據和結果進行驗證。檢測者的客戶端衕樣也是開源的,任何人都可以運行。
  • 守望者Watchmen,掌管了提現繫統多簽的一組檢測者。會根據交易數據對提現請求進行驗證和放行。另外守望者也負責簽署提案。

我們可以看到整套繫統,他們達成的共識是全部位於鏈下的,這即存儲共識範式的核心——它拋棄了區塊鏈式的節點共識繫統,讓執行層擺脫繁重的共識交流和確認過程,隻需要做好一颱服務器的工作即可,從而達到近乎不受限製的TPS和經濟性。這一點和Rollup非常類似,但SCP走曏了和Rollup不衕的道路,將其從一個擴容專屬的用例,嘗試轉曏爲一種Web2到Web3的新的過渡模式。上麵提及的協調者是一颱服務器,但這併不意味著協調者可以爲所欲爲。和Rollup的排序器道理類似,在將用戶提交的原始數據批量地在Arweave上提交後,任何人都可以運行檢測者程序對其進行驗證,併和協調者返回的狀態進行對比。某種程度上,這和銘文類應用的思路如出一轍。在這種架構下,一個中心化的服務器、數據庫併不構成根本的挑戰。這也是SCP範式另一點,將“中心化”和“單一實體”這兩個概念綁定解耦了——一個去信任化的體繫裡,可以有中心化組件,甚至可以是一個核心部件,但這併不影響整體上的去信任化。

我們可以喊出這樣一個口號——“下一代去信任化基礎設施不是非要依賴於共識協議,但應當是開源的繫統與P2P節點網絡”。人們髮明和使用區塊鏈的初衷是去信任化、賬本一緻、不可僞造、可溯源等等老生常談的基本麵,這在比特幣白皮書裡有明確闡述。但在以太坊之後,不論是舊公鏈的擴容方案,還是Rollup或模塊化區塊鏈,大家都形成了思維定式:我們做的東西必鬚是一條區塊鏈(由節點的共識協議組成),或者是Rollup這種看起來是一條鏈的方案(隻是有區塊鏈的數據結構,但節點沒有直接的共識消息互換)。但現在來看,基於SCP的框架下,即使不是區塊鏈,也可以實現去信任化、賬本一緻、不可僞造、可溯源等等一繫列需求,當然前提是要有更明確的實現細節。

執行層

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

無限可能的執行環境

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

  • 交易所。基於SCP可以構建公開、透明的、高TPS的交易所,該交易所既可以有CEX迅速、0成本的特點,又保持了DEX的去中心化。CEX和DEX的分野在這裡就變得模糊起來。
  • 支付網絡。類似於支付寶、PayPal等。
  • 支持加載程序/合約的虛擬機/區塊鏈。任意開髮者可以部署任意的應用程序在其上,和其他程序共享所有用戶的數據併根據用戶的指令進行操作。

SCP這種支持任意執行環境的設計模式,有其獨特的好處:不必再依賴於某些存在歷史包袱的組件,尤其是像以太坊社區獨創的“賬戶抽象”概念,對SCP來講天生就不需要。而在SCP架構下,本身就不存在賬戶抽象的概念——你可以隨意採用Web2標準賬戶和區塊鏈賬戶等。從這個角度講,許多成熟的Web2用例不需要重新思考和構建,就可以直接用於SCP上。這一點或許是SCP相比於Rollup的益處。

透明與非對稱性

上麵提到了賬戶繫統,敏感的讀者應該已經髮現,SCP雖然可以利用Web2的賬戶體繫,但原封不動地使用似乎也有問題。因爲這整個繫統,是完全透明的!直接使用用戶對服務器的交互模型,會出現嚴重問題,導緻整個繫統毫無安全性可言。我們先回顧下傳統的服務器-用戶模型是如何工作的:

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

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

3.操作認證:登録驗證通過後,繫統會爲用戶創建一個會話。通常情況下,會話信息被存儲在服務器上,併且服務器髮送一個標識(例如cookie或token)給用戶的瀏覽器或應用。用戶在接下來的操作中不再需要重覆輸入用戶名和密碼:瀏覽器或應用會保存cookie標識,併在每個請求中附帶標識,錶明自己穫得了cookie關聯的服務器的許可。

我們再回顧下典型的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範式的一個問題。

共識層

該層是由鬆散的節點組成,這些節點併不主動構成網絡,因此不是嚴格意義的有共識的一層,而僅僅是用來曏外界(如用戶)確認當前執行層狀態的。例如,如果你對這些節點的運行狀態有所懷疑,可以下載其檢測者客戶端,其中會運行與協調者相衕的程序代碼。不過這和Rollup類似,由於數據是批量提交的,執行層給用戶返回的狀態總是比DA層上的更新的。這裡麵就涉及一個預確認的問題:執行層給用戶的是預確認、軟最終性的結果,因爲還沒有提交到DA層;而共識層給用戶提供的是硬最終性。用戶對此可能不是特別在意,不過對於跨鏈橋等應用,必鬚遵循硬最終性。比如,交易所的充提現繫統是不會相信Rollup序列器在鏈下廣播的數據的,必鬚要等這些數據上以太坊後,才認可。除了能用來確認結果以外,共識層還有一點很重要的作用,就是作爲執行層的防災冗餘。如果執行層永久罷工、嚴重作惡,這個時候理論上任意的共識層都可以接手執行層的工作,接收用戶的請求。如果髮生如此嚴重的情況,社區應該會選擇出穩定可靠的節點來作爲執行層的服務器。

結算層

由於SCP併不是Rollup,所以無法做到像Rollup的提現結算層那樣,不需要人工介入、完全基於密碼學和智能合約代碼的去信任化提現。SCP跨鏈橋的安全程度是與側鏈或第三方見證人跨鏈橋相衕的,需要依賴有權限的多簽管理者爲資産放行,我們稱爲見證人模式。

將見證人橋做的盡可能去中心化,是很多跨鏈橋研究的議題。篇幅所限這裡就不具體展開了。一個設計良好的SCP平颱,在實踐中也必鬚有信譽良好的去中心化橋的多簽合作方。有人可能會問SCP爲什麽不使用有智能合約的鏈作爲DA層?這樣可以做出給予合約,完全免信任的結算層。長遠來看,隻要剋服一些技術睏難,如果將DA層放到以太坊等有合約的DA層上,併能構建出相應的用於驗證的合約,SCP也可以穫得與Rollup相衕的結算安全性,而不需要使用多簽。

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

1.以太坊併不專門用於數據保存,相對於純粹的數據存儲公鏈來説價格太高。而對於SCP範式來講,足夠低的或者固定的存儲成本是至關重要的。隻有這樣才可能支撐的起Web2級別的吞吐量。

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

所以Rollup這個方案隻在特定的情況下,才有更優秀的實踐可行性,如果你打算實現一種更寬泛、更開放,擺脫EVM體繫轉而融入更多的Web2 feature,則以太坊Rollup的思路併不合適。SCP併不是某種公鏈的擴容方案,而是一種更大的Web3計算平颱架構,所以顯然不需要走以太坊Layer2的思路。

一張圖對比SCP與其他範式

聲明:

  1. 本文轉載自[極客Web3],著作權歸屬原作者[霧月,極客Web3],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
Start Now
Sign up and get a
$100
Voucher!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.