Taxas de Prioridade
Mercados de taxa locais e priorização da sua transação. Este guia mira validators Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 e clientes @solana/kit 7.0.0.
Receita
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:
- Implementar ou depurar taxas de prioridade em caminhos de produção
- Ensinar o conceito a engenheiros novos em Solana
- Auditar se sua stack corresponde ao comportamento da era Agave 4.1
Exemplo de Trabalho
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:
- Padrões de acesso RPC com @solana/kit 7.0.0
- Leitura de metadados de execução (erros, CU) de transações confirmadas
- Acesso a sysvar on-chain em programas Anchor 0.32.1
Deep Dive
Como Funciona
- Mercados de taxa locais e priorização da sua transação.
- O modelo de contas da Solana exige listas explícitas de contas por instrução
- Sealevel executa transações sem conflito em paralelo
Notas Agave 4.1.1
- Semântica de confirmação segue votação TowerBFT com ordenação PoH
- Alpenglow (Votor + Rotor) está sendo implantado para finalidade mais rápida - veja seção Consensus
- Desenvolvimento local: Surfpool 0.12.0 e LiteSVM 0.6.x
Notas Rust
// Use matemática verificada e constraints explícitas em programas
require!(amount > 0, MyError::InvalidAmount);Armadilhas
- Snippets legados web3.js v1 - API difere do Kit. Correção: use @solana/kit 7.0.0.
- Cluster errado - mismatch devnet vs mainnet. Correção: alinhe CLI, RPC, carteira, explorer.
- Amounts SOL em float - perda de precisão. Correção: lamports bigint ponta a ponta.
- Blockhash expirado - txs descartadas. Correção: busque blockhash novamente e reassine.
- CU insuficiente - OOM ou orçamento excedido. Correção: otimize programa + defina Compute Budget.
- Checks de owner ausentes - exploits de conta writable. Correção: constraints Anchor em toda conta mut.
Alternativas
| 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 |
FAQs
Como isso se aplica no Agave 4.1.1?
Agave 4.1.1 ordena pacotes TPU em parte por taxa de prioridade - sem ela, txs podem nunca alcançar o leader durante picos.
Qual versão do Solana CLI devo usar?
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.
Devo usar @solana/kit ou web3.js?
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.
Qual nível de commitment é recomendado?
Simule em confirmed, depois faça poll em getSignatureStatuses em confirmed para velocidade. Use finalized antes de tratar movimentos de token como liquidados.
Como depurar falhas relacionadas?
Simule primeiro, depois defina SetComputeUnitPrice com base em percentis de getRecentPrioritizationFees. Registre slot incluído vs slot enviado.
Funciona em devnet?
Sim - aponte CLI e RPC para https://api.devnet.solana.com. Comportamento corresponde à mainnet; apenas dados de conta e economia diferem.
Como compute units afetam isso?
Taxa de prioridade é separada do limite CU - você precisa de SetComputeUnitLimit adequado e SetComputeUnitPrice competitivo.
Qual é o padrão Anchor 0.32.1?
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.
Como testar com Surfpool 0.12.0?
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 0.6.x cobre isso?
LiteSVM ignora mercados de taxa - valide landing em devnet com taxas de prioridade reais.
O que mudou na era Agave?
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.
Onde encontro métodos RPC relacionados?
getRecentPrioritizationFees, simulateTransaction e getSignatureStatuses após envio.
Relacionado
- Navegue outras páginas na seção
transactions-instructions-feespara tópicos complementares - Noções Básicas de Solana - orientação de contas e transações
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.