Перевод SOL

Самая базовая транзакция в Solana: перемещение SOL с одного аккаунта на другой. Это хороший первый тест для проверки работоспособности вашей настройки LiteSVM перед тестированием более сложной логики программ.

Полный пример

import { createClient, generateKeyPairSigner, lamports } from "@solana/kit";
import { litesvm } from "@solana/kit-plugin-litesvm";
import { signer } from "@solana/kit-plugin-signer";
import { systemProgram } from "@solana-program/system";
// Payer first, then the LiteSVM transport, then program plugins.
const mySigner = await generateKeyPairSigner();
const client = createClient()
.use(signer(mySigner))
.use(litesvm())
.use(systemProgram());
const recipient = await generateKeyPairSigner();
// Airdrop SOL to the payer
client.svm.airdrop(client.payer.address, lamports(10_000_000_000n));
// Check initial balance
const senderInitial = client.svm.getBalance(client.payer.address) ?? 0n;
console.log("Sender initial:", Number(senderInitial) / 1e9, "SOL");
// Build and send the transfer
await client.system.instructions
.transferSol({
source: client.payer,
destination: recipient.address,
amount: lamports(1_000_000_000n) // 1 SOL
})
.sendTransaction();
// Check final balances
const senderFinal = client.svm.getBalance(client.payer.address) ?? 0n;
const recipientFinal = client.svm.getBalance(recipient.address) ?? 0n;
console.log("Sender final:", Number(senderFinal) / 1e9, "SOL");
console.log("Recipient final:", Number(recipientFinal) / 1e9, "SOL");

Ожидаемый результат

Sender initial: 10 SOL
Sender final: 8.999995 SOL
Recipient final: 1 SOL

Итоговый баланс отправителя немного меньше 9 SOL из-за комиссий за транзакцию (5 000 lamport за подпись).

Здесь рассмотрен простейший тип транзакции. Для тестирования пользовательских программ см. Тестирование программ. Для переводов токенов (минты, ATA) см. Тестирование токенов.

Is this page helpful?

Содержание

Редактировать страницу