可能很多冷萃的朋友都會有一個共同的感受,隨著這輪加密市場牛市的來臨,各個項目對於區塊鏈技術的開發水平也在提升。老一代的公鏈項目除了ETH因為DeFi的應用而不斷擴展外,其他如EOS、ONT、QTUM等公鏈項目漸漸遠離市場的核心討論圈,取而代之的是Polkadot、Near、Solana等新一代公鏈項目。
但無論新老哪一代項目,似乎都沒有真正解決區塊鏈在大規模應用中的最大難題–「堵」。從近一年時間,DeFi生態發展的表現看,但凡市場進入火爆時期,以太坊上的Gas費都會飛漲,交易速度變緩已經成為一種慣例。公鏈擴容,已經成為去中心化金融進一步發展,區塊鏈技術落地商業應用上的最大瓶頸。
行業內很早就認識到了各公鏈在性能上的缺陷,因此不同團隊從各種角度的解決方案也是層出不窮,這其中Layer2與分片是最主流的兩條技術路線。
儘管Layer2方案也走出了一條由狀態通道、側鏈、Plasma、ZK-rollup、Optimistic Rollup的發展路徑,技術發展難度不斷上升,但目前的技術水平始終不能在保證去中性化的前提下,解決ETH吞吐量、擴展性以及安全性的問題。而ETH2.0採用的分片方式,從技術的角度而言,因為無法做到各個分片的無縫整合,這種以損失系統可用性為代價得到的提升TPS的效果也是大打折扣。
相比於商業應用,DeFi受限於用戶數量及結算速度只能算是非常輕量級的應用。但這就像一面鏡子,反映了現有公鏈在大規模推廣面前遇到的最大障礙:
1.單純的Layer2或是分片在不結合併發執行的情況下擴容效率很低;
2. 即使採用Layer 2,分片、跨鏈,得到的只是一堆各自為戰的子鏈,無法做到相互間無縫協作;
3. 用快速的形式化驗證來保證合約的安全還是座不可逾越的大山。
不過隨著近期RChain項目取得的一些技術進展,當前公鏈所面臨的這些問題有希望得到徹底解決。
行業之光出圈,唯一受邀出席IFF會議的公鏈項目
用RChain創始人Lucius Gregory Meredith (以下簡稱Greg)的話來講,RChain是要成為一個去中心化的世界計算機。本質而言,這又是一個以擊敗以太坊為目標的項目。但事實上,以太坊興起後,Greg覺得基於圖靈機(EVM)體系的以太坊由於先天缺陷無法成為世界電腦,所以去遊說V神採用Rho演算。V神由於大車難調等歷史性包袱原因並未採納,所以才有了現在的RChain。
RChain通過革命性的Rho演算解決了困擾公鏈發展的諸多難題,使得讓通用計算上鏈第一次成為可能。基於Rho演算的快速衝突檢測配合Casper CBC共識,所有節點可以並發出塊達成共識,首次做到了單分片可擴展性,使得大數據可以直接上鏈而不需要藉助IPFS。
同時,基於Rho演算的分片間同步共識,保證了跨分片合約調用的原子性,讓分片間的交互和協作第一次可以無縫進行。而其行為類型系統可以完成並發和分片下的快速形式化驗證,完成大量鏈上合約的安全有序編排。RChain的獨特技術路線使它成為構建世界電腦的不二之選。
在應用方面,RChain項目在很早就有其明確的發展方向,即成為一個可以協調解決全球氣候變化問題的去中心化世界計算機,這也是RChain的核心愿景。在社區開發人才濟濟,不乏奇思妙想的情況下,同時提供ETH合約代碼一鍵轉換工具,方便ETH的生態遷移。
Greg在一次AMA的活動中就曾說,「氣候變化對所有人而言是一個生存威脅。我們全球團隊的堅持不懈,致力於把這個技術變成現實,以做出一個對人類生死存亡具有重大意義的協作技術。」正是本著這樣大愛無疆的精神,RChain非常早便加入了聯合國氣候鏈聯盟,推動用區塊鏈技術減緩和適應氣候變化的問題。
基於RChain在區塊鏈技術對氣候監測全球合作領域長期的探索和努力,以及對區塊鏈技術發展所做出的創新性嘗試,在今年5月29-30日,國際金融論壇(IFF) 2021年春季會議上,RChain作為唯一受邀的公鏈項目參會。今年的IFF春季會議首次專設了數字貨幣板塊,在會議上,RChain創始人Greg分享了有關RChain最新的進展及技術發展方向,並參與研究和探索推動企業尤其是製造業如何進行數字化轉型發展的討論。同時與參會專家一起研討央行法定貨幣與數字貨幣的關係,數字貨幣的功能、定位、應用前景等問題。
值得一提的是,國際金融論壇(IFF)是我國舉辦的最高規格國際性金融峰會之一,被譽為全球金融領域的「F20(Finance 20)」。2003年10月由中國、美國、歐盟、聯合國等20多個國家、地區及相關國際組織的領袖共同發起成立,現任大會主席為中國人民銀行前行長周小川。此次RChain作為唯一受邀參會的公鏈項目,出圈參加如此高規格的峰會進行前沿創新技術分享,實屬業內首次。由此也可以看出,區塊鏈行業作為一個新興行業雖有投機亂象,但真正追求技術創新解決行業和社會痛點的項目,會在時間的沉澱下得到主流社會更多的認可。
RChain的技術優越性
並發執行與塊合併
如果將以太坊概括成為一台虛擬機,那麼RChain就是一台升級了執行結構的虛擬機。可以想像一條首尾都是單車道的高速公路,無論中間是幾車道並行,這條公路的整體通行效率都是很低的。這也正是目前大部分公鏈所存在的問題。
目前大多數公鏈項目的主鏈都是單鏈結構,這就好像高速公路上的單車道,雖然Layer2可以解決中間部分的交易執行效率,但各個Layer2在把交易打包上鏈時仍然要回到「單行車道」。而現在的絕大多數分片方案,都是不支持跨分片的同步確認,相當於雖有很多車道但車輛不可以換道,這樣吞吐量上去了,然而可用性卻大大下降了。所以我們需要在數據傳輸上實現並發的邏輯,即很多節點都可以同時出塊讓其他節點投票確認,這樣同時出的區塊之間就會存在兄弟關係,使得區塊之間最終形成DAG結構。
DAG:Directed Acyclic Graph,中文意為「有向無環圖」,是一種計算機數據存儲結構,它像條毛線織的圍巾,可以一直編下去。好處:高確認時間,高吞吐量,高去中心等。有向無環圖是一種存儲數據的方式。「有向」指所有數據順著同一方向存儲;「無環」指數據結構間不構成循環。
用一個生活中的例子做比方,DAG相當於一個由單行線連接成的交通網路,那些單行線雖然彼此連接形成很多岔路口,但大方向都一致,所以你在上面行車,不會走回頭路。這裡「單行線」就是「有向」,「不走回頭路」就是「無環」。
從區塊鏈的角度看,DAG結構就是無數條鏈根據一定規則(交易沒有衝突)交織在一起,鏈與鏈之間大方向相同,同時生長,且不存在環路。
實現DAG結構就打開了公鏈並發出塊的可能,成為擴容的基礎。然而光這還不夠,為了實現真正的擴展,還需要一種機制可以虛擬機並發的去處理這個DAG。RChain正好有這個機制,那就是它獨有的塊合併技術。這是RChain區別與其他基於DAG的項目比如Conflux,Fantom的重要一點。
塊合併是RChain技術中很獨特的設計。在主流的公鏈技術中強調的交易處理的順序性,因為沒有並發虛擬機,只能讓收到的所有的交易通過某種方式排成一個序列然後順序處理。而塊合併則讓系統具備了並發執行功能。只要是不衝突的區塊都可以在鏈上合併成一個新的狀態,新的區塊也可以在其上產生,而這些不衝突的區塊可以並發執行。
例如,某個節點,它可以看到1,2,3這些區塊,然後它自己準備出區塊4。只要區塊1,2,3之間沒有衝突,他可以把區塊1,2,3看作一個整體,然後把區塊4作為他們的子區塊接入到整個DAG中。這個過程就是「塊合併」。需要指出的是,這個區塊1,2,3是否衝突的判斷非常快速,不需要通過運行其中的交易,而是通過簡單分析裡面的Rho演算的特徵獲得。
塊合併可以使區塊鏈中的每個節點都能以並發的方式連續的出塊、確認、執行交易、更新狀態,動態的讓全網共識到同一個DAG,這就真正意義上對消除了傳統區塊鏈的順序瓶頸,讓單分片內的無限擴展第一次成為可能。
分片VS並發
在明確了DAG結構的基礎上,我們還需要區分一下分片與並發的概念。
分片是一個從資料庫傳承下來的概念,即把一個大的資料庫切分成很多小的、可處理的小塊,從而提高系統性能。
在採用分片技術的區塊鏈中,整個網路的總賬本也被類似的切分成很多子帳本。網路中的節點類似的被切分成很多小組,每個小組相當於一個獨立的區塊鏈,負責維護相應的子賬本。所以每個節點只負責處理對應的子帳本上的交易。最後各個分片通過鏈之間的通訊方式,形成一個總賬本,通過這樣的方式完成對主鏈吞吐量的擴展。
在RChain的思路中,分片的概念更接近於進程。如果將區塊鏈比作一台全球電腦,那麼一個分片類似一個在這台電腦上運行的應用程序(進程),而並發的概念更像是多線程。
線程類似一個輕量級的子進程,它是進程下面一級的處理單元,每個進程可以創建很多個線程同時運行。多線程可以利用起現代CPU多核心的優勢,同時可以利用某個線程等待長時間IO的空閑時間切換到其他線程運行,提高整體的執行速度。在RChain的設計理念里,區塊鏈對某個交易達成共識類似於一個延時非常久的IO操作,用多線程並發的執行方式同時處理大批的交易,是提高系統吞吐量最理想的方式。
RChain認為,想要提高公鏈的TPS,分片並不是最佳方案,因為分片和進程一樣,主要目的是為了擴展系統的「內存空間」,增加上面運行的應用程序的數量,隔離每個應用程序的資源。而真正要提高每個應用程序的速度,必須提高單分片內的處理能力,這就需要並發的工作方式。一言一概之,區塊鏈上的分片對應了計算機中多進程的任務組織方式,而鏈上的並發對應了計算機中多線程的單任務加速方式。
跨分片共識
在用並發的方式幫助單分片擴容之後,下一個問題就是分片之間的互操作性。
目前,跨分片交易的共識有兩種方案:同步共識和非同步共識。RChain屬於前者,而ETH2.0、DOT等屬於後者。
兩者的差異在於驗證的順序性。同步共識,就是跨分片的交易需要兩個分片的驗證者同時批准,一次通過,保證了跨鏈交易的原子性。而非同步共識是把跨分片交易分成兩階段提交,每個分片只處理自己的那部分。這樣並不能保證交易的原子性,可能會產生問題。
所謂交易的原子性就是跨鏈的交易不被割裂成多個,讓每個分片去單獨確認,而是作為一個整體讓涉及到的分片去同時確認,要不都通過要不都通不過。例如兩人用分片A中的Token A換取分片B中的Token B。那麼在同步共識的協議下,該交易要A和B分片一起驗證批准,同時返回,這樣交易的原子性可以保證,不存在任何問題。如果用非同步共識的方案,就需要先在分片A中把Token A轉賬,但這個轉的餘額是暫時不可用的,系統暫時鎖定併產生一個收條。然後分片B接收這個收條,再把Token B完成轉賬。最後分片A把Token A的那次轉賬的鎖定取消,讓餘額變得可用。如果一定時間內,Token B沒完成轉賬的話,分片A就把Token A的交易取消並且回滾。可以看出,割裂了原子性的非同步共識,不但會讓跨鏈交易變得非常複雜,還需要合約提供鎖定和回滾機制,這極大的增加了一般情況下編寫跨鏈合約的複雜性。
不過,同步共識實現的基礎還是需要塊合併的實現,正是因為有了塊合併,不同分片的小DAG之間可以如樂高積木般拼接成一個總的DAG,相當於很多車道的高速公路上,車流有了換道的能力。相反,沒有快合併能力的區塊鏈去做同步跨鏈共識,就好像多車道高速公路,一旦有車需要換道,就必須把多車道壓縮成單車道,效率會大大降低,可擴展性也就消失了。
快速低成本的形式化驗證
因為公鏈上的合約涉及到非常高的經濟價值,所以對合約的代碼質量提出了非常高的要求,需要實現「零容錯」。而形式驗證是最根本的保證質量的方案。形式化驗證的是用數學方法去證明代碼在任何條件下都不存在 Bug,根據設計的方案運行。
傳統區塊鏈項目的形式化驗證,需要首先把合約的代碼翻譯成前條件、後條件等數學語言,然後用機器定理證明的辦法去檢查這段代碼是否滿足指定的特性。並發下的形式化驗證,一般用TLA+之類的工具,先抽象出狀態和狀態轉移這些數學語言,然後窮舉,看能不能證明不管執行路徑怎麼變都能得出指定的結果。這兩種都不能擴展而且代價高昂,極大的限制了區塊鏈的普及。
RChain的合約語言Rholang基於Rho演算,本身就是一種可進行邏輯推導的數學語言,節省大量人工轉換為數學模型的步驟。另外,在OSLF演算法基礎上建立的行為類型系統,可以通過類型檢查的方式自動快速的完成形式化證明。即只要一段Rholang代碼通過了某個類型檢查,那麼就滿足了這個類型檢查所對應的特性,例如:不會產生衝突和死鎖,不會把授予的許可權透露給第三方,等等。這種基於行為類型系統的形式驗證可以規模化地完成大量鏈上合約的安全有序的編排。
總結
行文至此,我相信本文中所提到的很多技術辭彙已經非常讓人頭痛了,但行業的發展正是有賴於這種專業且紮實的技術推進。正如Greg對於RChain的期待,RChain從一開始就被設計作為一台無需信任的、完全去中性化的世界電腦、世界資料庫,而不僅僅是一個支付網路。它被設計出來可以讓草根的、自組織的社區在這個星球上蓬勃發展。這樣宏大的願景一定需要具有創新性的技術來支撐。
最後,讓我們再用最簡單的話來總結RChain的技術特點:以基於Rho演算的並發虛擬機為基礎,實現塊合併技術,讓鏈上並發成為現實,解決單分片內的擴容問題;並在同步共識的基礎上實現跨分片間的無縫互操作;用行為類型系統規模化的對合約進行安全有序的編排。這些解決了困擾當前公鏈發展的三大問題:單分片內並發,無縫分片,和快速形式化驗證。至少在目前,RChain可以成為未來區塊鏈大規模應用的必選技術之一。
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2021/05/31/%e5%85%ac%e9%93%be%e6%89%a9%e5%ae%b9%e8%bf%ab%e5%9c%a8%e7%9c%89%e7%9d%ab%ef%bc%8crchain%e5%bf%85%e6%88%90%e8%a7%a3%e5%86%b3%e5%a4%a7%e8%a7%84%e6%a8%a1%e5%ba%94%e7%94%a8%e7%9a%84%e7%a0%b4%e5%86%b0/?variant=zh-tw
文章評論