Un account è l'unità dati fondamentale di Solana per memorizzare lo stato. La rete memorizza tutto lo stato in un archivio chiave-valore dove ogni chiave è un indirizzo di 32 byte e ogni valore è un account.
Diagramma di 3 account e i loro indirizzi. Include la definizione della struttura dell'account.
Struttura dell'account
Indirizzi degli account (chiave pubblica, PDA), i cinque campi contenuti in ogni account, macchina a stati del rent, con procedura guidata di codice interattiva.
Tipi di account
Account di programma (codice eseguibile), account dati (stato del programma), account di sistema e sysvars (stato a livello di cluster).
Regole di modifica
Regole applicate dal runtime per lamport, dati, proprietario, flag eseguibile e prestiti.
Runtime dell'account
Validazione del caricamento dell'account, formato di serializzazione BPF e deserializzazione.
Fatti chiave
- Struttura: ogni account ha gli stessi cinque campi: lamports, data, owner, executable, rent_epoch.
- Indirizzo: ogni account è identificato da un indirizzo univoco di 32 byte (una chiave pubblica Ed25519 o un PDA).
- Proprietà: solo il programma proprietario dell'account può modificare i suoi dati o addebitare lamport. Qualsiasi programma può accreditare lamport a qualsiasi account scrivibile.
- Rent: ogni account deve mantenere un saldo minimo di lamport proporzionale alla sua dimensione dati per rimanere on-chain.
Limiti
| Limite | Valore | Fonte |
|---|---|---|
| Dimensione massima dati account | 10 MiB (10.485.760 byte) | MAX_ACCOUNT_DATA_LEN |
| Crescita massima dati per istruzione | 10 KiB (10.240 byte) | MAX_PERMITTED_DATA_INCREASE |
| Crescita massima dati per transazione | 20 MiB (20.971.520 byte) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Overhead di archiviazione base account | 64 byte per account | TRANSACTION_ACCOUNT_BASE_SIZE |
| Dimensione indirizzo | 32 byte (chiave pubblica Ed25519) | -- |
| Minimo esente da rent (formula) | (account_size + 128) * 3.480 lamport/byte-anno * 2 anni | minimum_balance() |
Is this page helpful?