Truffle 捕获事件

 

合约可以触发事件,你可以捕捉这些事件,以便对合约的行为有更深入的了解。处理事件的最简单方法是,如果某个交易触发了事件,可以从相应交易的执行结果 result对象中,解析交易日志中的 logs数组。

如果输出第一个日志条目,可以看到调用 sendCoin函数触发的事件( Transfer(msg.sender, receiver, amount);)。

truffle(develop)> result.logs[0]
{ logIndex: 0,
  transactionIndex: 0,
  transactionHash: 

'0x3b33960e99416f687b983d4a6bb628d38bf7855c6249e71d0d16c7930a588cb2'

, blockHash:

'0xe36787063e114a763469e7dabc7aa57545e67eb2c395a1e6784988ac065fdd59'

, blockNumber: 8, address:

'0x6891Ac4E2EF3dA9bc88C96fEDbC9eA4d6D88F768'

, type:

'mined'

, id:

'log_3181e274'

, event:

'Transfer'

, args: Result {

'0'

:

'0x8128880DC48cde7e471EF6b99d3877357bb93f01'

,

'1'

:

'0x12B6971f6eb35dD138a03Bd6cBdf9Fc9b9a87d7e'

,

'2'

: <BN: a>, __length__: 3, _from: '0x8128880DC48cde7e471EF6b99d3877357bb93f01', _to: '0x12B6971f6eb35dD138a03Bd6cBdf9Fc9b9a87d7e', _value: <BN: a> } }

  前面章节中,我们使用的是已经部署合约的合约抽象。我们可以使用 .new()函数将我们自己的版本部署到网络: truffle(develop)> let newInstance = aw ...