Documentación de SolanaLiteSVMTypeScriptReferencia de API

Gestión de Cuentas

Métodos para gestionar cuentas, saldos y establecer el estado de las cuentas.

airdrop

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

Financiar una cuenta con lamports.

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

Establecer directamente el estado de una cuenta sin una transacción.

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
});

Propiedades de EncodedAccount

PropiedadTipoDescripción
addressAddressClave pública de la cuenta
dataUint8ArrayBytes de datos de la cuenta
executablebooleanIndica si la cuenta es ejecutable
lamportsLamportsSaldo en SOL
programAddressAddressPrograma propietario
spacebigintTamaño de datos en bytes

getAccount

getAccount(address: Address): MaybeEncodedAccount

Recuperar datos de la cuenta.

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

Obtener el saldo SOL de una cuenta. Devuelve null si la cuenta no existe.

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

Calcular el mínimo de lamports necesarios para la exención de rent.

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
});

Gestión de Programas

addProgram

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

Cargar un programa desde bytes.

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

addProgramFromFile

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

Cargar un programa desde una ruta de archivo .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"
);

Configuración de Cuentas en Lote

Para pruebas, puedes configurar múltiples cuentas de forma eficiente:

// 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
});
}

Usar setAccount es más rápido que airdrop para la configuración masiva de cuentas, ya que no ejecuta transacciones.

Is this page helpful?

Tabla de Contenidos

Editar Página