开发者问题收集

Solana - 如何从我的 Phantom 钱包中获取余额?

2021-10-11
12065

我正在开发一款可以连接到 Phantom Wallet 的 Web 应用。我已经建立了连接并成功检索了钱包的公钥。问题是,我似乎找不到任何获取账户余额的解决方案。

作为参考,我想像 solanart.io 显示的那样显示账户余额。

请注意,我已经阅读了所有相关文档(Solana/web3.js、Solana JSON RPC API 等)。请指导我,因为我对 JSON RPC API 还不熟悉。

请注意,我正在使用 vanilla js。

try {
      const resp = window.solana.request({
        method: "getAccountTokenBalance",
        params: [
          id, //wallet's public key
          {
            encoding: "base58",
          },
        ],
      });
      console.log(resp);
    } catch(err) {
      // error message
    }
3个回答

您使用的 RPC 方法不存在。您需要使用 getBalance 获取钱包上的 SOL: https://docs.solana.com/developing/clients/jsonrpc-api#getbalance

要获取该钱包拥有的所有非 SOL 代币余额,您必须使用该钱包 ID 使用 getTokenAccountsByOwner https://docs.solana.com/developing/clients/jsonrpc-api#gettokenaccountsbyowner

Jon C
2021-10-13
import { useWallet } from '@solana/wallet-adapter-react'
import { LAMPORTS_PER_SOL,clusterApiUrl } from '@solana/web3.js'
import * as anchor from '@project-serum/anchor'


const wallet = useWallet()
const SOLANA_HOST = clusterApiUrl("devnet")
const connection = new anchor.web3.Connection(SOLANA_HOST)

let lamportBalance
if (wallet?.publicKey) {
        const balance = await connection.getBalance(wallet.publicKey)
        lamportBalance=(balance / LAMPORTS_PER_SOL)
      }
Yilmaz
2022-05-30

此方法对我有用,可以获得 SOL 余额

  const [userSOLBalance, setSOLBalance] = useState<number>()
 if (wallet.publicKey) {
  const SOL = connection.getAccountInfo(wallet.publicKey)
  SOL.then((res) => setSOLBalance(res.lamports / LAMPORTS_PER_SOL))
}
Gopal Das
2022-05-25