Nervos 計劃今年對 CKB 進行第一次硬分叉,發佈基礎輕客戶端,並開發基於 CKB 的 Layer 2 Rollup 框架。

原文標題:《Nervos 2021 年技術路線圖》
撰文:謝晗劍(Jan Xie),Nervos 首席架構師,祕猿科技首席執行官,前以太坊核心研發團隊成員

有時候人們會很疑惑,爲什麼在 Nervos 網站上找不到名字華麗的里程碑,而只有一個「2020 年路線圖」?於是懷疑 Nervos 是不是真的有長遠的計劃,甚至懷疑在 2020 年後團隊是不是會「把項目還給社區」?事實恰恰相反。我們相信 2019 年 Nervos 主網上線只是一個漫長旅程的開始,我們已經做好了充足的準備。

想出一些很酷的里程碑名字很容易,但是如果這些里程碑在幾年後仍然有意義的話,那麼要跟上它們的步伐就很難了。提前計劃好一切,朝着一個固定的目標努力(軟件工程中所謂的瀑布模型),在不斷變化的環境中是行不通的。而在加密領域中,這是 200% 的真理。每天我們都能看到新想法的出現,新項目的推出,每天我們都會互相學習,任何計劃在 3 個月後就會過時(也許我誇張了一點,可能是 6 個月)。那麼,今天爲 2077 年設立里程碑的目的又是什麼呢?有人說過:「模糊的正確勝過精確的錯誤。」

所以我們用了另外一種方式,我們稱之爲 Nervos 之道。Nervos 是一個運行在許多協議之上的網絡,它不是一個單一的區塊鏈。我們對使用區塊鏈技術後的世界有一個大致的想法,我們希望確保 Nervos 協議棧能夠支持這一願景。我們把最重要的東西保留在 Layer 1,使它成爲穩定和安全的最小基礎,把其他的東西留給 Layer 2 或更高的層。這種分層爲 Nervos 帶來了極大的靈活性,因爲在 Layer 2 上更容易嘗試各種想法和探索不同的方向。這意味着,隨着我們對未來了解的越來越多,Nervos 可以與整個行業一起發展。

我們一個大致的長期目標是在 2024 年之前能夠完成 Nervos 協議棧的全部設計和實現。根據我們的估計,Layer 1 和 Layer 2 的設計空間很有可能會在 2024 年之前穩定化,我們可以確信自己在 Nervos 協議中不會遺漏任何東西;2024 年也是 CKB 第一個四年減半後的第一年,與之相匹配的感覺很好。2024 年的目標雖然雄心勃勃,但如果我們足夠大膽地享受「四年衝刺」,這還是可以實現的。在 2024 年之前,在我們專注於短期任務的同時,我們會不斷地去看別人的做法,並從新的事物中學習,相應地調整我們的計劃。每年年初,我們都會根據去年的經驗來規劃下一年的計劃,並向 2024 年的目標前進。通過這種方式,我們可以讓自己和 Nervos 保持靈活,更能適應不斷變化的未來。

接下來,是時候規劃 Nervos 2021 的技術路線圖了。

Layer 1:CKB

第一個硬分叉

進化意味着變化,有時甚至是徹底的改變。硬分叉是給 Layer 1 帶來突破性改變的一種直接方式,我們計劃在 2021 年對 CKB 進行第一次硬分叉,包括 Nervos RFC 提出的升級。這些建議可以讓我們能夠以很多不同的方式改進 CKB:

  • 官方的 RISC-V B 擴展 將會被引入 CKB VM,因此可以提供更高效的加密算法實現。

  • Flyclient 支持。Flyclient 是 PoW 區塊鏈的一種快速驗證方法。啓用 Flyclient 後,輕客戶端可以在幾秒內同步到正確的 tip 區塊。Flyclient 需要修改區塊頭結構,同樣的修改也有利於其他區塊鏈上的 CKB 交易的跨鏈驗證。

  • CKB VM 將引入一個新的概念,macro-op fusion。在一個更高的視角來看 macro-op fusion,就是當人們一起使用某些 RISC-V 指令時,CPU 能夠以更高效的方式一起執行它們。因此,CKB VM 將減少形成 macro-op fusion 指令模式的 cycle。請注意,現代編譯器已經廣泛地利用 macro-op fusion,所以你可能注意到的唯一結果,是 CKB VM 對智能合約收取的 cycle 比硬分叉前更少。關於 RISC-V 中 macro-op fusion 的更詳細介紹,請參考 這裏

  • 以更乾淨的方式重新修復 CKB VM 中的 Bug。這些 Bug 目前已在主網上用臨時解決方案修復。

  • 調整區塊 / 交易版本和 CKB VM 的規則,使未來的軟分叉更加容易。

  • 在交易中可以進行多個 dep 匹配。CKB Cell 使用數據哈希或類型腳本哈希來間接匹配腳本二進制。存儲二進制文件的 Cell 必須通過 Cell dep 添加。目前不可以在 CKB Cell dep 中進行多次匹配,以避免歧義。然而,如果同一個 Cell 在 Cell deps 中出現多次,通常通過 dep 組就可以安全地繞過這個錯誤。

  • 簡化交易輸入的 since 規則。

