<?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: Siddhant Chavan</title>
    <description>The latest articles on DEV Community by Siddhant Chavan (@babydriver).</description>
    <link>https://dev.to/babydriver</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889440%2F08f445db-c2ec-4241-8e16-0e17a57e9b4f.png</url>
      <title>DEV Community: Siddhant Chavan</title>
      <link>https://dev.to/babydriver</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/babydriver"/>
    <language>en</language>
    <item>
      <title>Three Token-2022 mints in one week: fees, yield, and soul-bound #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Wed, 17 Jun 2026 16:46:01 +0000</pubDate>
      <link>https://dev.to/babydriver/three-token-2022-mints-in-one-week-fees-yield-and-soul-bound-100daysofsolana-1oan</link>
      <guid>https://dev.to/babydriver/three-token-2022-mints-in-one-week-fees-yield-and-soul-bound-100daysofsolana-1oan</guid>
      <description>&lt;p&gt;If you have never touched Solana before, here is the one thing you need to know going in: Token-2022 is the upgraded SPL token program, and extensions are how it works. Instead of writing custom smart contract logic to enforce a royalty fee or an interest rate, you flip a flag when you create the mint. The rule travels with the asset, enforced by the protocol itself, visible to every wallet and program that touches it. Think of it as middleware baked directly into the currency, not bolted on next to it.&lt;br&gt;
Over the last week I shipped three distinct mints to devnet. Each one adds a different extension. Here is what I built, what I ran, and what happened.&lt;/p&gt;

&lt;p&gt;Mint 1 — Transfer fee (Days 50–51)&lt;br&gt;
Mint address: G37ZvuZ9wQRnagSDGHb985qqaTsWWxPeuZPPE951LNZ9&lt;/p&gt;

&lt;p&gt;View on Solana Explorer&lt;br&gt;
Extension: TransferFeeConfig — 100 basis points (1%), maximum fee 1,000,000 tokens&lt;br&gt;
bashspl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \&lt;br&gt;
  create-token \&lt;br&gt;
  --transfer-fee-basis-points 100 \&lt;br&gt;
  --transfer-fee-maximum-fee 10000000 \&lt;br&gt;
  --decimals 6&lt;br&gt;
When would you actually reach for this? Think protocol treasury skims on a stablecoin, royalties on a creator token, or a community currency that automatically funds a DAO wallet on every trade. The fee is not enforced by your API or your database — it is enforced by the validator. There is no way to route around it.&lt;br&gt;
The lifecycle I tested: mint supply → transfer 1,000 tokens to a fresh wallet → check the recipient's account for the Transfer fees withheld field → withdraw those withheld fees back to my own account. The whole loop, no middleware, no webhook.&lt;/p&gt;

&lt;p&gt;Mint 2 — Interest-bearing stacked on transfer fee (Day 52)&lt;br&gt;
Mint address: F15ZkWji8PsQM7VrgnRNLUh1n8W8CQJp71TbDkSUsi2a&lt;/p&gt;

&lt;p&gt;View on Solana Explorer&lt;br&gt;
Extensions: InterestBearingConfig (5,000 bps / 50% APR) + TransferFeeConfig (100 bps, same as above)&lt;br&gt;
bashspl-token create-token \&lt;br&gt;
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \&lt;br&gt;
  --decimals 6 \&lt;br&gt;
  --transfer-fee-basis-points 100 \&lt;br&gt;
  --transfer-fee-maximum-fee 1000000 \&lt;br&gt;
  --interest-rate 5000&lt;br&gt;
One thing I want to be honest about here, because it confused me at first: the interest-bearing extension does not mint new supply. It adjusts the UI amount — the number your wallet shows you — based on elapsed time and the configured rate. The raw on-chain balance stays the same. I waited 30 seconds between two spl-token accounts calls and watched the displayed number tick up from 1000004.816733 to 1000007.985649 with no transactions in between. That is the extension doing the compounding math. If you are building a lending protocol or a synthetic yield token, you need to understand this distinction before you go anywhere near production.&lt;br&gt;
The spl-token display output on this mint showed both extensions side by side in the same TLV blob — Interest-bearing at 5,000 bps and Transfer fees at 100 bps. Two behaviors, one create-token invocation.&lt;/p&gt;

&lt;p&gt;Mint 3 — Non-transferable / soul-bound (Day 54)&lt;br&gt;
Mint address: 7u4f9idiq865z2pYndPsPjpiQN95p4uh7fHdTgKkvWgE&lt;/p&gt;

