问这个问题的朋友挺多的,包括我自己之前也困惑,因为在web3j没有找到合适的API。还好,经过一番研究,找到了一些可行的办法,仅供大家参考,希望大家多多探讨。
1、etherscan api提供了查询历史交易记录的接口,返回json。
2、用web3j filter
过滤器监听交易,将所有的交易数据存储到本地数据库中,需要查询的时候直接从本地数据库中查询。
方案一:etherscan API查询
只能返回最近的1000条交易信息,不过应该够用了吧。
这种方式返回指定个数的交易信息
注意:
1、module
、action
、module
、sort
都是固定值。
2、startblock
和endblock
是指查询2个区块区间的所有指定地址交易,通常startblock
为0,endblock
设置为"latest"即可。
3、apikey
需要申请,apikey 是在etherscan调用那些接口都需要用到的一个参数,它是需要你去申请的,注册账号之后就能得到。每个账户最多持有 3 个 token, 请求 API service 服务, 仅需其中一个即可。
返回结果
方案二:Filter过滤器
这种方式需要后端来实现,我在android端试过,会有一些异常。大家可以参考官方文档
https://docs.web3j.io/getting_started.html#gradle