web3.js交易方法的调用方式汇总

Posted 乞力马扎罗的雪CYF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web3.js交易方法的调用方式汇总相关的知识,希望对你有一定的参考价值。

web3.js中的交易方法调用:

(1)调用方式1

contractAddr.register(amount, from: account);

注意一定要传from参数,也就是哪一个账户去调用的。否则会调用失败。【from参数不能省略】

(2)调用方式2

contractAddr.register(amount, from: account).then(function(returnValue) 

    console.log("交易hash:" + returnValue);

  );

可以获得本次交易方法执行的交易hash;【from参数不能省略】

(3)调用方式3

contractAddr.register.sendTransaction(amount, from: account);

相当于直接发送一个交易。【from参数也不能省略】

(4)调用方式4 

 contractAddr.register.sendTransaction(amount, from: account).then(function(returnValue) 

    console.log(returnValue);

  );

同样也可以捕获交易hash返回值。 【from参数也不能省略】

 


web3.js对于tx交易方法返回值的测试Event方式

  • 一个Event参数测试

经过测试,Event事件可以返回uint,int,address, bytes32, string, bool类型;

但是不能返回任何的数组类型。

合约中的实现:

event LogRegStatus(address user, bool result);



function register(int ui) 

    if(ui != 0) 

        LogRegStatus(msg.sender, true);

    

    else 

        LogRegStatus(msg.sender, false);

    

js中的实现:  

contractAddr.register(amount, from: account).then(function() 



  );



    contractAddr.LogRegStatus().watch(function(err, event) 



      if(event.args.result) 

        console.log("成功啦");

      

      else 

        console.log("失败啦");

      

);

 

  • 多个Event参数测试

可以返回多个返回值。

合约中实现:

event LogRegStatus(address user, bool result1, int result2, string result3, bytes32 result4, address result5);



function register(int ui)



    if(ui != 0) 

        LogRegStatus(msg.sender, true, ui, "success", "bytes32", 0x75611bef6091d73546b0a9225105db3c95b9cf5c);

    

    else 

        LogRegStatus(msg.sender, false, ui, "fail", "bytes323232", 0x544e4107f7bd059f85495d2f8dfcbf7699797a04);

    

js中实现:  

contractAddr.register(amount, from: account).then(function() 



  );



    contractAddr.LogRegStatus().watch(function(err, event) 



      console.log(event.args.result1);

      console.log(event.args.result2.valueOf());

      console.log(event.args.result3);

      console.log(hexCharCodeToStr(event.args.result4));

      console.log(event.args.result5);



);

 


交易方法不能获得返回值的原因是:交易并不是实时的,在区块链上需要时间被处理。

以上是关于web3.js交易方法的调用方式汇总的主要内容,如果未能解决你的问题,请参考以下文章

web3.js查询方法的调用方式汇总

web3.js查询方法的调用方式汇总

关于web3.js中与交易发送交易签名智能合约函数调用相关api的理解

转让所有权 web3

使用 web3.js 从交易中获取 USDC(或任何非 ETH 值)

以太坊如何使用web3.js或者rpc接口获取交易数据交易时间与确认数?