程序

Solana 程序是一个账户,其中包含可执行的 sBPF 字节码,并且其 executable 标志被设置为 true。程序本身是无状态的,所有可变状态都存储在通过instructions 传递的独立数据账户中。

程序账户、其四个组成部分及其加载器程序的示意图。程序账户、其四个组成部分及其加载器程序的示意图。

关键要点

  • 编译为 sBPF:程序通过 LLVM 编译为 Solana 字节码格式(sBPF),并存储在可执行账户中。
  • 无状态:所有可变状态都存储在独立的数据账户中,而不是在 program account 中。
  • 可升级:使用 loader-v3(BPF Loader Upgradeable)部署的程序,在设置升级权限时可进行升级;撤销该权限后,程序将变为不可变。

限制

限制项数值来源
默认堆大小32 KiBHEAP_LENGTH
最大堆大小(可调整)256 KiBMAX_HEAP_FRAME_BYTES
栈帧大小4,096 字节STACK_FRAME_SIZE
最大 sBPF 调用深度64MAX_CALL_DEPTH
最大指令栈深度(顶层 + CPI)5(SIMD-0268 时为 9)MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268
堆成本每 32 KiB 页面 8 CUDEFAULT_HEAP_COST
最大缓存程序数512MAX_LOADED_ENTRY_COUNT
部署可见性延迟1 slotDELAY_VISIBILITY_SLOT_OFFSET

Is this page helpful?

Table of Contents

Edit Page

管理者

©️ 2026 Solana 基金会版权所有
取得联系