CKB VM 變化背後的一個主要原因(除了 Bug 修復)是減少開銷。CKB VM 已經是本地 CPU 上的一個薄抽象層。有了硬分叉,我們確實想把抽象層做得更薄:RISC-V B 擴展讓我們可以直接將 RISC-V 指令映射到 x86-64 cpu 提供的本地指令上,而 macro-op fusion 則更深入地利用了我們 CPU 中的現代微架構。所有的這些努力都是爲了讓加密算法能夠更有效地在 CKB VM 上運行,從而解鎖更多 Nervos CKB 的潛在用例。

協調硬分叉從來都不是一件容易的事情。我們會盡最大努力與社區進行充分溝通,確保穩定而優雅的升級。

輕客戶端

雖然我們花了很多精力來降低全節點運行的門檻,但同步整個鏈所需的時間、網絡帶寬和磁盤存儲量還是會隨着鏈的長度而線性增長。全節點爲我們提供了一個無需信任的選擇,但是這種安全級別對一些用戶來說可能太高了。如果能有一個更平衡的選擇來滿足日常使用,那就再好不過了。輕客戶端正是爲這樣的需求創建的。輕客戶端可以讓用戶用最少的帶寬和存儲與 CKB 進行交互,它還可以幫助 Nervos dApp 在更多的平臺上運行,比如移動設備。

去年我們已經測試了一個基礎的輕客戶端協議設計。2021 年,我們會完成這項工作,併發布版本。我們會構建工具並與 Neuron 整合。基礎輕協議仍然會下載所有的區塊頭,如果我們成功地將 Flyclient 添加到硬分叉中,並切換到更高級的輕協議裏,這可能會大大減少同步時間、網絡帶寬和磁盤存儲量。

Layer 2

Godwoken & Polyjuice

Godwoken 是一個基於 Nervos CKB 的 Layer 2 Rollup 框架。它爲 CKB 提供了擴展能力,以及基於賬戶的編程模型。

搭配着 Godwoken,Polyjuice 在 Nervos CKB 上提供了一個 Ethereum 兼容層。它利用 Godwoken 提供的賬戶模型以及可擴展性,然後集成 evmone 作爲運行 Ethereum 智能合約的 EVM 引擎。Polyjuice 的目標是 100% 兼容 EVM,這意味着我們計劃支持以太坊最新硬分叉版本所支持的所有智能合約。

Godwoken 與 Polyjuice 都已經部署到 Nervos CKB 的測試網環境中。2021 年,在 Godwoken/Polyjuice 通過審計之後,我們會將它們部署到 Nervos CKB 主網中。除此之外,我們還將引入更多的增強功能到 Godwoken 中:

  • Godwoken 目前使用 Proof-of-Authority 來簡化設計,但它並不僅侷限於此。2021 年,我們將會研究更去中心化的 Proof-of-Stake 模型,以及 Zero-Knowledge Rollup。

  • 將引入擴展功能,如 BLS 簽名集成,以實現更高的吞吐量。

  • Polyjuice 提供了第一個但不是最後一個編程模型。我們正在尋找下一個在 Godwoken 中支持的編程模型,例如 Diem,如果在 2021 年找到的話,我們會將其與 Godwoken 整合。支持的編程模型越多,就有越多的 dApp 和開發者可以在 Nervos 和其他區塊鏈之間遷移,這是互操作性 2.0 的支柱之一。

Axon

Axon 是一個基於鏈的 Layer 2 協議。它不是 Rollup,因爲它沒有使用 CKB 作爲數據可用性層。在 Axon 中數據可能不可用,我們希望用不同的假設和設計來解決這個問題。我們之前也做過幾輪 Axon 協議設計,但直到去年纔有了令人滿意的結果。經過了 2019 年和 2020 年,我們從合作伙伴那裏瞭解到了更多的真實需求和痛點,我們相信這些經驗會幫助我們做出正確的取捨,併爲 Axon 帶來更好的安全模型、治理模型和代幣經濟學。目前,我們仍然還在研究協議。希望我們可以在 2021 年完成設計並將其轉譯成代碼。

支付通道網絡

