<?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: Vinay</title>
    <description>The latest articles on DEV Community by Vinay (@blackat).</description>
    <link>https://dev.to/blackat</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%2F3881968%2Fd6b017fd-5606-40fa-a8ac-fdac3d3bea66.png</url>
      <title>DEV Community: Vinay</title>
      <link>https://dev.to/blackat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blackat"/>
    <language>en</language>
    <item>
      <title>⚓My Deep Dive into Solana Transactions: Shifting the Web2 Perspective</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Sun, 10 May 2026 15:14:24 +0000</pubDate>
      <link>https://dev.to/blackat/my-deep-dive-into-solana-transactions-shifting-the-web2-perspective-2123</link>
      <guid>https://dev.to/blackat/my-deep-dive-into-solana-transactions-shifting-the-web2-perspective-2123</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Over the last few days, I’ve been learning how Solana transactions actually work. At first, I approached them like I would approach API requests in Web2: you send something to the network, wait for a response, and either it succeeds or fails.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;But after building transfer tools, tracking confirmations, and intentionally forcing failed transactions, I realized Solana transactions are much closer to atomic state transitions in a distributed system than traditional request/response workflows.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;🏗️ The Foundation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before this post, I documented two earlier parts of the journey:&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi" class="crayons-story__hidden-navigation-link"&gt;Sending Your First SOL Transfer (Devnet, via CLI)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/blackat" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3881968%2Fd6b017fd-5606-40fa-a8ac-fdac3d3bea66.png" alt="blackat profile" class="crayons-avatar__image" width="460" height="460"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/blackat" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vinay
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vinay
                
              
              &lt;div id="story-author-preview-content-3620076" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/blackat" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3881968%2Fd6b017fd-5606-40fa-a8ac-fdac3d3bea66.png" class="crayons-avatar__image" alt="" width="460" height="460"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vinay&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi" id="article-link-3620076"&gt;
          Sending Your First SOL Transfer (Devnet, via CLI)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/100daysofsolana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;100daysofsolana&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web3"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web3&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/blockchain"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;blockchain&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/solana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;solana&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0" class="crayons-story__hidden-navigation-link"&gt;Understanding Solana's transaction anatomy&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/blackat" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3881968%2Fd6b017fd-5606-40fa-a8ac-fdac3d3bea66.png" alt="blackat profile" class="crayons-avatar__image" width="460" height="460"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/blackat" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vinay
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vinay
                
              
              &lt;div id="story-author-preview-content-3620611" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/blackat" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3881968%2Fd6b017fd-5606-40fa-a8ac-fdac3d3bea66.png" class="crayons-avatar__image" alt="" width="460" height="460"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vinay&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0" id="article-link-3620611"&gt;
          Understanding Solana's transaction anatomy
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/100daysofsolana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;100daysofsolana&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web3"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web3&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/blockchain"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;blockchain&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/solana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;solana&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Those experiments helped me understand the structure underneath every transaction before I started building tooling around them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🔍 Deconstructing the Transaction Anatomy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The first thing that stood out to me was how much information exists inside a transaction. Once I started inspecting transactions in Solana Explorer and using solana confirm -v, I stopped seeing transfers as simple wallet operations.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A single transaction includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Signatures&lt;/li&gt;
&lt;li&gt;Instructions&lt;/li&gt;
&lt;li&gt;Account keys&lt;/li&gt;
&lt;li&gt;Recent blockhashes&lt;/li&gt;
&lt;li&gt;Fee payer information&lt;/li&gt;
&lt;li&gt;Execution logs&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🧠The Mental Model Shift:&lt;/strong&gt;&lt;br&gt;
A Solana transaction is not just a request. It’s a signed set of instructions that tells the network how on-chain state should change.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;🛠️ Building the Tooling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After getting comfortable with CLI transfers, I built a reusable transfer tool instead of manually typing commands every time.&lt;/p&gt;

