Ένας λογαριασμός είναι η θεμελιώδης μονάδα δεδομένων του Solana για την αποθήκευση κατάστασης. Το δίκτυο αποθηκεύει όλη την κατάσταση σε ένα key-value store όπου κάθε κλειδί είναι μια διεύθυνση 32 bytes και κάθε τιμή είναι ένας λογαριασμός.
Διάγραμμα 3 λογαριασμών και των διευθύνσεών τους. Περιλαμβάνει τον ορισμό της δομής λογαριασμού.
Δομή λογαριασμού
Διευθύνσεις λογαριασμού (public key, PDA), τα πέντε πεδία που περιέχει κάθε λογαριασμός, μηχανή κατάστασης rent, με διαδραστική επισκόπηση κώδικα.
Τύποι λογαριασμών
Λογαριασμοί προγράμματος (εκτελέσιμος κώδικας), λογαριασμοί δεδομένων (κατάσταση προγράμματος), λογαριασμοί συστήματος και sysvars (κατάσταση σε επίπεδο cluster).
Κανόνες τροποποίησης
Κανόνες που επιβάλλονται από το runtime για lamports, δεδομένα, owner, executable flag και borrows.
Runtime λογαριασμού
Επικύρωση φόρτωσης λογαριασμού, μορφή σειριοποίησης BPF και αποσειριοποίηση.
Βασικά στοιχεία
- Δομή: Κάθε λογαριασμός έχει τα ίδια πέντε πεδία: lamports, data, owner, executable, rent_epoch.
- Διεύθυνση: Κάθε λογαριασμός αναγνωρίζεται από μια μοναδική διεύθυνση 32 bytes (είτε ένα Ed25519 public key είτε ένα PDA).
- Κυριότητα: Μόνο το πρόγραμμα-ιδιοκτήτης του λογαριασμού μπορεί να τροποποιήσει τα δεδομένα του ή να χρεώσει lamports. Οποιοδήποτε πρόγραμμα μπορεί να πιστώσει lamports σε οποιονδήποτε εγγράψιμο λογαριασμό.
- Rent: Κάθε λογαριασμός πρέπει να διατηρεί ένα ελάχιστο υπόλοιπο lamports ανάλογο με το μέγεθος των δεδομένων του για να παραμείνει on-chain.
Όρια
| Όριο | Τιμή | Πηγή |
|---|---|---|
| Μέγιστο μέγεθος δεδομένων λογαριασμού | 10 MiB (10.485.760 bytes) | MAX_ACCOUNT_DATA_LEN |
| Μέγιστη αύξηση δεδομένων ανά εντολή | 10 KiB (10.240 bytes) | MAX_PERMITTED_DATA_INCREASE |
| Μέγιστη αύξηση δεδομένων ανά συναλλαγή | 20 MiB (20.971.520 bytes) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Βασικό overhead αποθήκευσης λογαριασμού | 64 bytes ανά λογαριασμό | TRANSACTION_ACCOUNT_BASE_SIZE |
| Μέγεθος διεύθυνσης | 32 bytes (Ed25519 public key) | -- |
| Ελάχιστο rent-exempt (τύπος) | (account_size + 128) * 3.480 lamports/byte-year * 2 έτη | minimum_balance() |
Is this page helpful?