Solanaプログラムは、実行可能なsBPFバイトコードを含み、executableフラグがtrueに設定されたアカウントです。プログラムはステートレスです。すべての可変状態は、instructionsを介して渡される別のデータアカウントに存在します。
プログラムアカウント、その4つのコンポーネント、およびそのローダープログラムの図。
プログラム実行
コンパイル、プログラムの記述(Anchor / ネイティブRust)、sBPF VM、コンピュートユニットモデル、システムコール、プログラムキャッシュ。
プログラムデプロイ
プログラムのデプロイ、アップグレード、検証。Loader-v3 instructionリファレンスとローダープログラム。
コアプログラム
System Program(instructionリファレンス付き)、Vote、Stake、Config、Compute Budget、Address Lookup Table、ZK ElGamal Proof。
プリコンパイル
Ed25519、Secp256k1、Secp256r1署名検証プログラム。オフセット構造体と検証ルール。
システムコールリファレンス
約30のsBPFシステムコールの完全なリファレンスとコンピュートユニットコスト。
主要な事実
- sBPFへのコンパイル: プログラムはLLVMを介してSolana Bytecode Format(sBPF)にコンパイルされ、実行可能なアカウントに保存されます。
- ステートレス: すべての可変状態は、プログラムアカウントではなく、別のデータアカウントに存在します。
- アップグレード可能: loader-v3(BPF Loader Upgradeable)でデプロイされたプログラムは、アップグレード権限が設定されている場合にアップグレードできます。その権限を取り消すと、プログラムは不変になります。
制限
| 制限 | 値 | ソース |
|---|---|---|
| デフォルトヒープサイズ | 32 KiB | HEAP_LENGTH |
| 最大ヒープサイズ(調整可能) | 256 KiB | MAX_HEAP_FRAME_BYTES |
| スタックフレームサイズ | 4,096バイト | STACK_FRAME_SIZE |
| 最大sBPF呼び出し深度 | 64 | MAX_CALL_DEPTH |
| 最大instructionスタック深度(トップレベル + CPI) | 5(SIMD-0268では9) | MAX_INSTRUCTION_STACK_DEPTH、MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268 |
| ヒープコスト | 32 KiBページあたり8 CU | DEFAULT_HEAP_COST |
| 最大キャッシュプログラム数 | 512 | MAX_LOADED_ENTRY_COUNT |
| デプロイ可視化遅延 | 1 slot | DELAY_VISIBILITY_SLOT_OFFSET |
Is this page helpful?