本文源自 CKB 所着文章,由 wublockchain 转载。 (前情提要:拆解 Vitalik 想用「RISC-V 取代 EVM」重构以太坊执行层的战略野心 ) (背景补充:EVM该退场了!Vitalik提案改用RISC-V,ZK证明效能可提升百倍以上 ) 区块链的出现使得智慧合约得到了更好的实现和发展,而区块链和智慧合约之间,还存在着一个重要的角色:虚拟机器(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 家成员,包括Google、高通、苹果、IBM、特斯拉、华为等企业。成员可以参与制定并使用 RISC-V 指令集规范,并且参与相关软、硬体生态系统的发展。 由于精简、开源的设计,RISC-V 在一些学术机构中大受欢迎,如加州大学伯克利分校、麻省理工学院、普林斯顿大学、中科院计算所等。除此之外,一些政府机构,如印度政府、上海市经济资讯委等,也大力支援基于 RISC-V 的专案开发。 现有的指令集 RISC-V 是一个非常年轻的指令集,那么在此之前,主要的指令集都有哪些呢? 在 PC 时代,x86 是不可动摇的霸主,x86 是 CISC (Complex Instruction Set Computer,复杂指令集),和 RISC (Reduced Instruction Set Computer,精简指令集) 不同,CISC 指令集会随着发展不断增多。这样会使得成本不断上升,效能和功耗也会受到影响。而且,CISC 指令集长度、执行时...
232k 帖子
199k 帖子
147k 帖子
80k 帖子
66k 帖子
64k 帖子
61k 帖子
58k 帖子
52k 帖子
51k 帖子
技术》什么是 Vitalik 推崇的 RISC-V?CKB-VM 为什么选择 RISC-V?
本文源自 CKB 所着文章,由 wublockchain 转载。 (前情提要:拆解 Vitalik 想用「RISC-V 取代 EVM」重构以太坊执行层的战略野心 ) (背景补充:EVM该退场了!Vitalik提案改用RISC-V,ZK证明效能可提升百倍以上 ) 区块链的出现使得智慧合约得到了更好的实现和发展,而区块链和智慧合约之间,还存在着一个重要的角色:虚拟机器(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 家成员,包括Google、高通、苹果、IBM、特斯拉、华为等企业。成员可以参与制定并使用 RISC-V 指令集规范,并且参与相关软、硬体生态系统的发展。 由于精简、开源的设计,RISC-V 在一些学术机构中大受欢迎,如加州大学伯克利分校、麻省理工学院、普林斯顿大学、中科院计算所等。除此之外,一些政府机构,如印度政府、上海市经济资讯委等,也大力支援基于 RISC-V 的专案开发。 现有的指令集 RISC-V 是一个非常年轻的指令集,那么在此之前,主要的指令集都有哪些呢? 在 PC 时代,x86 是不可动摇的霸主,x86 是 CISC (Complex Instruction Set Computer,复杂指令集),和 RISC (Reduced Instruction Set Computer,精简指令集) 不同,CISC 指令集会随着发展不断增多。这样会使得成本不断上升,效能和功耗也会受到影响。而且,CISC 指令集长度、执行时...