三年前,咱们踏上了一段充满传奇和冒险的旅程,咱们开始打造一个全新的区块链平台,一个做为开发者的咱们,自身就很是喜欢而且但愿能够长久依赖的区块链平台。在这个基础上,咱们开始精心打造 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 上尝试更多的想法,开发更多的工具,咱们真诚地但愿在将来与你们分享。