Priority Fee & Simulation APIs
Use getRecentPrioritizationFees, simulateTransaction e APIs de fee de provedor para estimar compute units e priority fees antes de enviar transações.
Busque em todas as páginas da documentação
Use getRecentPrioritizationFees, simulateTransaction e APIs de fee de provedor para estimar compute units e priority fees antes de enviar transações.
Cartão de receita para referência rápida - pronto para copiar e colar.
import { createSolanaRpc, getBase64EncodedWireTransaction } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
await rpc.getRecentPrioritizationFees([]).send();
await rpc.simulateTransaction(encodedTx, {
commitment: "processed",
sigVerify: false,
}).send();Quando usar:
import { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc(process.env.RPC_URL!);
// Recent priority fees for relevant accounts (empty = global sample)
const fees = await rpc.getRecentPrioritizationFees([]).send();
const recent = fees.map((f) => f.prioritizationFee).filter((n) => n > 0);
recent.sort((a, b) => a - b);
const p75 = recent[Math.floor(recent.length * 0.75)] ?? 0;
console.log("suggested microLamports CU price (p75):", p75);
// Simulate signed or partially signed tx (base64 wire)
const simulation = await rpc
.simulateTransaction("BASE64_WIRE_TX", {
commitment: "processed",
sigVerify: false,
replaceRecentBlockhash: true,
})
.send();
console.log("err:", simulation.value.err);
console.log("units:", simulation.value.unitsConsumed);
console.log("logs:", simulation.value.logs?.slice(0, 5));O que isso demonstra:
unitsConsumed e logs sem commitar estado (exceto quando configurado).replaceRecentBlockhash ajuda a simular txs com blockhashes expirando.getRecentPrioritizationFees retorna observações de fee por slot para conjuntos de account lock.simulateTransaction roda SVM contra snapshot de bank no commitment escolhido.priorityFeeEstimate com estatísticas de percentil.| Opção | Efeito |
|---|---|
sigVerify: false | Sim mais rápida, pula checagens de assinatura |
replaceRecentBlockhash | Atualiza blockhash para txs obsoletas |
innerInstructions | Retorna breakdown de CPI |
accounts | Retorna estados de conta pós-simulação |
// After simulation, set compute budget ix with headroom
const units = simulation.value.unitsConsumed ?? 200_000;
const limit = Math.ceil(units * 1.1);
const microLamports = Math.max(p75, 1_000);sigVerify: true antes do envio na mainnet.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Priority fee fixa | Devnet com baixo tráfego | Períodos de congestionamento na mainnet |
| APIs Jito tip | Aterrissagem em bundle | Transferências simples |
| Surfpool simulate | DeFi com precisão de fork | Apps só de carteira |
CLI solana confirm -v | Depuração pós-envio | Planejamento pré-envio |
Micro-lamports por compute unit para instrução de priority fee - multiplique pelo orçamento de CU solicitado para priority lamports total.
Por lote de transação durante congestionamento; menos frequente em devnet tranquila.
Sem gasto on-chain - só compute RPC; alguns provedores limitam simulação pesada.
Frequentemente sim com sigVerify: false - útil para fluxos de assinatura parcial.
Simulação informa valores de SetComputeUnitLimit e SetComputeUnitPrice.
Helius e outros encapsulam estimativas de percentil - fallback para getRecentPrioritizationFees para portabilidade.
Feedback mais rápido durante depuração iterativa - corresponda commitment de envio nas checagens finais.
Sim se programa retorna erro em output insuficiente - leia logs e campo err.
Use getBase64EncodedWireTransaction ao montar txs com pipelines kit antes de simular.
Versõ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: 16 de jul. de 2026