はじめに

トークンデータを読み取る

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取得するトークンミントアドレス

トークン残高を取得する

Associated Token Accountまたは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データのみを返します

関連ガイド