DEV Community

Cover image for Solana's System Program Accounts: A Developer's Hands-On Inspection Guide
Samuel Akoji
Samuel Akoji

Posted on

Solana's System Program Accounts: A Developer's Hands-On Inspection Guide

Everything Is an Account Let's Prove It

One of the first things you hear about Solana is "everything is an account." It sounds like marketing. Day 25 of 100 Days of Solana makes it concrete: you open the CLI, inspect real accounts your wallet, the System Program, native programs, sysvar accounts and see that the claim is literally true.

This is a hands-on walkthrough of exactly what to run and what you'll find.

Step 1: Inspect Your Own Wallet

Start with what you know:

solana account <YOUR_WALLET_ADDRESS> --url devnet
Enter fullscreen mode Exit fullscreen mode

Output:
Public Key:
Balance: 1.247 SOL
Owner: 11111111111111111111111111111111
Executable: false
Rent Epoch: 0

Four fields. This is the raw account model for a wallet:

  • Owner: 11111111111111111111111111111111 the System Program. Every regular wallet is owned by it. This is why only the System Program can process SOL transfers from your wallet.
  • Executable: false your wallet is data, not code.
  • Data: empty wallets store no extra data, just the SOL balance tracked in lamports.
  • Rent Epoch: 0 means rent-exempt. Funded above the minimum threshold.

Step 2: Inspect the System Program

Now inspect the program that owns your wallet:

solana account 11111111111111111111111111111111 --url devnet
Enter fullscreen mode Exit fullscreen mode

Output:
Public Key: 11111111111111111111111111111111
Balance: 1 SOL
Owner: NativeLoader1111111111111111111111111111111
Executable: true
Data Length: 14 bytes

Key differences from your wallet:

  • Executable: true this is a program, not a data account
  • Owner: NativeLoader native programs are loaded by the validator itself, not deployed via the BPF loader
  • Data Length: 14 bytes almost nothing. Native program code lives in the validator binary, not in account data. The account is essentially a pointer.

Same four fields as your wallet. One boolean flipped. That's the entire difference between "wallet" and "program" in Solana's account model.

Step 3: Inspect the BPF Loader

solana account BPFLoaderUpgradeab1e11111111111111111111111 --url devnet
Enter fullscreen mode Exit fullscreen mode

Output:
Executable: true
Owner: NativeLoader1111111111111111111111111111111
Data Length: 36 bytes

The BPF Loader is the program that deploys and manages all user-written programs on Solana. When you deploy a program with solana program deploy, you're invoking the BPF Loader. This is the runtime stack made visible: NativeLoader owns the BPF Loader, which owns your programs.

Step 4: Inspect Sysvar Accounts

Sysvar accounts are read-only accounts the network maintains with live runtime data.

Clock sysvar current slot, epoch, and timestamp:

solana account SysvarC1ock11111111111111111111111111111111 --url devnet
Enter fullscreen mode Exit fullscreen mode

Rent sysvar the current rent rate:

solana account SysvarRent111111111111111111111111111111111 --url devnet
Enter fullscreen mode Exit fullscreen mode

Recent Blockhashes sysvar:

solana account SysvarRecentB1ockHashes11111111111111111111 --url devnet
Enter fullscreen mode Exit fullscreen mode

All of these are just accounts same four fields, different data payloads. What makes them special is that the network writes to them every slot.

Step 5: Compare All Four

Account Owner Executable Data
Your wallet System Program false empty
System Program NativeLoader true 14 bytes
BPF Loader NativeLoader true 36 bytes
Clock sysvar Sysvar program false 40 bytes

Every row uses the same four fields. There is no special "wallet type" or "program type" in Solana's runtime just accounts with different owners, executability flags, and data payloads.

What This Teaches You

The System Program is the foundation of everything you've done in the first 25 days:

  • Day 1: Airdrop → System Program created your wallet account
  • Days 15–17: SOL transfers → System Program executed every one
  • Days 22–24: Account inspection → you were reading accounts the System Program owns

Every time you sent SOL, created a wallet, or funded a new account, the System Program was running the instruction. Day 25 just makes it visible.

Top comments (0)