&lt;p&gt;The tool eventually handled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recipient and amount validation&lt;/li&gt;
&lt;li&gt;Balance checks before sending&lt;/li&gt;
&lt;li&gt;Explorer link generation&lt;/li&gt;
&lt;li&gt;Confirmation tracking&lt;/li&gt;
&lt;li&gt;Transaction failure handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The balance checks were especially interesting because failed transactions on Solana still cost fees. That’s very different from most backend systems I’m used to. In Web2, failed requests are usually just errors. On Solana, even failed execution still consumes validator compute resources.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;⛓️ Understanding the Lifecycle of Confirmation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most useful things I learned was how confirmation actually works. At first, I thought transactions were either pending or complete.&lt;/p&gt;

&lt;p&gt;But Solana has multiple commitment levels:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Processed:&lt;/strong&gt; Received by a validator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirmed:&lt;/strong&gt; Voted on by the network supermajority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finalized:&lt;/strong&gt; Effectively irreversible after additional confirmed blocks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Watching transactions move through those stages made the network feel much more real. Instead of treating blockchain confirmation like a black box, I could actually observe the lifecycle happening in real time.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;⚠️ Learning Through Failure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most valuable part of the process, though, was intentionally breaking transactions.&lt;/p&gt;

&lt;p&gt;I created empty wallets. I forced failed transfers. I inspected logs and Explorer traces. I compared local CLI validation with actual on-chain failures. That ended up teaching me more than successful transactions did.&lt;/p&gt;

&lt;p&gt;Seeing compute usage, log messages, and failure metadata made the debugging side of Solana feel surprisingly similar to debugging distributed backend systems—except here, every mistake has an economic cost attached to it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🧠 Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest takeaway from this journey is that understanding transactions is really about understanding how Solana itself thinks.&lt;/p&gt;

&lt;p&gt;Once I stopped comparing transactions directly to REST API calls, concepts like signatures, blockhash expiration, commitment levels, and transaction simulation started making much more sense. Intentionally exploring failed transactions was the point where everything finally clicked for me.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>Understanding Solana's transaction anatomy</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Wed, 06 May 2026 11:23:11 +0000</pubDate>
      <link>https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0</link>
      <guid>https://dev.to/blackat/understanding-solanas-transaction-anatomy-52j0</guid>
      <description>&lt;h2&gt;
  
  
  📖 Overview
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;For the past week, I’ve been reading data from the Solana blockchain. This project marks the shift from reading state to writing state. The goal was simple but fundamental: understand what actually happens when a transaction is sent on Solana.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Objective
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Send a real transaction on Solana Devnet&lt;/li&gt;
&lt;li&gt;Inspect it using CLI and Explorer&lt;/li&gt;
&lt;li&gt;Understand its internal structure&lt;/li&gt;
&lt;li&gt;Build a mental model for how state changes occur&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ⚙️ What I Did
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Created a Temporary Wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generated a fresh keypair to act as the recipient.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana-keygen new &lt;span class="nt"&gt;--no-bip39-passphrase&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /tmp/temp-wallet.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generated a transaction signature, which acts as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;A receipt&lt;/li&gt;
&lt;li&gt;The transaction ID&lt;/li&gt;
&lt;li&gt;The first cryptographic signature&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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%2Fgvxem9boky25ph5hjatr.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%2Fgvxem9boky25ph5hjatr.png" alt="Step 1 - Creating temp wallet" width="731" height="176"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Sent a Transaction&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana transfer &lt;span class="nt"&gt;--allow-unfunded-recipient&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;solana address &lt;span class="nt"&gt;-k&lt;/span&gt; /tmp/temp-wallet.json&lt;span class="si"&gt;)&lt;/span&gt; 0.001 &lt;span class="nt"&gt;--url&lt;/span&gt; devnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Transferred a small amount of SOL on Devnet.&lt;br&gt;
This produced a transaction signature (ID).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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%2Fedvlzvabb22snljrrfgc.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%2Fedvlzvabb22snljrrfgc.png" alt="Step 2 - Sending Transaction" width="800" height="48"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3. Inspected the Transaction via CLI&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana confirm &lt;span class="nt"&gt;-v&lt;/span&gt; &amp;lt;TRANSACTION_SIGNATURE&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This revealed:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Transaction status and slot&lt;/li&gt;
&lt;li&gt;Accounts involved&lt;/li&gt;
&lt;li&gt;Instruction execution details&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Fi6amrckr0kfx0i00j6bo.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%2Fi6amrckr0kfx0i00j6bo.png" alt="Step 3 - Inspecting transaction" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Analyzed in Explorer&lt;/strong&gt;&lt;br&gt;
Visualized It in Solana Explorer&lt;/p&gt;

