DEV Community

Gopichand
Gopichand

Posted on

I Built a Branded Token on Solana in 5 Minutes (No Smart Contract Needed)

I spent years thinking "creating a token" meant writing complex smart contract
code, deploying it, hoping nothing breaks. Today on Day 30 of my

100DaysOfSolana challenge, I created a fully branded token — with a name,

symbol, and on-chain metadata — in under 5 minutes. No Solidity. No Rust.
Just a CLI.

Here's exactly what I did and what it means.

The Problem with Yesterday's Token

On Day 29, I created my first SPL token on Solana devnet. It worked — but
when I looked it up on Solana Explorer, it showed up as "Unknown Token." Just
a random address with no name, no symbol, no identity.

That's like launching a rewards program for your app but forgetting to give
it a name. Users would see a random ID and have no idea what it represents.

Today I fixed that using Token-2022 — Solana's next-generation token program.

Token-2022 vs the Original SPL Token Program

The original SPL Token Program is solid but basic. To add metadata (name,
symbol, image), you'd traditionally need a separate Metaplex account — an
extra transaction, extra cost, extra complexity.

Token Extensions Program (Token-2022) changes this. It lets you embed
metadata directly inside the mint account itself. One account. Everything
in one place. Fewer transactions, lower cost.

Think of it like this:

Web2 Concept Solana Equivalent
Reward program definition Mint account
Display name / branding On-chain metadata (name, symbol, URI)
User balance record Associated Token Account (ATA)
Transfer API spl-token transfer instruction

What I Built: 100DaysCoin (HUNDO)

  • Token name: 100DaysCoin
  • Symbol: HUNDO
  • Decimals: 6
  • Program: Token Extensions (Token-2022)
  • Mint: 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt

Step-by-Step: How I Did It

Step 1: Create the mint with metadata enabled

spl-token create-token \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
  --enable-metadata \
  --decimals 6
Enter fullscreen mode Exit fullscreen mode

The --program-id flag tells the CLI to use Token-2022 instead of the
original SPL Token Program. The --enable-metadata flag activates the
metadata extension on the mint.

Output: Creating token 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt
Address: 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt
Decimals: 6

Step 2: Initialize on-chain metadata

spl-token initialize-metadata \
  3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt \
  "100DaysCoin" "HUNDO" \
  "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json"
Enter fullscreen mode Exit fullscreen mode

This writes the token's name, symbol, and a URI directly onto the mint
account. The URI points to a JSON file with extended details — description,
image, attributes. This is now verifiable by anyone on-chain.

Step 3: Create a token account and mint supply

spl-token create-account 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt
spl-token mint 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt 1000
Enter fullscreen mode Exit fullscreen mode

Balance check: 1000

Step 4: Transfer tokens to a second wallet

solana-keygen new --outfile ~/second-wallet.json --no-bip39-passphrase

spl-token transfer 3zX5oyL9skYKWo2ZoUHgBwLpG9BzLe1ViuXLgH8joqFt 250 \
  $(solana-keygen pubkey ~/second-wallet.json) \
  --fund-recipient --allow-unfunded-recipient
Enter fullscreen mode Exit fullscreen mode

The --fund-recipient flag is key — it automatically creates the recipient's
Associated Token Account (ATA) and covers the rent cost from my wallet. In
Web2 terms, it's like your API automatically creating a user's balance row
before their first transaction.

Final balances

My wallet: 750 HUNDO ✅
Second wallet: 250 HUNDO ✅

The "Aha" Moment

In Web2, building a token/rewards system means:

  • Database schema for the currency definition
  • CRUD API endpoints for balance management
  • Custom transfer logic with double-spend protection
  • A server running 24/7 to keep it all alive

On Solana with Token-2022:

  • create-token = currency definition
  • create-account = user balance row
  • transfer = transfer API
  • Zero server. Zero maintenance. Publicly verifiable.

And critically — the metadata lives on-chain. Not in your database. Not
on your server. On a public ledger that anyone can read, forever.

What's Next

Day 31 onward: deeper into token extensions — transfer fees,
interest-bearing tokens, and eventually building tokens with real utility.
The foundation is set.


🔗 Full code + notes: GitHub

🔗 Mint on Explorer: Solana Explorer

Building daily → @GopichandAI | #100DaysOfSolana Day 30/100

Top comments (0)