You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:55:24