7

对于给定的钱包公钥,我想获取我当前拥有的代币列表。

目前我正在https://api.solscan.io/account/tokens?address="PUBLIC_KEY">&price=1用来获取我拥有的代币。

好的。所以我找到了这个。使用 SPL 令牌 ID 作为程序 ID 将返回所有用户拥有的令牌。

connection
  .getParsedTokenAccountsByOwner(
    new PublicKey("PUBLIC_KEY"),
    {
      programId: new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")
    }
  )
4

2 回答 2

5

我建议使用.getParsedProgramAccounts()Connection 类的方法。

import { TOKEN_PROGRAM_ID } from "@solana/spl-token";
import { clusterApiUrl, Connection } from "@solana/web3.js";

(async () => {
  const MY_WALLET_ADDRESS = "FriELggez2Dy3phZeHHAdpcoEXkKQVkv6tx3zDtCVP8T";
  const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

  const accounts = await connection.getParsedProgramAccounts(
    TOKEN_PROGRAM_ID, // new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")
    {
      filters: [
        {
          dataSize: 165, // number of bytes
        },
        {
          memcmp: {
            offset: 32, // number of bytes
            bytes: MY_WALLET_ADDRESS, // base58 encoded string
          },
        },
      ],
    }
  );
})();

详细说明链接:https ://solanacookbook.com/ingredients/get-program-accounts.html#filters

于 2021-12-10T16:34:39.843 回答
1

查看 JSON RPC 调用getTokenAccountsByOwner,其中所有者将是钱包的公钥。

更多信息,请访问https://docs.solana.com/developing/clients/jsonrpc-api#gettokenaccountsbyowner

于 2021-09-29T20:30:55.980 回答