使用tronpy查询新钱包/Tronscan地址余额报错account not found on-chain
解决tronpy查询余额报错AddressNotFound的问题
问题原因
- 未激活的空地址:TRON链上的账户只有在发生过至少一笔交易(如转入TRX)后才会被创建记录。新生成的钱包地址或从未使用过的地址,链上没有对应账户数据,查询时就会抛出
AddressNotFound异常。 - 网络节点不匹配:如果你的地址是测试网地址,但tronpy默认连接主网节点(或反过来),也会导致找不到地址。
- 节点同步延迟:部分Tronscan显示的地址可能因节点同步问题,暂时无法在当前连接的节点上查询到。
解决方案
1. 激活空地址
新生成的地址必须先进行激活操作:
- 向该地址转入至少0.000001 TRX(即1个sun,TRX的最小单位),完成后链上就会创建该账户的记录,之后即可正常查询余额。
2. 确认并切换正确的网络节点
tronpy默认连接主网,若使用测试网地址,需手动指定测试网节点:
from tronpy import Tron from tronpy.providers import HTTPProvider # 连接Shasta测试网 tron = Tron(HTTPProvider("https://api.shasta.trongrid.io")) # 若使用主网,可指定主网节点(或默认不指定) # tron = Tron(HTTPProvider("https://api.trongrid.io"))
3. 优化查询代码,兼容未激活地址
修改查询函数,捕获异常并返回0余额(未激活地址实际余额为0):
def get_balance(address): try: # 获取账户信息并转换余额单位(sun转TRX) account = tron.get_account(address) return account["balance"] / 10**6 except tronpy.exceptions.AddressNotFound: # 账户未激活,返回0余额 return 0.0 # 调用示例 wallet = create_wallet() balance = get_balance(wallet['base58check_address']) print("Balance:", balance)
4. 验证Tronscan地址有效性
若Tronscan上的地址也报错,先确认该地址是否有过链上交易记录:
- 在Tronscan上查看地址的交易历史,若没有任何交易,说明该地址未被激活,需先转入TRX激活后再查询。
- 若有交易记录仍报错,尝试更换节点(比如换用
https://api.trongrid.io或https://api.nileex.io)。
内容的提问来源于stack exchange,提问作者виталик панасюк
相关产品推荐
相关产品推荐

