I have spent the last week diving into Solana development, and I want to share what each day felt like as a complete beginner. Because honestly, nothing clicked until I did it myself.
Day 1: My First Keypair
I created a new project folder and installed @solana/kit. Then I wrote a tiny script that called generateKeyPairSigner() and printed the wallet address. When I ran it, a long string of letters and numbers appeared. That string, I learned, was my public key like an account number I could safely share. The private key stayed hidden inside the wallet object, never printed. It felt strange not seeing it. I copied the address, opened faucet.solana.com, selected Devnet, and requested an airdrop. I actually encountered an error because I didn't connect my github account to it. A few seconds after connecting my github, free test SOL landed at my address. I updated the script to check the balance and saw 2.5 SOL in the terminal. I also realized that running the script again gave me a completely new wallet each time. It was like printing a new bank account slip and throwing it away.
Day 2: Making the Wallet Stick
The goal was to create a wallet, save it to a file, and load it later. I wrote a function that first tried to read a wallet.json file. If the file existed, it would reconstruct the keypair from its bytes. If not, it would generate a new one, save it, and carry on. My first attempt failed with an error:
"key is not extractable."
ThegenerateKeyPairSigner()function creates keys that can't be exported for security. That stumped me. After digging, I switched to usingcreateKeyPairSignerFromPrivateKeyBytes()and generated my own 32 random bytes using Node'scrypto.randomBytes(32). I saved those bytes (just the private key) into a JSON file as an array of numbers. When I ran the script again, it loaded the same address and showed the balance I’d funded earlier. For the first time, I had a wallet I could reuse.
Day 3: SOL and Lamports, the Smallest Unit
I installed the Solana CLI and generated a fresh keypair (solana-keygen new). Then I used solana balance --url devnet to see my balance in SOL, and --lamports to see it in lamports. The conversion: 1 SOL = 1,000,000,000 lamports. Integers only, no decimals. This explained why earlier my script showed 2000000000 when I expected 2. It’s like working with cents in payment APIs. I also checked a transaction fee 5000 lamports, or 0.000005 SOL by inspecting the transaction history. I finally understood why blockchain code never uses float numbers. Everything is exact.
Day 4: Connecting a Real Browser Wallet
This was the big leap: building a web app that talks to a browser extension. I created a Vite project, installed @solana/kit and @wallet-standard/app. The JavaScript detected installed wallets (like Phantom) using getWallets(), filtered for Solana chains, and showed buttons for each. Clicking one triggered connect(), which opened a popup asking permission. Once I approved, the page displayed my address and devnet balance fetched via RPC. I didn’t touch a private key at all the wallet handled it. Seeing it work in the browser felt like building something real. The Wallet Standard meant my app would work with any compliant wallet, not just Phantom. That’s elegant.
Day 5: Comparing Wallet Types
I stepped back to compare the three wallets I now had: the CLI wallet (plaintext JSON file), the browser extension (password-encrypted, with seed phrase), and a mobile wallet I installed fresh. Each generated a keypair, but the experience differed. The CLI was lightning-fast for scripting. The browser wallet added a confirmation layer every signature required a popup. The mobile wallet used biometrics and felt the most secure day-to-day. I sent 0.01 SOL from my phone to my CLI address and verified it arrived. All of them held the same kind of keypair, but security and convenience varied wildly. That’s when it hit me: identity on Solana is a private key, and wallets are just different containers for it.
What It All Means
After five days, the concept clicked. On Solana, you don’t have a username or email; you have a keypair. Your address is your public key, and you prove ownership by signing with your private key. No company can revoke that, reset a password, or lock you out. It’s like SSH keys for the entire internet. That’s both empowering and terrifying because if you lose the key, nobody can help you. But it also means you truly own your identity, assets, and interactions across every app on the network. That shift in mindset is the biggest lesson I’ve taken away.
I’m still getting used to double-checking backups, but I can’t unsee it now: my wallet is my identity on Solana. And that’s a good thing.


Top comments (1)
Really cool post — I like the day-by-day breakdown with screenshots. It makes it super easy to follow your journey and see how everything builds up step by step.