资讯专栏INFORMATION COLUMN

不用 WASM,我们从头造轮子!采用 RISC-V 设计的区块链虚拟机 CKB-VM 诞生记

joywek / 1974人阅读

摘要:在区块链上,虚拟机就是智能合约的运行环境,是一个可以完全对外隔离的完整计算机体系。区块链通过虚拟机来调用和执行智能合约,并要求所有节点都达成一致。

秘猿科技使命是用技术创造信任,为价值网络提供基础设施和服务。为了实现这个使命,我们三年来坚持初心,步步为营打造加密经济网络。我们想要让互联网回归到本源,用区块链技术,去构造更美好的社会,因此我们设计了 CKB 底层公链。我们自己造轮子,开创性设计了独一无二的 CKB 模型,以及用 RISC-V 打造的 CKB-VM 虚拟机。本文就将谈谈 CKB-VM 虚拟机的诞生。

秘猿科技区块链小课堂第 22 期


区块链的出现使得智能合约得到了更好的实现和发展,而区块链和智能合约之间,还存在着一个重要的角色: 虚拟机(Virtual Machine) 。

虚拟机的概念在上个世纪六十年代就被提出来,而到九十年代才开始流行。当时的网络跨越了众多不同的操作系统、浏览器,如果开发者想要制作一个应用,就需要去适配所有不同的操作系统。大家知道现在 App 开发就分为安卓和苹果系统,而当时局面更加复杂。恰好 Java 程序语言开始流行,Java 构建的虚拟机能够让程序只需要写一次,依托 Java 虚拟机就能够在多个平台上运行,所以当时提出的口号就是: 一处编译、到处运行 。

我们知道比特币是没有虚拟机的,因为比特币就是把一段数字(也就是「比特币」)从地址 A 转移到地址 B,而以太坊则提出,区块链上执行的为什么不能是一套代码,能够实现更多复杂多样的东西?这就是我们所说的智能合约平台,所有节点运行一样的合约代码得到完全一样的结果。

在区块链上,虚拟机就是智能合约的运行环境,是一个可以完全对外隔离的完整计算机体系。区块链通过虚拟机来调用和执行智能合约,并要求所有节点都达成一致。而节点用的是不同的系统,有些机器是 64 位的,有些是 32 位的,传统的 Java 虚拟机容忍计算结果有少量的差异,但是在区块链上所有结果必须一样,因此,一个新的、适用于区块链的虚拟机是必不可少的。

理想中的区块链虚拟机

每个区块链项目的虚拟机设计,都会有自身的艺术追求,在追求众多的特性同时做不同层次上的取舍。在做了大量的研究之后,我们认为理想中的区块链虚拟机应该是这样的:

运行时有足够的 确定性 ,在调用同样的智能合约输入时,应该返回相同的输出结果,输出结果不依赖于时间、运行环境等外部的条件;

运行时有足够的 安全性 ,虚拟机的执行不会对平台本身带来负面影响;

对更新足够的 灵活 ,让区块链不用通过硬分叉,就可以实现加密算法的升级或新增(回想一下以太坊硬分叉升级的痛苦);

信息足够的透明,可以让虚拟机上运行的智能合约充分发挥虚拟机的潜力;

费用机制足够的 合理 ,能够确保虚拟机运行时资源消耗的计算方式更加合理准确;

可以 支持不同的语言编译 ,让开发者能够自由地开发,将最新的科技运用其中。

在设计 Nervos CKB 虚拟机之前,我们发现很多区块链项目都不是用真实的 CPU 指令集来构造自己的虚拟机的,他们更多的是选择了 WASM 来构造自己的虚拟机。

而我们更倾向于采用真实的 CPU 指令集来构造自己的虚拟机,因为在任何精巧复杂的虚拟机的最底层,都需要将操作转变为原始的汇编指令来执行对 CPU 的操作。另外,采用真实 CPU 指令集就不会在设计层面引入一些语义约束,束缚虚拟机的灵活性。

做一个不恰当的比喻,操作 CPU 需要有一套语言体系,使用真实的 CPU 指令集就如同能直接用这套语言体系和 CPU「说话」,那就非常方便。否则,就好像先说中文,再转换为英文,不论多完美的翻译水平,都会有一定的偏差和束缚。

