Solana - How to get the balance from my Phantom wallet?

10.4k views Asked by At

I'm working on a web app that can connect to Phantom Wallet. I've established the connection and have successfully retrieved the wallet's public key. The problem is, I can't seem to find any solution to get the account balance.

For reference, I wanted to display the account balance just like how solanart.io displays it.

Note that I've gone through all related docs (Solana/web3.js, Solana JSON RPC API etc). Please guide me as I'm still new to JSON RPC API.

For a heads up, I'm using 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

There are 3 answers

5
Jon C On BEST ANSWER

The RPC method that you're using does not exist. You'll want to use getBalance to get the SOL on the wallet: https://docs.solana.com/developing/clients/jsonrpc-api#getbalance

To get all of the non-SOL token balances owned by that wallet, you'll have to use getTokenAccountsByOwner using that wallet id: https://docs.solana.com/developing/clients/jsonrpc-api#gettokenaccountsbyowner

0
Gopal Das On

This method works for me to get SOL Balance

  const [userSOLBalance, setSOLBalance] = useState<number>()
 if (wallet.publicKey) {
  const SOL = connection.getAccountInfo(wallet.publicKey)
  SOL.then((res) => setSOLBalance(res.lamports / LAMPORTS_PER_SOL))
}
0
Yilmaz On
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)
      }