&lt;p&gt;Using the transaction signature, I examined:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Signatures → Authorization proof&lt;/li&gt;
&lt;li&gt;Recent Blockhash → Freshness + anti-replay
&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%2Fcvl8jg4tx53peeb9ypne.png" alt="Transaction details" width="800" height="572"&gt;
&lt;/li&gt;
&lt;li&gt;Account Keys → All accounts involved
&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%2F8brfzhbn4268ax82dzcz.png" alt="Account Keys" width="800" height="237"&gt;
&lt;/li&gt;
&lt;li&gt;Instruction → System Program transfer&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&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%2F44ixvlld59wuk0eyxec4.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%2F44ixvlld59wuk0eyxec4.png" alt="Program Instruction" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠Mental Model Upgrade
&lt;/h2&gt;

&lt;p&gt;What you sent is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Send 0.001 SOL to X”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Execute instruction #2 of the System Program, using these accounts, with this encoded data, authorized by this signature.”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>Sending Your First SOL Transfer (Devnet, via CLI)</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Wed, 06 May 2026 09:43:38 +0000</pubDate>
      <link>https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi</link>
      <guid>https://dev.to/blackat/sending-your-first-sol-transfer-devnet-via-cli-1gdi</guid>
      <description>&lt;p&gt;&lt;em&gt;This walkthrough focuses on executing a SOL transfer using the Solana CLI - while understanding the underlying mechanics at each step. If you’ve used payment APIs like Stripe or PayPal, the flow is conceptually similar: authenticate, define recipient, specify amount, submit. The difference is architectural, transactions go directly to the network and finalize in sub-seconds, without intermediaries.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Environment Requirements
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Terminal (macOS, Linux, or Windows WSL)&lt;/li&gt;
&lt;li&gt;Solana CLI installed&lt;/li&gt;
&lt;li&gt;A keypair (existing or newly generated)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Configure CLI to Devnet
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana config &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-ud&lt;/span&gt;
solana config get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;br&gt;
You are selecting the cluster (network). Devnet is a sandbox environment with no real economic cost. The RPC endpoint (&lt;a href="https://api.devnet.solana.com" rel="noopener noreferrer"&gt;https://api.devnet.solana.com&lt;/a&gt;) acts as your interface to the validator network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All subsequent commands - balance queries, transfers, account creation are executed against this network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Flfoqdxqlxdkayorizdok.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%2Flfoqdxqlxdkayorizdok.png" alt="Step 1 - Configure wallet" width="520" height="281"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Check Balance and Fund Wallet
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana balance
solana airdrop 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Transactions require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sufficient balance for the transfer amount&lt;/li&gt;
&lt;li&gt;A small fee for network processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Airdrop behavior:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Devnet validators mint SOL for testing&lt;/li&gt;
&lt;li&gt;Requests are capped (typically 5 SOL)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If airdrop fails:&lt;/strong&gt;&lt;br&gt;
You can fund your wallet using the &lt;a href="https://faucet.solana.com/" rel="noopener noreferrer"&gt;Solana Faucet&lt;/a&gt; as an alternative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
Without sufficient balance, the transaction cannot be constructed or submitted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Fa27s0ead5kcpy02rsypu.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%2Fa27s0ead5kcpy02rsypu.png" alt="Step 2 - Check Balance" width="288" height="47"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Generate a Recipient Keypair
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana-keygen new &lt;span class="nt"&gt;--outfile&lt;/span&gt; ~/recipient-keypair.json &lt;span class="nt"&gt;--no-bip39-passphrase&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;br&gt;
You are creating a cryptographic identity:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Private key → signs transactions&lt;br&gt;
Public key → acts as the address&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Important nuance:&lt;/strong&gt;&lt;br&gt;
This account does not yet exist on-chain - it becomes a real account only after being funded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
Solana distinguishes between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Off-chain keypairs (identity)&lt;/li&gt;
&lt;li&gt;On-chain accounts (state containers)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2F135n4ulry0lxckrfm5ln.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%2F135n4ulry0lxckrfm5ln.png" alt="Step 3 - Generate keypair" width="800" height="175"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Execute the Transfer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana transfer &amp;lt;RECIPIENT_PUBLIC_KEY&amp;gt; 0.5 &lt;span class="nt"&gt;--allow-unfunded-recipient&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;br&gt;
This command:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Constructs a transaction with a System Program transfer instruction&lt;/li&gt;
&lt;li&gt;Signs it with your private key&lt;/li&gt;
&lt;li&gt;Submits it to a validator via RPC&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Flag explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;--allow-unfunded-recipient&lt;/code&gt; allows the network to create the recipient account implicitly&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
On Solana, accounts must be explicitly created and funded. This step combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Account creation&lt;/li&gt;
&lt;li&gt;Value transfer into a single atomic transaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Fnxp29f1kgcco1cof5wd2.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%2Fnxp29f1kgcco1cof5wd2.png" alt="Step 4 - Execute the transfer" width="800" height="57"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Verify State Changes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana balance
solana balance &amp;lt;RECIPIENT_PUBLIC_KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;br&gt;
You are querying on-chain state post-finalization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Sender balance decreases (transfer + fee)&lt;/li&gt;
&lt;li&gt;Recipient balance increases&lt;/li&gt;
&lt;li&gt;Recipient account now exists on-chain&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
This confirms the transaction was validated, executed, and finalized by the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Ffuvp4hztks1pjnt6f1e4.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%2Ffuvp4hztks1pjnt6f1e4.png" alt="Step 5 - Verify change in balance" width="704" height="85"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Inspect the Transaction
&lt;/h2&gt;

&lt;p&gt;Open your transaction using the signature in &lt;a href="https://explorer.solana.com/?cluster=devnet" rel="noopener noreferrer"&gt;Solana Explorer&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt;&lt;br&gt;
You are viewing the transaction as recorded in the ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Details include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accounts involved&lt;/li&gt;
&lt;li&gt;Instruction data&lt;/li&gt;
&lt;li&gt;Fees&lt;/li&gt;
&lt;li&gt;Slot (block inclusion)&lt;/li&gt;
&lt;li&gt;Confirmation status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
The explorer reflects canonical on-chain data - this is the definitive record of execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&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%2Fpek3e18rdpph7wbhpemz.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%2Fpek3e18rdpph7wbhpemz.png" alt="Step 6.1 - Transaction (Solana explorer)" width="800" height="404"&gt;&lt;/a&gt;&lt;br&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%2F422rdavbvyaj1d426qf6.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%2F422rdavbvyaj1d426qf6.png" alt="Step 6.2 - Account inputs (Solana explorer)" width="800" height="233"&gt;&lt;/a&gt;&lt;br&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%2Fmoqlwbki22hx67n487bj.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%2Fmoqlwbki22hx67n487bj.png" alt="Step 6.3 - Program instruction (Solana explorer)" width="800" height="326"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://explorer.solana.com/tx/4N6S15YdQ4UgNLQkiqk2MUTRoUEKrYkJPuJxZ2xp28aUsxXB7XzX91KJ6gHQeVid5f5gbAS2EoLcFGtnS933XNss?cluster=devnet" rel="noopener noreferrer"&gt;View above transaction in solana explorer&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Full Command Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;solana config &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-ud&lt;/span&gt;
solana airdrop 2
solana-keygen new &lt;span class="nt"&gt;--outfile&lt;/span&gt; ~/recipient-keypair.json &lt;span class="nt"&gt;--no-bip39-passphrase&lt;/span&gt;
solana transfer &amp;lt;RECIPIENT_PUBLIC_KEY&amp;gt; 0.5 &lt;span class="nt"&gt;--allow-unfunded-recipient&lt;/span&gt;
solana balance
solana balance &amp;lt;RECIPIENT_PUBLIC_KEY&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What This Demonstrates
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Direct transaction submission to a decentralized validator network&lt;/li&gt;
&lt;li&gt;Atomic state transitions (account creation + transfer)&lt;/li&gt;
&lt;li&gt;Explicit account model requiring funding for existence&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;At a systems level, you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Defined network context (devnet RPC)&lt;/li&gt;
&lt;li&gt;Generated identities&lt;/li&gt;
&lt;li&gt;Authored and signed a transaction&lt;/li&gt;
&lt;li&gt;Submitted it to the network&lt;/li&gt;
&lt;li&gt;Observed deterministic state changes&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the foundational workflow for interacting with Solana.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>A few early takeaways from learning Solana</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Sun, 03 May 2026 17:42:17 +0000</pubDate>
      <link>https://dev.to/blackat/a-few-early-takeaways-from-learning-solana-14o7</link>
      <guid>https://dev.to/blackat/a-few-early-takeaways-from-learning-solana-14o7</guid>
      <description>&lt;h2&gt;
  
  
  I’ve been exploring Solana for the past few days and a few things stood out pretty quickly
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;No traditional database everything revolves around accounts&lt;br&gt;
Reads happen through RPC calls not queries&lt;br&gt;
Writes are transactions not simple updates&lt;br&gt;
Access control is handled by signatures not roles or middleware&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The biggest shift so far has been adjusting to the accounts model. Coming from a typical backend mindset it forces you to think differently about how data is stored who owns it and how state changes over time&lt;/p&gt;

&lt;p&gt;I also built a small dashboard in the browser to fetch wallet balance and recent transactions. Moving from scripts to something visual made the flow of data much clearer&lt;/p&gt;

&lt;p&gt;Had a session with Solana DevRel as well where we discussed Anchor validators and PDAs. That helped connect some of the concepts around how programs actually manage data on chain&lt;/p&gt;

&lt;p&gt;Still early but things are starting to click. Planning to go deeper into Anchor and understand how to structure programs better&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Two weeks with Solana - Personal experience</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Sun, 03 May 2026 17:18:05 +0000</pubDate>
      <link>https://dev.to/blackat/two-weeks-with-solana-personal-experience-2ea4</link>
      <guid>https://dev.to/blackat/two-weeks-with-solana-personal-experience-2ea4</guid>
      <description>&lt;p&gt;Been spending the last ~10 days getting hands-on with Solana as part of a hackathon. Went in expecting things to feel completely different from what I’m used to.&lt;/p&gt;

&lt;p&gt;It wasn’t as far off as I thought.&lt;/p&gt;

&lt;p&gt;What I’ve Done So Far&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated a keypair + airdropped devnet SOL&lt;/li&gt;
&lt;li&gt;Created a wallet and checked balance programmatically&lt;/li&gt;
&lt;li&gt;Understood SOL vs lamports&lt;/li&gt;
&lt;li&gt;Connected a browser wallet&lt;/li&gt;
&lt;li&gt;Read on-chain data (accounts, transactions)&lt;/li&gt;
&lt;li&gt;Fetched recent transactions&lt;/li&gt;
&lt;li&gt;Built a small browser dashboard&lt;/li&gt;
&lt;li&gt;Compared devnet vs mainnet data&lt;/li&gt;
&lt;li&gt;Tried mapping accounts vs traditional databases&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Took a Bit to Understand
&lt;/h2&gt;

&lt;p&gt;Fetching data wasn’t the hard part - it’s pretty similar to calling APIs.&lt;/p&gt;

&lt;p&gt;The shift was in how things are structured:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Accounts aren’t users, they’re just data containers&lt;br&gt;
There’s no backend I control&lt;br&gt;
Data is public, transactions update state&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The point where it clicked was pulling transaction history for a wallet and realizing there’s no access layer in between. You just query it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building in the Browser
&lt;/h2&gt;

&lt;p&gt;Moving from scripts to a simple dashboard helped a lot.&lt;/p&gt;

&lt;p&gt;Showing balances, listing transactions, switching networks - it made things feel more real than just running CLI scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  MLH Session
&lt;/h2&gt;

&lt;p&gt;Also attended an MLH session with Brianna (Solana Developer Relations). where she briefed on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anchor Framework&lt;/li&gt;
&lt;li&gt;Validators&lt;/li&gt;
&lt;li&gt;PDAs&lt;/li&gt;
&lt;li&gt;Program structure on Solana&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I haven’t used these hands-on yet, but it gave me a better picture of what’s happening under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Still Figuring Out
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Program design&lt;br&gt;
Handling storage (accounts + rent)&lt;br&gt;
Better ways to query data beyond basic RPC&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>Why My Solana Wallet Broke Without "extractable: true" — And What PKCS8 Taught Me About Private Keys</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Mon, 27 Apr 2026 09:34:20 +0000</pubDate>
      <link>https://dev.to/blackat/why-my-solana-wallet-broke-without-extractable-true-and-what-pkcs8-taught-me-about-private-keys-20kp</link>
      <guid>https://dev.to/blackat/why-my-solana-wallet-broke-without-extractable-true-and-what-pkcs8-taught-me-about-private-keys-20kp</guid>
      <description>&lt;p&gt;Last week, I built a small Solana wallet script where I could create, export, save, and reload a keypair.&lt;/p&gt;

&lt;p&gt;Here's the link of the script for reference: &lt;a href="https://github.com/bl4ck4t/solana_dev/blob/main/src/persistent-wallet.mjs" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It all started with this line:&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;wallet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;generateKeyPairSigner&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;extractable&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I tried exporting the private key:&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;crypto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subtle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exportKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pkcs8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keyPair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I learned two important things:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Why &lt;code&gt;extractable: true&lt;/code&gt; is required
&lt;/h2&gt;

&lt;p&gt;If the key is not extractable:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;exportKey&lt;/code&gt; simply fails&lt;br&gt;
The private key stays locked inside the crypto subsystem&lt;br&gt;
You cannot save or reuse the wallet&lt;/p&gt;

&lt;p&gt;So without &lt;code&gt;extractable: true&lt;/code&gt;, the wallet is temporary (in-memory only).&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Why "pkcs8" and not "raw"?
&lt;/h2&gt;

&lt;p&gt;This part was subtle but important.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"pkcs8"&lt;/code&gt; is the standard format for exporting private keys&lt;br&gt;
It wraps the key with metadata (algorithm, structure, etc.)&lt;br&gt;
The Web Crypto API only allows private keys to be exported in PKCS#8 format&lt;/p&gt;

&lt;p&gt;If you try:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;crypto.subtle.exportKey("raw", wallet.keyPair.privateKey);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It will fail.&lt;/p&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"raw"&lt;/code&gt; format is only valid for public keys&lt;br&gt;
Private keys require a structured, secure encoding → hence PKCS#8&lt;/p&gt;


&lt;h2&gt;
  
  
  🧩 What I Did Next
&lt;/h2&gt;

&lt;p&gt;After exporting in PKCS#8, I extracted the actual 32-byte private key:&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;privateKeyBytes&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;Uint8Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pkcs8Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then combined it with the public key:&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="s2"&gt;`const keyPairBytes = new Uint8Array(64);
keyPairBytes.set(privateKeyBytes, 0);
keyPairBytes.set(publicKeyBytes, 32);`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gave me the standard 64-byte Solana keypair, which I could:&lt;/p&gt;

&lt;p&gt;Save to a file&lt;br&gt;
Reload later&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚖️ Big Takeaway
&lt;/h2&gt;

&lt;p&gt;This small detail clarified a bigger concept for me:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;extractable: true&lt;/code&gt; → enables portability (save, backup, restore)&lt;br&gt;
&lt;code&gt;"pkcs8"&lt;/code&gt; → the only valid way to export private keys&lt;br&gt;
&lt;code&gt;"raw"&lt;/code&gt; → only works for public keys&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>solana</category>
    </item>
    <item>
      <title>🔑 From Usernames to Keypairs: Understanding Identity on Solana</title>
      <dc:creator>Vinay</dc:creator>
      <pubDate>Sat, 25 Apr 2026 12:10:32 +0000</pubDate>
      <link>https://dev.to/blackat/from-usernames-to-keypairs-understanding-identity-on-solana-472p</link>
      <guid>https://dev.to/blackat/from-usernames-to-keypairs-understanding-identity-on-solana-472p</guid>
      <description>&lt;p&gt;A few days ago, if you asked me what “identity” means in tech, I’d give you a very Web2 answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Email + password = identity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every platform I used - GitHub, banking apps, social media - had its own login system. Different usernames, different passwords, all controlled by the companies behind them.&lt;/p&gt;

&lt;p&gt;Then I started learning Solana.&lt;/p&gt;

&lt;p&gt;And my understanding of identity completely changed.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏨 Web2 vs Web3: A Simple Analogy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Web2 identity is like staying in a hotel.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You get a key card, but the hotel can deactivate it anytime.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Solana identity is like owning your own house.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You hold the only key. No one can lock you out… but if you lose it, you're stuck outside.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This shift from platform-controlled access to user-controlled ownership is the core idea behind on-chain identity.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Identity = Keypair
&lt;/h2&gt;

&lt;p&gt;On Solana, your identity starts with a cryptographic keypair:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Public Key&lt;/strong&gt; →  your address (safe to share)&lt;br&gt;
&lt;strong&gt;Private Key&lt;/strong&gt; → your proof of ownership (must stay secret)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you’ve used SSH before, this will feel familiar.&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%2Fuykp59za5s7fv5sbl9cu.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%2Fuykp59za5s7fv5sbl9cu.png" alt="This infographic illustrates the generation of a Solana keypair on a laptop, showing how the private key remains secure with the user while the public key is shared across the Solana network." width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No signup. No email. Just keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤯 One Keypair = My Identity
&lt;/h2&gt;

&lt;p&gt;In Web2, my identity is scattered. Each service (Google, Social Media, Github, etc..) manages its own version of "me".&lt;/p&gt;

&lt;p&gt;But on Solana, everything connects to one thing:&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%2F1mt2vrmcw4bgkuat3fby.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%2F1mt2vrmcw4bgkuat3fby.png" alt="A flowchart showing a user utilizing a cryptographic keypair as a single, sovereign gateway to manage tokens, NFTs, applications, and programs on the Solana network." width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s when it clicked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My public key isn’t just an address — it’s my identity across the entire network.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;👀 The Weird Part: No Username?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Web2, we all know how a username looks like..&lt;br&gt;
I expected something like that.&lt;br&gt;
Instead, I got this 😵‍💫:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;14grJpemFaf88c8tiVb77W7T...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not exactly memorable 😅&lt;/p&gt;

&lt;p&gt;But then I learned, On Solana, your identity is your public key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s mathematically generated&lt;/li&gt;
&lt;li&gt;It uses Base58 encoding, avoiding confusing characters like 0, O, I, and l&lt;/li&gt;
&lt;li&gt;Not controlled by any company&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔐 “Logging In” Doesn’t Exist
&lt;/h2&gt;

&lt;p&gt;This is a subtle but important shift.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re not logging in. You’re proving ownership cryptographically.&lt;/p&gt;
&lt;/blockquote&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%2Fp0i4qrzp3run6le4e3a2.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%2Fp0i4qrzp3run6le4e3a2.png" alt="The image is a dual-panel infographic comparing the centralized, password-based authentication of Web2 with the decentralized, private-key-signed verification of the Solana network." width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No passwords. No sessions. Just signatures.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏁 Final Thought
&lt;/h2&gt;

&lt;p&gt;I started this journey thinking I was just learning how wallets and transactions work.&lt;/p&gt;

&lt;p&gt;Instead, I ended up rethinking what “identity” even means.&lt;/p&gt;

&lt;p&gt;And honestly, once that clicks — everything else in Web3 starts to make a lot more sense.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
