Акаунт — це фундаментальна одиниця даних Solana для зберігання стану. Мережа зберігає весь стан у сховищі ключ-значення, де кожен ключ є 32-байтною адресою, а кожне значення — акаунтом.
Діаграма 3 акаунтів та їхніх адрес. Включає визначення структури акаунта.
Структура акаунта
Адреси акаунтів (публічний ключ, PDA), п'ять полів, які містить кожен акаунт, машина стану rent, з інтерактивним покроковим розбором коду.
Типи акаунтів
Акаунти програм (виконуваний код), акаунти даних (стан програми), системні акаунти та sysvars (стан на рівні кластера).
Правила модифікації
Правила, що застосовуються runtime для lamports, даних, власника, прапорця executable та borrows.
Runtime акаунта
Валідація завантаження акаунта, формат серіалізації BPF та десеріалізація.
Ключові факти
- Структура: Кожен акаунт має однакові п'ять полів: lamports, data, owner, executable, rent_epoch.
- Адреса: Кожен акаунт ідентифікується унікальною 32-байтною адресою (або публічним ключем Ed25519, або PDA).
- Володіння: Тільки програма-власник акаунта може змінювати його дані або списувати lamports. Будь-яка програма може зарахувати lamports на будь-який акаунт з правом запису.
- Rent: Кожен акаунт повинен утримувати мінімальний баланс lamports пропорційно до розміру його даних, щоб залишатися в блокчейні.
Обмеження
| Обмеження | Значення | Джерело |
|---|---|---|
| Макс. розмір даних акаунта | 10 MiB (10,485,760 байт) | MAX_ACCOUNT_DATA_LEN |
| Макс. зростання даних за інструкцію | 10 KiB (10,240 байт) | MAX_PERMITTED_DATA_INCREASE |
| Макс. зростання даних за транзакцію | 20 MiB (20,971,520 байт) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Базові витрати на зберігання акаунта | 64 байти на акаунт | TRANSACTION_ACCOUNT_BASE_SIZE |
| Розмір адреси | 32 байти (публічний ключ Ed25519) | -- |
| Мінімум для звільнення від rent (формула) | (account_size + 128) * 3,480 lamports/байт-рік * 2 роки | minimum_balance() |
Is this page helpful?