通过真实的 CPU 指令集,虚拟机可以根据需要增加任意类型的数据结构或算法,可以最大限度的让开发者写出任何满足要求的合约。于是我们决定大胆的尝试使用真实的 CPU 指令集来构造自己的虚拟机 CKB-VM。

在 CPU 指令集的选择中,我们选择了精简的开源指令集 RISC-V。RISC-V 可以满足从低功耗小型微处理器,到高性能数据中心(DC)处理器的实现要求,并且有着透明性、精简性、模块化、支持的广泛性和成熟性的特点。这些特性都和 CKB-VM 的设计需求完美契合。那么 RISC-V 又是什么呢?

RISC-V

RISC-V 是一个清晰、简约、开源的 CPU 指令集架构,诞生于美国加州大学伯克利分校。

2010 年,由于其他商业闭源指令集的局限性,该校的一个研究团队在启动一个新项目时,从零开始设计了一套全新的开源指令集。这套全新的指令集有着大量的寄存器和透明的指令执行速度,能够帮助编译器和汇编语言程序员将实际的重要问题转换为适当、高效的代码,并且只包含了不到 50 条指令 。这套指令集就是 RISC-V。

架构师们在设计 RISC-V 时,就是希望 RISC-V 在所有的计算设备上都能够有效工作。自 2010 年被发明以来,RISC-V 简洁的设计赢得了业界和学界的广泛支持,并且获得了社区的喜爱。

RISC-V 基金会

RISC-V 指令集的发展主要由 RISC-V 基金会以及社区推动。RISC-V 基金会创立于 2015 年,是一家非营利组织,也是首个开放、协作的软硬件创新者社区。

RISC-V 基金会目前已经有超过 235 家成员,包括谷歌、高通、苹果、IBM、特斯拉、华为等企业。成员可以参与制定并使用 RISC-V 指令集规范,并且参与相关软、硬件生态系统的发展。

由于精简、开源的设计,RISC-V 在一些学术机构中大受欢迎,如加州大学伯克利分校、麻省理工学院、普林斯顿大学、中科院计算所等。除此之外,一些政府机构,如印度政府、上海市经济信息委等,也大力支持基于 RISC-V 的项目开发。

现有的指令集

RISC-V 是一个非常年轻的指令集,那么在此之前,主要的指令集都有哪些呢?

在 PC 时代,x86 是不可动摇的霸主,x86 是 CISC(Complex Instruction Set Computer,复杂指令集),和 RISC(Reduced Instruction Set Computer,精简指令集)不同,CISC 指令集会随着发展不断增多。这样会使得成本不断上升,性能和功耗也会受到影响。而且,CISC 指令集长度、执行时间都不固定,很难找出一条高效率的通用设计道路来完成指令的执行。

智能手机普及之后,ARM 成了移动端的宠儿。ARM 是精简指令集(RISC)有着低功耗和低成本的特性,但是,因为要保持向后兼容性,ARM 需要保留许多过时的定义,导致指令集冗余严重,这使得 ARM 架构文档的复杂度越来越高。

在 x86 和 ARM 垄断的当下,RISC-V 为市场带来了新的生机:

精简

经过几十年的发展,x86 与 ARM 的架构文档已经长达数千页,几乎需要花掉一个工程师近一个月的阅读时间,而阅读 RISC-V 文档只需要花费 1-2 天的时间。

这是因为 RISC-V 只将那些最常使用的指令集挑选出来,然后为其进行专门优化,至于不常用的指令,则可以用几个基础指令组合的方式完成,这样就可以大大提高效率。

举个例子,如果我们用的是 x86,那么就必须买下一整个超市,才能享受自身需的物品;而 RISC-V 是一家可以单买的超市,顾客们只需要挑选自己所需的物品,并为此付费即可。

开源

ARM 和 x86 都是闭源项目,且授权条款极其苛刻:英特尔不允许除 AMD 和 VIA 之外的任何一家公司使用 x86 指令集;想要获得 ARM 指令集的授权可能需要花费上千万美元的授权费,并且会受到而且授权到期后,需要重新谈判授权事宜。

