I've been doing the #100DaysOfSolana challenge and I want to share what the first four days looked like — because the mental shift from Web2 to Web3 hit me harder and faster than I expected.
Day 1 — Generate a Keypair and Get Devnet SOL
I generated my first Solana keypair using the CLI and airdropped free SOL to it on devnet. There was no sign-up form. No email. No password. My entire identity on the network is just 64 bytes — a private key and the public key derived from it. That's it. The blockchain doesn't know who I am.
Day 2 — Create a Wallet and Check Its Balance Programmatically
On this day, I wrote a TypeScript script that loads a saved keypair from disk and fetches its devnet SOL balance using @solana/kit. The balance comes back in lamports, not SOL — and the RPC is just a plain JSON HTTP call. No special SDK magic required if you don't want it. It felt surprisingly close to calling a REST API.
Day 3 — Understand SOL and Lamports
I dug into the unit system — 1 SOL = 1,000,000,000 lamports (like satoshis in Bitcoin or wei in Ethereum). Everything on Solana is paid and measured in lamports internally. Even rent for storing data on-chain is denominated in lamports. The precision exists so micro-transactions are practical without floating-point weirdness.
Day 4 — Connect a Browser Wallet
I built a browser dapp (Vite + React + TypeScript) that detects installed Solana wallets, connects to Phantom with user approval, reads the connected address, and shows the live devnet balance — updated in real time via a WebSocket. The dapp detect any compatible wallet using browser-level interface.
The Concept That Clicked for Me
The whole cryptography model finally made sense across these four days.
In Web2, your identity lives on someone else's server — a username-password pair that a company stores and controls. Lose access to their system, lose your account.
In Solana (and Web3 broadly), your identity is a keypair you generate yourself. The private key never leaves your device. The public key is your address — it's what you share. When you "sign" something, you're using math (Ed25519) to prove you hold the private key without ever revealing it. The network verifies the signature against your public key. No server in between. No account recovery email.
The dapp I built on Day 4 makes this tangible: it calls window.phantom.solana.connect(), Phantom pops up its own approval UI (fully sandboxed), and if you approve, it hands back only your public key. The dapp never sees your private key — not even for a millisecond. That's the guarantee cryptographic signing gives you.
That shift — from trust the server to verify the math — is the real unlock of this whole ecosystem.
Things I'm curious about
how accounts actually store state on-chain beyond just a balance.
rent-exemption and why accounts need a minimum balance to exist.
how transactions are structured and signed.



Top comments (0)