关于Web3j库的问题。如何使用web3j重播区块链中的所有日志?我知道有一种方法可以重播特定合同中的所有日志:
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
DefaultBlockParameterName.LATEST, "0xafc785653c...")
web3j.ethLogObservable(filter).subscribe(
event => {
println(event.toString)
}
)
它工作正常,但是当创建filter
而没有参数 - new EthFilter()
时,它根本不会捕获任何日志。
如果我有1000份合同来听取事件怎么办?最好的方法是什么?
答案 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 个合约地址的列表很麻烦,但您可以维护一个文件或数据库表,您可以从中获取合约地址。 我希望这个答案有帮助。