EOS开发入门之WebAssembly

栏目: 后端 · 前端 · 发布时间: 7年前

内容简介:许多人正试图学习如何在EOS上开发智能合约。但是,这些智能合约是由C++编写的,并编译成WebAssembly,这对大多数非c++程序员来说似乎很奇怪。因此,在深入了解EOS之前,最好先学习一些关于WebAssembly的基本知识。我不想从这里是一个工作流程:

许多人正试图学习如何在EOS上开发智能合约。但是,这些智能合约是由C++编写的,并编译成WebAssembly,这对大多数非c++程序员来说似乎很奇怪。因此,在深入了解EOS之前,最好先学习一些关于WebAssembly的基本知识。

什么是WebAssembly

我不想从 官方网站 上复制这个定义。你可以自己看一下。在这里,你可以将其视为可以在Web浏览器中加载和运行的文件。它类似于Javascript,但它比JS更快,更简单,更安全。

如何编写Webassembly

这里是一个工作流程:

EOS开发入门之WebAssembly

基本上有四个步骤,我将通过一个非常简单的例子来说明。

1.编写C/C++代码

以下代码用于计算数字的平方根。

#include <math.h>
float getSqrt (float num) {
  return sqrt(num);
}

2.将C/C++代码编译成wasm(Webassembly的格式)

编译代码有 很多种方法 。为了简化这个过程,我找到了一种 非常简单的方法

EOS开发入门之WebAssembly

将代码复制到该网站并单击build(构建)按钮,你可以找到编译的文件,如下所示。

EOS开发入门之WebAssembly

然后将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 。在控制台中,尝试以下方法:

EOS开发入门之WebAssembly

完成

通过本教程,你就可以熟悉WebAssemply,但是对于高级研究,请查看@dan撰写的 eos-example-exchange-contract-and-benefits-of-c

======================================================================

分享一个交互式的在线编程实战, EOS智能合约与DApp开发入门

EOS教程

本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

  • web3j教程,主要是针对 java 和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、 mongodb 、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对 python 工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用 php 进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。

汇智网原创翻译,转载请标明出处。这里是 原文


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

How to Solve It

How to Solve It

Zbigniew Michalewicz、David B. Fogel / Springer / 2004-03-01 / USD 59.95

This book is the only source that provides comprehensive, current, and detailed information on problem solving using modern heuristics. It covers classic methods of optimization, including dynamic pro......一起来看看 《How to Solve It》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具