solana.com

A Solana program is an account that contains executable sBPF bytecode and has its executable flag set to true. Programs are stateless. All mutable state lives in separate data accounts passed via instructions.

Diagram of a program account, its 4 components and its loader program.Diagram of a program account, its 4 components and its loader program.

Program Execution

Compilation, writing programs (Anchor / Native Rust), sBPF VM, compute unit model, syscalls, program cache.

Program Deployment

Deploying, upgrading, and verifying programs. Loader-v3 instruction reference and loader programs.

Core Programs

System Program (with instruction reference), Vote, Stake, Config, Compute Budget, Address Lookup Table, and ZK ElGamal Proof.

Precompiles

Ed25519, Secp256k1, Secp256r1 signature verification programs. Offset structs and validation rules.

Syscall Reference

Complete reference for all ~30 sBPF syscalls with compute unit costs.

  • Compiled to sBPF: Programs are compiled to Solana Bytecode Format (sBPF) via LLVM and stored in executable accounts.
  • Stateless: All mutable state lives in separate data accounts, not in the program account.
  • Upgradeable: Programs deployed with loader-v3 (BPF Loader Upgradeable) can be upgraded when an upgrade authority is set; revoking that authority makes the program immutable.
LimitValueSource
Default heap size32 KiBHEAP_LENGTH
Max heap size (adjustable)256 KiBMAX_HEAP_FRAME_BYTES
Stack frame size4,096 bytesSTACK_FRAME_SIZE
Max sBPF call depth64MAX_CALL_DEPTH
Max instruction stack depth (top-level + CPIs)5 (9 with SIMD-0268)MAX_INSTRUCTION_STACK_DEPTH, MAX_INSTRUCTION_STACK_DEPTH_SIMD_0268
Heap cost8 CUs per 32 KiB pageDEFAULT_HEAP_COST
Max cached programs512MAX_LOADED_ENTRY_COUNT
Deployment visibility delay1 slotDELAY_VISIBILITY_SLOT_OFFSET

Read the original on solana.com ↗