El SVM y sBPF
Los programas de Solana compilan a bytecode sBPF (Solana BPF) ejecutado por el SVM en los validadores de Agave. Rust 1.91.1 tiene como objetivo el triple sbf-solana-solana a través de cargo build-sbf.
Receta
anchor build
# Salida: target/deploy/<nombre>.so (objeto compartido sBPF)Cuándo usar esto:
- Al construir o depurar en Agave 4.1.1
- Al integrar con programas de Anchor 0.32.1
- Trabajo de cliente con @solana/kit 7.0.0
Ejemplo Funcional
file target/deploy/*.so
# Objeto compartido ELF para el cargador de Solana BPFLo que esto demuestra:
- Patrones idiomáticos para la era Agave 4.1
- Manejo correcto de cuentas y firmantes
- Comportamiento observable a través de logs o RPC
Análisis Profundo
Cómo Funciona
- Los programas de Solana se ejecutan en el runtime paralelo Sealevel
- Las transacciones declaran todas las cuentas; el trabajo no superpuesto se ejecuta en paralelo
- La computación se mide en CUs; las cuentas exentas de alquiler persisten el estado
Errores Comunes
- Ejemplos obsoletos de web3.js v1 - usa @solana/kit 7.0.0. Solución: migra el código del cliente.
- Banderas de firmante faltantes - las txs fallan en tiempo de ejecución. Solución: marca los firmantes explícitamente.
- Hash de bloque expirado al reintentar - caídas silenciosas. Solución: actualiza y vuelve a firmar.
- RPC de clúster incorrecto - cuentas no encontradas. Solución: haz coincidir el clúster de extremo a extremo.
- Espacio de cuenta insuficiente - la inicialización falla. Solución: usa
InitSpaceen Anchor 0.32.1.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Anchor 0.32.1 | Desarrollo rápido | BPF nativo mínimo |
| Rust Nativo | Máximo control | Se necesita iteración rápida |
| LiteSVM 0.6.x | Pruebas unitarias | Pruebas de integración de red |
| Surfpool 0.12.0 | Pruebas de integración de Anchor | Tareas CLI únicas |
Preguntas Frecuentes
¿Cómo se relaciona esto con Sealevel?
Ver las secciones anteriores para más detalles.
¿Qué versión de CLI debo usar?
Ver las secciones anteriores para más detalles.
¿Se aplica esto a mainnet-beta?
Ver las secciones anteriores para más detalles.
¿Qué nivel de compromiso deben usar los clientes?
Ver las secciones anteriores para más detalles.
¿Cómo depuro fallos?
Ver las secciones anteriores para más detalles.
¿Están involucrados los PDA?
Ver las secciones anteriores para más detalles.
¿Qué pasa con las unidades de cómputo?
Ver las secciones anteriores para más detalles.
¿Puedo usar devnet?
Ver las secciones anteriores para más detalles.
¿Cómo funcionan las actualizaciones?
Ver las secciones anteriores para más detalles.
¿Qué reemplaza a web3.js?
Ver las secciones anteriores para más detalles.
¿Cómo pruebo localmente?
Ver las secciones anteriores para más detalles.
¿Qué es Agave 4.1.1?
Ver las secciones anteriores para más detalles.
Relacionado
- Conceptos Básicos de Programas - primer programa
- El Punto de Entrada del Programa - distribución de entrada
Versiones de la pila: Esta página se escribió 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.