一個關於抽象的故事:尋求更好的 CKB 開發工具

三年前,我們踏上了一段充滿傳奇和冒險的旅程,我們開始打造一個全新的區塊鏈平臺,一個作爲開發者的我們,自身就非常喜歡並且希望可以長久依賴的區塊鏈平臺。在這個基礎上,我們開始精心打造 Nervos CKB 的根基:

安全性: 讓 CKB 來守護人們的資產時,人們能放心嗎?

穩定性: 在未來幾十年裏,人們是否還能穩定的使用 CKB?

性能: 在滿足前面兩個目標的前提下,人們能否相信 CKB 可以提供最佳的性能?

我們非常努力地解決所有這些問題,我們堅信 Nervos CKB 已經爲這些問題提供了充分的答案。然而,這個謎題仍然沒有完全解開,要想讓 CKB 變得更加優秀,還缺少非常重要的一環:

👇👇👇

開發者體驗

與其它解決方案不同,大家可能會注意到,開發者體驗並不是我們一開始就試圖解決的問題。這並不意味着我們不關心開發者體驗。恰恰相反,我們認爲開發者是整個 Nervos 生態系統中最基礎、最關鍵的部分。這裏的矛盾點來自於我們對軟件抽象的信念。我們認爲 Nervos CKB 最核心的部分應該優先考慮安全性、穩定性和性能。

確實會有一些方面有助於提升開發者體驗,但我們並沒有優先將其納入其中,因爲我們認爲加入這些額外的特性可能會傷害到我們上面提到的三個根基。爲了彌補這些功能的缺失,我們正在通過構建額外的 Layer 和工具,來增添更多的 Nervos CKB 開發故事。自去年 11 月 Nervos CKB 主網上線以來,這一直是 Nervos 團隊最主要的關注點。

在計算機行業中,我們並不是唯一走這條路的人。以我們最喜愛的 CPU 爲例,現代的 CPU 只運行復雜的彙編代碼,我們沒有聽到有人說渴望出現可以運行 Rust 或 JavaScript 的 CPU。相反,我們構建了編譯器和虛擬機,它們將更高級的語言轉換爲經過精心調優的彙編代碼,然後運行在我們的 CPU 上。正是有了這樣的軟件抽象,我們纔有機會構建一個完整的計算機輔助世界。我們設想未來的區塊鏈基礎設施將使用完全相同的體系結構:核心層專注於做好基礎,而周圍的圈層則爲開發者提供援助。

我們向所有在 CKB 上線後立即嘗試 CKB 的開發者們致敬,儘管當時只有一些早期的工具可供使用。這些先驅們付出了巨大的努力以在 Nervos CKB 之上構建 demo 和應用,向全世界展示了 Nervos CKB 的獨特力量。 我們也感到謙卑和慚愧,因爲我們沒有給這些騎士們配備像樣的盔甲和武器。因此,能夠在這裏爲所有的開發者介紹 Nervos 團隊的一些最新工作,確實是一種榮耀和榮幸:

我們推出了三款新工具 Capsule、Lumos 和 Polyjuice,來爲 CKB 上的開發者提供最大賦能,以幫助其在 Nervos CKB 上構建更精彩的 dApp。

Capsule:
https://github.com/nervosnetwork/capsule

Lumos:
https://github.com/nervosnetwork/lumos

Polyjuice:
https://github.com/nervosnetwork/polyjuice

Capsule

我們旅程的第一步是從智能合約開始的,也就是 CKB 術語中的腳本。如果你一直在關注我們的進展,你會知道現在 CKB 上的大部分腳本都是用普通的 C 語言編寫的。這並不是因爲我們覺得 C 語言是一種適合於所有人的智能合約語言,而僅僅是因爲我們仍然還在工具方面努力地追趕着進度。在早期,當我們需要一種方法來構建腳本時,C 語言是對於我們來說唯一切實可行的解決方案。我們在編寫 C 代碼時非常謹慎,儘管我們是這個平臺的創建者。但是我們限制了外部庫和新功能的使用。你可以從我們現在正在使用的腳本中觀察到這一點,它們只是模擬了用於嵌入式設備中的 C 語言程序。

但我們明白這對很多人來說並不是一個理想的解決方案,如果我們宣傳說用 C 語言來構建腳本,那麼我們可能永遠無法贏得智能合約開發者們的信任。現代高級智能合約的構建已經非常複雜,更何況 C 語言還自帶包袱。我們希望爲開發者提供所有最先進的語言特性和工具來幫助 CKB 腳本的開發。

