内容简介:区块链的出现使得智能合约得到了更好的实现和发展,而区块链和智能合约之间,还存在着一个重要的角色:虚拟机的概念在上个世纪六十年代就被提出来,而到九十年代才开始流行。当时的网络跨越了众多不同的操作系统、浏览器,如果开发者想要制作一个应用,就需要去适配所有不同的操作系统。大家知道现在 App 开发就分为安卓和苹果系统,而当时局面更加复杂。恰好 Java 程序语言开始流行,Java 构建的虚拟机能够让程序只需要写一次,依托 Java 虚拟机就能够在多个平台上运行,所以当时提出的口号就是:
区块链的出现使得智能合约得到了更好的实现和发展,而区块链和智能合约之间,还存在着一个重要的角色: 虚拟机(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 打造的虚拟机,可以很好的缩短硬件和软件行业的距离,并且带来更丰富的开发生态。
RISC-V 来到中国
下个月,RISC-V 将来到中国,开启 11 天、5 个城市的路演!
这一次,RISC-V 基金会将与 Linux 基金会合作,在北京、成都、上海、深圳和杭州开展一系列免费 RISC-V 入门工作坊,在活动中,RISC-V 基金会成员将和大家分享和讨论 RISC-V 的最新应用及进展。
Nervos 也将与阿里巴巴集团、晶心科技(Andes Technology)、恩智浦半导体(NXP)、澎峰科技(PerfXLab)、SiFive 等 RISC-V 基金会成员共同参与到活动当中。
CKB-VM 设计者肖雪洁将在 5 月 14 日杭州的 RISC-V 活动 中,分享 《CKB-VM:基于 RISC-V 打造的区块链通用型软件沙盒系统》的主题。
关于 Nervos
Nervos Network 由 Nervos 基金会推动,通过分层设计,兼顾性能、安全以及去中心化的特性,满足多样化的商业场景需求,为未来加密经济提供基础设施。
关于 CKB
Nervos Common Knowledge Base(CKB)是一个无需许可链,它是 Nervos Network 的基础层,并在设计上提出了一些理念:
CKB 共识协议 NC-MAX 使用两阶段提交节约带宽,并根据网络情况调整自身参数,提升了 Nakamoto Consensus 的可扩展性
CKB 虚拟机采用底层 CPU 指令集架构 RISC-V 开发,提供更高的开发弹性与运行的稳定性
CKB Cell Model 是比特币 UTXO 模型的通用化,能够验证和存储任何类型的数据
CKB 经济模型用货币政策限制状态存储的增长,并实现智能合约平台的价值存储功能
关注我们
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 专访Junction首席执行官:欧洲最大黑客马拉松如何遇见区块链?
- 遇见 ZooKeeper:初识
- 遇见一名程序员的故事
- 【译】当 Kotlin 遇见 Gradle
- 遇见大数据可视化:基础研究
- 遇见未知的自己,奎特尔成长之路!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
500 Lines or Less
Amy Brown、Michael DiBernardo / 2016-6-28 / USD 35.00
This book provides you with the chance to study how 26 experienced programmers think when they are building something new. The programs you will read about in this book were all written from scratch t......一起来看看 《500 Lines or Less》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
XML、JSON 在线转换
在线XML、JSON转换工具