Etherscan API获取ERC20交易数据并计算钱包ROI的问题
可行方案建议
1. 用Etherscan的ERC20专属接口拿核心数据
直接调用tokentx接口,这是官方专门返回ERC20转账记录的接口,返回字段里直接包含你要的:
tokenSymbol:代币符号methodId:交易调用的方法ID- 还附带交易哈希、区块号、时间戳这些关键关联字段,刚好用来补全ETH价值数据
2. 补全交易对应的ETH价值
两种实现方式:
- 通过时间戳查ETH市价:用
tokentx返回的blockNumber调用block接口拿到区块时间戳,再用这个时间戳去加密货币价格API(比如CoinGecko、CoinMarketCap的免费接口)获取当时的ETH价格,结合交易里的代币价值换算成ETH等价金额;如果是涉及ETH直接流转的交易,用txlist接口根据交易哈希拿到value字段(注意要把wei转成ETH,除以1e18),再加上手续费计算净额。 - 直接关联交易的ETH变动:如果是swap这类涉及ETH和代币互换的操作,用交易哈希去
txlist接口拉取该交易的ETH转账金额,再结合gasUsed和gasPrice算出实际消耗的手续费,最终得到该交易的ETH投入/回收净额。
3. 数据整合与ROI计算
- 用交易哈希作为唯一标识,把
tokentx的代币、MethodID数据,和补全的ETH价值数据整合到一起 - 按
tokenSymbol分组,再根据methodId区分操作类型:比如0x38ed1739(swapExactETHForTokens)属于ETH投入,0x18cbafe5(swapExactTokensForETH)属于ETH回收,把同一代币下的投入和回收分别汇总,就能算出ROI
避坑提示
- Etherscan免费API有调用限制,每分钟最多5次,批量处理要加延迟,或者用API密钥提升限额
- 处理数值时注意单位转换,wei转ETH必须除以
10^18,别搞混导致数据错误 - 部分MethodID可能对应多种操作,提前整理好你关注的MethodID清单(比如swap、transfer、approve这些),避免分类出错
内容的提问来源于stack exchange,提问作者Odelf
相关产品推荐
相关产品推荐

