1 . 定义

WASM(WebAssembly)是一种运行在 Web 平台上的 汇编代码Assembly。一种小体积,高加载速度的基于堆栈的虚拟机的二进制指令格式。

Web 平台好比虚拟机环境, WebAssembly 可以看做是 Web 平台的 x86 硬件通用指令集,作为一层中间语言,上层对接 Java、Python、Rust、Cpp,让这些语言都能编译成统一的格式,用于 Web 平台运行。

为诸如C、C++等低级源语言提供一个高效的编译目标,使得以各种语言编写的代码都可以以接近原生的速度在web中运行。(所有由传统语言编写的客户端app都可以在web上高效运行)

  • Wasm 被设计为编程语言的可移植编译目标,从而可以在 Web 上为客户端和服务器应用程序进行部署。
  • 四大浏览器厂商(Chrome, Firefox, Edge, Safari)全部默认支持WebAssembly 。

1.1 Assembly汇编代码

虚拟机层会同时加载和运行两种类型的代码——JavaScript和WebAssembly。一个典型的编译执行链路是 C++、Rust 等编译型语言编译成汇编指令,再转换成二进制机器码由 CPU 读取。其他例如 Java、Python 等语言是使用运行在 x86 一类的通用硬件指令集的虚拟机,再执行自己的“汇编语言”(例如 Java Bytecode)

eg. 中间的十六进制的Binary Code就是WebAssembly

1.2 与JavaScript

  • WebAssembly模块将能够调用和退出JavaScript上下文,并通过可从JavaScript访问的相同Web API来访问浏览器功能。WebAssembly还支持非Web嵌入。

  • 和JavaScript互补协同工作,作为一个“高性能的JS函数”,提供js api实现互相调用。

  • 可以取代部分 JavaScript 代码执行更高效的 CPU 计算程序。

2. WebAssembly优势

  • 开放且可调试
    WebAssembly设计为以文本格式精美打印,用于手工调试,测试,实验,优化,学习,教学和编写程序。每一条指令有对应的二进制值。在Web上查看Wasm模块的来源时,将使用文本格式。

  • 高效,跨平台
    Wasm stack machine 设计为以节省大小和加载时间的二进制格式进行编码,可以直接在WebAssembly虚拟机上运行。

  • 安全的沙箱化执行环境
    WebAssembly被限制运行在一个虚拟的的沙箱执行环境中,运行时产生的变化可以随后删除,不会对系统产生永久性影响。该环境甚至可以在现有JavaScript虚拟机内部实现,可以严格遵循浏览器的同源策略和授权策略。

  • 无版本,标准化
    无版本,向后兼容。

智能合约WASM语言 (1)概述相关推荐

  1. 下一代智能合约开发语言(一)

    背景 过去的三个月可能是我过去几年离一百万最近的一次,错过了aptos的空投,几分钟就可以做一个任务,最后空投了150APT代币,最高时价值4W...真的是真金白银的教训.不过作为一个开发者,看到的更 ...

  2. 【链块技术36期】智能合约基础语言(一)——Solidity概述和开发工具的使用

    原文链接:区块链技术语言:Solidity(一):概述和开发工具的使用 一.目录 ☛Solidity的概述 ☛Solidity开发工具remix的使用 ☛Solidity本地开发工具remix安装 二 ...

  3. 区块链开发语言python_Python:不同区块链智能合约开发语言的选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 在本文中,将介绍比特币.超级账本Fabric和以太坊这三种区块链中,分别使用什么开发语言来进行智能合约的编程,并提供你进 ...

  4. 智能合约审计之DDOS概述

    拒绝服务(DOS) 对智能合约进行DOS攻击的方法有很多种,其根本的目的是使合约在一段时间内或者永久无法正常运行,通过拒绝服务攻击,也可以使合约中的ether永远无法提取出来,下面将会列出几种常见的攻 ...

  5. fabric 智能合约go语言模板

    基于fabric分布式账本 的存证智能合约模板 eg: package mainimport ("encoding/json""fmt""strcon ...

  6. 【区块链DAPP】智能合约概述

    智能合约概述 智能合约是运行在区块链公链上的一种代码,该代码由Solidity编写,并通过区块链的智能合约虚拟机来执行,以达到对区块链编程的目标.可以将区块链公联理解为操作系统,Solidity是编写 ...

  7. 区块链合约协议C语言,Nervos CKB将支持多语言编写智能合约

    作者:Nervos社区投稿 / 来源:Nervos 中文社区 多语言智能合约 " 可以使用多种语言编程和编写智能合约." 我们计划构建多个使用高级语言或 DSL 的框架来促进 CK ...

  8. c++ eos智能合约开发_TrustBase平台智能合约的开发与实现

    2020年11月,TrustBase团队研究并实现了基于Web的波卡智能合约应用平台.鉴于波卡智能合约开发缺少完善易用的开发工具的支持,TrustBase团队自主开发了基于Substrate框架的全新 ...

  9. 四十种 智能合约 支持平台

    目录 1. 以太坊( Ethereum ) 2. Quorum 3. Wanchain 4. æternity 5. Zen 6. Counterparty 7. Rootstock (RSK) 8. ...

最新文章

  1. 搭建测试环境属于软件文档,搭建软件测试环境应注意的几个问题
  2. 分科目统计每科前三名的学生
  3. Linux的shell脚本实战之检查主机IP是否存在
  4. Lombok 天天用,却不知道它的原理是什么?
  5. QT-第一个程序 Hello QT , 以及QT creator介绍
  6. matlab特征点数量,特征点检测效果评估(matlab代码)
  7. 【逆水寒三周年】大型MMO项目UI管理的价值与责任
  8. Matlab元胞数组操作
  9. perl hash array 嵌套 push
  10. Spring 初始化2次的问题
  11. Inception V1-V4
  12. linux 开机启动项文件夹,linux开机启动项设置
  13. java模拟器.apk_java游戏模拟器安卓版下载-java模拟器apk下载 v2.2.0 安卓版-IT猫扑网...
  14. Functional JavaScript: 使用 Transducer 提升函数式性能
  15. android中android:wight详解
  16. 绘制几何图形,生成辅助线的思路
  17. left semi join 和 left join 区别
  18. 自己动手制作C 语言编译器(8):表达式
  19. php不能连接到数据库服务器,我似乎无法将PHP页面连接到SQL测试服务器和数据库...
  20. sql语句异常 You have an error in your SQL syntax; check the manual that corresponds to your.......

热门文章

  1. Java 洛谷 P1152 欢乐的跳
  2. java 服务器发布_我如何在java中发布到服务器?
  3. 但凡网络工程师会这个技能,也不至于天天抱怨工资低
  4. 国内IDC行业现状及投资策略分析
  5. shell 创建文件_如何在shell脚本中创建与shell脚本同目录或者同相对路径的文件夹或者文件?...
  6. DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
  7. 成功解决ModuleNotFoundError: No module named engine
  8. AI机器人:与智能机器人进行实时智能交互,想问什么就问什么
  9. Crawler:基于urllib库+实现爬虫有道翻译
  10. Ubuntu16.04 安装Python开发环境