Ein Solana-Programm ist ein
Konto, das ausführbaren
sBPF-Bytecode enthält und dessen executable-Flag auf true gesetzt ist.
Programme sind zustandslos. Alle veränderbaren Zustände befinden sich in
separaten Datenkonten, die über Anweisungen übergeben
werden.
Diagramm eines Programmkontos, seiner 4 Komponenten und seines Loader-Programms.
Programmausführung
Kompilierung, Schreiben von Programmen (Anchor / Native Rust), sBPF VM, Compute-Unit-Modell, Syscalls, Programm-Cache.
Programm-Deployment
Deployen, Upgraden und Verifizieren von Programmen. Loader-v3-Anweisungsreferenz und Loader-Programme.
Core-Programme
System Program (mit Anweisungsreferenz), Vote, Stake, Config, Compute Budget, Address Lookup Table und ZK ElGamal Proof.
Precompiles
Ed25519-, Secp256k1-, Secp256r1-Signaturverifizierungsprogramme. Offset-Strukturen und Validierungsregeln.
Syscall-Referenz
Vollständige Referenz für alle ~30 sBPF-Syscalls mit Compute-Unit-Kosten.
Wichtige Fakten
- Kompiliert zu sBPF: Programme werden über LLVM zu Solana Bytecode Format (sBPF) kompiliert und in ausführbaren Konten gespeichert.
- Zustandslos: Alle veränderbaren Zustände befinden sich in separaten Datenkonten, nicht im Programmkonto.
- Upgradefähig: Programme, die mit loader-v3 (BPF Loader Upgradeable) deployed wurden, können aktualisiert werden, wenn eine Upgrade-Authority gesetzt ist; das Widerrufen dieser Authority macht das Programm unveränderlich.
Limits
| Limit | Wert | Quelle |
|---|---|---|
| Standard-Heap-Größe | 32 KiB | HEAP_LENGTH |
| Max. Heap-Größe (anpassbar) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Stack-Frame-Größe | 4.096 Bytes | STACK_FRAME_SIZE |
| Max. sBPF-Call-Tiefe | 64 | MAX_CALL_DEPTH |
| Max. Anweisungs-Stack-Tiefe (Top-Level + CPIs) | 5 (9 mit SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Heap-Kosten | 8 CUs pro 32-KiB-Page | DEFAULT_HEAP_COST |
| Max. gecachte Programme | 512 | MAX_LOADED_ENTRY_COUNT |
| Deployment-Sichtbarkeitsverzögerung | 1 Slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?