問題一覧に戻る
中級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}`);