爲了解決這個問題,我們創建了 Capsule。Capsule 的核心是提供了一個使用 Rust 編程語言來構建 CKB 腳本的解決方案。 Rust 是一種旨在讓每個人都能構建可靠和高效軟件的語言。久經考驗的類型系統和所有權模型、每天發明新事物的健康社區,以及區塊鏈行業的廣泛使用,這些都使 Rust 成爲在 CKB 上構建腳本的完美通用語言。Capsule 結合了 Rust 工具,爲 Nervos CKB 構建基於 Rust 的腳本提供了無縫體驗。

在語言方面,Capsule 還提供了抽象(以 Rust 庫的形式)來幫助構建 CKB 腳本。 核心 CKB 只提供與 CKB 通信絕對必要的系統調用(syscalls ),這意味着它在使用時可能會略顯麻煩。除此之外,Capsule 還提供了抽象來簡化與 CKB 區塊鏈的通信。這裏有一個示例,雖然 Rust 中的 File (https://doc.rust-lang.org/std/fs/struct.File.html) 使用起來非常有趣,但底層的 Linux 系統的正確調用可能會相當複雜。在我們看來,這又是一個展現抽象化力量的案例。

Capsule 也不會止步於此,它的目標是管理 CKB 腳本的整個生命週期,幫助你開發、構建、測試、調試以及部署腳本。 就像它的名字所暗示的那樣,Capsule 用一個極小的外殼包裝了一個非常大的宇宙。 我們確實設想了一個世界,在這個世界裏,Capsule 是一個從零到成功運行在 CKB 主網上的腳本所需要的全部。

Lumos

智能合約只是挑戰的一部分。由於某些原因,如 QoS 需求或爲了更好地應對不同的用例,我們通常需要在區塊鏈之上構建一個後端服務,並由其負責處理用戶的請求。Nervos CKB 在這方面也不例外。事實上,由於我們抽象的設計理念,CKB 比其它大多數區塊鏈更需要上層。正是有了這個上層,開發者可以更快捷更容易地構建出完美的 dApps。

Lumos 就是在這種需求下誕生的。在 CKB 之上設計的 Lumos 提供了一個基於 JavaScript/TypeScript 的框架,這可以大大地加快 dApp 的開發速度。 Lumos 這個名字也揭示出了這個項目的意義:

CKB 的仙境雖然廣袤而肥沃,但目前大部分地區仍然是黑暗的,Lumos 熒光閃爍,試圖照亮這片土地,引導越來越多的人們走進這個美麗新世界。

在初始版本中,Lumos 包含以下組件:

  • 一個高性能的 cell 索引器,它從 CKB 節點收集區塊並進行索引,然後提供一個最佳的方式來請求訪問 cell 。
  • 一個處理所有待確認交易的交易管理器,並使其輸出的 cell 在交易確認之前就可以使用,這避免了在創建下一個交易之前需要在鏈上接受之前的交易所造成的問題。
  • 一個統一的配置管理器(config manager),處理框架與不同鏈的連接細節,如 Mainnet、Testnet、Devnet 等。它還可以跟蹤鏈上部署的腳本,以簡化交易構建工作。
  • 一個統一的工作流程,用於構建包含許多不同交互腳本的交易。我們相信這個新設計的工作流可以完美地抓住 dApp 開發者與腳本開發者的不同需求。詳細的工作流程請參閱文檔網站。
  • 內置支持目前所有常見的腳本。

這只是對 Lumos 所有可能性的一個提前速覽。初始版本提供了構建的基礎,但絕不是完整的。我們邀請大家加入我們的開發圈子,試用 Lumos(還有 Capsule),告訴我們你的使用體驗。只有得到了反饋和批評,我們才能真正地構建出適合 Nervos CKB 世界需求的抽象和工具。

Polyjuice

Nervos CKB 建立在 cell 模型的基礎上,cell 模型是 UTXO 模型的一個通用版本。區塊鏈界似乎有一種觀點,認爲人們在 UTXO 模型上很難進行編程,而賬戶模型對於開發者來說則相對容易。雖然 cell 模型是 UTXO 模型的演變,但是完全有可能在 cell 模型之上構建一個帳戶模型。這裏的祕密還是在於抽象。在較低層次上,UTXO 式的設計可以幫助實現並行性,而在較高的級別上,抽象層可以向普通開發人員展示成一個帳戶模型。

作爲工程師,我們都知道一句名言:Talk is cheap, Show me the code。遵循這一原則,我們設計並構建了 Polyjuice,這是在 Nervos CKB 之上的一個 Ethereum 兼容層。直到今天,Ethereum 可能是最常用、最靈活的基於賬戶模型的區塊鏈。通過 Polyjuice,我們想展示的是,在 Nervos CKB 上使用賬戶模型是完全可能的。這裏的靈活性事實上可以帶來無數的機會。

爲了讓事情更加有趣,我們並沒有構建一個只爲 Ethereum 量身定做的賬戶層,我們從 Polyjuice 中提取了核心賬戶層(https://github.com/nervosnetwork/ckb-simple-account-layer)。有了這個通用庫,你可以自由地集成任何你想集成的賬戶層。我們很想見證的一個令人興奮的未來是,Libra (https://libra.org/en-US/) 的精確編程模型也可能被移植到 CKB 上,從而實現一個非常繁榮富饒的生態系統。

全新的文檔

隨着所有這些激動人心的項目逐漸出現,我們的舊文檔網站(https://docs.nervos.org/) 已經漸漸地顯示出它的年代滄桑感。所以我們也對文檔網站進行了翻新:

👇👇👇

http://docs-new.nervos.org

新的網站分爲幾個部分,旨在幫助你迅速找到你所需要的東西:

  • 基礎: 這是一個起點,如果你只是想了解 CKB,那麼它將會指導你下載和運行 CKB,如何連接到 Mainnet 或 Testnet,如何創建一個新的開發鏈,以及如何挖礦以進行開發。它還將告訴你如何通過衆多工具與 CKB 進行交互,例如 ckb-cli。
  • 參考: 對於開發者來說,這或許可以作爲一本字典。想了解一個腳本如何運行?我們會有一個參考文檔。想知道一個 cell 裏有哪些組件可用?我們幫你搞定了!想了解整個交易驗證流程嗎?你來對地方了!我們會確保這個參考文件涵蓋了你想知道的關於 CKB 的所有細節。
  • 實驗室: 僅依靠參考文檔並不能提供太多幫助。有的時候,你會想動手開始玩東西。在本節中,我們將給你詳盡的步驟,來告訴你如何用 CKB 構建一些東西。無論你是想構建一個新的 CKB 腳本,還是寫一個與 CKB 交互的 dApp,我們都會有各種實際的實驗室來涵蓋這些操作。
  • 整合: 外部錢包或交易所在將 CKB 整合到他們的系統中時,通常會面臨獨特而不同的挑戰。本節會提供將 CKB 集成到現有服務(如錢包或交易所)的指南和技巧。
  • 文章: 之前,我們的開發人員一直有在寫一些關於 CKB 的不同文章。在這裏,我們也爲開發者提供了一個可以寫文章的空間。無論是關於 CKB 腳本的調試,還是序列化格式,甚至是 RPC 的最佳實踐,我們都希望這裏可以成爲一個讓大家自在分享自己見解的地方。

最後,我們希望這個全新的文檔網站能夠回答您關於 Nervos CKB 的所有問題。

未 來

我們相信,CKB 有潛力發展成一個繁榮的生態系統。這裏所展示的項目,只是 Nervos CKB 所支持的許多新想法和新模式的一個縮影。我們希望這些項目能夠提高您在構建 CKB dApp 時的效率,並激發出只有 Nervos CKB 才能實現的新方向。也就是說,我們已經放眼未來,一些更有前景的項目也正在建設中:

  • 在區塊鏈領域,人們開始越來越多地應用 WebAssembly (https://webassembly.org/ )。雖然我們認爲 RISC-V 更適合 Nervos CKB,但這並不意味着我們不能提供一流的 WebAssembly 支持。我們現在正在構建一個項目,可以將任何 WASI (https://wasi.dev/) 支持的 WebAssembly 程序編譯成 CKB 腳本。除了新的編程語言支持,比如 AssemblyScript (https://assemblyscript.org/ ),我們相信這也可以開啓新的潛力,比如跨鏈的互操作性。
  • 上面我們已經演示了 CKB 上的通用語言支持,但是我們的旅程並沒有結束。在 CKB VM 模型的深處,還埋藏着一些只有通過定製設計的編程語言才能顯現出來的潛力。本着這種精神,我們也在研究在 CKB 上創建針對特殊用途語言的腳本開發的可能性。這些嘗試一旦準備就緒,就會釋放出更多由 CKB 獨特設計所激發出的能量。
  • 目前發佈的項目主要是爲了滿足後端開發者的需求。也有許多前端或應用程序開發者同樣渴望加入 CKB 的仙境。我們也在努力提供 nocode (https://www.nocode.tech/) 工具,讓那些有好奇心的人能夠在 Nervos CKB 上構建一個完整的 dApp 體驗。

我們相信,CKB 的潛力是無限的。除了上面提到的這些之外,我們還在 CKB 上嘗試更多的想法,開發更多的工具,我們真誠地希望在未來與大家分享。

// 如果你喜歡 Nervos 並且喜歡開發
// 你可以關注並私信我哦~
if (you like Nervos && you like dev) {
   
	println("you can follow me and private letter for me~");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章