Programs (Executable)
On-chain programs are ELF shared objects loaded by one of Solana's BPF loaders.
BPF Upgradeable Program
BPF Upgradeable Loader · 36 bytes
A thin 36-byte pointer from a program's public address to its ProgramData account, which holds the actual ELF bytecode. The indirection is what lets a program be upgraded while keeping its address.
Explore
Buffer Account
BPF Upgradeable Loader
A temporary staging account that holds an program's ELF during deployment or before an upgrade. Once written and verified, its contents are copied into the ProgramData account and the buffer is closed.
Explore
ELF Bytecode
BPF Loader
The compiled program itself — a standard ELF shared object whose 64-byte header identifies it as a little-endian eBPF binary, followed by the program's code and data segments.
Explore
ProgramData Account
BPF Upgradeable Loader
The account that actually holds an upgradeable program's ELF bytecode, plus the slot it was last deployed at and the upgrade authority. Referenced by the tiny Program account at the program's public address.
Explore