Skip to content

Solana Web3.js

@solana/web3.js

@solana/web3.js is Solana's official JavaScript SDK for interacting with the Solana blockchain in browsers and Node.js. It is the foundational library for Solana frontend development.

Core Features

1. Connect to RPC

import { Connection } from '@solana/web3.js';

const connection = new Connection('https://api.mainnet-beta.solana.com');

2. Create Transactions

import { Transaction, SystemProgram } from '@solana/web3.js';

const transaction = new Transaction().add(
  SystemProgram.transfer({
    fromPubkey: sender.publicKey,
    toPubkey: recipient,
    lamports: 1000000,
  })
);

3. Sign and Send

transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
transaction.sign(sender);
const signature = await connection.sendRawTransaction(transaction.serialize());
await connection.confirmTransaction(signature);

4. Query Data

// Get balance
const balance = await connection.getBalance(publicKey);

// Get account info
const accountInfo = await connection.getAccountInfo(publicKey);

// Get transaction
const transaction = await connection.getTransaction(signature);

Common Classes and Methods

PublicKey

import { PublicKey } from '@solana/web3.js';
const pubkey = new PublicKey('address string');

Keypair

import { Keypair } from '@solana/web3.js';

// Generate a new keypair
const keypair = Keypair.generate();

// Restore from secret key
const keypair = Keypair.fromSecretKey(secretKey);

SystemProgram Instruction builder for the System Program.

Transaction Transaction object containing a list of instructions.

SPL Token Operations

Requires installing @solana/spl-token separately:

import { getAssociatedTokenAddress, createTransferInstruction } from '@solana/spl-token';

const ata = await getAssociatedTokenAddress(mint, owner);

Best Practices

1. Use Commitment Levels

await connection.confirmTransaction(signature, 'confirmed');

2. Error Handling

try {
  await connection.sendTransaction(transaction, [signer]);
} catch (error) {
  console.error('Transaction failed:', error);
}

3. Batch Requests Use getMultipleAccountsInfo to reduce RPC calls.

web3.js 2.0 has been renamed to Kit.

  • Anchor: Advanced Solana program framework
  • Wallet Adapter: Wallet connection library
  • SPL Token: Token standard library