Un compte est l'unité de données fondamentale de Solana pour stocker l'état. Le réseau stocke tout l'état dans un magasin clé-valeur (key-value) où chaque clé est une adresse de 32 octets et chaque valeur est un compte.
Diagramme de 3 comptes et leurs adresses. Inclut la définition de la structure de compte.
Structure de compte
Adresses de compte (clé publique, PDA), les cinq champs que chaque compte contient, machine d'état de rent, avec présentation interactive du code.
Types de comptes
Comptes de programme (code exécutable), comptes de données (état du programme), comptes système et sysvars (état à l'échelle du cluster).
Règles de modification
Règles appliquées par le runtime pour les lamports, les données, le propriétaire, le flag exécutable et les emprunts.
Runtime de compte
Validation du chargement de compte, format de sérialisation BPF et désérialisation.
Faits clés
- Structure : chaque compte possède les mêmes cinq champs : lamports, data, owner, executable, rent_epoch.
- Adresse : chaque compte est identifié par une adresse unique de 32 octets (soit une clé publique Ed25519, soit un PDA).
- Propriété : seul le programme propriétaire du compte peut modifier ses données ou débiter des lamports. N'importe quel programme peut créditer des lamports sur n'importe quel compte inscriptible.
- Rent : chaque compte doit détenir un solde minimum de lamports proportionnel à sa taille de données pour rester on-chain.
Limites
| Limite | Valeur | Source |
|---|---|---|
| Taille maximale des données de compte | 10 Mio (10 485 760 octets) | MAX_ACCOUNT_DATA_LEN |
| Croissance maximale des données par instruction | 10 Kio (10 240 octets) | MAX_PERMITTED_DATA_INCREASE |
| Croissance maximale des données par transaction | 20 Mio (20 971 520 octets) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Surcharge de stockage de base du compte | 64 octets par compte | TRANSACTION_ACCOUNT_BASE_SIZE |
| Taille d'adresse | 32 octets (clé publique Ed25519) | -- |
| Minimum exempt de rent (formule) | (account_size + 128) * 3 480 lamports/octet-an * 2 ans | minimum_balance() |
Is this page helpful?