Ένα πρόγραμμα Solana είναι ένας
λογαριασμός που περιέχει
εκτελέσιμο bytecode sBPF και έχει τη σημαία executable ορισμένη σε true. Τα
προγράμματα είναι stateless. Όλη η μεταβλητή κατάσταση βρίσκεται σε ξεχωριστούς
λογαριασμούς δεδομένων που μεταβιβάζονται μέσω
οδηγιών.
Διάγραμμα ενός λογαριασμού προγράμματος, των 4 συστατικών του και του προγράμματος φόρτωσης.
Εκτέλεση προγράμματος
Μεταγλώττιση, συγγραφή προγραμμάτων (Anchor / Native Rust), sBPF VM, μοντέλο μονάδων υπολογισμού, syscalls, cache προγραμμάτων.
Ανάπτυξη προγράμματος
Ανάπτυξη, αναβάθμιση και επαλήθευση προγραμμάτων. Αναφορά οδηγιών Loader-v3 και προγράμματα φόρτωσης.
Βασικά προγράμματα
System Program (με αναφορά οδηγιών), Vote, Stake, Config, Compute Budget, Address Lookup Table και ZK ElGamal Proof.
Precompiles
Προγράμματα επαλήθευσης υπογραφών Ed25519, Secp256k1, Secp256r1. Δομές offset και κανόνες επικύρωσης.
Αναφορά Syscall
Πλήρης αναφορά για όλες τις ~30 syscalls sBPF με κόστη μονάδων υπολογισμού.
Βασικά στοιχεία
- Μεταγλωττισμένα σε sBPF: Τα προγράμματα μεταγλωττίζονται σε Solana Bytecode Format (sBPF) μέσω LLVM και αποθηκεύονται σε εκτελέσιμους λογαριασμούς.
- Stateless: Όλη η μεταβλητή κατάσταση βρίσκεται σε ξεχωριστούς λογαριασμούς δεδομένων, όχι στον λογαριασμό του προγράμματος.
- Αναβαθμίσιμα: Τα προγράμματα που αναπτύσσονται με loader-v3 (BPF Loader Upgradeable) μπορούν να αναβαθμιστούν όταν έχει οριστεί αρχή αναβάθμισης· η ανάκληση αυτής της αρχής καθιστά το πρόγραμμα αμετάβλητο.
Όρια
| Όριο | Τιμή | Πηγή |
|---|---|---|
| Προεπιλεγμένο μέγεθος heap | 32 KiB | HEAP_LENGTH |
| Μέγιστο μέγεθος heap (ρυθμιζόμενο) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| Μέγεθος stack frame | 4.096 bytes | STACK_FRAME_SIZE |
| Μέγιστο βάθος κλήσης sBPF | 64 | MAX_CALL_DEPTH |
| Μέγιστο βάθος στοίβας οδηγιών (top-level + CPIs) | 5 (9 με SIMD-0268) | MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| Κόστος heap | 8 CUs ανά σελίδα 32 KiB | DEFAULT_HEAP_COST |
| Μέγιστος αριθμός προγραμμάτων σε cache | 512 | MAX_LOADED_ENTRY_COUNT |
| Καθυστέρηση ορατότητας ανάπτυξης | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?