Um programa Solana é uma
conta que contém bytecode
sBPF executável e tem o seu sinalizador executable definido como true. Os
programas são sem estado. Todo o estado mutável reside em contas de dados
separadas passadas através de instruções.
Diagrama de uma conta de programa, os seus 4 componentes e o seu programa carregador.
Execução de programa
Compilação, escrita de programas (Anchor / Rust nativo), VM sBPF, modelo de unidade de computação, syscalls, cache de programa.
Implantação de programa
Implantação, atualização e verificação de programas. Referência de instruções Loader-v3 e programas carregadores.
Programas principais
System Program (com referência de instruções), Vote, Stake, Config, Compute Budget, Address Lookup Table e ZK ElGamal Proof.
Precompilações
Programas de verificação de assinatura Ed25519, Secp256k1, Secp256r1. Estruturas de offset e regras de validação.
Referência de syscall
Referência completa para todas as ~30 syscalls sBPF com custos de unidade de computação.
Factos principais
- Compilado para sBPF: os programas são compilados para Solana Bytecode Format (sBPF) através do LLVM e armazenados em contas executáveis.
- Sem estado: todo o estado mutável reside em contas de dados separadas, não na conta do programa.
- Atualizável: os programas implantados com loader-v3 (BPF Loader Upgradeable) podem ser atualizados quando uma autoridade de atualização está definida; revogar essa autoridade torna o programa imutável.
Limites
| Limite | Valor | Fonte |
|---|---|---|
| Tamanho padrão da heap | 32 KiB | HEAP_LENGTH |
| Tamanho máximo da heap (ajustável) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Tamanho da frame de stack | 4.096 bytes | STACK_FRAME_SIZE |
| Profundidade máxima de chamada sBPF | 64 | MAX_CALL_DEPTH |
| Profundidade máxima da pilha de instruções (nível superior + CPIs) | 5 (9 com SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Custo da heap | 8 CUs por página de 32 KiB | DEFAULT_HEAP_COST |
| Máximo de programas em cache | 512 | MAX_LOADED_ENTRY_COUNT |
| Atraso de visibilidade da implantação | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?