アカウントは、状態を保存するためのSolanaの基本的なデータ単位です。ネットワークは、すべての状態をキーバリューストアに保存します。各キーは32バイトのアドレスで、各値はアカウントです。
3つのアカウントとそのアドレスの図。アカウント構造の定義を含みます。
アカウント構造
アカウントアドレス(公開鍵、PDA)、すべてのアカウントが含む5つのフィールド、rent状態マシン、インタラクティブなコードウォークスルー付き。
アカウントタイプ
プログラムアカウント(実行可能コード)、データアカウント(プログラム状態)、システムアカウント、sysvar(クラスタ全体の状態)。
変更ルール
lamport、データ、所有者、実行可能フラグ、借用に関するランタイムで強制されるルール。
アカウントランタイム
アカウント読み込み検証、BPFシリアライゼーション形式、デシリアライゼーション。
重要な事実
- 構造: すべてのアカウントは同じ5つのフィールドを持ちます: lamport、データ、所有者、実行可能、rent_epoch。
- アドレス: 各アカウントは、一意の32バイトアドレス(Ed25519公開鍵またはPDA)によって識別されます。
- 所有権: アカウントの所有者プログラムのみが、そのデータを変更したり、lamportを引き落としたりできます。どのプログラムも、書き込み可能なアカウントにlamportを入金できます。
- Rent: すべてのアカウントは、チェーン上に残るために、データサイズに比例した最小lamport残高を保持する必要があります。
制限
| 制限 | 値 | ソース |
|---|---|---|
| 最大アカウントデータサイズ | 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 lamport/バイト年 * 2年 | minimum_balance() |
Is this page helpful?