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

三年前,咱們踏上了一段充滿傳奇和冒險的旅程,咱們開始打造一個全新的區塊鏈平臺,一個做爲開發者的咱們,自身就很是喜歡而且但願能夠長久依賴的區塊鏈平臺。在這個基礎上,咱們開始精心打造 Nervos CKB 的根基:html

  • 安全性:讓 CKB 來守護人們的資產時,人們能放心嗎?
  • 穩定性:在將來幾十年裏,人們是否還能穩定的使用 CKB?
  • 性能:在知足前面兩個目標的前提下,人們可否相信 CKB 能夠提供最佳的性能?

咱們很是努力地解決全部這些問題,咱們堅信 Nervos CKB 已經爲這些問題提供了充分的答案。然而,這個謎題仍然沒有徹底解開,要想讓 CKB 變得更加優秀,還缺乏很是重要的一環:前端

👇👇👇git

開發者體驗github

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

確實會有一些方面有助於提高開發者體驗,但咱們並無優先將其歸入其中,由於咱們認爲加入這些額外的特性可能會傷害到咱們上面提到的三個根基。爲了彌補這些功能的缺失,咱們正在經過構建額外的 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

1594109129264312.jpg

咱們旅程的第一步是從智能合約開始的,也就是 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... 使用起來很是有趣,但底層的 Linux 系統的正確調用可能會至關複雜。在咱們看來,這又是一個展示抽象化力量的案例。

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

Lumos

1594109129367417.jpg

智能合約只是挑戰的一部分。因爲某些緣由,如 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/nervosnetw...。有了這個通用庫,你能夠自由地集成任何你想集成的帳戶層。咱們很想見證的一個使人興奮的將來是,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 上嘗試更多的想法,開發更多的工具,咱們真誠地但願在將來與你們分享。

相關文章
相關標籤/搜索