Een Solana-programma is een
account dat uitvoerbare
sBPF-bytecode bevat en waarvan de executable-vlag is ingesteld op true.
Programma's zijn staatloos. Alle veranderbare status bevindt zich in
afzonderlijke data-accounts die worden doorgegeven via
instructies.
Diagram van een programma-account, zijn 4 componenten en zijn loader-programma.
Programma-uitvoering
Compilatie, programma's schrijven (Anchor / Native Rust), sBPF VM, compute unit-model, syscalls, programmacache.
Programma-implementatie
Implementeren, upgraden en verifiëren van programma's. Loader-v3 instructiereferentie en loader-programma's.
Kernprogramma's
System Program (met instructiereferentie), Vote, Stake, Config, Compute Budget, Address Lookup Table en ZK ElGamal Proof.
Precompiles
Ed25519, Secp256k1, Secp256r1 handtekeningverificatieprogramma's. Offset-structuren en validatieregels.
Syscall-referentie
Volledige referentie voor alle ~30 sBPF-syscalls met compute unit-kosten.
Belangrijkste feiten
- Gecompileerd naar sBPF: Programma's worden gecompileerd naar Solana Bytecode Format (sBPF) via LLVM en opgeslagen in uitvoerbare accounts.
- Staatloos: Alle veranderbare status bevindt zich in afzonderlijke data-accounts, niet in het programma-account.
- Upgradebaar: Programma's die zijn geïmplementeerd met loader-v3 (BPF Loader Upgradeable) kunnen worden geüpgraded wanneer een upgrade-autoriteit is ingesteld; het intrekken van die autoriteit maakt het programma onveranderlijk.
Limieten
| Limiet | Waarde | Bron |
|---|---|---|
| Standaard heap-grootte | 32 KiB | HEAP_LENGTH |
| Max heap-grootte (aanpasbaar) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Stack frame-grootte | 4.096 bytes | STACK_FRAME_SIZE |
| Max sBPF call-diepte | 64 | MAX_CALL_DEPTH |
| Max instruction stack-diepte (top-level + CPI's) | 5 (9 met SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Heap-kosten | 8 CU's per 32 KiB-pagina | DEFAULT_HEAP_COST |
| Max gecachte programma's | 512 | MAX_LOADED_ENTRY_COUNT |
| Zichtbaarheidsvertraging bij implementatie | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?