CESS 機制詳解(2):區塊鏈層與隨機選取輪值(R²S)共識節點機制

WEEX 唯客博客, 對於任何一個區塊鏈項目而言,基於區塊鏈的共識層是最重要的底層架構,共識層的設計直接決定了整體網路的效率、安全性、去中心化程度等問題。當下眾多新公鏈的崛起,很大程度上也是因為以太坊在DeFi Summer應用爆發后,鏈承載能力不足的問題被放大而導致的流量外溢。 相較於單純的公鏈,存儲公鏈雖然是一個比較細分的功能性網路,但對於數據處理效率的要求並不亞於一般公鏈。究其原因,還是由於當下公鏈為了追求效率,很多時候鏈上僅僅作為最終狀態確認的場所,而將較多的複雜內容放在鏈下執行。 作為Web3.0底層基礎設施,去中心化雲存儲網路CESS(Cumulus Encrypted Storage System)在設計之初秉持著對去中心化理念的堅持,在「信息上鏈」層面做到了儘可能的滿足,並利用高效的鏈上處理效率來避免去中心化帶來的低效問題,在「分散」和「高效」兩個對立面上做到了很好的平衡。 1、隨機選取輪值共識節點機制(R²S) 為了在提高鏈上事務處理效率的同時又可以實現節點的去中心化,CESS採用了創新的隨機選取輪值共識節點機制(R²S)來實現區塊打包以及其他鏈上事務。正如字面上所看到的,該機制中完成鏈上共識的節點是輪值的,也就是說會隨著時間的推移而變化。另一方面,所謂的「輪值」,在選擇上也是「隨機」的,單從字面意思來看,CESS在一個時間窗口內會由一定數量的輪值節點負責共識的維護,並且通過選取的隨機性來保證去中心化程度。 不過,真實的R²S並不如字面上看起來那麼簡單。 1.1 如何實現「隨機」與「輪值」 其實區塊鏈最重要的點是共識問題,但在解釋R²S的共識機制之前,需要先介紹一下該機制中節點相關的問題。 R²S機制允許所有希望成為節點運營者的用戶可以自由地加入候選節點,但在每一個時間窗口內(例如每1萬個區塊),只選取11個正式的輪值節點參與出塊。而未參與出塊的候選節點,也可以通過參與數據預處理流程來為自己的工作能力提供證明,從而參與下一輪的正式輪值節點選取。在這個過程中,網路對每個節點都會進行信譽評分,當節點在工作過程中出現對網路整體利益存在損害的行為時,將會降低其分數。當分數低於某一基準線時,該節點將無法參與候選節點的競爭。 這裡簡單解釋一下,CESS對於用戶上傳的數據需要經過一輪數據預處理后,再分配給節點進行存儲。預處理包含了數據的分片、加密、冗餘等流程。具體的內容我們會在後續存儲的具體流程中展示。 我們來完整看一下機制的整套運作流程:首先,網路從所有候選節點中隨機選取11個輪值節點,在固定的時間窗口內完成出塊等共識的維護工作,而候選節點則參與數據的預處理過程為自己的工作能力提供證明。在輪值節點當值過程的同時,網路將會在滿足條件的候選節點中再度隨機選取11個節點作為下一個時間窗口內的正式輪值節點進行共識維護,以此類推。 在這個過程中,如果有個別正式節點存在故意作惡或無法滿足網路要求等問題,從而導致被強制下線時,網路將從候選節點裡隨機選抽節點補上直至完成此輪時間窗口的當值。所以對共識節點運營者而言,即使僅僅作為候選節點也需要保持對網路的持續貢獻,如此可以大大增加獲取收益的可能性。 1.2 拜占庭容錯與可驗證隨機函數 在了解完具體的節點進入與退出機制后,下面就是區塊鏈的核心問題:如何在去中心化的前提下保證鏈上數據的準確性。在該方面,CESS選擇了採用安全性更高的拜占庭容錯與可驗證隨機函數來確保共識的安全。 1.2.1 拜占庭容錯 CESS借鑒PBFT共識演算法,引入門限簽名演算法和收集者角色,實現高可用性的拜占庭容錯共識演算法。該演算法保證了當網路中出現作惡節點時,依然可以實現鏈上共識的達成。 本演算法的11個當值共識節點可分為主節點和副節點,其中副節點根據任務不同,共包含轉發節點和收集節點兩個角色。每輪的共識過程都會有一個主節點,主節點在收到來自客戶端的請求后將打包交易成塊併發送至所有副節點。然後,轉發節點將確認與簽名消息並轉發至收集節點。收集節點通過門限簽名機制,把收集到的所有消息聚合成一個簽名消息,隨即發送至其他所有節點。接下來,繼續新的一輪轉發與收集過程,直至將確認消息返回至客戶端。值得注意的是,兩輪的收集節點可以指定為同一節點,也可為不同節點。本演算法保證安全性和活性的的前提同樣是假設系統中拜占庭節點數量不超過系統總節點數的1/3。節點總數量為N時,最多只能容納f個拜占庭故障(叛徒)節點,令N大於等於3f + 1。 1.2.2 可驗證隨機函數 與大多數公鏈不同,CESS的共識節點通過隨機選取生成,這意味著對網路應對變化的能力有更高的要求。為了可以在這樣的背景下依然儘可能保證安全性,CESS採用「隨機從候選共識節點中選取出若干共識節點,接著再通過共識演算法合作打包交易出塊」的模式,在增加節點選舉的隨機性和不可預測性的前提下,提升區塊鏈的安全性。 每個候選共識節點擁有一個公私鑰對,在每輪時間窗口選舉當值共識節點時,各候選共識節點通過以下公式計算哈希隨機輸出。 R=VRF_Hash(SK, Seed) P=VRF_Proof(SK, Seed) 其中,SK是節點的私鑰,Seed是CESS鏈上某區塊中的一個欄位信息,無法提前預測。R為哈希隨機輸出,P為哈希證明。 通過上述步驟,驗證者可以輕易驗證和兩個值確實是由擁有該值的節點產生。 R=VRF_P2H(P) VRF_Verify(PK, Seed, P) 其中PK為被驗證節點的公鑰。 此時,可選擇哈希隨機輸出最小的11個節點為當值共識節點。如果選出的節點多於11個,將根據信譽度評分高低進行篩選。 1.3 准入與退出 雖然CESS對節點的進入並未設置過於嚴苛的前置要求,但也需要滿足網路運行條件的基本運行指標、資源貢獻指標,並質押一定數量的CESS代幣來進行參與,防止節點作惡。在節點完成了CESS代幣的質押之後,就可以參與到上述的流程中去。當節點想要退出時,網路會根據節點在運營過程中的評分來判定是否全額退還抵押代幣。理論上只要節點正常工作,未出現長時間的掉線或者故意作惡等問題,網路都將全額退還抵押代幣。 該准入機制可預防女巫攻擊,提高共識安全性。 2、R²S機制優勢何在 單從機制設計的角度上來說,R²S略顯複雜了一些,但CESS團隊在設計該模式的時候,有針對存儲公鏈特別的考量。 2.1 解決「礦工困境」,避免壟斷 「礦工困境」是指在存儲網路中,由於礦工更傾向於存儲可以產生收益的數據而並非區塊歷史(可以理解為不願意建立全節點),只通過向少數全節點調取數據來保證網路同步或者加入礦池,從而導致了全節點的過於中心化。CESS通過R²S來實現共識和存儲的隔離,一方面保證了對於區塊歷史的存儲更加去中心化,另一方面也防止大礦工的過於集權而對網路整體的發展不利。 2.2 大幅提高去中心化框架下的效率 如果單純由11個節點來維護共識,雖然提高了效率,但網路卻會像聯盟鏈一樣非常地中心化。CESS為了在該高效方案的背景下實現去中心化,所以設置了隨機選取每一輪參與維護共識的機制。只需要滿足節點要求即有機會參與出塊,很好地解決了中心化的問題。 2.3 實現鏈上事務處理 CESS的鏈上數據,除了交易以及合約的確認,還包括了用戶上傳數據的「位置」信息。也就是說,CESS成功實現了所存儲內容元數據的上鏈。雖然當下很多項目傾向於使用部分數據鏈下處理來提高鏈上效率,但這樣的方案在安全性上需要非常多的保證機制,並且也是由於鏈處理效率較低而不得已為之。CESS由於鏈上事務處理的高效,所以可以實現元數據的上鏈,從而在數據存儲的定址等方面可以直接通過鏈上數據實現,而上鏈則是保證了數據的真實性。 但這個需要說明的是,實際的操作中,為了存儲網路效率優先的原則,節點會維護一個元數據的資料庫,定址將首先從該資料庫中出發,只有在無法找到的情況下才會選擇在鏈上調取數據。該資料庫是通過同步鏈上信息而生成的,本質上並沒有破壞真實性這個特點。 而作為共識節點之所以需要將同樣的數據同時在鏈上鏈下進行保存,一方面是為了在網路需求旺盛時降低不斷向鏈上請求數據造成的高成本,另一方面也是方便了其他調度方可以更快地處理用戶數據。 3、總結 總體而言,CESS採用R²S機制,一方面實現了共識與存儲分離,防止出現「礦工困境」與壟斷;另一方面,通過可信執行環境(TEE)技術定期檢查共識節點的誠實性和調度功能,來保證節點之間通過公平競爭來為網路提供儘可能優質的服務。基於Substrate開源框架開發的CESS去中心化雲存儲網路,不僅支持WASM,還將在未來兼容EVM智能合約,這不僅是為了方便開發者建立CESS原生生態,讓很多對數據交互需求較高的項目有容身之地;也使得很多應用可以無縫遷移至CESS,為前期的快速發展鋪好了道路。 WEEX唯客交易所官網:weex.com

Previous:

Next: