Skip to main content

SOL Transfer Spotlight

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 1

All Code

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 2

imports

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 3

Connection

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 4

Generate Keypairs

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 5

Request airdrop

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 6

Build transfer instruction

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 7

Build transaction and add instruction

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 8

Send transaction

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

Step 9

Fetch balance

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

main.ts

_56
import {
_56
Connection,
_56
LAMPORTS_PER_SOL,
_56
SystemProgram,
_56
Transaction,
_56
clusterApiUrl,
_56
sendAndConfirmTransaction,
_56
} from "@solana/web3.js";
_56
import { getOrCreateKeypair, airdropSolIfNeeded } from "./utils";
_56
_56
(async () => {
_56
// Establish a connection to the Solana devnet cluster
_56
const connection = new Connection(clusterApiUrl("devnet"), "confirmed");
_56
_56
// Use existing keypairs or generate new ones if they don't exist
_56
const wallet_1 = await getOrCreateKeypair("wallet_1");
_56
const wallet_2 = await getOrCreateKeypair("wallet_2");
_56
_56
console.log(`\n`);
_56
_56
// Request an airdrop of SOL to wallet_1 if its balance is less than 1 SOL
_56
await airdropSolIfNeeded(wallet_1.publicKey);
_56
_56
// Define the amount to transfer
_56
const transferAmount = 0.1; // 0.1 SOL
_56
_56
// Create a transfer instruction for transferring SOL from wallet_1 to wallet_2
_56
const transferInstruction = SystemProgram.transfer({
_56
fromPubkey: wallet_1.publicKey,
_56
toPubkey: wallet_2.publicKey,
_56
lamports: transferAmount * LAMPORTS_PER_SOL, // Convert transferAmount to lamports
_56
});
_56
_56
// Add the transfer instruction to a new transaction
_56
const transaction = new Transaction().add(transferInstruction);
_56
_56
try {
_56
const txSig = await sendAndConfirmTransaction(connection, transaction, [
_56
wallet_1,
_56
]);
_56
_56
console.log(
_56
"Transaction Signature:",
_56
`https://explorer.solana.com/tx/${txSig}?cluster=devnet`
_56
);
_56
} catch (error) {
_56
console.error("Transaction unsuccessful: ", error);
_56
}
_56
_56
// Retrieve and log the new balance of each wallet after the transfer
_56
const balance1 = await connection.getBalance(wallet_1.publicKey);
_56
console.log("wallet_1 new balance:", balance1 / LAMPORTS_PER_SOL);
_56
_56
const balance2 = await connection.getBalance(wallet_2.publicKey);
_56
console.log("wallet_2 new balance:", balance2 / LAMPORTS_PER_SOL);
_56
})();

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.