&lt;p&gt;View on Solana Explorer&lt;br&gt;
Extension: NonTransferable&lt;br&gt;
bashspl-token create-token --program-2022 --enable-non-transferable&lt;br&gt;
This one is different in kind. The first two extensions are quantitative — they layer financial behaviors onto a currency primitive. Non-transferable is qualitative. It turns the same mint, the same accounts, the same CLI into an identity object. The closest Web2 analogy is a certificate of completion stapled to a profile page that no one can detach or resell.&lt;br&gt;
I minted one token to myself, generated a throwaway keypair as a recipient, pre-funded their token account so the transfer could actually reach the program, then ran the transfer. Here is what came back:&lt;br&gt;
Error: Client(Error { kind: RpcError(RpcResponseError {&lt;br&gt;
  message: "Transaction simulation failed: Error processing Instruction 0:&lt;br&gt;
  custom program error: 0x25" ...&lt;br&gt;
  logs: ["Program log: Instruction: TransferChecked",&lt;br&gt;
         "Program log: Transfer is disabled for this mint", ...&lt;br&gt;
Transfer is disabled for this mint. The rejection came from the Token-2022 program itself, not from my application layer. In Web2 you might enforce this with a database constraint or an API check — but anyone who talks to the database around your application can break that rule. Here the rule lives on the asset, inside the program, inside the validator. There is no around.&lt;br&gt;
Running spl-token display on the mint confirmed it: the Extensions block shows Non-transferable with nothing else needed.&lt;/p&gt;

&lt;p&gt;What surprised me&lt;br&gt;
I expected extensions to feel like configuration knobs bolted onto a normal token. They do not. They feel like the token is the configuration. The non-transferable experiment especially landed differently than I expected — seeing the validator reject a transfer at the protocol level, not at the app layer, is the moment the mental model clicks. The error message is the feature.&lt;br&gt;
If I were building something real today, I would reach for transfer fees for any protocol where the treasury needs to be funded trustless, and for non-transferable for anything credential-shaped: completion badges, access passes, reputation tokens that should not be liquid. The interest-bearing extension is the most nuanced of the three — powerful for display purposes, but you need to understand what it is and is not doing to use it safely.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #solana #web3 #tutorial
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>buildinpublic</category>
      <category>showdev</category>
      <category>web3</category>
    </item>
    <item>
      <title>What I learned minting NFTs on Solana with Token Extensions #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:48:43 +0000</pubDate>
      <link>https://dev.to/babydriver/what-i-learned-minting-nfts-on-solana-with-token-extensions-100daysofsolana-1f6n</link>
      <guid>https://dev.to/babydriver/what-i-learned-minting-nfts-on-solana-with-token-extensions-100daysofsolana-1f6n</guid>
      <description>&lt;h1&gt;
  
  
  What I learned minting NFTs on Solana with Token Extensions
&lt;/h1&gt;

&lt;p&gt;Before this week, I thought creating a Solana NFT meant using a marketplace stack or relying on a separate metadata program. I wanted to understand what actually happens underneath.&lt;/p&gt;

&lt;p&gt;It turns out an NFT on Solana is still built from the same token primitives I had already been working with: a mint, a supply of one, zero decimals, and extensions that add meaning directly on-chain.&lt;/p&gt;

&lt;p&gt;This week I went from creating a basic 1-of-1 token to building a complete NFT with metadata, collections, and on-chain verification using Token Extensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model: what an NFT actually is on Solana
&lt;/h2&gt;

&lt;p&gt;The biggest shift was realizing that an NFT is not a completely different asset type.&lt;/p&gt;

&lt;p&gt;At the core, it is still a token mint.&lt;/p&gt;

&lt;p&gt;The difference is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supply is exactly &lt;code&gt;1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Decimals are &lt;code&gt;0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Mint authority is disabled so no more copies can be created&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Web2 terms, imagine creating a database row where the ID is unique, the quantity can never increase, and ownership history is tracked publicly.&lt;/p&gt;

&lt;p&gt;The first NFT I created started with a simple mint:&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; https://api.devnet.solana.com

spl-token create-token &lt;span class="nt"&gt;--decimals&lt;/span&gt; 0

spl-token create-account &lt;span class="o"&gt;[&lt;/span&gt;YOUR_MINT_ADDRESS]

spl-token mint &lt;span class="o"&gt;[&lt;/span&gt;YOUR_MINT_ADDRESS] 1

spl-token authorize &lt;span class="o"&gt;[&lt;/span&gt;YOUR_MINT_ADDRESS] mint &lt;span class="nt"&gt;--disable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After this, the token was technically an NFT, but it had no identity.&lt;/p&gt;

&lt;p&gt;No name.&lt;br&gt;
No image.&lt;br&gt;
No metadata.&lt;/p&gt;

&lt;p&gt;It was just an on-chain asset waiting for more information.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I built: metadata, collections, and extensions
&lt;/h2&gt;

&lt;p&gt;The next step was adding identity.&lt;/p&gt;

&lt;p&gt;With Token Extensions, metadata can live directly with the mint account instead of depending on a separate metadata account.&lt;/p&gt;

&lt;p&gt;The metadata extension allowed me to attach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Symbol&lt;/li&gt;
&lt;li&gt;Image URI&lt;/li&gt;
&lt;li&gt;Attributes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow looked 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 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; 0

spl-token initialize-metadata &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;[&lt;/span&gt;YOUR_MINT_ADDRESS] &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"First Light"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"LIGHT"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;[&lt;/span&gt;YOUR_METADATA_URI]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seeing the NFT appear in Solana Explorer with its own metadata was the moment it stopped feeling like a token experiment and started feeling like an actual NFT.&lt;/p&gt;

&lt;p&gt;The next challenge was collections.&lt;/p&gt;

&lt;p&gt;A real NFT usually belongs to something bigger. A collection is basically another mint that acts as the parent.&lt;/p&gt;

&lt;p&gt;The Group extension creates the collection:&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 &lt;span class="nt"&gt;--program-id&lt;/span&gt; TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--decimals&lt;/span&gt; 0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-group&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then member NFTs reference that group using the Member extension:&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-member MEMBER_ONE_MINT COLLECTION_MINT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the relationship exists fully on-chain:&lt;/p&gt;

&lt;p&gt;Collection → NFT members&lt;/p&gt;

&lt;p&gt;Similar to a database foreign key connecting two tables.&lt;/p&gt;

&lt;h2&gt;
  
  
  The surprising part: what was different from Web2
&lt;/h2&gt;

&lt;p&gt;Coming from Web2 development, I expected NFTs to be mostly application logic.&lt;/p&gt;

&lt;p&gt;A database stores metadata.&lt;br&gt;
A backend verifies ownership.&lt;br&gt;
A frontend renders the result.&lt;/p&gt;

&lt;p&gt;Solana flips a lot of that thinking.&lt;/p&gt;

&lt;p&gt;The blockchain itself becomes the source of truth.&lt;/p&gt;

&lt;p&gt;The mint account contains the structure.&lt;br&gt;
Extensions define additional capabilities.&lt;br&gt;
Explorer tools can directly read and display the data.&lt;/p&gt;

&lt;p&gt;I also found it interesting that metadata is not just a static image attached forever.&lt;/p&gt;

&lt;p&gt;The update authority can modify fields:&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 update-metadata &lt;span class="o"&gt;[&lt;/span&gt;MINT_ADDRESS] name &lt;span class="s2"&gt;"Field Notes"&lt;/span&gt;

spl-token update-metadata &lt;span class="o"&gt;[&lt;/span&gt;MINT_ADDRESS] rarity legendary

spl-token update-metadata &lt;span class="o"&gt;[&lt;/span&gt;MINT_ADDRESS] rarity &lt;span class="nt"&gt;--remove&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This felt very similar to updating a database record, except the change happens through a blockchain transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would build next
&lt;/h2&gt;

&lt;p&gt;After understanding the building blocks, the next step would be building an actual NFT application around them.&lt;/p&gt;

&lt;p&gt;Some ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Flutter mobile app that creates and manages NFTs&lt;/li&gt;
&lt;li&gt;An NFT dashboard that reads extensions directly from Solana&lt;/li&gt;
&lt;li&gt;A creator platform where users mint collections without writing CLI commands&lt;/li&gt;
&lt;li&gt;AI-generated NFTs with dynamic metadata updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest lesson from this week:&lt;/p&gt;

&lt;p&gt;NFTs are not magic objects. They are carefully designed token structures with rules, ownership, metadata, and relationships.&lt;/p&gt;

&lt;p&gt;Understanding the primitives makes the whole ecosystem easier to build on.&lt;/p&gt;

&lt;p&gt;This post is part of #100DaysOfSolana. Follow along or jump in any day.&lt;/p&gt;

&lt;h1&gt;
  
  
  Beginner #DEV
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>learning</category>
      <category>tutorial</category>
      <category>web3</category>
    </item>
    <item>
      <title>From Interest-Bearing Assets to Soul-bound Credentials: My Deep Dive into Solana Token Extensions</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Fri, 05 Jun 2026 14:58:02 +0000</pubDate>
      <link>https://dev.to/babydriver/from-interest-bearing-assets-to-soul-bound-credentials-my-deep-dive-into-solana-token-extensions-3i0o</link>
      <guid>https://dev.to/babydriver/from-interest-bearing-assets-to-soul-bound-credentials-my-deep-dive-into-solana-token-extensions-3i0o</guid>
      <description>&lt;p&gt;One of the things that surprised me most while learning Solana is how much functionality can exist directly inside a token.&lt;/p&gt;

&lt;p&gt;In traditional Web2 applications, features like interest accrual, transaction fees, user verification, account restrictions, and credentials are usually implemented through backend services, databases, and application logic. Developers spend significant time wiring these systems together and ensuring they work correctly.&lt;/p&gt;

&lt;p&gt;Over the last five days of my #100DaysOfSolana journey, I explored how Solana's Token-2022 program approaches the same problems differently. Instead of building these features around a token, many of them can be built directly into the token itself through extensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 36 — Creating an Interest-Bearing Token&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first extension I explored was the Interest-Bearing Token extension.&lt;/p&gt;

&lt;p&gt;At first, I expected the token balance itself to increase over time. What I learned was much more interesting.&lt;/p&gt;

&lt;p&gt;The actual on-chain balance never changes. Instead, Solana stores an interest rate and uses time-based calculations to display an adjusted balance to users and applications.&lt;/p&gt;

&lt;p&gt;This creates an experience similar to a savings account where your balance appears to grow continuously while the underlying ledger remains unchanged.&lt;/p&gt;

&lt;p&gt;Some key takeaways:&lt;/p&gt;

&lt;p&gt;Interest rates are configured in basis points.&lt;br&gt;
Wallets calculate adjusted balances using elapsed time.&lt;br&gt;
No additional tokens are minted automatically.&lt;br&gt;
The extension acts as a display layer rather than modifying token supply.&lt;/p&gt;

&lt;p&gt;It was my first look at how financial primitives can be implemented directly at the protocol level.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Day 37 — Combining Multiple Extensions&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
After experimenting with individual extensions, I wanted to see what would happen if multiple extensions were combined into a single token.&lt;/p&gt;

&lt;p&gt;I created a token that included:&lt;/p&gt;

&lt;p&gt;Transfer fees&lt;br&gt;
Interest-bearing balances&lt;br&gt;
On-chain metadata&lt;/p&gt;

&lt;p&gt;This was where the Token-2022 design really started to click for me.&lt;/p&gt;

&lt;p&gt;Each extension operates independently while sharing the same mint account. The token could charge fees during transfers, display interest-adjusted balances, and carry its own metadata without any of the features interfering with one another.&lt;/p&gt;

&lt;p&gt;The biggest lesson from this day was understanding that extension choices must be made when the mint is created. Solana allocates account space upfront, so planning matters.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Day 38 — Building a Compliance-Gated Token&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Financial systems often require permissions before users can transact.&lt;/p&gt;

&lt;p&gt;Brokerage accounts require verification.&lt;br&gt;
Payment apps may freeze suspicious accounts.&lt;br&gt;
Many regulated assets require approval before transfers can occur.&lt;/p&gt;

&lt;p&gt;To replicate this pattern, I experimented with the Default Account State extension.&lt;/p&gt;

&lt;p&gt;Every new token account created for the mint started in a frozen state.&lt;/p&gt;

&lt;p&gt;Nothing could be transferred, received, or burned until the freeze authority explicitly approved the account.&lt;/p&gt;

&lt;p&gt;What made this powerful was that enforcement happened at the protocol level rather than inside application code.&lt;/p&gt;

&lt;p&gt;Even if a frontend contained a bug, users still couldn't bypass the restriction because the blockchain itself enforced the rules.&lt;/p&gt;

&lt;p&gt;This was my first exposure to how regulated asset systems can be implemented directly on Solana.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 39 — Reading Before Building&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After creating several different token configurations, I spent a day inspecting and comparing them.&lt;/p&gt;

&lt;p&gt;Instead of deploying something new, I focused on understanding what I had already built.&lt;/p&gt;

&lt;p&gt;I examined:&lt;/p&gt;

&lt;p&gt;Interest-bearing mints&lt;br&gt;
Multi-extension mints&lt;br&gt;
Default-frozen mints&lt;/p&gt;

&lt;p&gt;Using the CLI, I reviewed extension configurations, authorities, metadata, fees, and account sizes.&lt;/p&gt;

&lt;p&gt;One observation stood out immediately:&lt;/p&gt;

&lt;p&gt;More extensions mean larger account sizes.&lt;/p&gt;

&lt;p&gt;Larger accounts require larger rent-exempt deposits, which means every design decision has a cost attached to it.&lt;/p&gt;

&lt;p&gt;This reinforced an important engineering lesson:&lt;/p&gt;

&lt;p&gt;Before building new systems, understand the systems that already exist.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Day 40 — Creating Revocable Digital Credentials&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The most interesting experiment of the week involved combining two extensions I had never used before:&lt;/p&gt;

&lt;p&gt;Non-Transferable&lt;br&gt;
Permanent Delegate&lt;/p&gt;

&lt;p&gt;Together, these allowed me to create a token that behaved like a digital credential.&lt;/p&gt;

&lt;p&gt;The token could:&lt;/p&gt;

&lt;p&gt;Be issued to a specific wallet&lt;br&gt;
Never be transferred to another wallet&lt;br&gt;
Be revoked by the issuing authority&lt;/p&gt;

&lt;p&gt;This closely resembles real-world certificates, licenses, employee badges, or verified status systems.&lt;/p&gt;

&lt;p&gt;A credential belongs to the recipient, but the issuing organization still retains the ability to revoke it when necessary.&lt;/p&gt;

&lt;p&gt;Seeing this implemented entirely through token extensions was fascinating.&lt;/p&gt;

&lt;p&gt;The token itself enforced ownership and transfer restrictions without requiring additional application logic.&lt;/p&gt;

&lt;p&gt;What I Learned This Week&lt;/p&gt;

&lt;p&gt;This week completely changed how I think about tokens.&lt;/p&gt;

&lt;p&gt;I started by viewing tokens as simple units of value.&lt;/p&gt;

&lt;p&gt;Now I see them as programmable assets capable of enforcing business rules directly at the protocol level.&lt;/p&gt;

&lt;p&gt;Across these five days I learned how to build:&lt;/p&gt;

&lt;p&gt;Interest-bearing financial assets&lt;br&gt;
Fee-generating tokens&lt;br&gt;
Compliance-gated systems&lt;br&gt;
Multi-extension token architectures&lt;br&gt;
Soulbound credentials with revocation mechanisms&lt;/p&gt;

&lt;p&gt;The most valuable lesson wasn't a specific command or extension.&lt;/p&gt;

&lt;p&gt;It was understanding that Token-2022 turns tokens into building blocks for entire applications.&lt;/p&gt;

&lt;p&gt;Instead of asking, "What can my application do with a token?"&lt;/p&gt;

&lt;p&gt;I'm starting to ask,&lt;/p&gt;

&lt;p&gt;"What functionality can I move directly into the token itself?"&lt;/p&gt;

&lt;p&gt;And that shift in perspective might be the biggest lesson I've learned so far in my Solana journey.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #Solana #Web3 #Blockchain #Token2022 #BuildInPublic #DeveloperJourney
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>devjournal</category>
      <category>programming</category>
      <category>web3</category>
    </item>
    <item>
      <title>Week 5 of my #100DaysOfSolana challenge is complete 🚀</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Wed, 03 Jun 2026 13:38:33 +0000</pubDate>
      <link>https://dev.to/babydriver/week-5-of-my-100daysofsolana-challenge-is-complete-50go</link>
      <guid>https://dev.to/babydriver/week-5-of-my-100daysofsolana-challenge-is-complete-50go</guid>
      <description>&lt;p&gt;This week I built custom SPL tokens on Solana using the Token Extensions Program. I created tokens with on-chain metadata, configured protocol-level transfer fees, and even experimented with non-transferable (soulbound) tokens.&lt;/p&gt;

&lt;p&gt;The most interesting moment was testing a non-transferable token and watching the blockchain reject the transfer attempt automatically. Seeing the protocol enforce the rule itself — without any custom backend or off-chain validation — completely changed how I think about token design.&lt;/p&gt;

&lt;p&gt;I also explored transfer fee extensions and learned how economic rules can be embedded directly into the token standard instead of being handled by application logic.&lt;/p&gt;

&lt;p&gt;Next week I'm diving deeper into how these token extensions interact with on-chain programs and real-world applications built on Solana.&lt;/p&gt;

&lt;p&gt;All code is open source and documented as part of my learning journey:&lt;br&gt;
GitHub: &lt;a href="https://github.com/Siddhant0122/100-days-of-solana" rel="noopener noreferrer"&gt;https://github.com/Siddhant0122/100-days-of-solana&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Solana #Web3 #Blockchain #BuildInPublic #LearnInPublic #100DaysOfSolana
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>buildinpublic</category>
      <category>learning</category>
      <category>web3</category>
    </item>
    <item>
      <title>I Built My First Token on Solana — Here's What Actually Surprised Me #100DaysOfSolana.</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Tue, 02 Jun 2026 18:42:37 +0000</pubDate>
      <link>https://dev.to/babydriver/i-built-my-first-token-on-solana-heres-what-actually-surprised-me-100daysofsolana-ng6</link>
      <guid>https://dev.to/babydriver/i-built-my-first-token-on-solana-heres-what-actually-surprised-me-100daysofsolana-ng6</guid>
      <description>&lt;p&gt;I Built My First Token on Solana — Here's What Actually Surprised Me&lt;br&gt;
This week I went from zero tokens to minting, transferring, charging fees, and locking tokens so they can never move. Here's what stuck with me.&lt;/p&gt;

&lt;p&gt;Tokens don't live in your wallet&lt;br&gt;
Coming from Web2, I assumed tokens would just... show up in your account. Nope. On Solana, every wallet needs a separate token account for each token it holds. One mint, one folder. It felt weird at first. Now it makes sense.&lt;br&gt;
You can charge fees without writing a single backend&lt;br&gt;
The Token Extensions Program has a built-in transfer fee. One flag at mint creation time:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;spl-token create-token \&lt;br&gt;
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \&lt;br&gt;
  --transfer-fee-basis-points 100&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's a 1% fee on every transfer, enforced by the blockchain. No middleware. No payment processor. No way to bypass it.&lt;br&gt;
You can make a token that literally cannot be transferred&lt;/p&gt;

&lt;p&gt;&lt;code&gt;spl-token create-token \&lt;br&gt;
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \&lt;br&gt;
  --enable-non-transferable&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I minted 10, tried to send 5, and watched the transaction get rejected. Not by my code — by the program itself. Perfect for credentials, badges, or certificates that should belong to one person forever.&lt;/p&gt;

&lt;p&gt;The biggest shift from Web2: these rules are set at creation and are permanent. You can't add a transfer fee to an existing token. You can't make a transferable token non-transferable later. It forces you to think about token design upfront, which is honestly a good constraint.&lt;/p&gt;

&lt;h1&gt;
  
  
  solana #blockchain #webdev #beginners #100DaysOfSolana
&lt;/h1&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>tutorial</category>
      <category>web3</category>
    </item>
    <item>
      <title>Share your explorer challenge #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Sat, 30 May 2026 15:39:26 +0000</pubDate>
      <link>https://dev.to/babydriver/share-your-explorer-challenge-100daysofsolana-3kfd</link>
      <guid>https://dev.to/babydriver/share-your-explorer-challenge-100daysofsolana-3kfd</guid>
      <description>&lt;p&gt;I opened Solana Explorer today and searched for the Jupiter v6 program.&lt;/p&gt;

&lt;p&gt;What I saw surprised me.&lt;/p&gt;

&lt;p&gt;It is marked Executable: Yes, has a balance of 6.19 SOL, and its actual bytecode lives in a completely separate account called Executable Data. The program itself holds no state at all.&lt;/p&gt;

&lt;p&gt;That is Solana's account model in one screenshot. The logic lives in one account. The data lives somewhere else. They are never mixed.&lt;/p&gt;

&lt;p&gt;Coming from Web2, this felt strange at first. Now it feels clean.&lt;/p&gt;

&lt;p&gt;This is Jupiter's live transaction history on Solana Explorer.&lt;/p&gt;

&lt;p&gt;Failed. Failed. Failed. Success. Success.&lt;/p&gt;

&lt;p&gt;At first I thought something was broken. Then I read the instruction names. The failed ones are all trying to create token accounts that already exist. The successful ones are simple SOL transfers.&lt;/p&gt;

&lt;p&gt;This is normal. Programs attempt things optimistically and fail fast. Failed transactions still cost a small fee. The network does not hide any of this. Everything is public and permanent.&lt;/p&gt;

&lt;p&gt;This caught me off guard.&lt;/p&gt;

&lt;p&gt;Jupiter's upgrade authority is not a single wallet. It is a Squads V3 multisig with 7 members and a 4 of 7 approval threshold.&lt;/p&gt;

&lt;p&gt;That means 4 out of 7 keyholders have to sign before anyone can push an update to the program that handles billions in DEX volume.&lt;/p&gt;

&lt;p&gt;You can verify this yourself on Solana Explorer. No trust required. Just a public address and the data it holds.&lt;/p&gt;

&lt;p&gt;That is the whole point.&lt;/p&gt;

&lt;p&gt;address: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #Solana #Web3
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>blockchain</category>
      <category>learning</category>
      <category>web3</category>
    </item>
    <item>
      <title>Solana's Account Model, Explained to My Past Self (A Web2 Dev's Guide) #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Sat, 30 May 2026 11:59:32 +0000</pubDate>
      <link>https://dev.to/babydriver/solanas-account-model-explained-to-my-past-self-a-web2-devs-guide-100daysofsolana-4d6p</link>
      <guid>https://dev.to/babydriver/solanas-account-model-explained-to-my-past-self-a-web2-devs-guide-100daysofsolana-4d6p</guid>
      <description>&lt;p&gt;Coming from Web2, Solana's account model felt completely backwards to me. No objects, no built-in state, no familiar patterns. After a 4 week of building on devnet, it finally clicked. Here's the short version I wish I had on day one.&lt;/p&gt;

&lt;p&gt;Everything is an account&lt;/p&gt;

&lt;p&gt;Wallet? Account. Smart contract? Account. The data that smart &lt;br&gt;
contract reads and writes? Also an account.&lt;/p&gt;

&lt;p&gt;They all live in the same flat key-value store. A 32-byte address maps to an account. That's it. No separate contract accounts vs wallets like Ethereum does. One model for everything.&lt;/p&gt;

&lt;p&gt;Every account has five fields&lt;/p&gt;

&lt;p&gt;Run "solana account &lt;/p&gt;" in your terminal and you'll see &lt;br&gt;
five things every time.

&lt;p&gt;Lamports is the SOL balance. 1 SOL equals 1 billion lamports. &lt;br&gt;
Everything on-chain works in whole numbers.&lt;/p&gt;

&lt;p&gt;Data is a raw byte array. Empty for a basic wallet. Token balances, NFT metadata, and program bytecode all live here.&lt;/p&gt;

&lt;p&gt;Owner is the program that controls this account. Only the owner can modify the data or move the lamports.&lt;/p&gt;

&lt;p&gt;Executable is a simple true or false. True means this account is a runnable program. False means it holds data. That is literally the only structural difference between a smart contract and a wallet.&lt;/p&gt;

&lt;p&gt;Rent epoch is deprecated. You will always see it set to the max value. Ignore it.&lt;/p&gt;

&lt;p&gt;Programs don't store their own state&lt;/p&gt;

&lt;p&gt;This is the part that trips up every Web2 developer, including me.&lt;/p&gt;

&lt;p&gt;Solana programs are stateless. The program account holds compiled bytecode and nothing else. All state lives in separate data accounts that users pass in on every single call.&lt;/p&gt;

&lt;p&gt;Think of it like a stateless REST API. The server holds no memory between requests. The caller sends everything the server needs to do its job. Same idea here, except the "data" being passed in are actual on-chain accounts.&lt;/p&gt;

&lt;p&gt;The security model is simple&lt;/p&gt;

&lt;p&gt;Only the owner program can modify an account's data or debit its lamports. The runtime enforces this, not your code. There is no auth middleware to forget. The account structure itself is the permission system.&lt;/p&gt;

&lt;p&gt;Rent exemption&lt;/p&gt;

&lt;p&gt;Every account needs to hold a small minimum balance to stay &lt;br&gt;
on-chain, roughly 0.00089 SOL for a basic account. It is not &lt;br&gt;
a fee. It is a refundable deposit. Close the account and you &lt;br&gt;
get the lamports back.&lt;/p&gt;

&lt;p&gt;You can check the exact amount by running "solana rent 0" in &lt;br&gt;
your terminal.&lt;/p&gt;

&lt;p&gt;The one analogy that ties it all together&lt;/p&gt;

&lt;p&gt;Think of Solana as a filesystem. Accounts are files. Programs &lt;br&gt;
are executables. Data accounts are documents. The System Program is the OS kernel that creates files and manages ownership.&lt;/p&gt;

&lt;p&gt;Once that image lands, everything else starts to make sense.&lt;/p&gt;

&lt;h1&gt;
  
  
  Beginner #WEB3 #Solana #Blockchain #100DaysOfSolana
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>blockchain</category>
      <category>tutorial</category>
      <category>web3</category>
    </item>
    <item>
      <title>Building My First Solana Transfer CLI Tool | #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Tue, 26 May 2026 17:35:33 +0000</pubDate>
      <link>https://dev.to/babydriver/building-my-first-solana-transfer-cli-tool-100daysofsolana-4ohf</link>
      <guid>https://dev.to/babydriver/building-my-first-solana-transfer-cli-tool-100daysofsolana-4ohf</guid>
      <description>&lt;p&gt;Built a CLI tool that transfers SOL on Solana devnet and tracks the transaction through processed, confirmed, and finalised states.&lt;/p&gt;

&lt;p&gt;This project helped me understand that Solana transactions are much more than just “sending crypto.” I learned how recent blockhashes work, why transactions need signatures, how confirmation levels actually matter, and what really happens after a transaction gets submitted to the network.&lt;/p&gt;

&lt;p&gt;The most interesting part was watching the transaction lifecycle in real time and seeing how Solana moves from processed → confirmed → finalised.&lt;/p&gt;

&lt;p&gt;Also spent time debugging failed transactions and honestly learned more from the failures than the successful transfers 😅&lt;/p&gt;

&lt;p&gt;Built using Solana Kit + System Program on devnet.&lt;/p&gt;

&lt;p&gt;📸 Terminal demo + Explorer screenshot attached&lt;br&gt;
🔗 Explorer Link: &lt;a href="https://explorer.solana.com/tx/2tQJ8YEwtTC7UdS5nYsHtRWV73LsiSR37vHEVTpJeiGGGEoXTotfX4SVGHnEvrhak8DvhFEy8G4eJLCsayrFNQGR?cluster=devnet" rel="noopener noreferrer"&gt;https://explorer.solana.com/tx/2tQJ8YEwtTC7UdS5nYsHtRWV73LsiSR37vHEVTpJeiGGGEoXTotfX4SVGHnEvrhak8DvhFEy8G4eJLCsayrFNQGR?cluster=devnet&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Solana #Web3 #Blockchain #BuildInPublic #100DaysOfSolana
&lt;/h1&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>showdev</category>
      <category>web3</category>
    </item>
    <item>
      <title>What Learning Solana Transactions Actually Felt Like | #100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Tue, 26 May 2026 15:44:59 +0000</pubDate>
      <link>https://dev.to/babydriver/what-learning-solana-transactions-actually-felt-like-100daysofsolana-2iaf</link>
      <guid>https://dev.to/babydriver/what-learning-solana-transactions-actually-felt-like-100daysofsolana-2iaf</guid>
      <description>&lt;p&gt;A few days ago, Solana transactions looked completely overwhelming to me.&lt;/p&gt;

&lt;p&gt;I kept seeing terms like signatures, instructions, blockhashes, compute budgets, and account ownership everywhere, but none of it felt intuitive at first. Coming from a more traditional backend mindset, I was expecting transactions to work like a normal API request — send something, get a response, done.&lt;/p&gt;

&lt;p&gt;Solana quickly showed me that it doesn’t work that way.&lt;/p&gt;

&lt;p&gt;Over the past few days in my #100DaysOfSolana challenge, I spent most of my time experimenting with transactions on devnet. Some worked instantly, some failed for confusing reasons, and honestly, the failures taught me the most.&lt;/p&gt;

&lt;p&gt;One thing that really changed my understanding was realising that a Solana transaction is more like an atomic state change than a simple request. Everything either succeeds together or fails together. There’s no “half success.” That mental shift took me time to understand.&lt;/p&gt;

&lt;p&gt;I also started paying attention to details I normally would have ignored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;why transactions need signatures&lt;/li&gt;
&lt;li&gt;why blockhashes expire&lt;/li&gt;
&lt;li&gt;how instructions are bundled together&lt;/li&gt;
&lt;li&gt;why compute limits matter&lt;/li&gt;
&lt;li&gt;and how even transaction size affects development decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most interesting part was exploring failed transactions on Solana Explorer and trying to understand &lt;em&gt;why&lt;/em&gt; they failed instead of just retrying them. Sometimes it was balance issues, sometimes account problems, and sometimes timing-related issues because of expired blockhashes. Reading logs and debugging those mistakes made the concepts feel real instead of theoretical.&lt;/p&gt;

&lt;p&gt;Another thing I noticed while learning Solana is how different the developer experience feels compared to Web2. In Web2, most complexity is hidden behind servers and APIs. On Solana, you’re much closer to the system itself. You actually see how accounts, programs, and transaction execution interact.&lt;/p&gt;

&lt;p&gt;That was frustrating at times, but also what made it interesting.&lt;/p&gt;

&lt;p&gt;Looking back, transactions were probably the first Solana topic that genuinely challenged the way I think about software systems. But after spending several days building, testing, breaking, and debugging them, I finally feel like I’m starting to understand what’s happening under the hood instead of just copying code blindly.&lt;/p&gt;

&lt;p&gt;Still learning every day, but this part of the journey definitely made Solana feel “real” to me.&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #Solana #Blockchain #Web3
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>devjournal</category>
      <category>learning</category>
      <category>web3</category>
    </item>
    <item>
      <title>On day-10 I built something and it genuinely surprised me. 😲#100DaysOfSolana</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Wed, 20 May 2026 18:42:22 +0000</pubDate>
      <link>https://dev.to/babydriver/on-day-10-i-built-something-and-it-genuinely-surprised-me-100daysofsolana-4kaj</link>
      <guid>https://dev.to/babydriver/on-day-10-i-built-something-and-it-genuinely-surprised-me-100daysofsolana-4kaj</guid>
      <description>&lt;p&gt;I didn't expect this to work the way it did.&lt;br&gt;
On Day 10 I built a Solana Dashboard — paste any wallet address and it pulls:&lt;br&gt;
💰 Live SOL balance&lt;br&gt;
📋 Complete transaction history&lt;br&gt;
🔍 Full account data&lt;br&gt;
But here's what actually blew my mind —&lt;br&gt;
I never asked anyone for permission.&lt;br&gt;
No API key. No login. No "request access" form. No terms of service to agree to. I just pointed my code at a public address and the blockchain handed me everything. Every transaction. Every balance. Every interaction. Out in the open.&lt;br&gt;
Coming from Web2, this broke my brain a little. We're so used to data being locked behind auth layers, rate limits, and paywalls. But on Solana? The ledger is just… there. Public. Permanent. Readable by anyone.&lt;br&gt;
That's not just a technical difference. That's a completely different relationship between code and data.&lt;br&gt;
I built a dashboard expecting a fun project. I got a perspective shift instead. 🤯&lt;br&gt;
🔗 GitHub link in the comments — try it with your own wallet address.&lt;br&gt;
What surprised YOU most when you first touched blockchain data? I want to know. 👇&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #Solana #Web3 #BuildInPublic #SolanaDevs #Blockchain #LearnInPublic #DevCommunity #OpenSource
&lt;/h1&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Week 2 of #100DaysOfSolana — Breaking down what I built and learned, day by day. 🔥</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Wed, 20 May 2026 16:36:58 +0000</pubDate>
      <link>https://dev.to/babydriver/week-2-of-100daysofsolana-breaking-down-what-i-built-and-learned-day-by-day-1bg4</link>
      <guid>https://dev.to/babydriver/week-2-of-100daysofsolana-breaking-down-what-i-built-and-learned-day-by-day-1bg4</guid>
      <description>&lt;p&gt;This week was packed. Here's exactly what went down:&lt;/p&gt;

&lt;h2&gt;
  
  
  📅 Day 8 — Reading Solana Data
&lt;/h2&gt;

&lt;p&gt;Learned how to fetch and read on-chain data using a public address. The blockchain is fully transparent — you just need the right tools to query it. First time pulling live data felt like unlocking a superpower. 📖⚡&lt;/p&gt;

&lt;h2&gt;
  
  
  📅 Day 9 — Transactions in Solana
&lt;/h2&gt;

&lt;p&gt;Went deep into how Solana transactions are structured, signed, and processed. Understanding the anatomy of a transaction — instructions, signers, recent blockhash — changed how I see every on-chain interaction. ✍️🔗&lt;/p&gt;

&lt;h2&gt;
  
  
  📅 Day 10 — Building a Solana Dashboard
&lt;/h2&gt;

&lt;p&gt;Put Days 8 &amp;amp; 9 together and built a full dashboard that reads account data and transaction history from any public address. First real project of the challenge — turning raw blockchain data into something visual and usable. 📊🛠️&lt;/p&gt;

&lt;h2&gt;
  
  
  📅 Day 11 — Solana Accounts vs Traditional Databases
&lt;/h2&gt;

&lt;p&gt;This one flipped my thinking. Solana accounts aren't database rows — they're more like files that store state, owned by programs. The shift from a Web2 database mindset to an on-chain storage model is real and essential. 🧠🗃️&lt;/p&gt;

&lt;h2&gt;
  
  
  📅 Day 12 — Devnet vs Mainnet
&lt;/h2&gt;

&lt;p&gt;Understood the critical difference between Devnet and Mainnet — same code, completely different consequences. Knowing when and why to use each environment is foundational before you ship anything serious. 🚨🌐&lt;br&gt;
5 days. 5 solid concepts. Each one building on the last.&lt;br&gt;
The foundation is getting stronger — Week 3 is where it gets even more interesting. 🚀&lt;br&gt;
Drop a 🔥 if you're also building on Solana!&lt;/p&gt;

&lt;h1&gt;
  
  
  100DaysOfSolana #Solana #Web3 #BuildInPublic #SolanaDevs #Blockchain #LearnInPublic #SolanaDeveloper
&lt;/h1&gt;

</description>
      <category>blockchain</category>
      <category>buildinpublic</category>
      <category>devjournal</category>
      <category>web3</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Siddhant Chavan</dc:creator>
      <pubDate>Mon, 18 May 2026 08:19:25 +0000</pubDate>
      <link>https://dev.to/babydriver/100daysofsolana-6dd</link>
      <guid>https://dev.to/babydriver/100daysofsolana-6dd</guid>
      <description></description>
    </item>
  </channel>
</rss>
