const apiKey = process.env.SOLANA_RPC_API_KEY;
if (!apiKey) throw new Error("Set SOLANA_RPC_API_KEY before starting");
const endpoint = new URL("https://rpc-mainnet.solanatracker.io/");
endpoint.searchParams.set("api_key", apiKey);
async function rpc(method, params = []) {
const response = await fetch(endpoint, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
signal: AbortSignal.timeout(15_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const body = await response.json();
if (body.error) {
throw new Error(`RPC ${body.error.code}: ${body.error.message}`);
}
return body.result;
}
const balance = await rpc("getBalance", [
"So11111111111111111111111111111111111111112",
{ commitment: "confirmed" },
]);
console.log({ slot: balance.context.slot, lamports: balance.value });