<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samuel Akoji</title>
    <description>The latest articles on DEV Community by Samuel Akoji (@sammie_).</description>
    <link>https://dev.to/sammie_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3898087%2F3cb96184-ed6c-4759-9563-1bdb59d178c2.jpg</url>
      <title>DEV Community: Samuel Akoji</title>
      <link>https://dev.to/sammie_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sammie_"/>
    <language>en</language>
    <item>
      <title>What I Found When I Actually Explored Solana Explorer</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Sat, 16 May 2026 22:34:43 +0000</pubDate>
      <link>https://dev.to/sammie_/what-i-found-when-i-actually-explored-solana-explorer-10nh</link>
      <guid>https://dev.to/sammie_/what-i-found-when-i-actually-explored-solana-explorer-10nh</guid>
      <description>&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;Day 26 of 100 Days of Solana is open-ended: explore Solana Explorer, find something interesting, compare it to what you've been doing in the CLI. No starter code, no guided steps. Just go look at the blockchain.&lt;/p&gt;

&lt;p&gt;I'll be honest I wasn't sure what "interesting" meant at first. I've been writing scripts for 25 days. I know how to fetch data. But sitting down and just &lt;em&gt;exploring&lt;/em&gt; felt different. Here's what I found.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Stop: My Own Wallet
&lt;/h2&gt;

&lt;p&gt;I started with what I knew my own devnet wallet. Pasted the address into explorer.solana.com, switched to devnet, and there it was: every transaction from the last 26 days laid out in reverse chronological order.&lt;/p&gt;

&lt;p&gt;The most recent ones are from Arc 3 the SOL transfers I sent when building the transfer tool. Clicking through them, I could see the exact lamport amounts, the fees (consistently 5000 lamports = 0.000005 SOL), and the System Program invocations.&lt;/p&gt;

&lt;p&gt;What struck me: I've been reading this same data through scripts for weeks. Seeing it in Explorer felt like switching from reading a map's coordinates to looking at a satellite photo of the terrain. Same information, completely different feel.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Transaction That Surprised Me
&lt;/h2&gt;

&lt;p&gt;I found a failed transaction from Day 19, the day we worked on handling transaction failures. I had forgotten about it. The error in the log:&lt;/p&gt;

&lt;p&gt;The transaction failed, but it's still there. Still cost 5000 lamports. I remember being confused by that when it happened why do you pay for a failed transaction? Explorer made the answer visual: the validators &lt;em&gt;ran&lt;/em&gt; the transaction, confirmed it would fail, and recorded that confirmation. The work happened. The fee was for the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going Deeper: The Token Program
&lt;/h2&gt;

&lt;p&gt;I searched for the SPL Token Program: &lt;code&gt;TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is the program that powers every token on Solana USDC, USDT, every NFT, everything. Its account in Explorer shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executable: true&lt;/li&gt;
&lt;li&gt;Owner: BPF Loader (the program loader for on-chain programs)&lt;/li&gt;
&lt;li&gt;Data: the compiled BPF bytecode of the program itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was the moment Arc 4's account model lesson clicked for me. The program &lt;em&gt;is&lt;/em&gt; an account. The code lives in the &lt;code&gt;data&lt;/code&gt; field of that account. When you call the TokenProgram, you're passing a message to this account, which the runtime executes as code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mainnet for 10 Minutes
&lt;/h2&gt;

&lt;p&gt;I switched to mainnet and just watched the homepage for a few minutes. Transactions streaming in constantly. I clicked a few at random:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Jupiter swap: 12 accounts, 3 programs, executed in one atomic transaction&lt;/li&gt;
&lt;li&gt;A simple SOL transfer between two wallets: clean, 2 accounts, system program only&lt;/li&gt;
&lt;li&gt;An NFT mint: token program, metadata program, and associated token account program all invoked in sequence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The complexity range was wild. A simple transfer and multi-protocol DeFi interactions both look like "one transaction" from the outside. Inside, they're completely different.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI vs Explorer: The Real Comparison
&lt;/h2&gt;

&lt;p&gt;Here's the honest comparison after spending a day in Explorer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI is better for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scripting and automation&lt;/li&gt;
&lt;li&gt;Precise control over RPC calls&lt;/li&gt;
&lt;li&gt;Building tools that read data programmatically&lt;/li&gt;
&lt;li&gt;Piping output into other commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explorer is better for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting a quick visual overview&lt;/li&gt;
&lt;li&gt;Debugging failed transactions (the log view is excellent)&lt;/li&gt;
&lt;li&gt;Discovering programs and accounts you didn't know existed&lt;/li&gt;
&lt;li&gt;Building intuition for what on-chain activity looks like&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They're not competing. I'll use both. The CLI is how I build. Explorer is how I verify and understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Arc 4 is taking us into the account model in depth. After spending a day in Explorer seeing accounts everywhere wallets, programs, tokens, sysvars I feel like I actually understand what "everything is an account" means now. It's not a slogan. It's literally how the whole system is organized.&lt;/p&gt;

