Solana基础 - 如何发送 SOL
要发送 SOL,您需要与 SystemProgram进行交互。
gill
import {
address,
lamports,
createTransaction,
createSolanaClient,
signTransactionMessageWithSigners,
} from "gill";
import { loadKeypairSignerFromFile } from "gill/node";
import { getTransferSolInstruction } from "gill/programs";
const { rpc, sendAndConfirmTransaction } = createSolanaClient({
urlOrMoniker: "devnet",
});
// loads Signer from the default Solana CLI keypair path: `~/.config/solana/id.json`
const signer = await loadKeypairSignerFromFile();
const destination = address("nick6zJc6HpW3kfBm4xS2dmbuVRyb5F3AnUvj5ymzR5");
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
const tx = createTransaction({
version: "legacy",
feePayer: signer,
instructions: [
getTransferSolInstruction({
source: signer,
destination,
amount: lamports(1_000_000n),
}),
],
latestBlockhash,
});
const signedTransaction = await signTransactionMessageWithSigners(tx);
await sendAndConfirmTransaction(signedTransaction);web3.js
import {
Connection,
Keypair,
SystemProgram,
LAMPORTS_PER_SOL,
Transaction,
sendAndConfirmTransaction,
} from "@solana/web3.js";
const fromKeypair = Keypair.generate();
const toKeypair = Keypair.generate();
const connection = new Connection("https://api.devnet.solana.com", "confirmed");
const airdropSignature = await connection.requestAirdrop(
fromKeypair.publicKey,
LAMPORTS_PER_SOL,
);
await connection.confirmTransaction(airdropSignature);
const lamportsToSend = 1_000_000;
const transferTransaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: fromKeypair.publicKey,
toPubkey: toKeypair.publicKey,
lamports: lamportsToSend,
}),
);
await sendAndConfirmTransaction(connection, transferTransaction, [fromKeypair]);https://solana.com/zh/developers/cookbook/transactions/send-sol