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
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
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.
Related Concepts¶
- Anchor: Advanced Solana program framework
- Wallet Adapter: Wallet connection library
- SPL Token: Token standard library