如何在Solana钱包中获取代币列表?

4

我正在尝试从钱包地址获取拥有的代币列表。在Solana Web3文档中,有一个名为getTokenAccountsByOwnerConnection属性,但是我遇到了类型错误:mintAddress.toBase58不是一个函数

以下是我使用的代码:

const solanaWeb3 = require('@solana/web3.js');
const { Connection, programs } = require('@metaplex/js');
const axios = require('axios');

..

console.log(solanaConnection.getTokenLargestAccounts('2MTPtFo78QzWJaK9PGk9pZm9dFrVVSBGCRWPpND25GAe'));

这可以帮助:https://solanacookbook.com/ingredients/get-program-accounts.html - munanadi
1个回答

1

看起来你的问题和代码有些混淆,因为问题引用了getTokenAccountsByOwner,但代码显示了getTokenLargestAccounts

无论如何,你正在传递一个字符串,而应该传递一个PublicKey。你可以尝试:

console.log(solanaConnection.getTokenLargestAccounts(new PublicKey('2MTPtFo78QzWJaK9PGk9pZm9dFrVVSBGCRWPpND25GAe')));

不确定这是如何解决问题的。文档明确表示需要以base-58编码的字符串作为参数。 https://docs.solana.com/developing/clients/jsonrpc-api#gettokenaccountsbyowner - SagarM
对于JSON RPC,是的,它期望一个字符串,但web3绑定期望一个PublicKey,然后将其转换为base58字符串。这是代码:https://github.com/solana-labs/solana/blob/428575f9aefd5155de6419307321c17a827c43cf/web3.js/src/connection.ts#L2403 - Jon C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接