快速入门

读取代币数据

Last updated November 28, 2025

从Solana区块链获取同质化代币信息。

获取代币元数据

使用铸币地址获取代币的元数据。这将检索链上代币信息,包括名称、符号、小数位数和供应量。

1// npm install @metaplex-foundation/mpl-token-metadata @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults
2import { publicKey } from '@metaplex-foundation/umi'
3import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
4import {
5 fetchDigitalAsset,
6 mplTokenMetadata
7} from '@metaplex-foundation/mpl-token-metadata'
8
9// Initialize Umi with your RPC endpoint
10const umi = createUmi('https://api.devnet.solana.com').use(mplTokenMetadata())
11
12// The mint address of the token you want to fetch
13const mintAddress = publicKey('YOUR_TOKEN_MINT_ADDRESS')
14
15// Fetch the token's metadata from the blockchain
16const asset = await fetchDigitalAsset(umi, mintAddress)
17
18console.log('Token Name:', asset.metadata.name)
19console.log('Token Symbol:', asset.metadata.symbol)
20console.log('Token URI:', asset.metadata.uri)
21console.log('Decimals:', asset.mint.decimals)
22console.log('Supply:', asset.mint.supply)

参数

参数描述
mintAddress要获取的代币铸币地址

获取代币余额

使用关联代币账户或DAS API获取特定钱包的代币余额。

1// npm install @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults @metaplex-foundation/mpl-toolbox
2import { publicKey } from '@metaplex-foundation/umi'
3import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
4import {
5 findAssociatedTokenPda,
6 fetchToken
7} from '@metaplex-foundation/mpl-toolbox'
8
9const umi = createUmi('https://api.devnet.solana.com')
10
11const mintAddress = publicKey('YOUR_TOKEN_MINT_ADDRESS')
12const walletAddress = publicKey('WALLET_ADDRESS')
13
14// Find the Associated Token Account
15const tokenAccount = findAssociatedTokenPda(umi, {
16 mint: mintAddress,
17 owner: walletAddress,
18})
19
20// Fetch the token account data
21const tokenData = await fetchToken(umi, tokenAccount)
22
23console.log('Token Balance:', tokenData.amount)
24console.log('Mint:', tokenData.mint)
25console.log('Owner:', tokenData.owner)

按所有者获取所有代币

使用DAS API获取钱包地址拥有的所有同质化代币。

1// npm install @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults @metaplex-foundation/digital-asset-standard-api
2import { dasApi } from '@metaplex-foundation/digital-asset-standard-api';
3import { publicKey } from '@metaplex-foundation/umi';
4import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
5
6const umi = createUmi('https://api.devnet.solana.com').use(dasApi())
7
8const walletAddress = publicKey('WALLET_ADDRESS')
9
10// Get all fungible assets owned by the wallet using searchAssets
11// Using interface: 'FungibleToken' filters server-side (more efficient)
12const result = await umi.rpc.searchAssets({
13 owner: walletAddress,
14 interface: 'FungibleToken',
15 limit: 1000,
16 displayOptions: {
17 showFungible: true
18 }
19})
20
21const fungibleTokens = result.items
22
23console.log(`Found ${fungibleTokens.length} fungible tokens\n`)
24
25fungibleTokens.forEach(token => {
26 const decimals = token.token_info?.decimals || 0
27 const rawBalance = token.token_info?.balance || 0
28 const balance = Number(rawBalance) / Math.pow(10, decimals)
29
30 console.log(`${token.content.metadata?.name} (${token.content.metadata?.symbol})`)
31 console.log(` Mint: ${token.id}`)
32 console.log(` Balance: ${balance.toLocaleString()}`)
33})

方法比较

功能直接RPCDAS API
速度批量查询较慢针对批量查询优化
数据新鲜度实时近实时(已索引)
搜索功能有限高级过滤
用例单个代币查找投资组合视图、搜索

提示

  • 投资组合视图使用DAS - 当显示用户拥有的所有代币时,DAS API比多个RPC调用快得多
  • 在DAS中设置showFungible - 设置showFungible: true,否则某些RPC只返回NFT数据

相关指南