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
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:
11111111111111111111111111111111the 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
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
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
Rent sysvar the current rent rate:
solana account SysvarRent111111111111111111111111111111111 --url devnet
Recent Blockhashes sysvar:
solana account SysvarRecentB1ockHashes11111111111111111111 --url devnet
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)