Resumen de la Arquitectura
Cómo encajan las piezas en una cadena de alto rendimiento. Esta guía está dirigida a validadores Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 y clientes @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 el resumen de la arquitectura en rutas de producción
- Enseñar el concepto a ingenieros nuevos en Solana
- Auditar si tu 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 = "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 {}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 sysvars en cadena en programas Anchor 0.32.1
Profundización
Cómo Funciona
- Cómo encajan las piezas en una cadena de alto rendimiento.
- 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
- La semántica de confirmación sigue la votación TowerBFT con ordenación PoH
- Alpenglow (Votor + Rotor) se está implementando para una mayor rapidez de finalización; consulta la sección de Consenso
- Desarrollo local: Surfpool 0.12.0 y LiteSVM 0.6.x
Notas de Rust
// Usa matemáticas comprobadas y restricciones explícitas en los programas
require!(amount > 0, MyError::InvalidAmount);Errores Comunes
- Fragmentos de web3.js v1 heredados - La API difiere de Kit. Solución: usa @solana/kit 7.0.0.
- Cluster incorrecto - Desajuste entre devnet y mainnet. Solución: alinea CLI, RPC, wallet y explorador.
- Montos de SOL en punto flotante - Pérdida de precisión. Solución: bigint lamports de extremo a extremo.
- Blockhash caducado - Transacciones descartadas. Solución: vuelve a obtener el blockhash y vuelve a firmar.
- CU insuficiente - OOM o presupuesto excedido. Solución: optimiza el programa + establece el Presupuesto de Cómputo.
- Faltan comprobaciones del propietario - Exploits de cuentas escribibles. Solución: restricciones de Anchor en cada cuenta mut.
Alternativas
| Alternativa | Úsalo Cuando | No lo Uses Cuando |
|---|---|---|
| @solana/kit 7.0.0 | Nuevos clientes TypeScript | Mantenimiento de 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 de la red completa |
Preguntas Frecuentes
¿Cómo se aplica esto en Agave 4.1.1?
Agave 4.1.1 es el validador de referencia que implementa el pipeline completo: reenvío Gulf Stream, ingesta TPU, ejecución Sealevel y difusión Turbine.
¿Qué versión de Solana CLI debo usar?
Usa Solana CLI 3.0.10, que se empareja con Agave 4.1.1. Instala con agave-install init 4.1.1 (o el archivo de fijación de tu equipo), luego verifica con solana --version y agave-install --version.
¿Debo usar @solana/kit o web3.js?
Usa @solana/kit 7.0.0 para nuevos métodos RPC tipados en TypeScript, una superficie de API más pequeña y los ejemplos de esta página ya usan Kit. Conserva web3.js solo para bases de código heredadas; migra las llamadas RPC y la construcción de transacciones de forma incremental.
¿Qué nivel de compromiso se recomienda?
Usa confirmed para dashboards y finalized antes de retiros o callbacks entre sistemas.
¿Cómo depuro fallos relacionados?
Mapea los síntomas a las capas: transacciones descartadas → TPU/blockhash; confirmaciones lentas → consenso; lecturas incorrectas → RPC/lista de cuentas. Usa getTransaction para ver qué capa falló.
¿Funciona esto en devnet?
Sí, apunta la CLI y el RPC a https://api.devnet.solana.com. El comportamiento coincide con mainnet; solo los datos de cuenta y la economía difieren.
¿Cómo afectan las unidades de cómputo a esto?
La conciencia de la arquitectura ayuda a dimensionar correctamente la CU: las transacciones paralelizadas aún pagan costos de bloqueo por cuenta en tu programa.
¿Cuál es el patrón de Anchor 0.32.1?
Anchor 0.32.1 usa #[program], Context<T> y #[derive(Accounts)] con restricciones explícitas de mut/signer; ejecuta anchor build y anchor test en 0.32.1 a través de avm use 0.32.1.
¿Cómo pruebo con Surfpool 0.12.0?
Inicia Surfpool 0.12.0, apunta el RPC a su puerto y ejecuta anchor test o scripts de integración de clientes contra cuentas bifurcadas.
¿Puede LiteSVM 0.6.x cubrir esto?
LiteSVM cubre la porción de Sealevel de la arquitectura, no los componentes de red o consenso.
¿Qué cambió en la era Agave?
El cliente validador cambió de nombre a Agave (4.1.1), la CLI 3.0.10 se alinea con él y el trabajo de Alpenglow está cambiando la finalización; fija las versiones y lee las notas de la versión en cada actualización.
¿Dónde encuentro métodos RPC relacionados?
Comienza con getHealth, getSlot, getTransaction y simulateTransaction al rastrear el flujo de extremo a extremo.
Relacionado
- Explora otras páginas de la sección
core-architecture-componentspara temas complementarios - Fundamentos de Solana - orientación de 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.