一个关于抽象的故事:寻求更好的 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 上尝试更多的想法,开发更多的工具,咱们真诚地但愿在将来与你们分享。

相关文章
相关标签/搜索