솔라나 문서LiteSVMTypeScriptAPI 레퍼런스

계정 관리

계정 관리, 잔액 조회 및 계정 상태 설정을 위한 메서드입니다.

airdrop

airdrop(address: Address, lamports: Lamports): TransactionMetadata | FailedTransactionMetadata | null

lamport로 계정에 자금을 지원합니다.

import { lamports } from "@solana/kit";
// Airdrop 5 SOL
const result = client.svm.airdrop(account.address, lamports(5_000_000_000n));
if (result) {
// Note: Result properties are getter functions
console.log("Compute units:", result.computeUnitsConsumed());
}

setAccount

setAccount(account: EncodedAccount): LiteSVM

트랜잭션 없이 계정 상태를 직접 설정합니다.

import { address, lamports } from "@solana/kit";
client.svm.setAccount({
address: myAddress,
data: new Uint8Array([1, 2, 3, 4]),
executable: false,
lamports: lamports(1_000_000n),
programAddress: address("11111111111111111111111111111111"),
space: 4n
});

EncodedAccount 속성

속성타입설명
addressAddress계정 pubkey
dataUint8Array계정 데이터 바이트
executableboolean계정 실행 가능 여부
lamportsLamportsSOL 잔액
programAddressAddress소유자 프로그램
spacebigint바이트 단위 데이터 크기

getAccount

getAccount(address: Address): MaybeEncodedAccount

계정 데이터를 조회합니다.

const account = client.svm.getAccount(myAddress);
if (account.exists) {
console.log("Address:", account.address);
console.log("Lamports:", account.lamports);
console.log("Owner:", account.programAddress);
console.log("Data:", account.data);
console.log("Executable:", account.executable);
}

getBalance

getBalance(address: Address): Lamports | null

계정의 SOL 잔액을 가져옵니다. 계정이 존재하지 않으면 null을 반환합니다.

const balance = client.svm.getBalance(account.address);
if (balance !== null) {
console.log("Balance:", balance, "lamports");
console.log("Balance:", Number(balance) / 1e9, "SOL");
} else {
console.log("Account does not exist");
}

minimumBalanceForRentExemption

minimumBalanceForRentExemption(dataLen: bigint): bigint

rent 면제에 필요한 최소 lamport를 계산합니다.

const dataSize = 100n;
const minBalance = client.svm.minimumBalanceForRentExemption(dataSize);
console.log(
`Rent-exempt minimum for ${dataSize} bytes:`,
minBalance,
"lamports"
);
// Use when setting up accounts
client.svm.setAccount({
address: myAddress,
data: new Uint8Array(Number(dataSize)),
executable: false,
lamports: lamports(minBalance),
programAddress: programId,
space: dataSize
});

프로그램 관리

addProgram

addProgram(programId: Address, programBytes: Uint8Array): LiteSVM

바이트에서 프로그램을 로드합니다.

const programBytes = fs.readFileSync("path/to/program.so");
client.svm.addProgram(programId, programBytes);

addProgramFromFile

addProgramFromFile(programId: Address, path: string): LiteSVM

.so 파일 경로에서 프로그램을 로드합니다.

import { generateKeyPairSigner } from "@solana/kit";
const programId = await generateKeyPairSigner().then((s) => s.address);
client.svm.addProgramFromFile(
programId,
"/path/to/target/deploy/my_program.so"
);

일괄 계정 설정

테스트 시 여러 계정을 효율적으로 설정할 수 있습니다:

// Set up multiple test accounts
const accounts = await Promise.all(
Array.from({ length: 10 }, () => generateKeyPairSigner())
);
for (const [index, account] of accounts.entries()) {
client.svm.setAccount({
address: account.address,
data: new Uint8Array([index]),
executable: false,
lamports: lamports(1_000_000n),
programAddress: address("11111111111111111111111111111111"),
space: 1n
});
}

트랜잭션을 실행하지 않으므로 대량 계정 설정 시 airdrop보다 setAccount가 더 빠릅니다.

Is this page helpful?

목차

페이지 편집