Sep 18, 2025

Solana: an Operating System? (Ethereum + Bitcoin analogies)

Think of Solana as a distributed operating system running on thousands of validator “machines”.

Core OS Layer (non-negotiable system components)

BPF Loader → BIOS / Firmware

  • Boots & loads executable programs
  • Controls program upgrades
  • Lives below user software
  • Untouchable by apps

You install software with the BIOS — you don’t rewrite it.

System Program → Kernel (memory + process manager)

Handles:

  • Memory allocation (account space)
  • Ownership (permissions)
  • Money movement (lamports)

OS analogy:

  • malloc()
  • chmod()
  • fork()
  • bank_transfer()

If your program needs memory or money, it talks to the kernel.

Solana Runtime → OS Scheduler

  • Executes instructions
  • Enforces compute limits
  • Runs programs in parallel
  • Prevents crashes from spreading

Like Linux deciding which process runs when.

System Metadata Layer

Sysvars → Environment Variables / /proc

Examples:

  • Clock → system time
  • Rent → memory pricing rules
  • EpochSchedule → epoch timing

Read-only system state exposed to apps.

Standard Libraries (shared across all apps)

SPL Token Program → libc / standard money library

  • Token minting
  • Transfers
  • Balances

Like a standard financial library every app links against.

Associated Token Account Program → Filesystem conventions

  • Deterministic paths
  • One standard location per wallet + token

Think of it as /home/user/.config/ but for tokens.

SPL Memo Program → System logs / comments

  • Attach human-readable notes
  • No logic, just metadata

Token-2022 → Modern standard library (glibc v2)

  • Transfer fees
  • Interest
  • Metadata extensions

Backward-compatible but more powerful.

Governance / Infra Services

Vote Program → Kernel voting / leader election

  • Validators vote on blocks
  • Maintains system integrity

Stake Program → Resource allocator

  • Delegates voting power
  • Controls system influence

Like CPU priority & scheduling weights.

User Space (where you build)

Your Program → User application

  • Games
  • DeFi
  • NFTs
  • AI agents
  • Marketplaces

Rules:

  • Can’t access memory directly
  • Can’t move money directly
  • Must syscall (CPI) into system programs

Exactly like user-space apps.

Full OS Mapping Table (with ETH + BTC analogies)

Solana ComponentOS AnalogyEthereum EquivalentBitcoin Equivalent
BPF LoaderBIOS / FirmwareEVM bytecode loading + protocol rules (hard forks)Script interpreter + consensus rules
System ProgramKernel (memory + process manager)State transition function + system contracts/precompilesUTXO validation + script semantics
RuntimeSchedulerClient execution engine + block execution orderingMiner/validator block assembly + execution
SysvarsEnv vars / /procBlock header fields (timestamp, block number, base fee)Block header fields (nTime, nBits, height)
SPL TokenStandard libraryERC‑20 standard tokensRunes/Ordinals/Colored coins (protocol-level conventions)
Associated Token AccountFilesystem conventionsERC‑20 balance mapping conventionsStandard script templates for token UTXOs
SPL MemoLogs / commentsEvent logsOP_RETURN metadata
Token‑2022New stdlibERC‑20 + extensions (permit, fees, hooks)Richer token metadata protocols
Vote ProgramLeader electionPoS consensus votes/attestationsPoW miner selection
Stake ProgramResource allocationStaking/validator set managementHash power allocation + fee market
Your ProgramUser‑space appSmart contract / dAppScript / L2 app / covenant logic

Visual mental model (Solana accounts)

These diagrams make the “accounts store, programs execute” rule concrete.

Program account (expanded view)

Program account expanded diagram from Solana docs

Program account (simple view)

Program account simple diagram from Solana docs

Data (state) account

Data account diagram from Solana docs

Solana Account Model (clean mental model)

Think of accounts as boxes on-chain, and programs as the only things allowed to open & change boxes.

System Account vs Program Account (Solana 101)

System Account

What it is:

  • A data account owned by the System Program
  • Can hold SOL
  • May hold data (if allocated)
  • Cannot execute code

Key idea: system accounts store state. They don’t run logic.

Examples:

  • Your wallet address
  • A PDA that stores app state
  • A newly created account before ownership is reassigned

Program Account

What it is:

  • An account that stores executable bytecode
  • Marked executable = true
  • Usually stateless
  • Cannot hold mutable user data

Key idea: program accounts are logic-only. They don’t store app state.

Examples:

  • System Program
  • SPL Token Program
  • Your deployed smart contract

Who Controls What? (Ownership)

Account TypeOwnerCan Execute?Holds SOLHolds Data
System AccountSystem Program
Program AccountBPF Loader
PDAProgram

Known System Accounts

These are just accounts owned by the System Program:

  • Wallet accounts: regular user wallets, hold SOL, sign transactions
  • Program Derived Addresses (PDAs): deterministic, no private key, used for app state

Example PDAs:

  • user_profile_pda
  • vault_pda
  • escrow_pda

Known Program Accounts (very important)

  • System Program: creates accounts, transfers SOL, assigns ownership
  • BPF Loader: loads & upgrades programs, owns executable program accounts
  • SPL Token Program: mints tokens, transfers tokens, manages token accounts
  • Associated Token Program: creates deterministic token accounts (wallet + mint → token account)
  • Rent Sysvar: provides rent-exemption info
  • Clock Sysvar: slot, epoch, Unix timestamp

The One-Line Rule (burn this in)

Programs execute. Accounts store.
Programs never store state. Accounts never run code.

Real-World Analogy

  • Program account → backend service (code)
  • System account / PDA → database row
  • Transaction → API request
  • Instruction → function call

Typical Flow (most Solana apps)

  1. Wallet signs transaction
  2. Instruction calls program
  3. Program reads/writes system accounts / PDAs
  4. SOL or tokens move

One-liner that locks it in

Solana is Linux. Programs are processes. CPIs are syscalls.
BPF Loader is the BIOS you never touch.


Thanks for reading! If you want to see future content, you can follow me on Twitter or get connected over at LinkedIn.


Support My Content

If you find my content helpful, consider supporting a humanitarian cause (building homes for elderly people in rural Terai region of Nepal) that I am planning with your donation:

Ethereum (ETH)

0xB62409A5B227D2aE7D8C66fdaA5EEf4eB4E37959

Thank you for your support!