风险提示:防范以虚拟货币/区块链名义进行的非法集资风险。 ——银保监会等五部门

Nervos CKB将支持多语言编写智能合约

白话区块链 2019-12-19 13:05:42
微信分享

扫码分享

概述 2020 年 Nervos Network 关注的重点领域,虽然可能并不全面,但它所涵盖的三个方向对实现我们的长期目标至关重要,它们是:开发、研究以及社区。

作者:Nervos社区投稿 / 来源:Nervos 中文社区

多语言智能合约

“ 可以使用多种语言编程和编写智能合约。

我们计划构建多个使用高级语言或 DSL 的框架来促进 CKB 上智能合约的开发。

目前 C 是 CKB 上最主要的智能合约编写语言,因为 C 在 RISC-V 上的工具更加成熟。尽管如此,我们目前也支持使用 Ruby 和 JavaScript 来编写智能合约脚本,同时,我们还正在积极地寻找更适合编写智能合约的高级语言或者 DSL。我们将会通过两个不同的方向来解决这个问题:
 

  • 从底层来讲,我们将更好地支持用 Rust 编写的智能合约。相比于 C 语言,在实现类似性能水平时,Rust 将会提供更高的安全保证。此外,区块链开发者都在非常积极地拥抱 Rust,很多区块链密码学领域最新的发展都是基于 Rust 进行开发,比如新的零知识证明和新的椭圆曲线算法。通过在 CKB 上更好地支持 Rust,我们可以确保 CKB 能够拥抱区块链领域加密技术的发展,并为之做出贡献。

  • 从高层出发,我们也会研究高级语言,或者领域特定语言(DSL),为构建包含更多业务逻辑的智能合约提供便利。虽然用 Rust 或 C 编写的智能合约确实在类上提供了最佳的性能,但它们并不总是最容易的编程语言。虽然 Rust 确实比 C 前进了一大步,但有时候还是会非常麻烦,高级语言以及 DSL 可以完美地填补这一空白,并在牺牲一定性能的情况下,极大地加快了智能合约的发展速度。CKB 的设计方式,让我们完全可以先从高级语言开始,来获得更快的迭代速度,然后当性能问题凸显时,再切换到 Rust 或者 C 编写的智能合约,来获得更好的性能。

CKB-VM 优化

使虚拟机具有更高的性能和灵活性,以获得更好的用户体验并解锁新的潜在用例。

我们将重点实现 RISC-V 的扩展性(以及其他高价值的附加功能),并准备按照我们的发布计划进行内联部署(需要硬分叉),以及根据实际情况,当扩展规范达到稳定状态时进行部署

目前 CKB VM(虚拟机)已经是 RISC-V 标准规范的一个成熟实现。当然,在未来仍有提升的空间。一个方向是继续在 CKB VM 中榨干最后一点性能。目前,已部署的 CKB VM 版本在很大程度上受到 CPU 的分支预测器的限制。通过研究现代 CPU 架构和编译器技术,可以继续改进 CKB VM 的性能。

另一个正在探索的方向是:CKB VM 通过对核心 RV64IMC 模型的实现,可以提供与普通计算机同样的灵活性,同时,RISC-V 还提供了一定的扩展性,通过提供更多的功能来更好地运行应用程序,并使其运行地更快。其中一些有趣的扩展是:

  • V (https://github.com/riscv/riscv-v-spec)

    V 扩展提供向量扩展,可以用于支持一次多个大数的算术运算。有人可能会意识到,在区块链世界中,最近的趋势是将预编译的合约添加到区块链中,这样他们可以直接在本地代码中进行大量的添加,而不是在智能合约代码中进行加速。这种解决方案存在的一个问题是,添加的预编译合约将被限制在一个密码算法家族内。如果将来需要使用不同的原语来运行一个新的算法,那么将需要通过分叉来添加不同的预编译合约。然而,V 扩展在这里只定义了基础的灵活性操作。这意味着 CKB VM 将具有足够的灵活性,可以实现几乎任何带有 V 扩展的加密算法,同时还能确保具有最佳性能。

  • (https://github.com/riscv/riscv-bitmanip)

    另一方面 B 扩展提供了新的 bit-wise 操作,这也有益于加密算法。虽然原有的 RV64IMC 模型在引入 B 扩展之前,可以实现所有的新操作,但是从 B 扩展中提取这些常见的操作指令,可以提供更好的性能。例如,CLZ(count leading zero)在软浮点实现和位屏蔽操作中是非常常用的操作。在引入 B 扩展后,我们可以很容易地将这个新的指令映射到一个 x86_64 指令上,而在 RV64IMC 模型中实现相同的功能最少需要 10 条以上的指令 (https://github.com/riscv/riscv-gcc/issues/90)

注意,这里讨论的两个扩展都是 RISC-V 委员会支持的官方扩展。随着这些新扩展的引入,我们相信 CKB VM 将会成为一个能够支持新的加密算法和区块链智能合约新范式的完美平台

CKB 浏览器

深入 Nervos 网络的方方面面,充分利用数据和分析的力量。

CKB 浏览器 (explorer.nervos.org) 是一个同时适用于主链和测试链的区块数据浏览器。在 2020 年,我们将持续优化 CKB 浏览器的用户体验,并提供额外的功能,深层次地挖掘数据并进行分析。浏览器还将支持 UDT 标准,并提供一个专门的页面来查询 UDT 的 Token 总量,余额和转账交易记录。其他的高级功能也在考虑中,包括脚本源代码浏览器,公共测试网 RPC 服务以及统计数据导出等。

轻客户端协议

支持移动端钱包、网站等的自我验证,且无需信任第三方

目前运行一个 CKB 全节点 (https://docs.nervos.org/getting-started/run-node.html) 只需要一台普通的家用电脑即可,但是对于手机、浏览器端的应用程序和嵌入式设备来说,这仍然略显繁重。轻客户端协议可以让 CKB 上的共同知识被更广泛的用户使用,并为 CKB 提供无限可能。因为它会将大部分的验证都委托给全节点,从而节省计算和存储资源,所以运行一个轻客户端只需要较少的资源。CKB 选择的设计方式,比如 PoW 和交易结构,都为轻客户端协议的构建提供了良好的基础。

CKB 轻客户端可以被嵌入第三方软件中,实现任意软件与 Nervos CKB 的去信任交互。例如,一款支持 CKB 轻客户端协议的移动端钱包,可以让用户在其手机上确认 CKByte 或 UDT 交易,而无需信任第三方;支持 CKB 轻客户端扩展的浏览器,可以让用户验证网站的身份,反之亦然,网站也可以验证用户的身份;支持 CKB 轻客户端协议的电子邮件客户端,可以根据 CKB 链上的公钥验证 PGP 签名。


研 究

Layer 2 在研究和开发领域发展地非常迅速。2020 年,我们将在 3 个方向上进行探索:通道基于链的协议基于 zkp 的协议。我们正在积极地参与零知识证明协议的研究,并且在搭建基于 zkp 协议的原型及通道的原型。

白话区块链

区块链世界入口第一站,人人都能看懂的区块链;24 小时热点实时追踪。