RISC-V 是一个真正意义上的开源项目,被称为硬件领域的 Linux。事实上,发明 RISC-V 的 David Patterson 教授、Krste Asanovic 教授、Andrew Waterman 和 Yunsup Lee 的初衷就是希望 「 Instruction Sets Want to be Free 」,全世界任何公司、大学、研究机构与个人都可以开发兼容 RISC-V 指令集的处理器,都可以融入到基于 RISC-V 构建的软硬件生态系统。

RISC-V 使用的是 BSD License 开源协议,BSD 开源协议允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件发布和销售。

当区块链遇见 RISC-V

RISC-V 在很多科技领域都得到了运用,目前,也开始在区块链领域逐渐的得以发展。作为仅在 CPU 上验证过的指令集架构, 将 RISC-V 应用在区块链领域的确是一个大胆的尝试 ,因为它在区块链项目上打造的是虚拟机,而非处理器硬件。

我们不确定这样的尝试能否成功,但是我们有理由相信, 基于开源的 RISC-V 打造的虚拟机,可以很好的缩短硬件和软件行业的距离,并且带来更丰富的开发生态。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24721.html

相关文章

  • 使用符合 CKB 虚拟当前系统架构真实 CPU 指令集来构建自己虚拟

    摘要:于是我们想为什么不使用符合虚拟机当前系统架构的真实指令集来构建自己的虚拟机这样一来,我们不会丢失任何添加静态验证高级数据结构或是加密算法的可能性,并且无论我们在中提供怎样的数据结构或算法,都可以最大化的灵活性。 Nervos 底层公链 CKB 的虚拟机(CKB-VM)是基于 RISC-V 打造的区块链虚拟机。在前两期中,我们介绍了 CKB 虚拟机的设计理念,以及基于 RISC-V 指令...

    张红新 评论0 收藏0
  • 区块遇见 RISC-V

    摘要:在区块链上,虚拟机就是智能合约的运行环境,是一个可以完全对外隔离的完整计算机体系。区块链通过虚拟机来调用和执行智能合约,并要求所有节点都达成一致。当区块链遇见在很多科技领域都得到了运用,目前,也开始在区块链领域逐渐的得以发展。 showImg(https://segmentfault.com/img/bVbsfi2?w=2779&h=1179); 区块链的出现使得智能合约得到了更好的实...

    Tychio 评论0 收藏0
  • 区块虚拟WASMRISC-V 哪个更合适?

    摘要:的开发团队分别来自等公司,标准由组织制定,目前在以太坊下一代虚拟机以及项目中被使用。推特原文内容摘要首先提出疑问对虚拟机用比更好表示严重怀疑。与此同时,选择区块链虚拟机时并不是只需要考虑高性能实现的难度。 showImg(https://segmentfault.com/img/bVblNDb?w=1882&h=802); Nervos 将在旧金山做一场主题为「Say Hello to...

    CocoaChina 评论0 收藏0
  • 追求极致设计理念!用 RISC-V 从头设计 CKB 虚拟

    摘要:目前,比特币使用的是来进行交易签名,并且在共识协议中使用了哈希算法。尽管的实现提供的是最流行的加密算法,但我们鼓励社区提供更优化的加密算法实现以减少运行时开销。 Nervos 底层公链 CKB 的虚拟机(CKB-VM)是基于 RISC-V 指令集打造的区块链虚拟机。在上一堂分享中,我们简单介绍了区块链虚拟机,以及我们理想中的区块链虚拟机的样子。在本篇文章中,CKB-VM 设计者将详细的...

    he_xd 评论0 收藏0
  • Hello CKB!

    摘要:模块链的共识配置,该配置会写入创世块。主要指责是记录和更新本地累计工作量最高的链,并维护链上数据的索引。消息使用序列化。协议是节点之间用来处理广播和转发新的交易。 by Nervos CKB Team 在 2017 年底,我们感到心里的一些想法,包括分层的网络以及一个作为共同知识库(Common Knowledge Base)的区块链,都已经成熟。因此 2018 年元旦一过我们就迫不及...

    Kerr1Gan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<