Python调用TRONSCAN API获取TRC20交易失败求助
问题排查与解决方案
以下是针对你的TRC20交易查询代码问题的排查步骤和修正方案:
核心问题分析
你的代码主要存在两个潜在问题:
- 交易数据判断逻辑错误:当接口返回空交易列表(
[])时,代码会误判为"无数据",而实际上是地址确实无交易或请求参数存在问题; - 缺少关键请求参数:Tronscan的
token_trc20/transfers接口需要显式指定交易方向,否则可能返回不完整数据。
修正后的代码
import requests def get_trc20_transfers(tron_address, api_key=None): base_url = "https://apilist.tronscan.org/api" endpoint = "/token_trc20/transfers" params = { "address": tron_address, "limit": 20, "start": 0, "direction": "all" # 显式指定获取转入/转出所有交易 } if api_key: params["api_key"] = api_key try: response = requests.get(base_url + endpoint, params=params) response.raise_for_status() # 主动抛出HTTP错误 data = response.json() # 调试用:打印完整响应,方便排查问题 print("接口完整响应:", data) transfers = data.get("data", []) return transfers except requests.exceptions.RequestException as e: print("请求异常:", e) return None if __name__ == "__main__": tron_address = "TXxxxxxxxxxxxxxxxxxxxx" tronscan_api_key = "xxxxxxxxxxxxx" trc20_transfers = get_trc20_transfers(tron_address, tronscan_api_key) if trc20_transfers is not None: if trc20_transfers: print("TRC20交易记录:") for transfer in trc20_transfers: print(transfer) else: print(f"地址 {tron_address} 暂无TRC20交易记录。") else: print(f"获取地址 {tron_address} 的TRC20交易记录失败。")
关键排查步骤
验证接口响应
运行修正后的代码,查看打印的完整接口响应:- 如果
data字段为空列表,说明该地址确实没有TRC20交易; - 如果响应包含
success: false等错误字段,检查API密钥有效性或地址格式是否正确(TRON地址需为34位以T开头的字符串); - 如果返回401/403错误,尝试移除
api_key参数(部分Tronscan公开接口无需密钥)。
- 如果
更换API端点测试
若当前端点无响应,可尝试替换为官方备用端点:https://api.tronscan.io/api,修改代码中的base_url即可。确认地址真实性
使用Tronscan网页版查询目标地址,确认该地址确实存在TRC20交易,排除地址本身无交易的情况。
内容的提问来源于stack exchange,提问作者Cyrus Chan
相关产品推荐
相关产品推荐

