Un programa de Solana es una
cuenta que contiene
bytecode sBPF ejecutable y tiene su bandera executable establecida en true.
Los programas son sin estado. Todo el estado mutable reside en cuentas de datos
separadas pasadas mediante instrucciones.
Diagrama de una cuenta de programa, sus 4 componentes y su programa cargador.
Ejecución de programas
Compilación, escritura de programas (Anchor / Rust nativo), VM sBPF, modelo de unidades de cómputo, syscalls, caché de programas.
Despliegue de programas
Despliegue, actualización y verificación de programas. Referencia de instrucciones de Loader-v3 y programas cargadores.
Programas principales
System Program (con referencia de instrucciones), Vote, Stake, Config, Compute Budget, Address Lookup Table y ZK ElGamal Proof.
Precompilados
Programas de verificación de firmas Ed25519, Secp256k1, Secp256r1. Estructuras de offset y reglas de validación.
Referencia de syscalls
Referencia completa de las ~30 syscalls sBPF con costos de unidades de cómputo.
Datos clave
- Compilados a sBPF: los programas se compilan a Solana Bytecode Format (sBPF) mediante LLVM y se almacenan en cuentas ejecutables.
- Sin estado: todo el estado mutable reside en cuentas de datos separadas, no en la cuenta del programa.
- Actualizables: los programas desplegados con loader-v3 (BPF Loader Upgradeable) pueden actualizarse cuando se establece una autoridad de actualización; revocar esa autoridad hace que el programa sea inmutable.
Límites
| Límite | Valor | Fuente |
|---|---|---|
| Tamaño de heap predeterminado | 32 KiB | HEAP_LENGTH |
| Tamaño máximo de heap (ajustable) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Tamaño de frame de pila | 4.096 bytes | STACK_FRAME_SIZE |
| Profundidad máxima de llamadas sBPF | 64 | MAX_CALL_DEPTH |
| Profundidad máxima de pila de instrucciones (nivel superior + CPIs) | 5 (9 con SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Costo de heap | 8 CUs por página de 32 KiB | DEFAULT_HEAP_COST |
| Máximo de programas en caché | 512 | MAX_LOADED_ENTRY_COUNT |
| Retraso de visibilidad del despliegue | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?