需要帮助web3.js读取智能合约的返回值

时间:2018-10-24 19:39:28

标签: web3js

我需要帮助来定位web3.js函数,该函数可以将参数发送到现有的智能合约函数,该函数会更改区块链的状态。在智能合约功能中,我返回一个需要使用web3.js捕获的返回值

例如,下面的节点文件调用web3.eth.sendRawTransaction,但是当它返回时,它仅获取交易哈希,而不获取函数“ addfund”的返回值。

使用交易哈希,我可以看到有关交易的详细信息,例如区块号等,但是,addfund的返回值未在任何地方捕获。有办法实现吗?我知道我可以使用

contract.methods.totalSupply().call((err, result) => { console.log(result) }) 

用于获取返回值的函数,但是这些方法不是状态更改函数,因此不适用于我的情况

我的File.js:

var contractAddress = '0x17a8fd94665bd5f73e7fede9c69f64959cefd8df';
   var txOptions = {
   nonce: web3.toHex(web3.eth.getTransactionCount(address)),
   gasLimit: web3.toHex(800000),
   gasPrice: web3.toHex(20000000000),
   to: '0x17a8fd94665bd5f73e7fede9c69f64959cefd8df'
  };
 var rawTx = txutils.functionTx(interfaceABI, 'addfund', 
  ['0xc66ed658f1e75c21df3e50890e983fda34b6052e',100], txOptions);

function sendRaw(rawTx) {
   var privateKey = new Buffer(key, 'hex');
   var transaction = new tx(rawTx);
   console.log('transaction '+ JSON.stringify (transaction));
   transaction.sign(privateKey);
   var serializedTx = transaction.serialize().toString('hex');
   console.log('serializedTx ' +serializedTx);
   web3.eth.sendRawTransaction(
   '0x' + serializedTx, function(err, result) {
      if(err) {
        console.log('error is' + err);
      } else {
        console.log('result is ' + result);
    }
   });
  }`
  sendRaw(rawTx);

Solidity函数:

function addfund(address sender, uint value ) payable public {

    if (partifunded[msg.sender] == true) {
            for ( uint i = 0; i < participants.length; i++) {
                    if (participants[i].partaddr == msg.sender)
                     {
                            participants[i].amount += msg.value;
                            totalamountcol = address(this).balance;
                     }
            }
    }
    else
    {
            partifunded[msg.sender] = true;
            participants.push(Participant(msg.value,msg.sender));
            numberofparti = numberofparti+1;
            totalamountcol = address(this).balance;
    }

}

除此之外:是否有可用于捕获智能合约触发的web3.js中事件的样板代码?

0 个答案:

没有答案