小编Mar*_*tin的帖子

如何获取交易(非合约)的所有事件?

我想使用 web3 获取 Solidity 合约发出的所有事件,但是 .getPastEvents() 方法用于合约。

这将返回 contractInstance 的所有事件,但是,我的合约调用其他也发出事件的合约。

await contractInstance.getPastEvents("allEvents", {fromBlock: bn, toBlock: bn});
Run Code Online (Sandbox Code Playgroud)

我想从交易中获取所有事件,而不是从合同中获取。

或者作为替代,即使是来自一个块的所有事件,然后我可以使用事务哈希对其进行过滤,以获得我想要的。是否有返回块中所有事件的函数?我找过,但我找不到一个。我必须知道链中的每个合约并分别获取事件吗?也许。

我做了一个非常简单的例子来说明。

坚固性代码:

pragma solidity 0.5.8;

contract contractA {
    event eventA();
    function methodA( address b ) public {
        emit eventA();
        contractB instanceB = contractB( b );
        instanceB.methodB();
    }
}

contract contractB {
    event eventB();
    function methodB() public {
        emit eventB();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Truffle 使其变得简单。这是迁移文件:

var contractA = artifacts.require("contractA");
var contractB = artifacts.require("contractB");

module.exports = function(deployer) {
  deployer.deploy(contractA);
  deployer.deploy(contractB);
Run Code Online (Sandbox Code Playgroud)

这是调用发出 eventA 的 contractA …

ethereum solidity

4
推荐指数
1
解决办法
3906
查看次数

标签 统计

ethereum ×1

solidity ×1