web3j重播所有合同事件

时间:2018-01-22 09:56:48

标签: java ethereum web3-java


关于Web3j库的问题。如何使用web3j重播区块链中的所有日志?我知道有一种方法可以重播特定合同中的所有日志:

EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
        DefaultBlockParameterName.LATEST, "0xafc785653c...")

web3j.ethLogObservable(filter).subscribe(
    event => {
      println(event.toString)
    }
  )

它工作正常,但是当创建filter而没有参数 - new EthFilter()时,它根本不会捕获任何日志。
如果我有1000份合同来听取事件怎么办?最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

public EthFilter(DefaultBlockParameter fromBlock, DefaultBlockParameter toBlock,
                 List<String> address) {
    super();
    this.fromBlock = fromBlock;
    this.toBlock = toBlock;
    this.address = address;
}

从 Web3J 版本 3.6.0 开始,您可以传递合约地址列表以听取事件。

虽然手动创建一个包含 1000 个合约地址的列表很麻烦,但您可以维护一个文件或数据库表,您可以从中获取合约地址。 我希望这个答案有帮助。