Mercados de Tarifas de Prioridad
Mercados de tarifas locales y dinámicas de quema de tarifas. Esta guía está dirigida a validadores de Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 y clientes de @solana/kit 7.0.0.
Receta
Tarjeta de receta 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 recurrir a esto:
- Implementar o depurar mercados de tarifas de prioridad en rutas de producción
- Enseñar el concepto a ingenieros nuevos en Solana
- Auditar si su pila coincide con el comportamiento de la era Agave 4.1
Ejemplo de Trabajo
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:
- Patrones de acceso RPC con @solana/kit 7.0.0
- Lectura de metadatos de ejecución (errores, CU) de transacciones confirmadas
- Acceso a sysvar en la cadena en programas de Anchor 0.32.1
Inmersión Profunda
Cómo Funciona
- Mercados de tarifas locales y dinámicas de quema de tarifas.
- El modelo de cuentas de Solana requiere listas explícitas de cuentas por instrucción.
- Sealevel ejecuta transacciones no conflictivas en paralelo.
Notas de Agave 4.1.1
- Las semánticas de confirmación siguen la votación TowerBFT con ordenamiento PoH.
- Alpenglow (Votor + Rotor) se está implementando para una finalidad más rápida; consulte la sección de Consenso.
- Desarrollo local: Surfpool 0.12.0 y LiteSVM 0.6.x.
Notas de Rust
// Usar matemáticas verificadas y restricciones explícitas en los programas
require!(amount > 0, MyError::InvalidAmount);Trampas Comunes
- Fragmentos de web3.js v1 heredados - La API difiere de Kit. Solución: usar @solana/kit 7.0.0.
- Cluster incorrecto - Desajuste devnet vs mainnet. Solución: alinear CLI, RPC, billetera y explorador.
- Montos de SOL en punto flotante - Pérdida de precisión. Solución: lamports bigint de extremo a extremo.
- Blockhash caducado - Transacciones descartadas. Solución: volver a obtener el blockhash y volver a firmar.
- CU insuficiente - OOM o presupuesto excedido. Solución: optimizar programa + establecer Presupuesto de Cómputo.
- Faltan comprobaciones de propietario - Exploits de cuentas escribibles. Solución: restricciones de Anchor en cada cuenta mut.
Alternativas
| 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 en producción |
| LiteSVM 0.6.x | Pruebas unitarias rápidas | Validación del comportamiento completo de la red |
Preguntas Frecuentes
¿Cómo se aplica esto en Agave 4.1.1?
Los líderes de Agave 4.1.1 priorizan los paquetes por tarifa durante la congestión; los mercados son por slot, no por precio de gas global.
¿Qué versión de Solana CLI debo usar?
Use Solana CLI 3.0.10, que se empareja con Agave 4.1.1. Instale con agave-install init 4.1.1 (o el archivo de fijación de su equipo), luego verifique con solana --version y agave-install --version.
¿Debo usar @solana/kit o web3.js?
Use @solana/kit 7.0.0 para nuevos TypeScript: métodos RPC tipados, superficie de API más pequeña y los ejemplos en esta página ya usan Kit. Mantenga web3.js solo para bases de código heredadas; migre las llamadas RPC y la construcción de transacciones incrementalmente.
¿Qué nivel de compromiso se recomienda?
Use confirmed para paneles y finalized antes de retiros o callbacks entre sistemas.
¿Cómo depuro fallos relacionados?
Grafique getRecentPrioritizationFees durante slots recientes; si p50 se dispara, aumente SetComputeUnitPrice o retrase las transacciones no urgentes.
¿Funciona esto en devnet?
Sí, los programas de staking y gobernanza se implementan en devnet con épocas de prueba. La economía difiere (sin valor real), pero las formas de las instrucciones coinciden con mainnet.
¿Cómo afectan las unidades de cómputo a esto?
Los mercados de tarifas interactúan con los límites de CU; paga precio * unidadesConsumidas en lamports de prioridad cuando se establece.
¿Cuál es el patrón de Anchor 0.32.1?
Los patrones de Anchor 0.32.1 se aplican al escribir programas en cadena: cuentas tipadas, guardas require! y generación de IDL; use avm use 0.32.1 y anchor-lang = "0.32.1" en Cargo.toml.
¿Cómo pruebo con Surfpool 0.12.0?
Inicie Surfpool 0.12.0, apunte RPC a su puerto y ejecute anchor test o scripts de integración de clientes contra cuentas bifurcadas.
¿Puede LiteSVM 0.6.x cubrir esto?
Los mercados de tarifas no se simulan; realice pruebas de carga en devnet bajo congestión.
¿Qué cambió en la era Agave?
El cliente validador cambió de nombre a Agave (4.1.1), CLI 3.0.10 se alinea con él y el trabajo de Alpenglow está cambiando la finalidad; fije las versiones y lea las notas de la versión en cada actualización.
¿Dónde encuentro métodos RPC relacionados?
getRecentPrioritizationFees, simulateTransaction y getSignatureStatuses.
Relacionado
- Explore otras páginas de la sección
economics-tokenomics-governancepara temas complementarios. - Fundamentos de Solana - Orientación sobre cuentas y transacciones.
Versiones de la pila: 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.