Solana:解析代币数据

Solana: Parse Token Data

如何解析 SPL 令牌帐户中的数据?它包含一个二进制 blob,我想获取令牌类型和令牌数量。

可接受的语言是 solana-cli、web3.js 或 solana.py。我正在寻找任何解决方案。

默认情况下,RPC 提供了一种很好的解析数据的方法。您可以在 web3.js.

中使用 getParsedAccountInfo

让我们在9xqnnfeonbsEGSPgF5Wd7bf9RqXy4KP22bdaGmZbHGwp

获取代币账户
import { Connection, PublicKey, ParsedAccountData, clusterApiUrl } from '@solana/web3.js';

(async () => {
  const connection = new Connection(clusterApiUrl('mainnet-beta'));
  const tokenAccount = await connection.getParsedAccountInfo(new PublicKey('9xqnnfeonbsEGSPgF5Wd7bf9RqXy4KP22bdaGmZbHGwp'));
  console.log((tokenAccount.value?.data as ParsedAccountData).parsed);
})();

/**
{
  info: {
    isNative: false,
    mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
    owner: 'Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i',
    state: 'initialized',
    tokenAmount: {
      amount: '738576212',
      decimals: 6,
      uiAmount: 738.576212,
      uiAmountString: '738.576212'
    }
  },
  type: 'account'
}
**/

在这里我们可以看到 tokenAccount 的输出有一个铸币厂 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v(USDC),地址 Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i 拥有,数量 738.576212。这就是我们从令牌帐户中需要的所有数据。