Blockhashes y Expiración
Blockhashes recientes, nonces duraderos y reintentos. Esta guía está dirigida a validadores Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 y clientes @solana/kit 7.0.0.
Busca en todas las páginas de la documentación
Blockhashes recientes, nonces duraderos y reintentos. Esta guía está dirigida a validadores Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 y clientes @solana/kit 7.0.0.
Tarjeta de referencia rápida.
solana config set --url devnet
solana balanceimport { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");Cuándo usar esto:
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const slot = await rpc.getSlot().send();
const sig = "PEGA_LA_FIRMA_DESPUÉS_DE_TU_TX";
const tx = await rpc
.getTransaction(sig, { encoding: "json", maxSupportedTransactionVersion: 0 })
.send();
console.log({ slot, err: tx?.meta?.err, cu: tx?.meta?.computeUnitsConsumed });use anchor_lang::prelude::*;
#[program]
pub mod demo {
use super::*;
pub fn log_slot(_ctx: Context<LogSlot>) -> Result<()> {
let clock = Clock::get()?;
msg!("slot: {}", clock.slot);
Ok(())
}
}
#[derive(Accounts)]
pub struct LogSlot {}Lo que esto demuestra:
// Usa matemáticas verificadas y restricciones explícitas en los programas
require!(amount > 0, MyError::InvalidAmount);mut.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| @solana/kit 7.0.0 | Nuevos clientes TypeScript | Mantener código heredado temporalmente |
| Solana CLI 3.0.10 | Operaciones y sondeos rápidos | Firma de transacciones en producción a escala |
| Surfpool 0.12.0 | Pruebas de integración de Anchor | Despliegue de producción |
| LiteSVM 0.6.x | Pruebas unitarias rápidas | Validación del comportamiento completo de la red |
Los líderes de Agave 4.1.1 rechazan transacciones con blockhashes expirados; los clientes deben refrescar y firmar de nuevo al reintentar.
Usa Solana CLI 3.0.10, que se empareja con Agave 4.1.1. Instala con agave-install init 4.1.1 (o el archivo de pin de tu equipo), luego verifica con solana --version y agave-install --version.
Usa @solana/kit 7.0.0 para nuevos clientes TypeScript: métodos RPC tipados, superficie de API más pequeña y los ejemplos de esta página ya usan Kit. Conserva web3.js solo para bases de código heredadas; migra las llamadas RPC y la construcción de transacciones incrementalmente.
Simula en confirmed, luego consulta getSignatureStatuses en confirmed para mayor velocidad. Usa finalized antes de tratar los movimientos de tokens como liquidados.
Si las firmas desaparecen sin error, es probable que el blockhash haya expirado. Llama a getLatestBlockhash inmediatamente antes de firmar y enviar.
Sí, apunta la CLI y el RPC a https://api.devnet.solana.com. El comportamiento coincide con mainnet; solo los datos de cuenta y la economía difieren.
Los blockhashes expirados nunca llegan a tu programa; no se gasta CU. Preflight detecta la mayoría de los problemas de hash.
Anchor 0.32.1 usa #[program], Context<T> y #[derive(Accounts)] con restricciones explícitas mut/signer; ejecuta anchor build y anchor test en 0.32.1 a través de avm use 0.32.1.
Ejecuta anchor test con Surfpool 0.12.0 para simular transacciones completas contra una bifurcación de mainnet, especialmente las rutas de priority-fee y v0/ALT.
LiteSVM acepta cualquier blockhash que inyectes; agrega pruebas de expiración explícitas contra el RPC de devnet por separado.
El cliente validador pasó a llamarse Agave (4.1.1), la CLI 3.0.10 se alinea con él y el trabajo de Alpenglow está cambiando la finalidad; fija las versiones y lee las notas de la versión en cada actualización.
getLatestBlockhash, isBlockhashValid y getSignatureStatuses para rastrear el aterrizaje dentro de la ventana de validez.
transactions-instructions-fees para temas complementariosVersiones del 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: 19 jul 2026