<?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: Tobi Ayinmiro</title>
    <description>The latest articles on DEV Community by Tobi Ayinmiro (@tobi_ayinmiro).</description>
    <link>https://dev.to/tobi_ayinmiro</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%2F3897797%2F00dfedfc-bc0b-430e-89dc-69768541f4bb.png</url>
      <title>DEV Community: Tobi Ayinmiro</title>
      <link>https://dev.to/tobi_ayinmiro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tobi_ayinmiro"/>
    <language>en</language>
    <item>
      <title>Creating My First Token on Solana Devnet as a Web2 Developer</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Mon, 25 May 2026 10:45:56 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/creating-my-first-token-on-solana-devnet-as-a-web2-developer-2bln</link>
      <guid>https://dev.to/tobi_ayinmiro/creating-my-first-token-on-solana-devnet-as-a-web2-developer-2bln</guid>
      <description>&lt;p&gt;As a web developer, I’m used to building systems where currencies, rewards, and balances live inside databases controlled by the backend.&lt;/p&gt;

&lt;p&gt;This week was my first time creating an actual on-chain token on Solana, and honestly, it changed how I think about digital assets.&lt;/p&gt;

&lt;p&gt;Instead of storing balances in a database table, the blockchain itself handled everything — minting, transfers, metadata, and verification.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk through how I created my first token on Solana devnet using Token-2022, added metadata to it, minted supply, and transferred tokens between wallets.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Needed Before Starting
&lt;/h1&gt;

&lt;p&gt;Before creating the token, I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solana CLI installed&lt;/li&gt;
&lt;li&gt;SPL Token CLI installed&lt;/li&gt;
&lt;li&gt;A funded devnet wallet&lt;/li&gt;
&lt;li&gt;Solana configured to devnet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First, I configured Solana to use devnet:&lt;br&gt;
&lt;/p&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;--url&lt;/span&gt; devnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I requested free devnet SOL:&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
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Creating My First Token Mint
&lt;/h1&gt;

&lt;p&gt;Unlike the older SPL Token Program, I used the newer Token-2022 Program because it supports extensions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metadata&lt;/li&gt;
&lt;li&gt;Transfer fees&lt;/li&gt;
&lt;li&gt;Interest-bearing tokens&lt;/li&gt;
&lt;li&gt;Non-transferable (soulbound) tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the command I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token create-token &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--program-id&lt;/span&gt; TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-metadata&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--decimals&lt;/span&gt; 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running it, Solana generated a token mint address for me.&lt;/p&gt;

&lt;p&gt;At this point, the token technically existed on-chain, but it still had no identity.&lt;/p&gt;

&lt;p&gt;It was basically just a random string of characters.&lt;/p&gt;




&lt;h1&gt;
  
  
  Adding Metadata to the Token
&lt;/h1&gt;

&lt;p&gt;This was one of the coolest parts for me.&lt;/p&gt;

&lt;p&gt;I learned that Solana’s Token-2022 Program allows metadata to live directly on-chain instead of depending entirely on separate programs.&lt;/p&gt;

&lt;p&gt;I initialized the token metadata like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token initialize-metadata &lt;span class="se"&gt;\&lt;/span&gt;
  &amp;lt;TOKEN_MINT_ADDRESS&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"&amp;lt;TOKEN_NAME&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"&amp;lt;TOKEN_SYMBOL&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"&amp;lt;TOKEN_METADATA_URI&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example placeholders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;TOKEN_MINT_ADDRESS&amp;gt;&lt;/code&gt; → your token mint address&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;TOKEN_NAME&amp;gt;&lt;/code&gt; → e.g. MyCoin&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;TOKEN_SYMBOL&amp;gt;&lt;/code&gt; → e.g. MYC&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;TOKEN_METADATA_URI&amp;gt;&lt;/code&gt; → public JSON metadata link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, my token finally had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a name&lt;/li&gt;
