5 月 16 日,由杭州市金融辦指導,巴比特主辦的 2019 杭州區塊鏈週上,Nervos COO 呂國寧(Daniel)做了《Nervos CKB 下一代區塊鏈底層基礎設施》的主題分享。

原文標題:《下一代區塊鏈底層基礎設施是什麼樣的?》
分享:呂國寧,Nervos COO

Daniel 表示:公鏈未來的發展只有兩個方向,一個是鏈上擴容,另一個是鏈外擴容。鏈上擴容是要做一條更強的鏈,但不可避免的要在一條鏈上做權衡和取捨。區塊鏈的核心價值是提供信任,而它的未來一定是分層,需要由不同的層次解決不同的問題,在鏈上獲得信任,通過鏈外獲得更高的性能,最後以整體的方式達到最優的效果。以下是來自現場演講的內容精編。

鏈上擴容 or 鏈外擴容?

2017 年至 2018 年出現了一波公鏈熱潮,這些公鏈的技術紛繁複雜,但如果我們從更高的角度收斂來看,公鏈未來的發展只有兩個方向,一個是鏈上擴容,另一個是鏈外擴容。

區塊鏈的價值邏輯:Layer 1 解決信任,Layer 2 搞定性能

1 鏈上擴容

鏈上擴容有這樣幾條路,第一條路是「更大的區塊」,BCH 就在做這件事;第二條路是「使用更快的共識算法」,因爲大家發現一條鏈性能不夠、TPS 太低,往往處理共識節點的增加會導致性能處理的瓶頸。

我們本着頭痛醫頭、腳痛醫腳的原則,當看到一個鏈裏的某地方存在性能瓶頸,我們就用一個更強的技術替代它。比如有人認爲區塊鏈是一個單線系統,於是就有了第三條路「並行計算-Sharding 技術」;還有人覺得第四條路 DAG 這種新的拓撲數據結構,比鏈式結構更適合處理海量的數據、海量的交易。

其實所有的鏈上擴容方案都在實現一個目標:做一條更強的鏈。但是每一種技術方案在具體實現的時候都面臨各種不同的取捨,每一種方案在帶來更好的性能提升的同時,都會在其他方面做出一些妥協。

例如 Sharding 實現複雜度的問題、一些共識算法或者擴容方案導致中心化的問題、DAG 理論和工程缺乏檢驗的問題等等。

2 鏈外擴容

我們看到現在產生了很多鏈外擴容方案,比如:閃電網絡、狀態通道、Plasma、Truebit 等等,但鏈外擴容也存在一個問題:打個比方,假如我們要買一個手機,賣家告訴我們在這個手機上,今天以前發佈的所有手機應用都能夠安裝和使用,但無法安裝和使用今天之後發佈的 APP,那麼我們還會購買這個手機嗎?

現在的二層擴容方案都可以在用戶體驗、TPS、性能上面切換自如,但最大的瓶頸來自於一層網絡的不支持。

如何讓一層網絡更好的支持它們呢?這可能需要通過一次次的硬分叉,而每做一次硬分叉,都需要通過漫長的社區共識,並且能夠做的升級和優化也只能是小部分。

區塊鏈的設計方法學

經過上述的思考,我們總結了一套自己的區塊鏈設計方法學,主要包含下面個方面。

區塊鏈的價值邏輯:Layer 1 解決信任,Layer 2 搞定性能

1 區塊鏈的核心價值是什麼?

我們認爲,區塊鏈的核心價值是 提供信任。基於這一點,我們可以得出一個衍生的推論:區塊鏈是通過全局共識的方式實現信任,而全局共識必然是一個很慢、很貴的東西。

「沒有共識算法能比沒有共識的共識算法更快。」這句話的意思是說分佈式、去中心化系統的共識,不可能做得比中心化的共識更快。所以,區塊鏈最應該考慮的是如何能夠把信任的價值發揮出來。

2 區塊鏈系統未來一定是分層

從架構的觀點來看,將一個系統的整體功能分層或分解,交給不同的功能層或是功能組件去處理,是一種優於將所有功能都耦合在一個單體中的設計模式。

我們認爲這個觀點也適用於區塊鏈,把網絡分成不同的層次,由不同層次解決不同問題,最後把這些層次系統合在一起,以整體的方式達到最大的效果。

3 考慮不同層次的需求

如果未來區塊鏈是一個分層網絡,那麼我們就需要思考,這個網絡中 每一個層次的角色

我們認爲,上層的核心角色是用來提供更高的性能,更好的用戶體驗,用它來解決實際場景的業務需求。而底層(我們稱之爲 Layer 1)需要做的是爲系統提供極致的安全性和去中心化,以保障上層應用的安全。

