1


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

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

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

它工作得很好,但是当filter它没有参数 -new EthFilter()时,它根本不会捕获任何日志。
如果我有 1000 个合约来监听事件怎么办?解决此问题的最佳方法是什么?

4

1 回答 1

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 个合约地址的列表很麻烦,但您可以维护一个文件或数据库表,从中可以获取合约地址。我希望这个答案有帮助。

于 2021-01-14T10:36:48.830 回答