三年前,咱們踏上了一段充滿傳奇和冒險的旅程,咱們開始打造一個全新的區塊鏈平臺,一個做爲開發者的咱們,自身就很是喜歡而且但願能夠長久依賴的區塊鏈平臺。在這個基礎上,咱們開始精心打造 Nervos CKB 的根基:html
咱們很是努力地解決全部這些問題,咱們堅信 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。框架
Polyjuice:
https://github.com/nervosnetw...編程語言
咱們旅程的第一步是從智能合約開始的,也就是 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 主網上的腳本所須要的所有。
智能合約只是挑戰的一部分。因爲某些緣由,如 QoS 需求或爲了更好地應對不一樣的用例,咱們一般須要在區塊鏈之上構建一個後端服務,並由其負責處理用戶的請求。Nervos CKB 在這方面也不例外。事實上,因爲咱們抽象的設計理念,CKB 比其它大多數區塊鏈更須要上層。正是有了這個上層,開發者能夠更快捷更容易地構建出完美的 dApps。
Lumos 就是在這種需求下誕生的。在 CKB 之上設計的 Lumos 提供了一個基於 JavaScript/TypeScript 的框架,這能夠大大地加快 dApp 的開發速度。Lumos 這個名字也揭示出了這個項目的意義:
CKB 的仙境雖然廣袤而肥沃,但目前大部分地區仍然是黑暗的,Lumos 熒光閃爍,試圖照亮這片土地,引導愈來愈多的人們走進這個美麗新世界。
在初始版本中,Lumos 包含如下組件:
這只是對 Lumos 全部可能性的一個提早速覽。初始版本提供了構建的基礎,但毫不是完整的。咱們邀請你們加入咱們的開發圈子,試用 Lumos(還有 Capsule),告訴咱們你的使用體驗。只有獲得了反饋和批評,咱們才能真正地構建出適合 Nervos CKB 世界需求的抽象和工具。
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/) 已經漸漸地顯示出它的年代滄桑感。因此咱們也對文檔網站進行了翻新:
👇👇👇
新的網站分爲幾個部分,旨在幫助你迅速找到你所須要的東西:
最後,咱們但願這個全新的文檔網站可以回答您關於 Nervos CKB 的全部問題。
咱們相信,CKB 有潛力發展成一個繁榮的生態系統。這裏所展現的項目,只是 Nervos CKB 所支持的許多新想法和新模式的一個縮影。咱們但願這些項目可以提升您在構建 CKB dApp 時的效率,並激發出只有 Nervos CKB 才能實現的新方向。也就是說,咱們已經放眼將來,一些更有前景的項目也正在建設中:
咱們相信,CKB 的潛力是無限的。除了上面提到的這些以外,咱們還在 CKB 上嘗試更多的想法,開發更多的工具,咱們真誠地但願在將來與你們分享。