&lt;li&gt;a symbol&lt;/li&gt;
&lt;li&gt;metadata attached to it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made it feel like a real digital asset instead of just raw blockchain data.&lt;/p&gt;




&lt;h1&gt;
  
  
  Creating a Token Account
&lt;/h1&gt;

&lt;p&gt;One concept that confused me initially was token accounts.&lt;/p&gt;

&lt;p&gt;I assumed my wallet could directly hold tokens.&lt;/p&gt;

&lt;p&gt;That’s not exactly how Solana works.&lt;/p&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the mint defines the token&lt;/li&gt;
&lt;li&gt;token accounts hold balances for that token&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So before I could receive my token, I had to create a token account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token create-account &amp;lt;TOKEN_MINT_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generated an associated token account tied to my wallet and token mint.&lt;/p&gt;




&lt;h1&gt;
  
  
  Minting My First Supply
&lt;/h1&gt;

&lt;p&gt;Now came the exciting part.&lt;/p&gt;

&lt;p&gt;I minted 1000 tokens into my token account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token mint &amp;lt;TOKEN_MINT_ADDRESS&amp;gt; 1000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I checked the balance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token balance &amp;lt;TOKEN_MINT_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And seeing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;1000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;it felt surprisingly rewarding to be honest&lt;/p&gt;




&lt;h1&gt;
  
  
  Creating a Second Wallet
&lt;/h1&gt;

&lt;p&gt;To test transfers properly, I created a second wallet:&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="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--outfile&lt;/span&gt; ~/second-wallet.json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--no-bip39-passphrase&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This simulated sending tokens to another user.&lt;/p&gt;




&lt;h1&gt;
  
  
  Transferring Tokens
&lt;/h1&gt;

