問題一覧に戻る
中級Solanaプログラミング基礎
問題23: SOLの転送
2つのアカウント間でSOLを転送する方法を学びます。System Programはすべてのウォレットアカウントの所有者で、SOLの転送にはSystem Programのtransfer instructionを使用します。トランザクションを作成し、署名して送信し、転送後の残高を確認する一連の流れを理解しましょう。
import {
LAMPORTS_PER_SOL,
SystemProgram,
Transaction,
sendAndConfirmTransaction,
Keypair,
Connection
} from "@solana/web3.js";
// ローカルテストvalidatorへの接続を作成
const connection = new ("http://localhost:8899", "confirmed");
const sender = new Keypair();
// 受信者のキーペアを作成
const receiver = new ();
// 送信者にSOLをエアドロップ
const signature = await connection.requestAirdrop(
sender.publicKey,
LAMPORTS_PER_SOL
);
await connection.confirmTransaction(signature, "confirmed");
// 転送instructionを作成
const transferInstruction = .({
fromPubkey: sender.publicKey,
toPubkey: receiver.publicKey,
// 0.01 SOLを転送
lamports: 0.01 * LAMPORTS_PER_SOL
});
// トランザクションを作成してinstructionを追加
const transaction = new ().(transferInstruction);
// トランザクションを送信して確認
const transactionSignature = await (
connection,
transaction,
[sender]
);
console.log("Transaction Signature:", `${transactionSignature}`);
// 残高を確認
const senderBalance = await connection.(sender.publicKey);
const receiverBalance = await connection.getBalance(receiver.publicKey);
console.log("Sender Balance:", `${senderBalance}`);
console.log("Receiver Balance:", `${receiverBalance}`);