If you arrive at Solana from Ethereum, three things are different in ways that bite:
Everything is an account. EVM has contracts and EOAs. Solana has accounts. Every piece of on-chain state — a user balance, a token balance, a program's bytecode, a compressed NFT's Merkle tree — lives in an account. Programs (Solana's term for smart contracts) are accounts too; they just have their executable flag set.
Accounts have rent. An account that holds data on Solana costs SOL — proportional to the bytes it occupies. The rent is paid in advance and is rent-exempt as long as the account holds a minimum balance (currently ~0.00204 SOL for a token account). Below that minimum, the validator-set is entitled to delete the account. In practice, the wallet always over-funds, so this is academic — but it explains why creating a new on-chain thing is never free.
Lamports, not wei. 1 SOL = 1,000,000,000 lamports. The 1e9 scaling factor sits between SOL and lamports the same way the 1e18 sits between ether and wei. The wallet displays SOL; the ledger stores lamports.
What an account looks like
An account on Solana has six fields the wallet cares about:
| Field | Meaning |
|---|---|
lamports |
Balance in 1e-9 SOL |
owner |
The program that controls this account (System Program for user wallets, Token Program for ATAs) |
data |
Up to 10 MB of binary state, parsed by the owner program |
executable |
True if this account holds program bytecode |
rent_epoch |
The next epoch at which rent could be charged (deprecated for rent-exempt accounts) |
addresses |
Derived deterministically — most user-facing accounts are PDAs (Program-Derived Addresses) |
A user-controlled wallet account holds SOL and is owned by the System Program. To hold a USDC balance, the user does not hold USDC in their wallet account — they hold it in a separate Associated Token Account (ATA), covered next lesson.
Sending SOL
Sending SOL is one System Program instruction: transfer(from, to, lamports). The wallet's send.py wraps this with a compute-budget instruction (priority-fee), signs with the BIP-44 Ed25519 key, and broadcasts.
Finality on Solana has two clocks:
- Confirmed — your tx has been accepted by the cluster's super-majority and is unlikely to roll back. The wallet treats this as "the recipient can spend it." ~1 second after submission.
- Finalized — the tx is buried by enough subsequent blocks that no fork could revert it. ~12-15 seconds after submission.
The wallet shows "confirmed" by default. The audit log records the finalised slot so regulators always see the deeper clock.
What you commit to with this cert
Earning Solana 101 means you understand:
- You have one Solana address per Gopnik account, derived from your XRPL seed
- SOL is the gas token; you need a small SOL balance to send anything
- Rent exists; the wallet handles it for you (covered in the ATAs lesson)
- Confirmation comes in ~1 s; finalisation in ~12 s
The next lesson covers ATAs — the single most surprising thing about Solana for an EVM user.