Query SOL and SPL token balances for Para wallets using Solana libraries. This guide covers checking native SOL balances and SPL token balances.Documentation Index
Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
Use this file to discover all available pages before exploring further.
- @solana/kit
- @solana/web3.js
- Anchor
import { useParaSolanaSigner } from "@getpara/react-native-wallet/solana";
import { createSolanaRpc, address } from '@solana/kit';
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
function WalletBalance() {
const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc });
const [solBalance, setSolBalance] = useState(0);
const [tokenBalance, setTokenBalance] = useState(0);
const fetchBalances = async () => {
if (!solanaSigner) return;
try {
// Get SOL balance
const { value } = await rpc.getBalance(solanaSigner.address).send();
setSolBalance(Number(value) / 1e9);
// Get SPL token balance
const usdcMint = address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const { value: accountData } = await rpc.getAccountInfo(usdcMint).send();
if (accountData && accountData.data) {
const parsed = JSON.parse(accountData.data);
setTokenBalance(Number(parsed.parsed.info.tokenAmount.amount) / 1e6);
} else {
setTokenBalance(0);
}
} catch (error) {
console.error("Error fetching balances:", error);
}
};
return (
<div>
<button onClick={fetchBalances}>Refresh Balances</button>
<p>SOL Balance: {solBalance}</p>
<p>USDC Balance: {tokenBalance}</p>
</div>
);
}
import { useParaSolana } from './hooks/useParaSolana';
import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID, getAccount, getAssociatedTokenAddress } from '@solana/spl-token';
function WalletBalance() {
const { connection, signer } = useParaSolana();
const [solBalance, setSolBalance] = useState(0);
const [tokenBalance, setTokenBalance] = useState(0);
const fetchBalances = async () => {
try {
// Get SOL balance
const balance = await connection.getBalance(signer.sender);
setSolBalance(balance / LAMPORTS_PER_SOL);
// Get SPL token balance (example: USDC)
const usdcMint = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const tokenAccount = await getAssociatedTokenAddress(
usdcMint,
signer.sender
);
try {
const accountInfo = await getAccount(connection, tokenAccount);
setTokenBalance(Number(accountInfo.amount) / 1e6); // USDC has 6 decimals
} catch (error) {
console.log("Token account not found");
setTokenBalance(0);
}
} catch (error) {
console.error("Error fetching balances:", error);
}
};
return (
<div>
<button onClick={fetchBalances}>Refresh Balances</button>
<p>SOL Balance: {solBalance}</p>
<p>USDC Balance: {tokenBalance}</p>
</div>
);
}
import { useParaAnchor } from './hooks/useParaAnchor';
import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';
import { TOKEN_PROGRAM_ID, getAccount, getAssociatedTokenAddress } from '@solana/spl-token';
function WalletBalance() {
const provider = useParaAnchor();
const [solBalance, setSolBalance] = useState(0);
const [tokenBalance, setTokenBalance] = useState(0);
const fetchBalances = async () => {
try {
// Get SOL balance
const balance = await provider.connection.getBalance(provider.publicKey);
setSolBalance(balance / LAMPORTS_PER_SOL);
// Get SPL token balance
const usdcMint = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const tokenAccount = await getAssociatedTokenAddress(
usdcMint,
provider.publicKey
);
try {
const accountInfo = await getAccount(provider.connection, tokenAccount);
setTokenBalance(Number(accountInfo.amount) / 1e6);
} catch (error) {
console.log("Token account not found");
setTokenBalance(0);
}
} catch (error) {
console.error("Error fetching balances:", error);
}
};
return (
<div>
<button onClick={fetchBalances}>Refresh Balances</button>
<p>SOL Balance: {solBalance}</p>
<p>USDC Balance: {tokenBalance}</p>
</div>
);
}