通道網絡是 Layer 2 原生代幣的另一面(與基於鏈的協議相比)。2020 年,我們從通用的支付通道(GPC)開始研究,探討了 HTLC 的通道同步UDT 的支持、監視塔(watch towers)、付款的路由問題和拆分付款等話題。我們建立了一個原型來測試這些想法,並在去年進行了多次設計迭代。原型和討論表明,CKB 上的支付通道網絡不僅是可能的,而且比比特幣和以太坊上的支付通道網絡更加強大。通用支付通道的可組合性意味着可以在 CKB 上毫不費力地對 UDT 進行「通道化」!UDT 不僅是 Layer 1 上作爲「一等公民」的資產,也是 Layer 2 上的「一等公民」資產,因爲它們可以在各層之間流入和流出,且無需進行任何修改。這就給支付通道網絡帶來了最大的流動性,因爲 Layer 1 的所有資產都可以毫無摩擦地加入 Layer 2 的資金池中。

我相信,一個支持 UDT 的支付通道網絡將創造出前所未有的新應用案例。伴隨其巨大潛力的是通道網絡的高度複雜性,希望我們能在 2021 年完成初步的設計,並在主網上建立起一個小型但可用的支付通道網絡。

xUDT

如果說 sUDT 是「Nervos 上的 ERC 20 代幣」,那麼 xUDT 將會是沒有同類競品的東西,因爲它具有強大的可擴展性。xUDT (可擴展的 UDT)擴展了 sUDT,爲 UDT 可能需要的額外行爲提供了空間,例如合規性要求和治理。xUDT 更像是可擴展的框架,就像 Chrome 瀏覽器一樣,我們可以爲其創建各類擴展。xUDT 本身並未指定或實現任何具體的 UDT 行爲。當你想創建一個新的 UDT 時,這些擴展可以以一種靈活的方式組合和使用。與 sUDT 一樣,我們將提供一個 xUDT RFC,審覈通過後默認部署在主網和測試網上。

工具

CKB 與現有的智能合約區塊鏈有着根本性的不同,因此它遇到了每個新平臺都會遇到的共同問題:缺乏工具。這也是爲什麼我們在 2020 年初致力於開發工具,並日以繼夜地進行工作的原因。隨着各類 CKB SDK、ckb-indexer、ckb-x64-simulator、lumos、Capsule、animagus、mandrake 等一系列工具的發佈,開發應用的門檻降低了很多,我們可以看到有很多開發者已經開始使用這些工具在 Nervos 上搭建應用了。2021 年,我們會繼續改進現有的工具,並給大家帶來一些新的工具。

Tippy

Tippy 是 Nervos CKB 上一套完整的 dApp 開發套件。它旨在提供所有在 CKB dApp 開發中能派上用場的工具。Tippy 的功能列表,包括:

  • 一鍵啓動一條新的 CKB 區塊鏈。你還可以調整區塊鏈參數,甚至可以將當前的主網 / 測試網區塊鏈分叉成本地的區塊鏈。

  • 區塊的挖礦速度任由你調節。你可以挖 3 個區塊,回滾 2 個區塊,然後再挖 1 個區塊。你也可以通知 Tippy 使用 3 秒的時間間隔後再挖 10 個區塊,甚至你還可以控制每個區塊中的交易,例如你可以讓 Tippy 向 CKB 提交一筆交易,但絕不上鍊。

  • 內置迷你的 CKB 瀏覽器,以改善開發者的體驗。它將爲開發者提供更多便捷的功能,包括交易可視化、查找腳本 / 數據哈希、即時的 cell capacity 使用情況、簽名消息計算等等。

  • 內置交易調試器,所有失敗的交易都會被收集起來。你可以在任何時候啓動任何一筆交易的調試器,所有被調試的交易的二進制文件都可以轉換成符合調試信息的文件。

  • 一個可以通過編程的方式啓動所有上述功能的 API 層,這意味着 Tippy 不僅是你調試的好朋友,也是你構建集成測試的朋友。

Tippy 的第一個穩定版本計劃於 2021 年第一季度末發佈。2021 年,我們將繼續完善 Tippy,爲開發者提供更好的體驗。

aML

aML 是一種新的編程語言,用於編寫 Nervos CKB 的智能合約。aML 這個名字是「aML is a ML」的遞歸縮寫。儘管 aML 提供了一種現代編程語言,具有許多便捷功能(靜態類型、模式匹配、垃圾收集器以簡化內存管理),但其中有一個功能在智能合約的編程中特別有用——形式驗證:不僅該語言在設計時內置了一流的、最先進的、源代碼級的形式驗證,而且從 aML 到 CKB VM 中使用的 RISC-V 彙編的整個編譯器也是經過形式驗證的。這種獨特的設計讓 aML 從我們今天所使用的大多數其他編程語言中脫穎而出,包括 C、Rust、JavaScript 等。我們希望這個完全經過形式驗證的語言,包括經過形式驗證的編譯器,能夠幫助並確保 CKB 智能合約的最大安全性。

