为什么我说WebAssembly是区块链计算的未来
Posted K叔区块链
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我说WebAssembly是区块链计算的未来相关的知识,希望对你有一定的参考价值。
首先WebAssembly不是区块链范畴的技术,属于浏览器前端技术。但是WebAssembly就是为解决性能瓶颈而设计的东西,可以用于区块链来提升计算性能。
WebAssembly (简称 wasm ) 是一种适合于编译到 Web 的, 可移植的, 大小和加载时间高效的格式. 这是一个新的平台无关的二进制代码格式。作为一种低级语言, 它定义了一个抽象语法树 (Abstract Syntax Tree, AST) , 开发人员可以以文本格式进行调试。它描述了一个内存安全的沙箱执行环境, 是一个更加安全的解决方案.
EVM架构是如何设计的
以太坊内核实现了一个图灵完备的虚拟机,但是设计确很粗糙,不适合做用来做计算。
1、架构尺寸过大
传统计算机包含的指令集只接受32位或者64位的输入。EVM与此不同并且很特殊,它是一台256位的计算机,故意设计成这样是为了更易于处理以太坊的哈希算法,它会明确产生256位的输出。
然而,实际运行EVM程序的计算机则需要把256位的字拆分成它们的本地架构来执行智能合约,从而使得整个系统变得非常低效和不实用。
另外,如果你想在以太坊上用它的基本OPCODES实现一个类似于SHA256的复杂算法,那你就自祈多福吧!为了解决通过指令集运行复杂程序产生的高额gas问题,以太坊引入了预编译的概念,把程序编译进EVM并且消耗固定的gas。一个值得关注的预编译是以太坊哈希算法,因为如果在虚拟机中实现该算法,合约在调用时将会产生极其昂贵的费用。
2、臃肿的预编译
预编译带来的问题是它会不断增加虚拟机的臃肿度和复杂度,而不能解决核心问题:当前指令集和规范的低效而粗劣的设计。
如果我们能够定义一种新的规范和指令集,不需要预编译这些复杂程序,而只需要通过基本指令就可以高效实现呢?
为什么需要WebAssembly
WebAssembly,简称为WASM,是内存安全、平台独立的,可以完美高效地映射到所有类型的CPU架构上。它是由W3C开发的一个广泛支持的、高效轻量级指令集标准,被誉为网络和高性能的颠覆者,支持跨浏览器执行。
这可能是最重要的一点,wasm 拓展了智能合约开发者可用的编程语言,Rust,C/C++,C#,Typescript 以及 Kotlin 都可以用来开发智能合约。这意味着你可以使用任何你熟悉的编程语言开发智能合约。
WebAssembly还具备如下优点:
内存安全(Memory-safe),沙盒化(sandboxed)以及平台独立。
支持 64 位以及 32 位整数操作,操作与 CPU 指令一一对应。
通过移除浮点运算轻松实现确定性,这对于共识算法是必需的。
被 LLVM 编译器基础结构项目支持,这意味着 Wasm 将受益于 LLVM 编译器十几年的优化。
被谷歌,苹果,微软,Mozilla 和 Facebook 等大公司不断开发。
这和区块链有什么关系?
不依赖于EVM,现在我们有了一套优秀并且高效的指令集,可以编译各种类型的语言,并且有信心它们可以在不同类型的平台上执行且具有同等的性能 - 这对于去中心化应用来说是非常理想的!更进一步,通过去除浮点运算指令,WASM指令集可以很容易地变成确定性指令集,从而很适合作为EVM的替代品。
EWASM团队已经着手在以太坊上集成WebAssembly,从而保证以太坊2.0的执行层更加高效、简单,适合作为完全的去中心化计算平台。https://github.com/ewasm
WASM已经被许多其他项目接纳为标准,包括Dfinity和EOS都使用它来强化它们的执行层。
Web的性能和智能合约平台执行层的未来一片光明。不仅dApp会具有更高的性能,集成WASM也可以让那些熟悉Rust和Go之类的主流语言的鲁棒性的人更容易进行智能合约的开发,而不是需要学习solidity的各种细节才能在以太坊上开发有用的应用程序。
事实上,你已经可以在以太坊的Kovan测试网上根据Parity-Ethereum的教程来部署WASM合约了:https://github.com/paritytech/pwasm-tutorial
虽然 Wasm 自身受益于广泛的支持与集成,但是与 EVM 不同,它不是为了与区块链交互而构建的。Parity 以太坊客户端在 Wasmi 解释器中运行 Wasm 字节码,以保证 Wasm 代码能够访问区块链并与区块链进行交互。现在我们在 Kovan 测试网上测试 Wasm;在该测试网上,EVM 智能合约以及 Wasm 智能合约可以共存甚至互动。以太坊基金会还致力于在 Go 语言版本客户端的 geth 上实现 Wasm 支持,并研究 Wasm 在分片中的用途。
因为我们相信 Wasm 是分布式系统开发的基础,所以下一代区块链互操作性协议 Polkadot 正在从头开始构建支持 Wasm 的版本。Polkadot 智能合约将能够用可以被编译成 wasm 的任何语言进行开发。
我们期待安全智能合约开发变得更加容易的未来,在那时开发者可以使用他们知道的任何语言开发智能合约。
以上是关于为什么我说WebAssembly是区块链计算的未来的主要内容,如果未能解决你的问题,请参考以下文章
从首届 WebAssembly Summit 看 Wasm 未来发展方向——安全性性能和浏览器引擎