Alquiler y Exención de Alquiler
Las cuentas de Solana deben tener suficientes lamports para estar exentas de alquiler - un depósito único basado en el tamaño de los datos. Sin él, las cuentas no pueden persistir en la cadena.
Busca en todas las páginas de la documentación
Las cuentas de Solana deben tener suficientes lamports para estar exentas de alquiler - un depósito único basado en el tamaño de los datos. Sin él, las cuentas no pueden persistir en la cadena.
solana rent 200const rent = await rpc.getMinimumBalanceForRentExemption(200n).send();Cuándo recurrir a esto:
init del pagador en programas Anchoruse anchor_lang::prelude::*;
#[derive(Accounts)]
pub struct InitConfig<'info> {
#[account(
init,
payer = payer,
space = 8 + Config::INIT_SPACE,
)]
pub config: Account<'info, Config>,
#[account(mut)]
pub payer: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[account]
#[derive(InitSpace)]
pub struct Config {
pub admin: Pubkey,
pub fee_bps: u16,
}import { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const space = 8 + 32 + 2; // discriminador + campos
const minBalance = await rpc.getMinimumBalanceForRentExemption(BigInt(space)).send();
console.log("Mínimo exento de alquiler:", minBalance, "lamports");Lo que esto demuestra:
init mueven al menos el mínimo exento de alquiler del pagador a la nueva cuenta| Tipo de Cuenta | Bytes | Alquiler Aprox. (lamports) |
|---|---|---|
| Billetera Vacía | 0 | ~890,880 |
| Cuenta Token SPL | 165 | ~2,039,280 |
| Estructura pequeña de Anchor | 8 + 40 | ~1,500,000+ |
Los valores exactos cambian con los parámetros del clúster - siempre consulta RPC.
space insuficiente en Anchor - init falla o trunca datos. Solución: usa la derivación InitSpace o el cálculo manual con longitudes máximas de cadena/vector.space - diferencia de 8 bytes. Solución: siempre añade 8 para cuentas Anchor.close.getMinimumBalanceForRentExemption en los clientes.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
CLI solana rent | Estimaciones rápidas en terminal | Lógica de programa en cadena |
| Consulta de alquiler RPC | Visualización dinámica de costes en UI del cliente | Dentro de BPF (usa sysvar o buffer fijo) |
| Compresión de estado | Millones de registros pequeños | Estado mutable en caliente |
Financiar una cuenta con suficientes lamports para cubrir ~2 años de alquiler de almacenamiento por adelantado. La cuenta persiste entonces sin cargos de alquiler recurrentes.
space = 8 + sizeof campos serializados (con longitudes máximas para String/Vec). Consulta RPC para lamports exactos.
Sí. Cierra la cuenta y los lamports se devuelven a un destino que especifiques.
El comportamiento heredado podía realizar una recolección de basura; la práctica moderna requiere exención de alquiler en la creación. Las inicializaciones con fondos insuficientes fallan.
Sí. El alquiler escala linealmente con el tamaño de los datos en bytes.
El firmante payer en init - típicamente el usuario o el tesoro del protocolo.
Sí. Los programas desplegados retienen lamports para el tamaño de su cuenta de datos del programa.
El crecimiento de datos puede requerir lamports adicionales transferidos para mantener la exención de alquiler.
El sysvar Rent contiene los parámetros de cálculo. Raramente se lee directamente en programas modernos.
Patrón de UX común para ATAs y PDAs. Presupuesta el tesoro en consecuencia.
Misma fórmula; las cantidades son idénticas para el mismo tamaño de datos.
No. Solo el tamaño de los datos y los parámetros de alquiler del clúster importan.
Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026