Etherscan API交易接口数据不一致及ETH转账值获取咨询
问题原因
你遇到的接口返回不一致问题,核心是Etherscan两个接口的返回规则不同:
tokennfttx接口的返回逻辑是匹配所有包含目标地址的ERC721转移事件日志,只要地址在NFT转账的from、to字段里就会返回对应交易,不管这个地址是不是外部交易的发起方或直接接收方。txlist接口的返回逻辑是仅返回目标地址作为外部交易的发起方(from字段)或直接接收方(to字段)的交易。你那笔查不到的mint交易,你查询的地址应该是NFT的接收方,而该笔外部交易的to字段是NFT合约地址,不是你查询的地址,所以不会出现在txlist的返回结果里。你提到的正常案例,大概率是你查询的地址刚好是对应外部交易的from或to,所以两个接口都能返回。
解决办法
方案1:单交易哈希直接查询(最可靠)
你从tokennfttx接口拿到交易哈希后,直接调用Etherscan的交易详情查询接口获取ETH转账值:
https://api.etherscan.io/api?module=proxy&action=eth_getTransactionByHash&txhash=你的交易哈希&apikey=你的API密钥
返回结果中的value字段就是该笔交易的ETH转账金额,单位为wei,换算为ETH只需除以10^18即可,该接口只要是链上存在的有效交易哈希都能返回对应数据,不存在漏查问题。
方案2:批量处理优化逻辑
如果需要批量处理大量ERC721交易,可废弃原有「txlist遍历匹配哈希」的逻辑,统一从tokennfttx拿到所有交易哈希后,批量调用上述交易详情接口获取转账值,逻辑更统一,不会出现匹配不到的问题。
方案3:排查txlist参数(如果坚持用原有逻辑)
如果要继续使用原有匹配逻辑,可先检查txlist接口的调用参数:
- 确认
startblock和endblock范围覆盖了目标交易的区块高度 - 确认已经处理了分页逻辑,Etherscan的txlist接口单次最多返回1000条记录,交易数量较多时需要通过
page和offset参数分页拉取全量数据
内容的提问来源于stack exchange,提问作者MuTe33
相关产品推荐
相关产品推荐

