使用solana.py查询特定Solana地址USDC余额失败,求解决方法
问题:使用Solana.py查询USDC余额时触发AttributeError
我正在用solana.py开发Solana Python程序,查询特定钱包的USDC代币余额时遇到问题,查了Solana Cookbook也没解决。代码如下:
# This is the public key of the Solana USDC token usdc_key = PublicKey('4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU') # This function is supposed to mimick the one presented in TS by the Solana Cookbook def findUSDCBalance(): usdc_balance = client.get_token_accounts_by_owner_json_parsed(sol_address, usdc_key) return(usdc_balance)
收到错误:
AttributeError: 'PublicKey' object has no attribute 'mint'
我的问题不是解析响应,而是如何获取正确的JSON响应,求具体解决方法。
解决方案
错误原因
get_token_accounts_by_owner_json_parsed方法的第二个参数需要传入过滤条件字典,而非直接传入PublicKey对象。你直接传usdc_key时,方法内部会尝试访问对象的mint属性,导致报错。
修正代码
将第二个参数改为包含mint字段的字典,指定要查询的代币Mint地址:
from solana.publickey import PublicKey from solana.rpc.api import Client # 初始化客户端(替换为你的RPC节点地址) client = Client("https://api.mainnet-beta.solana.com") usdc_key = PublicKey('4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU') sol_address = PublicKey("你的目标钱包公钥") # 替换为实际钱包地址 def findUSDCBalance(): # 传入带mint字段的过滤字典 usdc_balance = client.get_token_accounts_by_owner_json_parsed( sol_address, {'mint': usdc_key} ) return usdc_balance
补充说明
这个方法会返回该钱包下所有USDC代币账户的完整信息(若钱包存在多个USDC账户)。如果只需要单个账户的余额,可先通过上述方法拿到代币账户地址,再用get_token_account_balance查询:
def get_single_usdc_balance(): accounts = client.get_token_accounts_by_owner_json_parsed(sol_address, {'mint': usdc_key}) if accounts['result']['value']: token_account = accounts['result']['value'][0]['pubkey'] balance = client.get_token_account_balance(token_account) return balance return None
内容的提问来源于stack exchange,提问作者OKprogrammer
相关产品推荐
相关产品推荐

