When I first started learning Solana, the thing that confused me most wasn’t transactions or wallets.
It was accounts.
Every tutorial kept talking about accounts:
- Wallet accounts
- Program accounts
- Token accounts
- Data accounts
At first, it sounded like blockchain jargon overload.
But after spending a few days inspecting accounts using the Solana CLI and Explorer, something finally clicked:
On Solana, everything is an account.
Once you understand that idea, the rest of Solana starts making a lot more sense.
In this article, I’ll explain Solana’s account model from the perspective of a Web2 developer.
⸻
The Mental Shift: Solana Is a Giant Key-Value Store
In Web2, we usually think in terms of:
- databases
- tables
- backend servers
- APIs
- application state
Solana works differently.
Instead of storing application state inside a backend server, Solana stores everything inside accounts on-chain.
Every Solana Account Has the Same Structure
No matter what type of account you inspect, they all contain the same core fields.
A Solana account contains:
- lamports
- data
- owner
- executable
- rent_epoch
Here’s an example using the Solana CLI:
solana account <ACCOUNT_ADDRESS>
Example output:
`{
"lamports": 1505728269681,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"executable": false,
"rentEpoch": 18446744073709551615,
"data": [...]
}`
Let’s break those fields down.
- Lamports = SOL Balance
Lamports are the smallest unit of SOL.
Think of them like satoshis in Bitcoin.
1 SOL = 1,000,000,000 lamports
If an account has:
1500000000 lamports
That means it owns:
1.5 SOL
Every account can hold SOL, not just wallets.
That surprised me at first.
- Data = Arbitrary State Storage
The data field is where programs store information.
This could contain:
- token balances
- NFT metadata
- game inventory
- DeFi positions
- DAO governance state
The important thing is:
Solana stores raw bytes.
Programs are responsible for interpreting those bytes.
This feels similar to reading binary files or serialized objects in traditional systems.
⸻
- Owner = Who Controls the Account
This is one of the most important concepts in Solana.
Every account has an owner.
But the owner is usually NOT a user.
It’s typically a program.
Example:
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
That’s the SPL Token Program.
If an account is owned by the Token Program, only the Token Program can modify that account’s data.
This creates a very clean security model.
Ownership Rules
On Solana:
- Only the owner program can modify account data
- Only the owner program can debit lamports
- Anyone can send lamports into a writable account
That’s surprisingly elegant.
⸻
- Executable = Is This a Program?
This field is simply:
true or false
If:
executable = true
then the account contains executable program code.
If:
executable = false
then it’s just a data account.
This is where Solana differs a lot from Ethereum.
Programs Don’t Store Their Own State
This was probably the biggest mental shift for me.
In Ethereum, smart contracts usually contain both:
- code
- state
On Solana, programs are stateless.
The executable code lives in one account.
The data lives in separate accounts.
Programs read and write external accounts instead of storing state internally.
That design allows Solana to parallelize transactions more efficiently.
- Rent Epoch (Deprecated)
Older Solana docs talk about rent_epoch.
Today, this field is effectively deprecated and usually set to:
18446744073709551615
Most developers can ignore it now.
Rent Exemption
One thing I found interesting is that storing data on Solana costs money.
Every account must maintain a minimum balance to remain on-chain.
This is called being:
rent-exempt
The larger the account data size, the more SOL it needs.
For example:
solana rent 0
returns the minimum balance needed for an empty account.
At the time I tested it, it was around:
0.00089 SOL
This mechanism prevents the blockchain from being flooded with useless data forever.
My Favorite Analogy: Solana as a Filesystem
The analogy that finally made everything click for me was this:
Imagine Solana as a giant operating system filesystem.
Each account is like a file.
Accounts contain:
- metadata
- permissions
- contents
Programs are executable files.
Data accounts are documents those programs read and write.
The System Program acts like the operating system kernel managing account creation and ownership.
Once I started thinking about Solana this way, the architecture suddenly felt much more familiar.
⸻
Final Thoughts
At first, Solana’s account model felt strange coming from Web2.
But now I actually think it’s one of the cleanest parts of Solana’s design.
The key ideas that helped me most were:
- Everything is an account
- Programs are stateless
- Ownership controls security
- Accounts are just structured storage
Once those concepts click, reading Solana transactions and programs becomes much easier.
If you’re a Web2 developer learning Solana right now, my advice is simple:
Spend time inspecting real accounts.
Use:
solana account <address>
Look at Explorer.
Read the raw JSON.
Eventually the patterns start revealing themselves naturally.
And honestly, that’s when blockchain development starts becoming really fun 🚀
Top comments (0)