玩过比特币的朋友都知道,比特币是可以通过api(listtransactions)查询指定地址的历史交易的。但在eth中没有提供类似的查询api。今天这篇博客就简单介绍一下如果解决这个问题。
以太坊go-ethereum客户端是没有根据地址查询交易列表的API的。然而,在使用过程中我们往往会用到类似的API。针对是否要在客户端上添加此API,github已经有激励的讨论了。点击一下网址可以了解一下:
https://github.com/ethereum/go-ethereum/issues/1897
那么既然有此需求,即使没有针对性的API也需要找到相应的解决方案。目前有效的解决方案有两种:
(1)调用第三方API接口。此类接口很多,不仅能在官网上查询区块信息,而且提供了查询的API。比如:https://etherchain.org/apidoc 。接口都很简单,不过有访问频次的限制,除非很大的访问量,还是可以使用此类接口。简单,方便。
(2)自行维护数据,自行实现此功能。此方法的基本思路是,查询每个区块的具体交易,录入到自己的数据库中,然后通过sql语句查询自己的数据。此方法就需要有一定的编码基础和设备投入。现有的API是支持查询每一个区块内的交易记录的。虽然比较笨重,但一旦数据由自己维护之后,想怎么查询只是sql语句不同的事情了。
如果要查询合约的交易历史,那么可以通过过滤(filter)合约日志来达到此目的。此种场景是有相应的API进行支撑的。