EOS [从零开始 DAPP 开发] 18 - 使用 eosjs Api 向 EOS 区块链发送交易

pendingauth · 2019年09月02日 · 37 次阅读

本文转载自币乎,作者松果,原文链接:https://bihu.com/article/1494279667

上一篇文章介绍了使用eosjs提供的JsonRpc获取EOS区块链的数据,这篇介绍使用eosjs提供的Api来push数据到EOS区块链。

eosjs Api

微文DAPP项目代码的src/api/config.js中,使用如下代码定义了JsonRpc和Api对象:

ScatterJS.plugins(new ScatterEOS());

const signatureProvider = ScatterJS.scatter.eosHook(network, null, true);
const url = network.protocol + '://' + network.host + ':' + network.port;

const rpc = new JsonRpc(url, { fetch })
const api = new Api({
  rpc,
  signatureProvider,
  chainId: network.chainId,
  textDecoder: new TextDecoder(),
  textEncoder: new TextEncoder(),
});

Api对象需要使用JsonRpc对象的实例rpc作为参数来构建,因此Api是JsonRpc的进一步封装,JsonRpc用于“读”,Api用于“写”;

构建Api对象还需要提供signatureProvider(签名提供者),signatureProvider通过私钥对交易进行签名,因此它一般是一个钱包,这里的signatureProvider就是Scatter。

在src/api目录下,新建一个send.js,用于编写发送交易相关的代码,目前的项目结构是这样的:

send.js通过从config.js导入的api对象,实现了pushAction函数,代码如下:

签到领币功能的实现

下面通过签到领币(weiwendappss::reward)功能的实现过程,介绍如何使用eosjs发起一笔交易。

src/api目录下新建一个service.js,用于编写和EOS区块链交互的业务逻辑代码,已实现reward Action的代码:

App.js中,添加一个“签到领币”的按钮,在它的onClick事件中,调用service.js中的reward方法,push Action到weiwendappss合约:

效果如下:

点击右上角的“签到领币”按钮,Scatter弹出签名确认框:

执行成功后提示:

Tips

项目代码在Github同步更新:https://github.com/songguo6/weiwen-dapp

更多内容

EOS开发系列目录

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册