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

如何在React应用中获取Temple Wallet的所有资产/代币余额?

获取Temple Wallet内所有资产/代币余额的实现方案

一、直接通过Temple Wallet DApp SDK获取全量资产

Temple Wallet的官方DApp SDK提供了直接获取用户钱包内所有资产(包括XTZ和自定义代币)的方法,无需手动处理合约交互,是最便捷的方式:

import { useTempleClient, useAccount } from '@temple-wallet/dapp';

const AssetList = () => {
  const { client } = useTempleClient();
  const { account } = useAccount();

  const loadAllAssets = async () => {
    if (!client || !account) return;
    
    // 获取用户钱包内已添加的所有资产
    const assets = await client.getAssets(account.publicKeyHash);
    
    // 遍历处理资产数据,转换为可读格式
    const formattedAssets = assets.map(asset => ({
      name: asset.name,
      symbol: asset.symbol,
      balance: (asset.balance.toNumber() / (10 ** asset.decimals)).toFixed(2),
      contractAddress: asset.contract?.address // XTZ的contract字段为undefined
    }));
    
    console.log('用户资产列表:', formattedAssets);
    // 后续可将formattedAssets渲染到UI组件中
  };

  return (
    <div>
      <button onClick={loadAllAssets}>加载所有资产余额</button>
      {/* 这里添加UI渲染逻辑 */}
    </div>
  );
};

说明

  • 返回的assets数组包含XTZ和用户已添加的所有代币,每个资产的balance为原始整数,需根据decimals字段转换为可读的小数格式
  • 该方法自动同步Temple Wallet内的资产数据,无需手动维护合约地址列表

二、通过Taquito手动查询特定代币余额

如果需要查询未添加到Temple Wallet的代币,或自定义合约交互逻辑,可以使用Taquito调用代币合约的标准视图方法:

import { TezosToolkit } from '@taquito/taquito';

const tezos = new TezosToolkit("https://rpc.tzkt.io/ghostnet");

const getTokenBalance = async (walletAddress, tokenContractAddr) => {
  try {
    const tokenContract = await tezos.contract.at(tokenContractAddr);
    
    // 调用TZIP-12标准的getBalance视图方法(部分合约用balance_of)
    const balanceResult = await tokenContract.views.getBalance(walletAddress).read();
    // 获取代币精度,转换为可读格式
    const decimals = await tokenContract.storage.decimals();
    const readableBalance = balanceResult.toNumber() / (10 ** decimals);
    
    return readableBalance;
  } catch (err) {
    console.error('查询代币余额失败:', err);
    return 0;
  }
};

// 使用示例:替换为实际的钱包地址和LYZI合约地址
// const lyziBalance = await getTokenBalance('tz1YourWalletAddress', 'KT1LyziContractAddress');

注意事项

  • 绝大多数Tezos代币遵循TZIP-12标准,统一使用getBalance或balance_of方法查询余额
  • 若遇到非标准合约,需参考对应代币的合约接口文档调整调用逻辑

三、批量查询优化

如果需要批量查询多个代币,可以结合上述两种方式:

  • 先通过Temple SDK获取用户已有的资产列表
  • 对需要补充的代币,用Taquito批量调用合约方法,减少RPC请求次数

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:32:27