Akun adalah unit data fundamental Solana untuk menyimpan state. Jaringan menyimpan semua state dalam penyimpanan key-value di mana setiap key adalah alamat 32-byte dan setiap value adalah sebuah akun.
Diagram 3 akun dan alamatnya. Termasuk definisi struktur akun.
Struktur akun
Alamat akun (public key, PDA), lima bidang yang dimiliki setiap akun, saldo penyimpanan, dan bidang rent yang sudah tidak digunakan lagi, dengan panduan kode interaktif.
Tipe akun
Akun program (kode yang dapat dieksekusi), akun data (state program), akun sistem, dan sysvars (state cluster-wide).
Aturan modifikasi
Aturan yang diterapkan runtime untuk lamport, data, owner, flag executable, dan borrow.
Runtime akun
Validasi pemuatan akun, format serialisasi BPF, dan deserialisasi.
Fakta kunci
- Struktur: Setiap akun memiliki lima field yang sama: lamport, data, owner, executable, rent_epoch.
- Alamat: Setiap akun diidentifikasi dengan alamat unik 32-byte (baik berupa kunci publik Ed25519 atau PDA).
- Kepemilikan: Hanya program pemilik akun yang dapat memodifikasi data atau mengurangi lamport. Program apa pun dapat menambahkan lamport ke akun yang dapat ditulis.
- Penyimpanan akun: Setiap akun harus memiliki saldo lamport minimum yang dapat dikembalikan secara proporsional terhadap ukuran datanya agar tetap berada di onchain.
Batasan
| Batasan | Nilai | Sumber |
|---|---|---|
| Ukuran data akun maksimal | 10 MiB (10.485.760 byte) | MAX_ACCOUNT_DATA_LEN |
| Pertumbuhan data maksimal per instruksi | 10 KiB (10.240 byte) | MAX_PERMITTED_DATA_INCREASE |
| Pertumbuhan data maksimal per transaksi | 20 MiB (20.971.520 byte) | MAX_ACCOUNT_DATA_GROWTH_PER_TRANSACTION |
| Overhead penyimpanan dasar akun | 64 byte per akun | TRANSACTION_ACCOUNT_BASE_SIZE |
| Ukuran alamat | 32 byte (public key Ed25519) | -- |
| Saldo penyimpanan minimum (rumus) | (account_size + 128) * 3.480 lamport/byte-year * 2 tahun | minimum_balance() |
Is this page helpful?