将所有以太坊合约交易作为Truffle实例获取

时间:2018-03-31 17:39:33

标签: node.js ethereum truffle web3

我正在尝试创建一个Web服务器,以便在进行新事务时查找以太坊合约的特定数据值。我希望它监视新的交易,如果该交易是指定的合约类型,那么进行合约调用以从合约中获取数据值。

我知道我可以通过执行以下操作来获取所有事务数据,但我不知道如何使用它来进行契约调用,并且txInfo.input中的数据与多个数据值组合。

for (var i = startBlockNumber; i <= endBlockNumber; i++) {
    web3.eth.getBlock(i, function(err, blockInfo) {
      if (!blockInfo) {
        return;
      }
      for (var j = 0; j <blockInfo.transactions.length; j++) {
        var tx = blockInfo.transactions[j];
        web3.eth.getTransaction(tx, function(err, txInfo) {
          log(txInfo);
        });
      }
    });
}

为了进行合同调用,我尝试使用松露合同库,但我似乎只能访问发生的最新事务。在下面的代码中,我的solidity契约中的getMyValue函数返回最新事务中的值,但即使在新事务发生时正在运行,也不会调用allEvents监视功能。

App.contracts.myContract.deployed().then(function(instance) {

  const allEvents = instance.allEvents({
    fromBlock: 0,
    toBlock: 'latest'
  });
  console.log(allEvents);
  allEvents.watch((err, res) => {
    console.log(err, res);
  });

  instance.getMyValue.call().then(function(result) {
    console.log(result);
  }).catch(function(err) {
    console.log(err);
  });
}).catch(function(err) {
  console.log(err.message);
});

我将其作为节点服务器运行:

  • truffle-contract v3.0.4
  • web3 v0.20.1
  • express v4.16.3

0 个答案:

没有答案