美文网首页Dapp开发
转载—DAPP实战:从0到1全过程(8)

转载—DAPP实战:从0到1全过程(8)

作者: 03e9c48218c1 | 来源:发表于2018-08-16 10:32 被阅读13次

转载微信订阅号(区块链之录)文章:

DAPP实战:从0到1全过程(8)

上篇文章为大家讲解了如何在前端通过web3j来调用合约方法,我们知道以太坊的平均出块时间是15s(设计细节可以参考:

https://github.com/ethereum/wiki/wiki/Design-Rationale),那么当用户在页面上进行操作调用了合约方法后,DAPP需要很快做出响应,而不是等15s后才提示用户操作完成与否,此时就需要用到上篇文章里提到的调用合约方法后返回的交易hash,下面会讲解该hash该怎么使用。

通常来说我们需要把该交易hash传递到后台,在前端给出提示信息,告诉用户该操作正在确认中,然后给出一个查看结果的页面或者在交易结束后给出推送信息。

此时在后台,我们可以简单采用轮询的方式来验证该交易是否已经完成。

以上篇文章里的sendCoin方法为例,当在前端调用该方法后,首先把产生的hash值传到后台保持到数据库中,然后通过轮询该hash的状态来验证,代码如下:

letWeb3 =require('web3');

letmysql =require('mysql');

//初始化数据库连接

varconnection = mysql.createConnection({    host     :'127.0.0.1',    user     :'root',    password :'123456',    database :'test'

});connection.connect();

letweb3;

//连接到私链

web3 =newWeb3(newWeb3.providers.HttpProvider('http://127.0.0.1:8545'));

varcontractInstance = web3.eth.contract(ABI).at(contractHash);

varquerySql ='select hash from tbl_txn  where status = 0';

while(true){    connection.query(querySql, (err,rows) => {

if

(!err){

for

(vari =0; i < rows.length; i++) {

var

receipt = rows[i].hash;                web3.eth.getTransactionReceipt(receipt,(err,result) => {//从event中读取数据

if

(result.logs[0]){

var

data = result.logs[0].data;

var

address_from = data.substring(0,66);

var

address_to = data.substring(66,130);

var

value = data.substring(130,194);

//输出或者存库,update db status}

//调用合约方法

contractInstance.getBalance.call(account, (err,res) => {

console

.log(res);                    });                });             }        }    });}

主要有以下几个步骤:

1) 从数据库中获取保持的未确定状态的交易hash;

2)调用web3j库的getTransactionReceipt方法,如果有结果返回则表示该交易是存在的,此时如果该合约方法有创建event的话,还可以从该event中获取到写入的数据,里面的每个字段都是64位的16进制数据;

3)拿到数据后确认交易完成后,可以更新下db里交易状态;

4)此时还可以和前端一样调用合约里的方法。

相关文章

  • 转载—DAPP实战:从0到1全过程(2)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(2) “本章主要介绍DAPP合约开发基础,sol...

  • 转载—DAPP实战:从0到1全过程(1)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(1) 大家好!从今天开始,本公众号将推出DAPP...

  • 转载—DAPP实战:从0到1全过程(8)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(8) 上篇文章为大家讲解了如何在前端通过web3...

  • 转载—DAPP实战:从0到1全过程(5)

    转载微信订阅号(区块链之录)文章: DAPP实战:从0到1全过程(5) 前面几篇文章着重讲解了下智能合约的基本语法...

  • Ruby从0到1实战

    推荐使用软件:sublime下载地址:http://www.sublimetext.comSublimeText汉...

  • 《见识》复盘02:创业&创新

    一、创业不等于从0到1 1.创新中的从0到1只是完成了万里长征的第1步,真正创新是要走完从0到N的全过程。 2.伟...

  • 《青霉素:发明不是从0到1》要点总结

    1.发明是从0到N的全过程,从0到1固然了不起,但是能走到N的才是英雄。这就如同在马拉松比赛的起点挤满了人,到终点...

  • 从0到1(8秘密)

    当今众人皆知,家喻户晓的观念都曾是未知的。例如三角形三边之间的关系就曾是千年之谜。称为常识的真理很重要,但它却不...

  • 8/20 从0到1

    这本书讲了什么? 作者宣贯的创业理念是通过科技实现从0到1的质变,首先主导一个小的利基市场,在这个基础上扩大,直到...

  • 从0到0,从0到1。

    昨天和一客户交流,听到这么一句话,我现在的阶段勉强算0到0的阶段,到那个1的阶段还没有看到,或者说并不知道那个1在...

网友评论

    本文标题:转载—DAPP实战:从0到1全过程(8)

    本文链接:https://www.haomeiwen.com/subject/iisnbftx.html