Blockhashes e Expiração
Blockhashes recentes, nonces duráveis e retentativas. Este guia mira validators Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 e clientes @solana/kit 7.0.0.
Busque em todas as páginas da documentação
Blockhashes recentes, nonces duráveis e retentativas. Este guia mira validators Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 e clientes @solana/kit 7.0.0.
Cartão de receita de referência rápida.
solana config set --url devnet
solana balanceimport { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");Quando usar isso:
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const slot = await rpc.getSlot().send();
const sig = "PASTE_SIGNATURE_AFTER_YOUR_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 {}O que isso demonstra:
// Use matemática verificada e constraints explícitas em programas
require!(amount > 0, MyError::InvalidAmount);| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| @solana/kit 7.0.0 | Novos clientes TypeScript | Manter código legado temporariamente |
| Solana CLI 3.0.10 | Ops e sondagens rápidas | Assinatura de transação em produção em escala |
| Surfpool 0.12.0 | Testes de integração Anchor | Deploy de produção |
| LiteSVM 0.6.x | Testes unitários rápidos | Validação de comportamento de rede completo |
Leaders Agave 4.1.1 rejeitam transações com blockhashes expirados - clientes devem atualizar e reassinar na retentativa.
Use Solana CLI 3.0.10, que combina com Agave 4.1.1. Instale com agave-install init 4.1.1 (ou arquivo pin da equipe), depois verifique com solana --version e agave-install --version.
Use @solana/kit 7.0.0 para novo TypeScript - métodos RPC tipados, API menor, e exemplos nesta página já usam Kit. Mantenha web3.js apenas para bases legadas; migre chamadas RPC e construção de transação incrementalmente.
Simule em confirmed, depois faça poll em getSignatureStatuses em confirmed para velocidade. Use finalized antes de tratar movimentos de token como liquidados.
Se assinaturas somem sem erro, o blockhash provavelmente expirou. Chame getLatestBlockhash imediatamente antes de assinar e enviar.
Sim - aponte CLI e RPC para https://api.devnet.solana.com. Comportamento corresponde à mainnet; apenas dados de conta e economia diferem.
Blockhashes expirados nunca alcançam seu programa - sem CU gasto. Preflight detecta a maioria dos problemas de hash.
Anchor 0.32.1 usa #[program], Context<T> e #[derive(Accounts)] com constraints mut/signer explícitas - execute anchor build e anchor test em 0.32.1 via avm use 0.32.1.
Execute anchor test com Surfpool 0.12.0 para simular transações completas contra fork mainnet - especialmente caminhos de taxa de prioridade e v0/ALT.
LiteSVM aceita qualquer blockhash que você injeta - adicione testes explícitos de expiração contra RPC devnet separadamente.
O cliente validator foi rebrandizado para Agave (4.1.1), CLI 3.0.10 alinha com ele, e trabalho Alpenglow está mudando finalidade - fixe versões e leia release notes a cada upgrade.
getLatestBlockhash, isBlockhashValid e getSignatureStatuses para rastrear landing dentro da janela de validade.
transactions-instructions-fees para tópicos complementaresVersões da stack: Esta página foi 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 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026