Setting Priority Fees
Defina priority fees dinâmicas usando percentis recentes da rede e SetComputeUnitPrice para que transações compitam durante congestionamento.
Busque em todas as páginas da documentação
Defina priority fees dinâmicas usando percentis recentes da rede e SetComputeUnitPrice para que transações compitam durante congestionamento.
Cartão de receita para referência rápida - pronto para copiar e colar.
const fees = await rpc.getRecentPrioritizationFees([]).send();
fees.sort((a, b) => a.prioritizationFee - b.prioritizationFee);
const p75 = fees[Math.floor(fees.length * 0.75)]?.prioritizationFee ?? 1000;
// microLamports per CU in compute budget instruction
const microLamports = Math.min(p75 * 1.2, MAX_CAP);Quando usar:
import { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc(process.env.RPC_URL!);
const MAX_MICRO_LAMPORTS = 500_000;
async function suggestPriorityFee(lockedAccounts: string[] = []) {
const fees = await rpc
.getRecentPrioritizationFees(
lockedAccounts.map((a) => ({ account: a }))
)
.send();
const samples = fees
.map((f) => f.prioritizationFee)
.filter((n) => n > 0)
.sort((a, b) => a - b);
if (samples.length === 0) return 1_000;
const p75 = samples[Math.floor(samples.length * 0.75)];
return Math.min(Math.ceil(p75 * 1.2), MAX_MICRO_LAMPORTS);
}
const microLamports = await suggestPriorityFee();
console.log("compute unit price:", microLamports);O que isso demonstra:
getRecentPrioritizationFees amostra fees de transações que aterrissaram.microLamports * compute_units_requested (limitado pela instrução de limite).priorityFeeEstimate com estatísticas de percentil.| Perfil | Percentil | Caso de uso |
|---|---|---|
| Economy | p50 | Baixa urgência |
| Standard | p75 | Maioria da UX |
| Aggressive | p90 | Mints, arb |
| Capped | min(p90, cap) | Guardrails de custo |
// Total priority lamports ≈ (microLamports * computeUnitLimit) / 1_000_000
// Add base fee separately in UX estimatesMAX_MICRO_LAMPORTS por política do produto.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Fee fixa | Devnet tranquila | Mainnet congestionada |
| Jito tip | Aterrissagem em bundle | Transferências simples |
| Acordos com validador privado | Institucional | Carteiras de consumo |
| Sliders escolhidos pelo usuário | UX transparente | Bots totalmente automatizados |
1e-6 lamports; preço é por compute unit solicitada na instrução de budget.
Mostre priority SOL estimada = microLamports * CU limit / 1e9 mais base fee.
Sim - mantenha perfis de fee por template de transação a partir de simulações.
Se incluídas no bloco mas programa falhou, priority fee ainda é cobrada; txs descartadas não pagam nada.
Melhoria opcional sobre getRecentPrioritizationFees bruto - abstraia atrás de interface.
Geralmente desnecessária - foque testes com pequenas quantias na mainnet.
Caminhos de pagamento separados - alguns apps usam ambos para aterrissagem competitiva.
Por ação de envio do usuário durante congestionamento; menos frequente fora de pico.
Sem reembolso on-chain se a tx aterrissa com falha - projete tetos e simulação com cuidado.
Veja Estimating Compute Units - defina limite antes do preço.
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