我們計劃在 2021 年發佈 aML 的初始版本供大家使用。

密碼學原語

CKB VM 有別於其他區塊鏈虛擬機的一個獨特之處,就是能夠提供靈活的密碼學原語支持。截至 2021 年 1 月,我們還沒有看到第二個能以智能合約的形式、支持靈活的密碼學原語的區塊鏈虛擬機。2021 年,我們將繼續在這方面努力,希望將更多的密碼學原語帶入 CKB 的世界中:

  • 有效實現橢圓曲線 alt_bn128。有了這個,Polyjuice 將能實現與以太坊的完全兼容。其他利用該曲線的應用也可以從中受益。

  • 實現 BLS 簽名。不僅 Godwoken 能夠利用 BLS 簽名實現提速,而且其它有聚合簽名需求的應用也可以從這個實現中受益。

  • 這裏也考慮了其他密碼學原語。例如,我們將研究把完整的零知識證明算法引入 CKB VM 的可能性,以實現更多的使用案例。一旦形成更加詳細的計劃,我們將會對外分享。

互操作性 2.0

Force Bridge

Force bridge 是一個通用的跨鏈框架,促進區塊鏈之間的資產轉移。在這個框架之上搭建的第一個橋是 CKB-ETH 橋,它支持 CKByte、ETH、sUDT 和 ERC-20 資產在 CKB 和以太坊之間的轉移。最新版本部署在 Aggron 和 Rinkby 測試網上,並提供了一個 GliaDEX 演示,展示了互操作性 2.0 的能力。

2021 年,我們將在主網上審覈並部署 CKB-ETH 橋。之後有兩個方向可以走:

  • 在 CKB 和 Ethereum 上完成 SPV 頭驗證智能合約,讓 CKB-ETH 橋更加去中心化。

  • 在 CKB 和其他區塊鏈之間搭建新的橋樑。

我們會先選擇第二個方向,因爲半無需信任的橋對於目前大多數用例來說已經足夠安全了,而新的橋會爲 Nervos dApp 和用戶帶來更多的資產。我們也希望在硬分叉後保持第一個方向,這樣如果區塊頭結構發生改變,我們就不會浪費精力。最初的計劃是爲比特幣、EOS、TRON 和 Polkadot 建立新的橋樑。

Gliaswap

2021 年,隨着 Force Bridge、Godwoken/Polyjuice 和 pw-lock 的成熟,互操作性 2.0 的夢想將比以往的任何時候都要更加接近。

我們已經在測試網上展示了 GliaDEX,一個訂單簿模式的 demo。接下來的 Gliaswap,它不僅僅是一個 demo。Gliaswap 是 Nervos 上開源的、採用 AMM 模式的 DEX 模板。它也是一個完整的、準備就緒的 DEX 實現,包括鏈上智能合約和鏈下組件。它默認提供一個易於部署的 vanilla AMM,可作爲更復雜的 DEX 的基礎。它具有和你在 GliaDEX 演示中看到的相同的互操作性,並且它提供了更好的流動性,因爲任何用戶都可以向其流動性池貢獻流動性。任何達到基礎技術水平的人都能夠在 Nervos 上部署他 / 她自己的 AMM,任何編程技能合格的團隊都能夠分叉並構建自己的 AMM 版本。

作爲一個模板項目,我們希望 Gliaswap 不僅能展示如何在 Nervos 上構建 DEX,還能啓發開發者如何在 Nervos 上構建互操作性 2.0 的 dApp,或者是 Uniapp。**目前 Gliaswap 的開發工作進展順利,預計將在幾個月內完成。

展望未來

希望你能喜歡 Nervos 2021 年的技術路線圖!加密世界瞬息萬變,在如此多變的環境中,通常很難找到正確的道路,我很高興我們找到了一條,而且時間正在證明這條道路的價值:

當每個人都在談論 PoS 時,我們擁抱了 PoW;

當每個人都在追捧分片技術時,我們選擇了二層網絡;

當你只能找到賬戶模型的時候,我們探索並擴展了 UTXO 模型。

我們讓 RISC-V 在區塊鏈虛擬機領域成爲 EVM 和 WebAssembly 的有力競爭者。這些選擇給我們帶來了互操作性 2.0,並且還將會有更多激動人心的事情發生。花園裏無人行走的小路,雖然充滿了荊棘,但也充滿了神奇的景色,我們滿懷信心。讓我們盡情地沿着自己的道路狂奔吧,酷的像風,野的像狗。

最後,非常感謝 Ian (CKB)、雪潔(CKB VM、工具)和 Wenchao (Force Bridge)在相關章節的貢獻。