Skip to main content

SOL Transfer Scrollycoding

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
})();

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

main.ts

_10
import {
_10
Connection,
_10
LAMPORTS_PER_SOL,
_10
SystemProgram,
_10
Transaction,
_10
clusterApiUrl,
_10
sendAndConfirmTransaction,
_10
} from "@solana/web3.js";
_10
import { getOrCreateKeypair, airdropSolIfNeeded } from "./utils";

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

main.ts

_10
// Establish a connection to the Solana devnet cluster
_10
const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

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

main.ts

_10
// Use existing keypairs or generate new ones if they don't exist
_10
const wallet_1 = await getOrCreateKeypair("wallet_1");
_10
const wallet_2 = await getOrCreateKeypair("wallet_2");
_10
_10
console.log(`\n`);

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

main.ts

_10
// Use existing keypairs or generate new ones if they don't exist
_10
const wallet_1 = await getOrCreateKeypair("wallet_1");
_10
const wallet_2 = await getOrCreateKeypair("wallet_2");
_10
_10
console.log(`\n`);
_10
_10
// Request an airdrop of SOL to wallet_1 if its balance is less than 1 SOL
_10
await airdropSolIfNeeded(wallet_1.publicKey);

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

main.ts

_10
// Define the amount to transfer
_10
const transferAmount = 0.1; // 0.1 SOL
_10
_10
// Create a transfer instruction for transferring SOL from wallet_1 to wallet_2
_10
const transferInstruction = SystemProgram.transfer({
_10
fromPubkey: wallet_1.publicKey,
_10
toPubkey: wallet_2.publicKey,
_10
lamports: transferAmount * LAMPORTS_PER_SOL, // Convert transferAmount to lamports
_10
});

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

main.ts

_12
// Define the amount to transfer
_12
const transferAmount = 0.1; // 0.1 SOL
_12
_12
// Create a transfer instruction for transferring SOL from wallet_1 to wallet_2
_12
const transferInstruction = SystemProgram.transfer({
_12
fromPubkey: wallet_1.publicKey,
_12
toPubkey: wallet_2.publicKey,
_12
lamports: transferAmount * LAMPORTS_PER_SOL, // Convert transferAmount to lamports
_12
});
_12
_12
// Add the transfer instruction to a new transaction
_12
const transaction = new Transaction().add(transferInstruction);

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

main.ts

_25
// Define the amount to transfer
_25
const transferAmount = 0.1; // 0.1 SOL
_25
_25
// Create a transfer instruction for transferring SOL from wallet_1 to wallet_2
_25
const transferInstruction = SystemProgram.transfer({
_25
fromPubkey: wallet_1.publicKey,
_25
toPubkey: wallet_2.publicKey,
_25
lamports: transferAmount * LAMPORTS_PER_SOL, // Convert transferAmount to lamports
_25
});
_25
_25
// Add the transfer instruction to a new transaction
_25
const transaction = new Transaction().add(transferInstruction);
_25
_25
try {
_25
const txSig = await sendAndConfirmTransaction(connection, transaction, [
_25
wallet_1,
_25
]);
_25
_25
console.log(
_25
"Transaction Signature:",
_25
`https://explorer.solana.com/tx/${txSig}?cluster=devnet`
_25
);
_25
} catch (error) {
_25
console.error("Transaction unsuccessful: ", error);
_25
}

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

main.ts

_10
// Retrieve and log the new balance of each wallet after the transfer
_10
const balance1 = await connection.getBalance(wallet_1.publicKey);
_10
console.log("wallet_1 new balance:", balance1 / LAMPORTS_PER_SOL);
_10
_10
const balance2 = await connection.getBalance(wallet_2.publicKey);
_10
console.log("wallet_2 new balance:", balance2 / LAMPORTS_PER_SOL);

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.

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.