一文读懂Dmail信息聚合与分
Foresight Ventures:WASM —— 大时代引擎
作者: Mike@Foresight Ventures
TL;DR
WebAssembly(简称Wasm)是一种可移植、高性能的二进制指令格式,可以在Web浏览器中运行。它被设计为一种通用的编译目标,可以用于多种编程语言,并且可以在不同的平台上运行。
区块链是一种去中心化的分布式账本技术,它通过使用密码学和共识算法来确保数据的安全性和可信度。区块链可以用于记录交易、存储数据和执行智能合约等应用。
Wasm和区块链之间存在一些关系和应用场景:
智能合约:Wasm可以作为智能合约的执行环境,使得合约可以在不同的区块链平台上运行。Wasm的高性能和可移植性使得智能合约可以更加高效地执行,并且可以跨平台使用。
跨链交互:Wasm可以用于实现跨链交互的功能。通过将不同区块链的逻辑编译为Wasm代码,可以在不同的区块链上执行相同的逻辑,实现跨链的数据传输和交互。
链下计算:Wasm可以用于在区块链之外进行计算,并将计算结果提交到区块链上。这样可以在保持数据的安全性和可信度的同时,提高计算的效率和灵活性。
数据隐私:Wasm可以用于实现区块链上的数据隐私保护。通过将敏感数据的处理逻辑编译为Wasm代码,并在区块链上执行,可以保护数据的隐私性,同时确保计算的可验证性。
总之,Wasm和区块链可以相互结合,提供更加高效、安全和灵活的区块链应用和服务。Wasm的可移植性和高性能使得它成为区块链领域的重要技术之一。
一、什么是Web Assembly
WebAssembly是由W3C(万维网联盟)开发的一个高效轻量级指令集标准,被誉为网络和高性能的颠覆者,支持跨浏览器执行。这意味着我们可以把包括C/C++, Go, Rust等在内的不同编程语言编译成统一的标准二进制格式,并将其作为JavaScript的替代品以近乎原生代码的效率在浏览器中运行。
WebAssembly,或者简称为WASM,是内存安全、平台独立的,可以完美高效地映射到所有类型的CPU架构上,有着以下主要优势:
高效:WASM 有一套完整的语言特性,实际上 WASM 是体积小且加载快的二进制格式, 其目标就是充分发挥硬件的能力以达到原生语言的执行效率。
安全:WASM 运行在一个内存安全,沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机中实现。在 Web 环境中 ,WASM 将会严格遵守同源策略以及浏览器安全策略。WASM在编译的时候,interface是比较少的,但大部分wasm application是不能联网的(因为不支持socket),现在只能支持local database。很多安全问题的时候来源于执行时候的内存的访问,wasm在编译的时候,可以避免非法的内存访问。
兼容性:WASM 在 Web 中被设计成无版本、特性可测试、向后兼容的。WASM 可以被 JavaScript 调用,进入 JavaScript 上下文,也可以像 Web API 一样调用浏览器的功能。WASM 不仅可以运行在浏览器上,也可以运行在非 Web 环境下(如 Node.js、Deno、物联网设备等执行)。传统的方式可能需要多次compile,而WASM只需一次便可运行,即插即用。
此外:Web 是唯一真正的通用平台,可以在任何设备上访问你的应用程序。这还允许你维护单个代码库,简化更新并确保所有用户都可以访问你的应用程序。WASM支持 64 位和 32 位整数操作,与 CPU 指令一一对应。通过移除浮点运算,可轻松实现确定性,这对共识算法来说是必要的。由 LLVM编译器基础架构项目提供支持,这意味着 Wasm 可以从 LLVM 十多年的编译器优化中获益。WASM由谷歌、苹果、微软、Mozilla 和 Facebook 等大公司持续开发,在这几个大公司开发的浏览器的后端都支持wasm编译。
WASM 的美妙之处在于它就像一个魔法引擎,它可以在任何地方运行,不需要下载也不需要安装,因为是二进制格式。只需一次点击,即可在需要时立即运行 Web 应用。它比直接在下载和运行二进制文件更安全,因为浏览器已内建安全机制,使其中运行的代码不会危害你的系统。而且分享 Web 应用同样简单 - 链接是可以放在任何地方的可点击字符串。
二、为什么我们需要Web Assembly
2.1 Web2
由于浏览器内置的功能和 Web 提供的交互性,Web从超文本静态内容和小型脚本语言发展成了一个非常强大和流行的平台,充满了惊人的应用程序和功能。但到目前为止,Web应用依旧基本上由相同的脚本语言(JavaScript)驱动,然而JavaScript设计的首要目标从来就不是为了实现这些。