如何获取我拥有的代币列表?

Posted

技术标签:

【中文标题】如何获取我拥有的代币列表?【英文标题】:How do I get list of tokens owned by me? 【发布时间】:2021-11-21 17:50:30 【问题描述】:

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

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

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

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

【问题讨论】:

感谢您的回答 - 提供 SPL 令牌 ID 作为程序 ID。我搜索了一段时间才找到这个 请将您问题中的主要信息转换为答案。谢谢! 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何获取我拥有的代币列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何从以太坊地址获取 ERC20、ERC721 和 ERC827 代币列表

如何获取 Coinbase CryptoCurrency 硬币的列表

Web3 通过钱包地址获取所有代币

如何使用 UNISWAP API 获取代币价格

从 Etherscan Token Tracker 获取代币持有者数量和交易数量

获取糖果机铸造的 SPL 代币,以签署元数据 Metaplex Solana