4 底層協議設計充分爲上層優化

當我們理清楚 Layer 1 和 Layer 2 之間的關係時,就需要重新審視我們在做底層設計的時候,該做哪些事情?

底層該做的事情,是在不犧牲安全性和去中心化的前提下,充分地爲上層做優化。

區塊鏈的價值邏輯:Layer 1 解決信任,Layer 2 搞定性能

在這張圖中,分割線之上的是 Layer 2,線下是 Layer 1,Layer 2 負責性能,Layer 1 專注於去中心化(Decentralization)和安全性(Security)。

也就是說,絕大部分的計算、存儲、網絡傳輸發生在 Layer 2,只有在 Layer 2 的運營節點作惡,產生信任問題時,用戶才需要與 Layer 1 交互,這時,Layer 1 就相當於提供仲裁的法院,由此保障 Layer 2 上協議的執行,充分地爲上層做優化。

Nervos CKB 的技術特點

基於這樣的思考,我們認爲 Layer 1 的底層需要做以下四件事:

區塊鏈的價值邏輯:Layer 1 解決信任,Layer 2 搞定性能

1 資產管理和存儲模型

首先,Layer 1 和 Layer 2 之間需要保證安全的傳遞。平臺不光要保證平臺自身 Token 的資產安全,同樣也需要讓用戶可以在平臺上發行自定義資產,並且保證用戶自定義資產的安全。

我們可以想一下,在以太坊上發行的 ERC-20 Token,誰會保證它的安全性?

其次,我們有必要支持用戶完成自定義功能。在設計底層賬戶模型的時候,應該以資產爲導向,只有這樣才能更好的把用戶的資產映射到上層網絡上做交易、做業務、做應用,最後也能更加容易的返回到底層做清算。

所以我們借鑑了 比特幣 UTXO 的設計思路,設計了具有獨特特點的 CKB 賬戶模型(Nervos Native Token 名稱爲 CKB)。

另外,除了發行資產、映射資產之外,當 Layer 2 的用戶需要把資產返回到底層進行網絡清算時,會提交相關的密碼學證據,這時就需要底層網絡對密碼學證據的數據具有存儲和驗證能力,所以 Layer 1 必須要做好資產管理和具備通用的存儲模型。

2 CKB-VM 虛擬機

所有的 區塊鏈都需要虛擬機。在設計或選用虛擬機時,我們需要想清楚區塊鏈的定位是什麼,是在應用層做一個高級語言支持的虛擬機,還是在底層做保護系統安全的虛擬機?

我們認爲 Layer 1 的虛擬機應該足夠安全、足夠靈活,並且具有很強運行期的透明性。這就需要保證在虛擬機裏執行的每一個指令,都能夠非常容易地計算出它的成本。

這一點對於底層的經濟模型非常重要,所以我們選用更底層的 RISC-V 硬件 CPU 指令集來實現 CKB 的虛擬機。簡單的說,我們的虛擬機就像一個硬件的 CPU 在運行。

3 NC-Max PoW 共識算法

爲了讓底層更加安全,我們使用的是 PoW 共識算法。最近,有很多人在討論 PoW 和 PoS 算法誰更安全,事實上,目前並沒有方法證明 PoS 算法比 PoW 更安全,但我們能確定的是,PoS 要比 PoW 更復雜,這種複雜性沒有辦法保證在理論的設計上和工程實現上都能做到安全。而 PoW 已經經過了生產環境長達十年時間的驗證。

但我們沒有因此止步,在保證安全的情況下,我們還需要壓榨出硬件的每一滴油水,讓性能有更大的提升。於是,我們提出了自己的共識算法:NC-Max。它會利用一個非常巧妙的方式壓榨帶寬的使用率,來提升算法效率,而 PoW 的算法歸根結底是確保帶寬如何高效被使用而不是被浪費。

4 經濟模型

當我們把網絡分爲 Layer 1 和 Layer 2 的時候,還需要考慮如何將上層產生的 價值捕獲 到底層,當這樣的價值被捕獲並沉澱的時候,它可以更有效的激勵網絡中的礦工得到更多的收益。當礦工得到更多的收益時,他們也會爲網絡帶來更多的資源以保證全網的安全性。而全網安全邊界提升時,實際上也能爲上層提供更好安全保護,這是 經濟模型設計的核心

經濟模型設計的核心並不僅僅是針對每一次共識的達成,更重要的是推動整個生態能夠朝着越來越繁榮的方向推進。

最後,分享一下我們 2019 年在做的事情,我們在 3 月 9 日發佈了 Nervos CKB 經濟模型設計提案,近期將發佈測試網,6 月份會發布 Nervos CKB 共識算法的 Paper,預計 Q4 主網絡上線,歡迎大家關注。