设为首页

加入收藏

English(英文版)

手机客户端

微信公众号

WebAssembly和区块链计算的未来

时间:2018-09-07 23:34:03 来源:区块网 作者:

以太坊在2013年的构想是将区块链技术作为一种分散的结算层,将p2p资金投入到一个无信任层中,用于执行程序,从而开启了一个全新的应用程序和可编程货币的世界。



以太坊的核心理念很简单:利用区块链技术的信任最小化的本质,就计算机程序的输出达成共识。也就是说,开发人员可以部署代码,也就是所谓的智能合约,它是完全确定的,并且它的输出可以被所有与之交互的各方所信任。


从一开始就提出了各种各样的好主意,包括利用以太坊智能合约创建公平拍卖或彩票的能力来创造预测市场,分散贸易往来等等。在这些用例中最臭名昭著的是在以太坊中创建可编程的代币,它被用作公司筹集数百万美元的ICOs的流行手段。



在其核心,以太坊实现了一个图灵完整的虚拟机,被称为以太坊虚拟机(简称EVM)。它的力量来自定义一个通用的、确定性的指令集,程序可以编译成,世界各地的计算机都可以运行。在这个EVM上运行的每一个操作和程序都必须由以太网络的每个完整节点运行,这意味着这个“世界计算机”需要有一个内置的机制来阻止垃圾邮件攻击。为此,EVM实现了气体的概念,它可以被认为是每一个需要在这台全球计算机上运行的基本操作的“燃料”,它是预先支付的。


区块链计算机是具有决定性的


图灵完成意味着你可以在以太虚拟机上编码和运行任何程序,只要你有足够的气体来支付所有的执行步骤。昂贵的操作,如训练机器学习算法,由于其固有的约束,在EVM中是完全不可行的。EVM中的每一个指令,称为操作码,都有一个特定的固定成本。每一个操作码都是决定性的,因为在以太坊上的每一个节点的输出都是达成全球共识的要求。



以太坊整个系统从块创建到事务执行:通过固定的操作码成本,节点能够准确地确定用户需要多少钱来执行一个特定的程序。在这种情况下,气体的概念不仅被用作防止垃圾邮件攻击的一种方法,而且还被用作确定性的代理。例如,一个花费X气体运行的程序将总是花费X气体,而不管网络中的哪个节点正在执行它。天然气实际上有一个单位价格,它依赖于整个平台的供应和需求,而且通常是相当不稳定的,这取决于以太网络与交易的负载程度。


EVM是如何设计的?为什么它效率低下?




大建筑尺寸



传统计算机包含在32或64位大小的输入上运行的指令集。EVM是不同的,它是特别的,因为它是一个256位的计算机,它是故意设计的,因它很容易处理以太的散列算法,它显式地生成了一个256位的输出。


然而,实际运行EVM程序的计算机必须将其256位的单词分解到它们的本地架构中,以执行智能合约,这使得整个系统非常低效和不切实际。



另外,如果你想要使用它的基本操作码来实现一个复杂的算法,比如在以太坊上的SHA256,那我就只能祝你好运了!为了规避从指令集运行复杂程序的低成本效率,以太坊使用了预编译的概念,这些程序是在EVM中进行的,并且有固定的成本。一个值得注意的预编译是以太坊哈希算法,因为在VM本身中实现它对于任何调用的合同来说都是非常昂贵的。


预编译的问题


预编译的问题在于,它们不断地增加VM的臃肿和复杂性,而不是解决核心问题——当前指令集和规范的低效率和糟糕的设计。


如果我们可以定义一个新的规范和指令集,我们不需要将这些复杂的程序放入其中,那么我们是否可以有效地使用基本指令实现呢?




进入WebAssembly



被誉为网络和高性能的游戏规则,跨浏览器执行,WebAssembly是由W3C开发的一个标准组的有效率,轻量级的指令集。这意味着我们可以编译不同类型的编程语言,从C / c++更成一个单一的标准,可以在浏览器中运行几乎代替JavaScript。WebAssembly,简称WASM,是内存安全的、平台独立的,并且可以有效地映射到所有类型的CPU架构。


这和区块链有什么关系?




我们现在有了一个优秀的、高效的指令集,我们可以编译各种语言,并确信它将在不同类型的平台上具有同样的性能和可执行性——对于分散的应用程序来说是理想的!此外,WASM指令集可以很容易地通过移除浮点指令来确定,这将使它适合于EVM进行替换。



责任编辑:touzjsy
返回首页
标签:
精彩图片