What is @solana/web3.js?
@solana/web3.js is a JavaScript library for interacting with the Solana blockchain. It provides a set of tools and utilities for developers to build applications on Solana, including functionalities for managing accounts, sending transactions, interacting with smart contracts, and querying blockchain data.
What are @solana/web3.js's main functionalities?
Create and Manage Accounts
This feature allows you to create and manage Solana accounts. The code sample demonstrates how to generate a new keypair, which includes a public key and a secret key.
const solanaWeb3 = require('@solana/web3.js');
// Generate a new keypair
const keypair = solanaWeb3.Keypair.generate();
console.log('Public Key:', keypair.publicKey.toBase58());
console.log('Secret Key:', keypair.secretKey);
Send Transactions
This feature allows you to send transactions on the Solana blockchain. The code sample demonstrates how to create a connection to the Solana devnet, airdrop SOL to an account, create a transaction to transfer SOL, and send the transaction.
const solanaWeb3 = require('@solana/web3.js');
(async () => {
const connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
const from = solanaWeb3.Keypair.generate();
const to = solanaWeb3.Keypair.generate();
// Airdrop SOL to the from account
await connection.requestAirdrop(from.publicKey, solanaWeb3.LAMPORTS_PER_SOL);
// Create a transaction
const transaction = new solanaWeb3.Transaction().add(
solanaWeb3.SystemProgram.transfer({
fromPubkey: from.publicKey,
toPubkey: to.publicKey,
lamports: solanaWeb3.LAMPORTS_PER_SOL / 100,
})
);
// Sign and send the transaction
const signature = await solanaWeb3.sendAndConfirmTransaction(connection, transaction, [from]);
console.log('Transaction signature:', signature);
})();
Interact with Smart Contracts
This feature allows you to interact with smart contracts deployed on the Solana blockchain. The code sample demonstrates how to create a transaction that calls a smart contract and send the transaction.
const solanaWeb3 = require('@solana/web3.js');
(async () => {
const connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
const programId = new solanaWeb3.PublicKey('YourProgramIdHere');
const account = solanaWeb3.Keypair.generate();
// Create a transaction to call a smart contract
const transaction = new solanaWeb3.Transaction().add(
new solanaWeb3.TransactionInstruction({
keys: [{ pubkey: account.publicKey, isSigner: true, isWritable: true }],
programId,
data: Buffer.alloc(0), // Add your instruction data here
})
);
// Sign and send the transaction
const signature = await solanaWeb3.sendAndConfirmTransaction(connection, transaction, [account]);
console.log('Transaction signature:', signature);
})();
Query Blockchain Data
This feature allows you to query data from the Solana blockchain. The code sample demonstrates how to get account information and the recent blockhash from the blockchain.
const solanaWeb3 = require('@solana/web3.js');
(async () => {
const connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
const publicKey = new solanaWeb3.PublicKey('YourPublicKeyHere');
// Get account info
const accountInfo = await connection.getAccountInfo(publicKey);
console.log('Account Info:', accountInfo);
// Get recent blockhash
const recentBlockhash = await connection.getRecentBlockhash();
console.log('Recent Blockhash:', recentBlockhash);
})();
Other packages similar to @solana/web3.js
web3
web3.js is a collection of libraries that allow you to interact with a local or remote Ethereum node using HTTP, IPC, or WebSocket. It provides similar functionalities to @solana/web3.js but is designed for the Ethereum blockchain.
ethers
ethers.js is a library for interacting with the Ethereum blockchain and its ecosystem. It provides a more lightweight and modular approach compared to web3.js and includes functionalities for managing accounts, sending transactions, and interacting with smart contracts.
near-api-js
near-api-js is a JavaScript library for interacting with the NEAR blockchain. It provides similar functionalities to @solana/web3.js, including account management, transaction handling, and smart contract interaction, but is designed specifically for the NEAR blockchain.
Solana JavaScript API
This is the Solana Javascript API built on the Solana JSON RPC API
Latest API Documentation
Installation
Yarn
$ yarn add @solana/web3.js
npm
$ npm install --save @solana/web3.js
Browser bundle
<script src="https://github.com/solana-labs/solana-web3.js/releases/download/v0.0.3/solanaWeb3.min.js"></script>
Usage
Javascript
const solanaWeb3 = require('@solana/web3.js');
console.log(solanaWeb3);
ES6
import solanaWeb3 from '@solana/web3.js';
console.log(solanaWeb3);
Browser bundle
console.log(solanaWeb3);
Examples
See the examples/ directory
Releases
Releases are available on Github
and npmjs.com.
Each Github release features a tarball containing API documentation and a
minified version of the module suitable for direct use in a browser environment
(<script> tag)