秘猿科技使命是用 技术创造信任,为价值网络提供基础设施和服务。为了实现这个使命,咱们三年来坚持初心,步步为营打造加密经济网络。咱们想要让 互联网回归到本源,用区块链技术,去构造更美好的社会,所以咱们设计了 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 是一个清晰、简约、开源的 CPU 指令集架构,诞生于美国加州大学伯克利分校。
2010 年,因为其余商业闭源指令集的局限性,该校的一个研究团队在启动一个新项目时,从零开始设计了一套全新的开源指令集。这套全新的指令集有着大量的寄存器和透明的指令执行速度,可以帮助编译器和汇编语言程序员将实际的重要问题转换为适当、高效的代码,而且只包含了不到 50 条指令 。这套指令集就是 RISC-V。
架构师们在设计 RISC-V 时,就是但愿 RISC-V 在全部的计算设备上都可以有效工做。自 2010 年被发明以来,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 打造的虚拟机,能够很好的缩短硬件和软件行业的距离,而且带来更丰富的开发生态。