簡體   English   中英

web3j 重放所有合約事件

[英]web3j replaying all contracts events


關於 Web3j 庫的問題。 如何使用 web3j 重放區塊鏈中的所有日志? 我知道有一種方法可以重放特定合同中的所有日志:

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

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

它工作正常,但是當創建filter時不帶參數 - new EthFilter() ,它根本不捕獲任何日志。
如果我有 1000 個合約來監聽來自 的事件怎么辦? 解決這個問題的最佳方法是什么?

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

從 Web3J 版本 3.6.0 開始,您可以傳遞合約地址列表以聽取事件。

雖然手動創建一個包含 1000 個合約地址的列表很麻煩,但您可以維護一個文件或數據庫表,您可以從中獲取合約地址。 我希望這個答案有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM