EOS 用 C++ 开发智能合约为何要编译成 WebAssembly?
2018-09-18 12:04
1081 查看
许多人正试图学习如何在EOS上开发智能合约。但是,这些智能合约是由C++编写的,并编译成WebAssembly,这对大多数非c++程序员来说似乎很奇怪。因此,在深入了解EOS之前,最好先学习一些关于WebAssembly的基本知识。
基本上有四个步骤,我将通过一个非常简单的例子来说明。
将代码复制到该网站并单击build(构建)按钮,你可以找到编译的文件,如下所示。
然后将program.wasm文件下载到本地文件夹。
然后打开我们的Chrome浏览器,转到此页面:
分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:
EOS教程
本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
这里是原文
什么是WebAssembly
我不想从官方网站上复制这个定义。你可以自己看一下。在这里,你可以将其视为可以在Web浏览器中加载和运行的文件。它类似于Javascript,但它比JS更快,更简单,更安全。如何编写Webassembly
这里是一个工作流程:基本上有四个步骤,我将通过一个非常简单的例子来说明。
1.编写C/C++代码
以下代码用于计算数字的平方根。#include <math.h> float getSqrt (float num) { return sqrt(num); }
2.将C/C++代码编译成wasm(Webassembly的格式)
编译代码有很多种方法。为了简化这个过程,我找到了一种非常简单的方法。将代码复制到该网站并单击build(构建)按钮,你可以找到编译的文件,如下所示。
然后将program.wasm文件下载到本地文件夹。
3.使用JavaScript将wasm加载到浏览器中
使用以下代码创建test.html,将其放在与program.wasm相同的文件目录中。<!doctype html> <title>WASM Test</title> <script> fetch('./program.wasm') .then(res => { if (res.ok) return res.arrayBuffer(); throw new Error(`Unable to fetch WASM.`); }) .then(bytes => { return WebAssembly.compile(bytes); }) .then(module => { return WebAssembly.instantiate(module); }) .then(instance => { window.wasmSqrt = instance.exports.getSqrt; }); </script>
4.在Web浏览器中运行该方法
要解决网站跨域问题,我们需要在该文件夹中运行本地Web服务器。使用Linux或Mac时,让我们执行一下这个命令:python -m SimpleHTTPServer
然后打开我们的Chrome浏览器,转到此页面:
http://localhost:8000/test.html。在控制台中,尝试以下方法:
完成
通过本教程,你就可以熟悉WebAssemply,但是对于高级研究,请查看@dan撰写的eos-example-exchange-contract-and-benefits-of-c分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:
EOS教程
本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
这里是原文
相关文章推荐
- 星云链智能合约开发(五):安装Chrome钱包插件和web钱包及其使用
- 如何开发编译部署调用智能合约
- EOS智能合约与DApp开发入门
- 以太坊学习(四)--搭建智能合约测试环境、开发、编译、部署
- 区块链智能合约底层编译环境搭建开发虚拟货币技术
- 手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法
- web3j开发java或android以太坊智能合约快速入门
- 【C/C++开发】C++编译指令#pragma pack的配对使用
- IDEA 下开发web项目部署时,配置文件没有编译的问题
- 如何使用数字货币开发工具来做智能合约的测试驱动开发
- Web开发瓶颈:为何浏览器兼容困难重重
- C++ 开发 Web 服务框架 - HTTP Web 框架的设计与实现(二)
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- [bigdata-087] ubuntu 16.04+linux+go 安装 编译 开发 beego+fasthttp web框架
- 谈谈编译原理和其在WEB开发中的应用1
- 转:谈谈编译原理和其在WEB开发中的应用2
- web开发,asp.net/c++驱动,客户应用程序开发X86windows SDK DDK/windows mobile高手/c# ,c++ coding 够全了吧,抓紧哦
- EOS cleos get code 查询智能合约
- 8、Solidity编程语言开发框架之编译合约
- web3(1.0.0版本)与智能合约交互