&lt;p&gt;If you haven't spent time in Explorer yet, do it today. Don't follow a tutorial. Just start with your own wallet and follow the threads.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>5 Things to Find on Solana Explorer That Will Level Up Your On-Chain Intuition</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Sat, 16 May 2026 22:21:20 +0000</pubDate>
      <link>https://dev.to/sammie_/5-things-to-find-on-solana-explorer-that-will-level-up-your-on-chain-intuition-5baj</link>
      <guid>https://dev.to/sammie_/5-things-to-find-on-solana-explorer-that-will-level-up-your-on-chain-intuition-5baj</guid>
      <description>&lt;h2&gt;
  
  
  Why Exploration Beats Documentation
&lt;/h2&gt;

&lt;p&gt;You can read about Solana's architecture for hours. Or you can spend 20 minutes on Solana Explorer and &lt;em&gt;see&lt;/em&gt; it. This tutorial gives you five specific things to find on Explorer that will make abstract concepts concrete each one tied to something you've already learned in 100 Days of Solana.&lt;/p&gt;

&lt;p&gt;Open explorer.solana.com and switch to &lt;strong&gt;devnet&lt;/strong&gt; before starting.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Find Your Oldest Devnet Transaction
&lt;/h2&gt;

&lt;p&gt;Search your wallet address in Explorer. Scroll to the bottom of your transaction history. Your oldest transaction is probably the airdrop from Day 1 — when you ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana airdrop 2 &amp;lt;YOUR_ADDRESS&amp;gt; &lt;span class="nt"&gt;--url&lt;/span&gt; devnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click that transaction. Notice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;fee payer&lt;/strong&gt; is your wallet&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;program&lt;/strong&gt; invoked is the System Program (&lt;code&gt;11111111111111111111111111111111&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;The instruction type is &lt;code&gt;Transfer&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the full on-chain record of the moment you got your first devnet SOL. It's permanent. Even after the challenge ends, this transaction will still be there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to notice:&lt;/strong&gt; The fee for an airdrop is 0 the network pays for it. For the transfers &lt;em&gt;you&lt;/em&gt; sent, you'll see a small fee deducted from your account.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Find the System Program and Read Its Account
&lt;/h2&gt;

&lt;p&gt;Search: &lt;code&gt;11111111111111111111111111111111&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is the System Program the most fundamental program on Solana. It handles creating new accounts and transferring SOL. Look at its account details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Executable:&lt;/strong&gt; true it's a program, not a data account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner:&lt;/strong&gt; Native Loader native programs are a special case&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; essentially empty in the account, because native programs live in the validator binary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Balance:&lt;/strong&gt; 1 SOL the minimum to keep it rent-exempt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every SOL transfer you've made in the last 26 days went through this account. It has processed billions of instructions since mainnet launch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to notice:&lt;/strong&gt; The &lt;code&gt;executable&lt;/code&gt; flag is the only thing distinguishing a program account from a data account. That distinction is fundamental to Solana's account model.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Find a Token Account
&lt;/h2&gt;

&lt;p&gt;On mainnet, search for any popular token like USDC: &lt;code&gt;EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You'll see a token mint account, the on-chain record that defines USDC: total supply, decimals, and the mint authority. This is what SPL token accounts point to when they say "I hold USDC."&lt;/p&gt;

&lt;p&gt;Switch back to devnet and look at your own wallet if you've interacted with any tokens, you'll see associated token accounts listed. Each one is a separate account that says "this wallet holds X amount of token Y."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to notice:&lt;/strong&gt; Your wallet doesn't directly hold tokens. It owns &lt;em&gt;token accounts&lt;/em&gt; that hold tokens. This is why you sometimes pay a small fee to receive a new token creating the token account costs rent.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Watch Live Mainnet Transactions
&lt;/h2&gt;

&lt;p&gt;Switch to mainnet and go to the Explorer homepage. You'll see transactions streaming in at roughly 2-3 per second. Watch for a minute.&lt;/p&gt;

&lt;p&gt;Notice the variety: some are simple SOL transfers, some are complex DeFi interactions with 10+ accounts and multiple program invocations. The transaction volume and complexity gives you a real sense of what's actually happening on-chain day to day.&lt;/p&gt;

&lt;p&gt;Click a random complex transaction and trace through the accounts list you'll start recognizing patterns: DEX programs, token programs, associated token account programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to notice:&lt;/strong&gt; Solana's throughput is real. This isn't a demo — it's the actual network handling thousands of transactions per second in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Find a Failed Transaction
&lt;/h2&gt;

&lt;p&gt;In any active wallet's history, look for a transaction with a red "Error" badge. Click it.&lt;/p&gt;

&lt;p&gt;You'll see the error message in the log section. Common errors you'll encounter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;InsufficientFundsForRent&lt;/code&gt; the account doesn't have enough SOL to stay rent-exempt&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;InvalidAccountData&lt;/code&gt; the program received an account it didn't expect&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Custom program error: 0x1&lt;/code&gt; a program-specific error code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What to notice:&lt;/strong&gt; Failed transactions still get recorded and still cost a fee. The fee is paid for the computational work the validators did to &lt;em&gt;attempt&lt;/em&gt; the transaction, even if it ultimately failed. This is an important detail for building resilient Solana apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It Together
&lt;/h2&gt;

&lt;p&gt;Each of these five explorations maps to a concept from the first 26 days:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your airdrop transaction → Day 1 (keypairs and devnet SOL)&lt;/li&gt;
&lt;li&gt;The System Program → Day 15-17 (transactions and transfers)&lt;/li&gt;
&lt;li&gt;Token accounts → the account model you're learning in Arc 4&lt;/li&gt;
&lt;li&gt;Live mainnet → the real network you're building toward&lt;/li&gt;
&lt;li&gt;Failed transactions → error handling from Days 18-19&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Explorer isn't just a block browser. It's a learning tool. The entire history of Solana is there to read.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>Solana Explorer Explained: How to Read Blockchain Data Like a Developer</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Sat, 16 May 2026 22:12:50 +0000</pubDate>
      <link>https://dev.to/sammie_/solana-explorer-explained-how-to-read-blockchain-data-like-a-developer-43g6</link>
      <guid>https://dev.to/sammie_/solana-explorer-explained-how-to-read-blockchain-data-like-a-developer-43g6</guid>
      <description>&lt;h2&gt;
  
  
  What Is Solana Explorer?
&lt;/h2&gt;

&lt;p&gt;If you've spent the last few weeks writing scripts to fetch account balances, decode transactions, and inspect on-chain programs via the CLI, opening Solana Explorer for the first time feels like switching from a terminal to a dashboard. Everything you've been reading in JSON is now laid out visually but understanding &lt;em&gt;what&lt;/em&gt; you're looking at is still a developer skill.&lt;/p&gt;

&lt;p&gt;This post walks you through Solana Explorer as a developer tool, not just a block explorer. By the end, you'll know what every section means and how it maps to the data you've already been working with in code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Devnet vs Mainnet Switch First
&lt;/h2&gt;

&lt;p&gt;The first thing to do when opening explorer.solana.com is check which network you're on. The network switcher is in the top-right corner. If you've been working through 100 Days of Solana, most of your activity has been on &lt;strong&gt;devnet&lt;/strong&gt; so switch there first or you won't find your own wallets and transactions.&lt;/p&gt;

&lt;p&gt;This is the visual equivalent of setting your RPC endpoint in code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Connection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;clusterApiUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;devnet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mainnet is the live network with real money. Devnet is the sandbox. Explorer shows both just make sure you're looking at the right one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anatomy of a Transaction in Explorer
&lt;/h2&gt;

&lt;p&gt;Click any recent transaction and you'll see several sections. Here's how they map to what you know from code:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signature&lt;/strong&gt; This is the unique transaction ID, equivalent to the string you get back from &lt;code&gt;sendTransaction()&lt;/code&gt;. It's how you look up any transaction on-chain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt; Success or failure. On-chain, a failed transaction still gets recorded and still costs a fee. Explorer shows you the error message if it failed, which is invaluable for debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timestamp&lt;/strong&gt; When the transaction was finalized. Solana's block time is roughly 400ms, so this is nearly real-time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fee&lt;/strong&gt; Shown in SOL. Transaction fees on Solana are tiny usually around 0.000005 SOL (5000 lamports). You've worked with lamports in code; Explorer converts them to SOL for readability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Account Inputs&lt;/strong&gt; This is the list of accounts involved in the transaction. Every Solana transaction must declare upfront which accounts it will read or write. You'll see which accounts are marked as writable and which are signers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction Data&lt;/strong&gt; The raw instruction sent to a program. For simple SOL transfers this is minimal, but for program interactions it contains the encoded instruction arguments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Messages&lt;/strong&gt; This is the most useful section for developers. Every &lt;code&gt;msg!()&lt;/code&gt; call from a Solana program shows up here. When your program panics or hits an error, the log is where you'll find out why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Your Own Wallet
&lt;/h2&gt;

&lt;p&gt;Paste your devnet wallet address into the search bar. You'll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SOL Balance&lt;/strong&gt; in SOL, with the lamport equivalent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Accounts&lt;/strong&gt; any SPL tokens you hold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction History&lt;/strong&gt; every transaction this wallet has signed, in chronological order&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare this to what you'd get from the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana balance &amp;lt;YOUR_WALLET_ADDRESS&amp;gt; &lt;span class="nt"&gt;--url&lt;/span&gt; devnet
solana transaction-history &amp;lt;YOUR_WALLET_ADDRESS&amp;gt; &lt;span class="nt"&gt;--url&lt;/span&gt; devnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explorer gives you the same data, just navigable. The CLI gives you the same data, just scriptable. Both are reading from the same on-chain state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring a Native Program
&lt;/h2&gt;

&lt;p&gt;Search for &lt;code&gt;11111111111111111111111111111111&lt;/code&gt; this is the &lt;strong&gt;System Program&lt;/strong&gt;. Every SOL transfer goes through it. In Explorer you'll see it marked as a native program with the &lt;code&gt;executable&lt;/code&gt; flag set to true and a data field that's essentially empty (native programs live in the validator, not in account data).&lt;/p&gt;

&lt;p&gt;This is a concept you'll explore deeper in Arc 4: on Solana, programs are just accounts with &lt;code&gt;executable: true&lt;/code&gt;. The System Program is the most fundamental one it handles account creation and SOL transfers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Explorer Can't Tell You
&lt;/h2&gt;

&lt;p&gt;Explorer is read-only and retrospective. It shows you what happened, not why. For debugging a failing program, you still need your logs and local testing. For building, you still need the SDK. Explorer is the lens you use to &lt;em&gt;verify&lt;/em&gt; not the tool you use to &lt;em&gt;build&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Every CLI command you've run in the last 26 days has been reading from the same data that Explorer displays. The difference is interface, not information. Use Explorer to verify your work, explore unfamiliar programs, and build intuition for what on-chain activity looks like at scale.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Decoding Raw Account Data with Borsh</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Thu, 14 May 2026 19:30:00 +0000</pubDate>
      <link>https://dev.to/sammie_/decoding-raw-account-data-with-borsh-554k</link>
      <guid>https://dev.to/sammie_/decoding-raw-account-data-with-borsh-554k</guid>
      <description>&lt;h2&gt;
  
  
  Day 24 of #100DaysOfSolana
&lt;/h2&gt;

&lt;p&gt;Yesterday I built a terminal account explorer. But that &lt;code&gt;data&lt;/code&gt; field kept staring back at me a blob of base64 with no obvious meaning.&lt;/p&gt;

&lt;p&gt;Today I cracked it open.&lt;/p&gt;




&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;Every Solana account stores its state as a flat byte array. There's no JSON, no column names, no built-in schema. The program that owns the account defines how those bytes are laid out using a serialization format called &lt;strong&gt;Borsh&lt;/strong&gt; (Binary Object Representation Serializer for Hashing).&lt;/p&gt;

&lt;p&gt;To read account data, you need either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A pre-built codec for that account type, or&lt;/li&gt;
&lt;li&gt;The byte-level specification to decode it manually&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What I decoded
&lt;/h3&gt;

&lt;p&gt;I used the &lt;strong&gt;Wrapped SOL mint account&lt;/strong&gt; on mainnet as my target a well-known SPL Token account with a fixed 82-byte layout.&lt;/p&gt;




&lt;h3&gt;
  
  
  Method 1 Pre-built codec (the easy path)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getMintDecoder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@solana-program/token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getMintDecoder&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountData&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One line. Returns a fully structured object with supply, decimals, mintAuthority, and more. This is what you'd use in production.&lt;/p&gt;




&lt;h3&gt;
  
  
  Method 2 Manual byte decoding (the learning path)
&lt;/h3&gt;

&lt;p&gt;The 82-byte Mint layout:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bytes&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0–3&lt;/td&gt;
&lt;td&gt;mintAuthorityOption&lt;/td&gt;
&lt;td&gt;u32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4–35&lt;/td&gt;
&lt;td&gt;mintAuthority&lt;/td&gt;
&lt;td&gt;32-byte pubkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;36–43&lt;/td&gt;
&lt;td&gt;supply&lt;/td&gt;
&lt;td&gt;u64 (little-endian)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;decimals&lt;/td&gt;
&lt;td&gt;u8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;td&gt;isInitialized&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;46–49&lt;/td&gt;
&lt;td&gt;freezeAuthorityOption&lt;/td&gt;
&lt;td&gt;u32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50–81&lt;/td&gt;
&lt;td&gt;freezeAuthority&lt;/td&gt;
&lt;td&gt;32-byte pubkey&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DataView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;supply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getBigUint64&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true = little-endian&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decimals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getUint8&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;44&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isInitialized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getUint8&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things to understand here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DataView&lt;/strong&gt; lets you read multiple adjacent bytes as a single typed value (u32, u64, etc). You'd use it to parse any binary format, not just Solana.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Little-endian flag (&lt;code&gt;true&lt;/code&gt;)&lt;/strong&gt; Solana stores all multi-byte numbers least significant byte first. Forgetting this flag is the single most common decoding bug. Every multi-byte read needs &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Method 3 RPC jsonParsed (the shortcut)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAccountInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jsonParsed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The RPC decodes it server-side for known programs. Great for quick checks but only works for well-known programs. For custom programs, you bring your own decoder.&lt;/p&gt;

&lt;p&gt;All three methods returned identical values. ✅&lt;/p&gt;




&lt;h3&gt;
  
  
  The three encodings you'll see everywhere
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Encoding&lt;/th&gt;
&lt;th&gt;When you see it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base64&lt;/td&gt;
&lt;td&gt;RPC account data responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base16 (hex)&lt;/td&gt;
&lt;td&gt;Debugging 1 byte = 2 chars, easy to count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base58&lt;/td&gt;
&lt;td&gt;Solana addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;They're all just different spellings of the same underlying bytes.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why this matters
&lt;/h3&gt;

&lt;p&gt;When you write your own Solana programs, you'll define Rust structs → Borsh serializes them into byte arrays → your frontend deserializes them back. Today I proved I can do that translation by hand.&lt;/p&gt;

&lt;p&gt;No more mystery blobs.&lt;/p&gt;

&lt;p&gt;Day 24 down. Still shipping daily as part of 100 Days of Solana with MLH&lt;/p&gt;

&lt;h1&gt;
  
  
  solana #web3 #blockchain #100daysofsolana
&lt;/h1&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>I Built a Terminal Account Explorer (Mini Solscan)</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Thu, 14 May 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/sammie_/i-built-a-terminal-account-explorer-mini-solscan-lkp</link>
      <guid>https://dev.to/sammie_/i-built-a-terminal-account-explorer-mini-solscan-lkp</guid>
      <description>&lt;h2&gt;
  
  
  Day 23 of #100DaysOfSolana
&lt;/h2&gt;

&lt;p&gt;Today I stopped staring at raw terminal output and built something actually useful: a CLI tool that takes any Solana address and prints a clean summary of the account balance, owner, data size, and whether it's executable.&lt;/p&gt;

&lt;p&gt;Think of it as your own mini Solscan, no browser required.&lt;/p&gt;




&lt;h3&gt;
  
  
  What I built
&lt;/h3&gt;

&lt;p&gt;A Node.js script (&lt;code&gt;explorer.mjs&lt;/code&gt;) that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepts any Solana address as a CLI argument&lt;/li&gt;
&lt;li&gt;Fetches balance via &lt;code&gt;getBalance&lt;/code&gt; and account metadata via &lt;code&gt;getAccountInfo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Converts lamports to SOL (divide by 1,000,000,000)&lt;/li&gt;
&lt;li&gt;Maps owner addresses to friendly names (System Program, Token Program, etc.)&lt;/li&gt;
&lt;li&gt;Truncates large data fields so your terminal doesn't explode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stack: &lt;code&gt;@solana/kit&lt;/code&gt;, ES Modules, devnet RPC&lt;/p&gt;




&lt;h3&gt;
  
  
  The core insight
&lt;/h3&gt;

&lt;p&gt;Every single account on Solana — wallets, token accounts, deployed programs — is described by the same 5 fields:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;What it tells you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;balance&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How much SOL (in lamports)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;owner&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Which program controls this account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Custom bytes stored in the account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;executable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Is this account a runnable program?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rent_epoch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;When rent was last collected&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The difference between a wallet and a smart contract is literally one boolean: &lt;code&gt;executable&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  What surprised me
&lt;/h3&gt;

&lt;p&gt;Block explorers like Solscan and SolanaFM aren't doing anything special. They call the same &lt;code&gt;getBalance&lt;/code&gt; and &lt;code&gt;getAccountInfo&lt;/code&gt; RPC methods I used today — they just wrap the output in a web UI.&lt;/p&gt;

&lt;p&gt;Building the raw version yourself gives you a mental model that no tutorial skips to.&lt;/p&gt;




&lt;h3&gt;
  
  
  Try it yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node explorer.mjs TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it against the Token Program address. You'll see &lt;code&gt;executable: true&lt;/code&gt; and the System Program listed as owner.&lt;/p&gt;

&lt;p&gt;Then try your own devnet wallet — &lt;code&gt;executable: false&lt;/code&gt;, zero data, System Program owner.&lt;/p&gt;




&lt;p&gt;Day 23 down. Still shipping daily&lt;/p&gt;

&lt;h1&gt;
  
  
  solana #web3 #blockchain #100daysofcode #javascript
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>cli</category>
      <category>node</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Inspecting Raw Account Data with the Solana CLI</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Thu, 14 May 2026 10:01:23 +0000</pubDate>
      <link>https://dev.to/sammie_/inspecting-raw-account-data-with-the-solana-cli-1b8</link>
      <guid>https://dev.to/sammie_/inspecting-raw-account-data-with-the-solana-cli-1b8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Day 22 of #100DaysOfSolana&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today I went under the hood. No code just the Solana CLI and three account inspections that changed how I see the whole network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inspection 1 — My own wallet
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana account &lt;span class="si"&gt;$(&lt;/span&gt;solana address&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Balance: 2 SOL
Owner: 11111111111111111111111111111111
Executable: false
Length: 0 bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Owned by the System Program. Not executable. Zero bytes of custom data. Just a balance.&lt;/p&gt;




&lt;h3&gt;
  
  
  Inspection 2 — The SPL Token Program
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana account TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Executable: true
Owner: BPFLoader2111111111111111111111111111111111
Data: [compiled program bytecode]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same five fields — completely different values. This is a runnable program, loaded by the BPF Loader, with actual bytecode in the data field.&lt;/p&gt;

&lt;p&gt;A native built-in program. The only one on Solana that can create new accounts. Compare its fields to both above and the pattern becomes clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  The five fields every account shares
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lamports&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SOL balance in the smallest unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Arbitrary byte array (empty for wallets)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;owner&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The program that controls this account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;executable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Is this account runnable code?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rentEpoch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Legacy field, no longer actively used&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  The key insight
&lt;/h3&gt;

&lt;p&gt;On Solana, &lt;strong&gt;everything is an account&lt;/strong&gt;. Wallets, programs, token balances, NFT metadata, game state — all accounts, all with the same five fields.&lt;/p&gt;

&lt;p&gt;The difference between a wallet and a smart contract is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One boolean: &lt;code&gt;executable&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;One address: what sits in &lt;code&gt;owner&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is different from Ethereum, where wallets and contracts are distinct concepts. On Solana, it's accounts all the way down.&lt;/p&gt;




&lt;h3&gt;
  
  
  The owner field is the security model
&lt;/h3&gt;

&lt;p&gt;Only the owning program can modify an account's data or deduct its lamports. That's why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The System Program handles SOL transfers → it owns wallets&lt;/li&gt;
&lt;li&gt;The Token Program moves tokens → it owns token accounts&lt;/li&gt;
&lt;li&gt;Your custom program controls its state → it will own the accounts it creates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding this is foundational for everything that comes next.&lt;/p&gt;

&lt;p&gt;Same fields, machine-readable. Useful for scripting or piping into other tools.&lt;/p&gt;

&lt;p&gt;Day 22 down.&lt;/p&gt;

&lt;h1&gt;
  
  
  solana #web3 #blockchain #100daysofsolana
&lt;/h1&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Solana Transactions Explained for Backend Developers</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Mon, 11 May 2026 08:01:59 +0000</pubDate>
      <link>https://dev.to/sammie_/solana-transactions-explained-for-backend-developers-2cjl</link>
      <guid>https://dev.to/sammie_/solana-transactions-explained-for-backend-developers-2cjl</guid>
      <description>&lt;p&gt;I've sent hundreds of HTTP requests in my career. POST to an endpoint, get a 200 back, move on. When I started building on Solana, I assumed transactions would feel similar. They don't and understanding exactly why changed how I think about on-chain programming entirely.&lt;/p&gt;

&lt;p&gt;The Web2 mental model (and where it breaks down)&lt;/p&gt;

&lt;p&gt;In a typical backend system, you call an API: you send a payload, a server processes it, and you get a response. The server holds authority. Authentication is usually a session token that the server validates against its own database.&lt;/p&gt;

&lt;p&gt;Solana transactions have a surface-level resemblance to this you send something to the network, it gets processed, you get a result. But three things make the comparison fall apart quickly:&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;The transaction itself is the authority&lt;/strong&gt;: There's no session. There's no server checking a database. Authority comes from a cryptographic signature attached to the transaction computed with your private key, verifiable by anyone. If the signature is valid, the instruction runs. Period.&lt;/p&gt;

&lt;p&gt;2.** Everything is atomic**: A transaction bundles one or more instructions, and they all succeed or all fail together. This isn't just a convenience it's a security guarantee baked into the runtime.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;It expires&lt;/strong&gt;: A transaction is only valid for roughly 60–90 seconds, anchored to something called a recent blockhash. No stale replays. No indefinitely reusable tokens.&lt;/p&gt;

&lt;p&gt;The anatomy of a Solana transaction&lt;/p&gt;

&lt;p&gt;Before writing any code, I found it useful to understand what a transaction is actually made of. There are four core pieces:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signatures&lt;/strong&gt;&lt;br&gt;
Ed25519 signatures from every required signer. The fee payer always signs. Programs can require additional signers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recent blockhash&lt;/strong&gt;&lt;br&gt;
A hash of a recent block. Acts as a TTL transactions referencing an expired blockhash are rejected outright.&lt;br&gt;
**&lt;br&gt;
Instructions**&lt;br&gt;
The actual work. Each instruction targets a program, specifies accounts, and passes instruction data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accounts&lt;/strong&gt;&lt;br&gt;
Every account the transaction will read or write declared upfront. Validators use this to parallelize execution.&lt;/p&gt;

&lt;p&gt;If you're coming from backend development, the hardest part of Solana isn't the syntax it's unlearning the assumption that authority lives on a server. Once you internalize that signatures are the authority, the rest of the transaction anatomy follows naturally.&lt;/p&gt;

&lt;p&gt;Day 20 of #100DaysOfSolana. &lt;br&gt;
Devnet explorer is open in a permanent tab now.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>I Made my First solana transfer</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Tue, 05 May 2026 13:53:32 +0000</pubDate>
      <link>https://dev.to/sammie_/i-made-my-first-solana-transfer-53eg</link>
      <guid>https://dev.to/sammie_/i-made-my-first-solana-transfer-53eg</guid>
      <description>&lt;p&gt;Made my first SOL transfer on devnet today.&lt;br&gt;
Not a big moment by most standards. 0.001 SOL, sent to a temporary wallet I spun up just to have somewhere to send it. But watching it actually land — seeing the balance update, the transaction confirm — made something click that reading docs never quite did.&lt;br&gt;
A few things I had to get right before it worked:&lt;/p&gt;

&lt;p&gt;Generate a fresh keypair and save it locally&lt;br&gt;
Use --allow-unfunded-recipient because the destination account didn't exist yet&lt;br&gt;
Make sure I was pointed at devnet and not somewhere else entirely&lt;/p&gt;

&lt;p&gt;That last one would have cost me real money in a different context. Glad I learned it here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frly18zutpjc3ycttq14t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frly18zutpjc3ycttq14t.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Understanding transaction anatomy</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Tue, 05 May 2026 13:31:03 +0000</pubDate>
      <link>https://dev.to/sammie_/understanding-transaction-anatomy-pa8</link>
      <guid>https://dev.to/sammie_/understanding-transaction-anatomy-pa8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfh3udnfhkpcgmyq426r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfh3udnfhkpcgmyq426r.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today I stopped treating a Solana transaction as a black box and looked at what's actually inside one.&lt;br&gt;
Every transaction is a signed message made up of four parts:&lt;/p&gt;

&lt;p&gt;A header that defines permission groups for all accounts involved&lt;br&gt;
A list of account keys the resources the transaction touches&lt;br&gt;
A recent blockhash proof of freshness and protection against replay attacks&lt;br&gt;
Instructions the actual operations, each pointing into the account keys array by index&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Traditional Databases vs Solana Accounts</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Tue, 05 May 2026 12:45:47 +0000</pubDate>
      <link>https://dev.to/sammie_/traditional-databases-vs-solana-accounts-1j5a</link>
      <guid>https://dev.to/sammie_/traditional-databases-vs-solana-accounts-1j5a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jfuv6gkns5g2ootf0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jfuv6gkns5g2ootf0j.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today on my learning journey i learnt about the difference between a solana account and the traditional database.&lt;/p&gt;

&lt;p&gt;Key Difference&lt;br&gt;
Accounts do not query each other.&lt;/p&gt;

&lt;p&gt;There is no JOIN&lt;br&gt;
No server-side filtering&lt;br&gt;
Programs receive accounts as inputs to instructions&lt;br&gt;
If you want to "query" data:&lt;/p&gt;

&lt;p&gt;You do it off-chain via RPC&lt;br&gt;
Then assemble the results yourself&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>My second Week Playing Around Solana</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Mon, 04 May 2026 11:54:19 +0000</pubDate>
      <link>https://dev.to/sammie_/my-first-week-playing-around-solana-3jm1</link>
      <guid>https://dev.to/sammie_/my-first-week-playing-around-solana-3jm1</guid>
      <description>&lt;p&gt;I'll be honest before I started, I think I expected blockchain data to feel exotic. Like there'd be some kind of ceremony to accessing it. What I got instead was a JSON RPC endpoint. You call it, it talks back. That was the first surprise: how boring the infrastructure felt in the best possible way. It's just a database you can ask questions to. The "public ledger" framing stopped being an abstraction the moment I ran my first &lt;code&gt;solana balance&lt;/code&gt; call and watched a real wallet's balance show in my terminal,or even request faucet and receiving it in my wallet in real time and the balance displayed on my terminal too. &lt;/p&gt;

&lt;p&gt;What clicked fastest was the account model. Once it landed that everything on Solana is an account programs, token balances, even program state a lot of the weirdness started resolving itself. It's almost like a filesystem. Programs live at addresses. Data lives at addresses. You're mostly just reading from addresses. That felt intuitive once I stopped trying to map it onto how I thought blockchains were supposed to work.&lt;/p&gt;

&lt;p&gt;What surprised me most about the SDK was how much the ecosystem leans on you knowing what you're looking for before you go looking. With a REST API, you usually get back something self-describing field names that hint at meaning, maybe some docs that walk you through a response shape. With Solana RPC, especially reading raw account data, you get back a base64-encoded blob and a polite shrug. You need the program's IDL to make sense of it. That's not a flaw exactly, it's just a different contract between the API and the developer one that assumes more context up front.&lt;/p&gt;

&lt;p&gt;What's still fuzzy: the fee and priority fee model. I understand the mechanics loosely you attach a compute budget, you bid for inclusion but the intuition hasn't formed yet. One thing I did learn along the way: SOL isn't the smallest unit you're working with. That's lamports 1 SOL is made up of 1,000,000,000 lamports. So when amounts come back from the RPC, they're in lamports, and you have to divide by a billion to get back to SOL. It's a small thing but it catches you off guard the first time you see a balance and think someone is inexplicably wealthy. That's probably my next step.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>You Already Understand Blockchain Identity (You Just Don't Know It Yet)</title>
      <dc:creator>Samuel Akoji</dc:creator>
      <pubDate>Sun, 26 Apr 2026 16:32:59 +0000</pubDate>
      <link>https://dev.to/sammie_/you-already-understand-blockchain-identity-you-just-dont-know-it-yet-2936</link>
      <guid>https://dev.to/sammie_/you-already-understand-blockchain-identity-you-just-dont-know-it-yet-2936</guid>
      <description>&lt;p&gt;If you've ever set up SSH access to a server, you already understand the core idea behind identity on Solana. You generated a keypair. You dropped the public key on the server. From that point on, you proved who you were not with a password but by signing challenges with your private key. The server trusted the math.&lt;br&gt;
Solana works the same way, except instead of one server, the "server" is the entire global network, and your keypair is your identity everywhere on it at once.&lt;br&gt;
The problem with Web2 identity&lt;br&gt;
Think about how fragmented your identity actually is right now. You have a username on GitHub, an email address at work, a login at your bank, and an account on every SaaS tool your team uses. Each one is a separate record in someone else's database. Each one is granted to you by that company and can be revoked by them at any time. Forget a password? You depend on their reset flow. Get suspended? You're locked out entirely. Want to prove to a third party that you're the same person across two platforms? That's someone's API integration problem.&lt;br&gt;
None of these identities are yours. They're access tokens that someone lends you.&lt;br&gt;
A keypair is different&lt;br&gt;
On Solana, your identity is a cryptographic keypair specifically, an Ed25519 keypair. That generates two things: a public key, which is your on-chain address and safe to share with anyone; and a private key, which you never share and which is the only proof of ownership the network recognizes.&lt;br&gt;
Your public key looks like this: 14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5&lt;br&gt;
That's a 32-byte key encoded in Base58 a format chosen specifically to be human-readable. Base58 strips out visually ambiguous characters like 0 vs O and I vs l, so addresses can be read, copied, and verified without confusion. It's not a username someone assigned you. It's derived mathematically from your private key, and it exists independently of any company's database.&lt;br&gt;
There is no account to create. There is no service to register with. You generate the keypair, and you have an identity.&lt;br&gt;
What "ownership" actually means&lt;br&gt;
In Web2, "owning" your account means a company stored your credentials and decided to give you access. They can change that decision. On Solana, ownership means something more precise: only the holder of the private key can produce a valid signature for that address. Every transaction on the network is cryptographically signed. The network checks the math. If the signature is valid, the transaction goes through. There is no admin panel, no customer support escalation, no override.&lt;br&gt;
This is the tradeoff worth understanding clearly: you gain total control, and you take on total responsibility. Lose your private key or seed phrase and there is no recovery path. No one can help you. That's not a bug it's the same property that makes the ownership real.&lt;br&gt;
Identity as infrastructure&lt;br&gt;
Here's where it gets interesting for developers. In Web2, identity is mostly about authentication proving you're you so you can log in. On Solana, identity is the foundation for everything else.&lt;br&gt;
Because your keypair is universal across the network, it's the same identity you use to hold tokens, interact with programs, participate in governance votes, and build up on-chain reputation. When you connect your wallet to a Solana app, you're not creating a new account with that app. You're presenting the same cryptographic identity you use everywhere else, and the app reads what's already associated with it on-chain.&lt;br&gt;
No integrations needed. No OAuth handshakes. No, sign up with GitHub. Your identity is already there, and anyone building on the network can read it.&lt;br&gt;
The mental shift&lt;br&gt;
The shift from Web2 to on-chain identity is less about learning new technology and more about internalizing a different ownership model. You're used to identity being something a service grants you and can take away. On Solana, identity is something you generate, and it belongs to whoever controls the key.&lt;br&gt;
That's unsettling; at first there's no help desk. But it's also the thing that makes every application on the network composable by default. Your address is the same everywhere. Your assets follow you. No one can revoke access.&lt;br&gt;
It starts with a keypair. Everything else is built on top of that.&lt;/p&gt;

&lt;h1&gt;
  
  
  100daysofsolana #solana #web3 #blockchain and #beginners
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