&lt;p&gt;I transferred 250 tokens to the second wallet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token transfer &lt;span class="se"&gt;\&lt;/span&gt;
  &amp;lt;TOKEN_MINT_ADDRESS&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  250 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="si"&gt;$(&lt;/span&gt;solana-keygen pubkey ~/second-wallet.json&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fund-recipient&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--allow-unfunded-recipient&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--fund-recipient&lt;/code&gt; flag automatically created the recipient’s token account if it didn’t already exist.&lt;/p&gt;

&lt;p&gt;That was another thing that clicked for me:&lt;br&gt;
even receiving tokens on Solana involves token accounts behind the scenes.&lt;/p&gt;


&lt;h1&gt;
  
  
  Verifying the Transfer
&lt;/h1&gt;

&lt;p&gt;I checked both balances.&lt;/p&gt;

&lt;p&gt;My wallet balance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token balance &amp;lt;TOKEN_MINT_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recipient wallet balance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token balance &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--owner&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;solana-keygen pubkey ~/second-wallet.json&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &amp;lt;TOKEN_MINT_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The balances showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;750&lt;/code&gt; in my wallet&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;250&lt;/code&gt; in the second wallet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The transfer worked successfully.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Confused Me Initially
&lt;/h1&gt;

&lt;p&gt;One of the biggest things that confused me was the difference between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wallet addresses&lt;/li&gt;
&lt;li&gt;token accounts&lt;/li&gt;
&lt;li&gt;token mints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first, I thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Why can’t I just send directly to the wallet?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But Solana separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the wallet owner&lt;/li&gt;
&lt;li&gt;the token account holding balances&lt;/li&gt;
&lt;li&gt;the token definition itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once that clicked, the entire token system started making much more sense.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Surprised Me Most
&lt;/h1&gt;

&lt;p&gt;The biggest surprise was realizing how much logic the blockchain itself handles.&lt;/p&gt;

&lt;p&gt;In Web2, building something similar would require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;database tables&lt;/li&gt;
&lt;li&gt;backend APIs&lt;/li&gt;
&lt;li&gt;transfer validation&lt;/li&gt;
&lt;li&gt;balance management&lt;/li&gt;
&lt;li&gt;permission handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the protocol handles balances&lt;/li&gt;
&lt;li&gt;token programs enforce rules&lt;/li&gt;
&lt;li&gt;transactions are verifiable on-chain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It felt like moving backend business logic directly into infrastructure.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Creating my first token on Solana made Web3 feel much less abstract.&lt;/p&gt;

&lt;p&gt;Before this, tokens felt like mysterious blockchain concepts.&lt;/p&gt;

&lt;p&gt;Now I understand that they’re actually programmable digital assets with rules enforced directly by the protocol.&lt;/p&gt;

&lt;p&gt;This was my first step into Solana development, and it definitely won’t be the last.&lt;/p&gt;

&lt;p&gt;Next, I want to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transfer fee extensions&lt;/li&gt;
&lt;li&gt;soulbound tokens&lt;/li&gt;
&lt;li&gt;Solana programs with Rust&lt;/li&gt;
&lt;li&gt;building full-stack dApps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re coming from Web2 development, my advice is simple:&lt;/p&gt;

&lt;h1&gt;
  
  
  Start building.
&lt;/h1&gt;

&lt;p&gt;Things make much more sense once you actually create something yourself.&lt;/p&gt;

&lt;p&gt;link to the token: &lt;a href="https://explorer.solana.com/address/vXRh8HHmjeFvpQgt19EEqf6iaAQxqM8NtCdTwCAqozu?cluster=devnet" rel="noopener noreferrer"&gt;https://explorer.solana.com/address/vXRh8HHmjeFvpQgt19EEqf6iaAQxqM8NtCdTwCAqozu?cluster=devnet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding Solana’s Account Model as a Web2 Developer</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Mon, 18 May 2026 08:56:42 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/understanding-solanas-account-model-as-a-web2-developer-4k0p</link>
      <guid>https://dev.to/tobi_ayinmiro/understanding-solanas-account-model-as-a-web2-developer-4k0p</guid>
      <description>&lt;h1&gt;
  
  
  Understanding Solana’s Account Model as a Web2 Developer
&lt;/h1&gt;

&lt;p&gt;When I started learning Solana, I expected wallets and smart contracts to work like Ethereum. Instead, I discovered something very different:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On Solana, everything is an account.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first, that sounded simple. But it completely changed how I thought about blockchain architecture.&lt;/p&gt;

&lt;p&gt;As a Web2 developer, I’m used to systems that look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend → Backend API → Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The backend stores logic&lt;/li&gt;
&lt;li&gt;The database stores state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solana works differently — but underneath it all is a surprisingly familiar mental model.&lt;/p&gt;

&lt;p&gt;The easiest way to understand Solana’s account model is to think of it like a filesystem or operating system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accounts = files&lt;/li&gt;
&lt;li&gt;Programs = executable applications&lt;/li&gt;
&lt;li&gt;Data accounts = databases/documents&lt;/li&gt;
&lt;li&gt;The System Program = operating system kernel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once this clicks, the rest of Solana becomes much easier to understand.&lt;/p&gt;




&lt;h1&gt;
  
  
  Everything on Solana Is an Account
&lt;/h1&gt;

&lt;p&gt;Unlike Ethereum, which separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;externally owned accounts (wallets)&lt;/li&gt;
&lt;li&gt;contract accounts (smart contracts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solana uses a &lt;strong&gt;unified account model&lt;/strong&gt; for everything.&lt;/p&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wallets are accounts&lt;/li&gt;
&lt;li&gt;programs are accounts&lt;/li&gt;
&lt;li&gt;tokens are accounts&lt;/li&gt;
&lt;li&gt;NFT metadata lives in accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything exists inside one giant flat key-value store.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;key   = public address
value = account data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, if you’re thinking like a backend developer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;PublicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That simplicity is one of the reasons Solana can process transactions efficiently.&lt;/p&gt;




&lt;h1&gt;
  
  
  Every Solana Account Has the Same Structure
&lt;/h1&gt;

&lt;p&gt;Every account contains the same core 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;Purpose&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&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;Raw bytes storing state&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;Program allowed to control 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;Whether the account contains executable code&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;Deprecated rent-related field&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let’s break them down.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Lamports
&lt;/h1&gt;

&lt;p&gt;Lamports are the smallest unit of SOL.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 SOL = 1,000,000,000 lamports
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dollars → cents&lt;/li&gt;
&lt;li&gt;bitcoin → satoshis&lt;/li&gt;
&lt;/ul&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;500000000 lamports = 0.5 SOL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lamports are used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transaction fees&lt;/li&gt;
&lt;li&gt;storing accounts&lt;/li&gt;
&lt;li&gt;transferring SOL&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2. Data
&lt;/h1&gt;

&lt;p&gt;The &lt;code&gt;data&lt;/code&gt; field stores arbitrary bytes.&lt;/p&gt;

&lt;p&gt;This is where programs save state, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;token balances&lt;/li&gt;
&lt;li&gt;NFT metadata&lt;/li&gt;
&lt;li&gt;usernames&lt;/li&gt;
&lt;li&gt;protocol configuration&lt;/li&gt;
&lt;li&gt;DeFi positions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike traditional databases, Solana does not store JSON directly.&lt;/p&gt;

&lt;p&gt;Everything is serialized into bytes.&lt;/p&gt;

&lt;p&gt;For Web2 developers, this feels more like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;binary storage&lt;/li&gt;
&lt;li&gt;buffers&lt;/li&gt;
&lt;li&gt;low-level database records&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  3. Owner
&lt;/h1&gt;

&lt;p&gt;The &lt;code&gt;owner&lt;/code&gt; field is one of the most important concepts in Solana.&lt;/p&gt;

&lt;p&gt;It defines &lt;strong&gt;which program controls an account&lt;/strong&gt;.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Owner: Token Program
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means only the Token Program can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modify the account’s data&lt;/li&gt;
&lt;li&gt;debit lamports from the account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the foundation of Solana’s security model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ownership Rules
&lt;/h2&gt;

&lt;p&gt;Solana follows a surprisingly simple set of rules:&lt;/p&gt;

&lt;h3&gt;
  
  
  Only the owner program can:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;modify account data&lt;/li&gt;
&lt;li&gt;remove lamports from the account&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  But anyone can:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;send lamports to a writable account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without ownership rules, any program could edit any account’s data.&lt;/p&gt;

&lt;p&gt;Imagine random APIs directly modifying your production database tables.&lt;/p&gt;

&lt;p&gt;That would be chaos.&lt;/p&gt;

&lt;p&gt;Solana prevents this through program ownership.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Executable
&lt;/h1&gt;

&lt;p&gt;The &lt;code&gt;executable&lt;/code&gt; field is simply a boolean.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true  = account contains program code
false = account stores data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;executable = true&lt;/code&gt;, the account contains compiled program code.&lt;/p&gt;

&lt;p&gt;Otherwise, it’s just a data account.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Rent Epoch
&lt;/h1&gt;

&lt;p&gt;This field is mostly deprecated today.&lt;/p&gt;

&lt;p&gt;Historically, it related to Solana’s rent system.&lt;/p&gt;

&lt;p&gt;Now it’s typically set to a maximum value and ignored in most cases.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Biggest Mindset Shift: Programs Don’t Store Their Own State
&lt;/h1&gt;

&lt;p&gt;This was the concept that confused me the most.&lt;/p&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programs are stateless.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Smart contracts do not permanently store their own internal state.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;program accounts store executable code&lt;/li&gt;
&lt;li&gt;separate accounts store persistent data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is very different from Ethereum.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Web2 Analogy That Made It Click
&lt;/h1&gt;

&lt;p&gt;Think of a Solana program like a Node.js backend service.&lt;/p&gt;

&lt;p&gt;The backend server:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contains logic&lt;/li&gt;
&lt;li&gt;processes requests&lt;/li&gt;
&lt;li&gt;validates data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it does not permanently store all user data in memory.&lt;/p&gt;

&lt;p&gt;Instead, it reads from and writes to a database.&lt;/p&gt;

&lt;p&gt;Solana works the same way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Program Account = Backend Server
Data Accounts   = Database Records
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Programs execute logic.&lt;/p&gt;

&lt;p&gt;Accounts store persistent state.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example: A Todo App on Solana
&lt;/h1&gt;

&lt;p&gt;Imagine building a Todo app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Program Account
&lt;/h3&gt;

&lt;p&gt;Contains logic like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;createTodo()
updateTodo()
deleteTodo()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Data Accounts
&lt;/h3&gt;

&lt;p&gt;Store actual user data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- todo text
- completed status
- owner wallet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The program modifies data accounts whenever users interact with the app.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Solana Separates Code From State
&lt;/h1&gt;

&lt;p&gt;At first, this architecture feels inconvenient.&lt;/p&gt;

&lt;p&gt;But it enables several powerful features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;parallel transaction execution&lt;/li&gt;
&lt;li&gt;better scalability&lt;/li&gt;
&lt;li&gt;clearer ownership rules&lt;/li&gt;
&lt;li&gt;flexible storage patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because accounts are separate from programs, Solana can determine which transactions touch which accounts.&lt;/p&gt;

&lt;p&gt;That allows many transactions to execute simultaneously.&lt;/p&gt;

&lt;p&gt;This is one of the major reasons Solana is fast.&lt;/p&gt;




&lt;h1&gt;
  
  
  Rent Exemption Explained
&lt;/h1&gt;

&lt;p&gt;Every account on Solana must maintain a minimum balance to stay on-chain.&lt;/p&gt;

&lt;p&gt;This is called:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rent exemption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The required amount depends on the account’s data size.&lt;/p&gt;

&lt;p&gt;More data requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more storage&lt;/li&gt;
&lt;li&gt;more lamports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a tiny account with no additional data, the requirement is roughly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~0.00089 SOL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check rent requirements with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Or via RPC:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;getMinimumBalanceForRentExemption&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Rent Exists
&lt;/h1&gt;

&lt;p&gt;In Web2 systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;servers have storage limits&lt;/li&gt;
&lt;li&gt;databases cost money&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solana validators also store account data permanently.&lt;/p&gt;

&lt;p&gt;Without rent requirements, attackers could spam the network with millions of useless accounts.&lt;/p&gt;

&lt;p&gt;Rent helps prevent storage abuse.&lt;/p&gt;




&lt;h1&gt;
  
  
  Reading a Real Solana Account
&lt;/h1&gt;

&lt;p&gt;Using 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 account &amp;lt;ACCOUNT_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Public Key: 7xKXtg2CW...
Balance: 0.002 SOL
Owner: System Program
Executable: false
Rent Epoch: 18446744073709551615
Data Length: 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s how to interpret it:&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;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Public Key&lt;/td&gt;
&lt;td&gt;Account address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balance&lt;/td&gt;
&lt;td&gt;SOL stored in the account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td&gt;Program controlling the account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executable&lt;/td&gt;
&lt;td&gt;Whether it stores code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Length&lt;/td&gt;
&lt;td&gt;Amount of stored data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rent Epoch&lt;/td&gt;
&lt;td&gt;Deprecated field&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Once you understand these fields, Solana Explorer becomes much easier to read.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example of an account detail
&lt;/h1&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%2Flbstol784wh1gpaqp3kx.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%2Flbstol784wh1gpaqp3kx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The System Program
&lt;/h1&gt;

&lt;p&gt;One program you’ll constantly encounter is the System Program.&lt;/p&gt;

&lt;p&gt;Think of it like the operating system kernel.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;account creation&lt;/li&gt;
&lt;li&gt;SOL transfers&lt;/li&gt;
&lt;li&gt;ownership assignment&lt;/li&gt;
&lt;li&gt;storage allocation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Almost every Solana application interacts with it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Comparing Solana to Ethereum
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Ethereum
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;contracts store their own state&lt;/li&gt;
&lt;li&gt;different account types exist&lt;/li&gt;
&lt;li&gt;code and storage are tightly coupled&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solana
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;everything is an account&lt;/li&gt;
&lt;li&gt;programs are stateless&lt;/li&gt;
&lt;li&gt;state lives in separate accounts&lt;/li&gt;
&lt;li&gt;unified account architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one of the biggest conceptual shifts for Web2 developers entering Solana.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Mental Model
&lt;/h1&gt;

&lt;p&gt;Here’s the simplest way I now think about Solana:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Accounts       = Files
Programs       = Executable apps
Data Accounts  = Databases/documents
System Program = Operating system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the account model clicks, many other Solana concepts become easier to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tokens&lt;/li&gt;
&lt;li&gt;NFTs&lt;/li&gt;
&lt;li&gt;staking&lt;/li&gt;
&lt;li&gt;DeFi protocols&lt;/li&gt;
&lt;li&gt;DAOs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They all build on the same foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accounts&lt;/li&gt;
&lt;li&gt;ownership&lt;/li&gt;
&lt;li&gt;programs&lt;/li&gt;
&lt;li&gt;data storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, that unified design is one of the things that makes Solana so interesting to learn as a developer.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Solana Transactions Explained for Backend Developers</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Sat, 09 May 2026 15:17:33 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/solana-transactions-explained-for-backend-developers-47hk</link>
      <guid>https://dev.to/tobi_ayinmiro/solana-transactions-explained-for-backend-developers-47hk</guid>
      <description>&lt;p&gt;Learning Solana transactions completely changed how I think about backend systems.&lt;/p&gt;

&lt;p&gt;At first, I treated transactions like normal API requests:&lt;/p&gt;

&lt;p&gt;client → server → database → response.&lt;/p&gt;

&lt;p&gt;But Solana transactions are different.&lt;/p&gt;

&lt;p&gt;They’re signed, temporary, atomic state changes sent to a decentralized network. Instead of “calling a server,” you prepare instructions that validators execute on-chain.&lt;/p&gt;

&lt;p&gt;The biggest shift for me was understanding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;recent blockhashes&lt;/li&gt;
&lt;li&gt;signatures&lt;/li&gt;
&lt;li&gt;atomic execution&lt;/li&gt;
&lt;li&gt;compute limits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing that made it click for me was actually building and sending transactions with "@solana/kit".&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;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;createSolanaRpc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;devnet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;generateKeyPairSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;airdropFactory&lt;/span&gt;&lt;span class="p"&gt;,&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/kit&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;rpc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createSolanaRpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;devnet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.devnet.solana.com&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;signer&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;airdrop&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;airdropFactory&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;rpc&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;airdrop&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;recipientAddress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;signer&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="na"&gt;lamports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000_000n&lt;/span&gt;&lt;span class="p"&gt;,&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Airdrop complete&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;Oddly enough, failed transactions taught me the most.&lt;/p&gt;

&lt;p&gt;Breaking transactions on devnet helped me understand how Solana programs actually execute internally.&lt;/p&gt;

&lt;p&gt;Web3 development feels very different once you stop thinking in request/response patterns.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Solana transfer</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Tue, 05 May 2026 10:36:40 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/solana-transfer-2k6h</link>
      <guid>https://dev.to/tobi_ayinmiro/solana-transfer-2k6h</guid>
      <description>&lt;p&gt;Hey guys i just sent my first solana and we can all see it. blockchain = transparency&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%2Fn0lmn5ttn03dyhleafhl.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%2Fn0lmn5ttn03dyhleafhl.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Understand transaction anatomy</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Tue, 05 May 2026 09:48:17 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/understand-transaction-anatomy-2kaj</link>
      <guid>https://dev.to/tobi_ayinmiro/understand-transaction-anatomy-2kaj</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%2Fmm6h0vtp3bcz12xn8wx8.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%2Fmm6h0vtp3bcz12xn8wx8.png" alt=" " width="800" height="450"&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%2Fr4bk61b3vov5eubxisvc.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%2Fr4bk61b3vov5eubxisvc.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;Ever wondered what’s inside a Solana transaction? 👀&lt;br&gt;
Just drop the signature into the explorer:&lt;a href="https://explorer.solana.com/" rel="noopener noreferrer"&gt;https://explorer.solana.com/&lt;/a&gt; and unlock everything status, wallets, tokens, and logs. Blockchain = open books.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>From Confusion to Clarity: My Second Week with Solana</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Sat, 02 May 2026 16:41:29 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/from-confusion-to-clarity-my-second-week-with-solana-2lk0</link>
      <guid>https://dev.to/tobi_ayinmiro/from-confusion-to-clarity-my-second-week-with-solana-2lk0</guid>
      <description>&lt;p&gt;Week one felt like learning new vocabulary. Week two with Solana felt like trying to form actual sentences.&lt;br&gt;
At first, nothing made sense accounts, lamports, RPC calls. But then something clicked: blockchain isn’t magic. It’s just a different way of organizing and accessing data.&lt;br&gt;
The turning point for me was building a simple dashboard that reads on-chain data. Seeing real values update made everything feel tangible.&lt;br&gt;
Compared to traditional APIs, working with RPC feels more raw and direct. There’s no middle layer simplifying things you’re responsible for understanding what the data means.&lt;br&gt;
What surprised me most is how much responsibility is pushed to the developer. There’s power in that, but also complexity.&lt;br&gt;
I’m still figuring out how to design systems properly in this environment, but I’m starting to see the bigger picture and I'm excited for what's to come.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana
&lt;/h1&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Traditional Database vs Solana Accounts</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Thu, 30 Apr 2026 13:33:47 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/traditional-database-vs-solana-accounts-4om6</link>
      <guid>https://dev.to/tobi_ayinmiro/traditional-database-vs-solana-accounts-4om6</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%2Fh33ly3hg4kf9didwlten.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%2Fh33ly3hg4kf9didwlten.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey guys, i did a comparison of traditional database and solana account &lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Exploring web3</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Sun, 26 Apr 2026 15:58:21 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/exploring-web3-1lad</link>
      <guid>https://dev.to/tobi_ayinmiro/exploring-web3-1lad</guid>
      <description>&lt;p&gt;Day 7 of #100DaysOfSolana&lt;/p&gt;

&lt;p&gt;I created my  Solana devnet wallet and checked my balance for the first time. Seeing the transaction appear on-chain made Web3 feel real everything is verified publicly.&lt;/p&gt;

&lt;p&gt;Next, I’m excited to build something that interacts with the blockchain using my wallet.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>From Usernames to Keypairs: Understanding Identity on Solana (for Web2 Developers)</title>
      <dc:creator>Tobi Ayinmiro</dc:creator>
      <pubDate>Sat, 25 Apr 2026 17:03:15 +0000</pubDate>
      <link>https://dev.to/tobi_ayinmiro/from-usernames-to-keypairs-understanding-identity-on-solana-for-web2-developers-935</link>
      <guid>https://dev.to/tobi_ayinmiro/from-usernames-to-keypairs-understanding-identity-on-solana-for-web2-developers-935</guid>
      <description>&lt;p&gt;If you’ve spent most of your time building in Web2, “identity” probably feels familiar and straightforward. It’s your email, your username, maybe an OAuth login through Google or GitHub. But under the hood, that identity is fragmented and controlled by the platforms you use. Each service owns your credentials, stores your data, and ultimately decides whether you can access your account.&lt;br&gt;
Solana and blockchains in general flip that model on its head.&lt;br&gt;
Identity Starts with a Keypair&lt;br&gt;
On Solana, your identity is not a username or an email. It’s a cryptographic keypair.&lt;br&gt;
A keypair consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A public key (your address, safe to share)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A private key (your secret, never to be shared)&lt;br&gt;
If you’ve ever used SSH, this should feel familiar. You generate a keypair, put the public key on a server, and prove your identity by using your private key. Solana works in a very similar way but instead of logging into a single server, you’re interacting with an entire decentralized network.&lt;br&gt;
Your public key becomes your universal identity across all Solana apps. There’s no signup form, no password, no “forgot password” flow. If you have the private key, you are the identity. If you lose it, there’s no recovery.&lt;br&gt;
Public Keys vs Usernames&lt;br&gt;
In Web2, usernames are human-readable and stored in centralized databases. Someone owns that database—and they can change, restrict, or delete your account.&lt;br&gt;
On Solana, your identity looks more like this:&lt;br&gt;
&lt;em&gt;14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5&lt;/em&gt;&lt;br&gt;
It’s a Base58-encoded public key derived from cryptography, not chosen by you. It’s not memorable, but it’s globally unique and doesn’t rely on any central authority.&lt;br&gt;
This difference is important:&lt;br&gt;
A username exists because a company says it does&lt;br&gt;
A public key exists because math proves it does&lt;br&gt;
There’s no central registry controlling identities. The network simply verifies that any action tied to a public key has been signed by the corresponding private key.&lt;br&gt;
Ownership Without Permission&lt;br&gt;
In Web2, you don’t truly “own” your account. You’re granted access by a platform. That platform can suspend you, lock you out, or change the rules at any time.&lt;br&gt;
On Solana, ownership is purely cryptographic.&lt;br&gt;
If you control the private key:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can sign transactions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can move tokens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can interact with &lt;br&gt;
programs&lt;br&gt;
If you don’t, you can’t. There is no admin override.&lt;br&gt;
This removes an entire layer of trust. You’re no longer trusting a company to manage your identity you’re trusting the underlying cryptography.&lt;br&gt;
But it also introduces responsibility. There’s no “reset password” button. Wallets help manage keys, but ultimately, the security of your identity is in your hands.&lt;br&gt;
One Identity, Many Applications&lt;br&gt;
Here’s where things get powerful.&lt;br&gt;
In Web2, your identity is siloed. Your GitHub account doesn’t automatically connect to your banking app or your Twitter profile unless integrations are built.&lt;br&gt;
On Solana, your public key works everywhere by default.&lt;br&gt;
That same identity can:&lt;br&gt;
Hold tokens (like assets in your wallet)&lt;br&gt;
Interact with decentralized applications (dApps)&lt;br&gt;
Vote in governance systems&lt;br&gt;
Build a reputation tied to on-chain activity&lt;br&gt;
No app needs to “create” your account. They just read from the blockchain and verify your signature.&lt;br&gt;
This creates a shared identity layer across the entire ecosystem.&lt;br&gt;
Identity as a Foundation&lt;br&gt;
On-chain identity isn’t just a replacement for usernames it’s the foundation for everything else.&lt;br&gt;
Because your identity is:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Self-custodied (you control it)&lt;/li&gt;
&lt;li&gt;Permissionless (no one can block you)&lt;/li&gt;
&lt;li&gt;Portable (works across all apps)
it enables entirely new patterns which includes:
Owning assets without intermediaries
Participating in decentralized governance
Building verifiable reputation systems
Instead of identity being fragmented and controlled, it becomes unified and user-owned.
Final Thoughts
The shift from Web2 to Solana identity can feel uncomfortable at first. Losing password resets and human-readable usernames seems like a step backward.
But it’s actually a shift in power.
In Web2, identity is something you borrow.
In Solana, identity is something you own.
Once that clicks, everything else: wallets, tokens, dApps starts to make a lot more sense.
And that’s the real goal of understanding on-chain identity: realizing that the keypair in your wallet isn’t just a tool it’s you on the network.
100daysofsolana, solana, web3, blockchain, and beginners&lt;/li&gt;
&lt;/ul&gt;

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