惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
T
Tailwind CSS Blog
罗磊的独立博客
B
Blog
博客园_首页
A
About on SuperTechFans
有赞技术团队
有赞技术团队
V
V2EX
U
Unit 42
I
InfoQ
IT之家
IT之家
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
H
Help Net Security

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Reading a Token Mint: How I Learned to Inspect On-Chain C...
Vinay · 2026-06-28 · via DEV Community
Cover image for Reading a Token Mint: How I Learned to Inspect On-Chain Configuration

Vinay

In Web2 you read config files. On Solana you read accounts.

When you join a new team in Web2, your first task is reading configuration files. You open package.json, environment variables, database schemas. You do not start changing things until you understand what is already there. Reading and interpreting existing configuration is a core skill that separates developers who break things from developers who improve things.

On Solana, that same skill applies to on-chain accounts. Every token mint stores its configuration as public account data. The spl-token display command is your cat package.json — it decodes raw bytes into human-readable configuration.

The command

spl-token display [MINT_ADDRESS] \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb

The --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb flag tells the CLI to read from the Token Extensions program (Token-2022), not the original SPL Token program.

What the output tells you

Here is the output from an interest-bearing mint I created:

SPL Token Mint
  Address: 7CjQNSGCiXuYAZu6UNn2xGXPEa5wxc1oxLQoj198jFdy
  Program: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  Supply: 0
  Decimals: 9
  Mint authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164
Extensions
  Interest-bearing:
    Current rate: 500bps
    Average rate: 500bps
    Rate authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164

Each extension occupies its own block. The Interest-bearing block tells me:

  • The current rate is 500 basis points (5%)
  • The rate authority is a specific wallet address

Here is the output from a multi-extension mint (transfer fees + interest + metadata):

Extensions
  Interest-bearing:
    Current rate: 5bps
    Rate authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164
  Transfer fees:
    Current fee: 100bps
    Current maximum: 50000
    Config authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164
    Withdrawal authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164
  Metadata Pointer:
    Authority: 2Cd1SqwosBfgoo8UrxBDBFquZRTt11Cmh1bcPDemn164
  Metadata:
    Name: ArcCoin
    Symbol: ARC
    URI: https://raw.githubusercontent.com/...


How to compare account sizes

Extensions are not free. Each one adds bytes to the account. You can measure this directly:

# Get the data size of any mint
solana account [MINT_ADDRESS] --output json | grep -o '"space":[ ]*[0-9]*' | grep -o '[0-9]*$'

# Calculate the rent cost
solana rent [DATA_SIZE]

I compared three mints and got this:

Mint Type Size Rent Cost
Default-frozen (1 extension) 171 bytes 0.002081 SOL
Interest-bearing (1 extension) 222 bytes 0.002436 SOL
Multi-extension (3 extensions) 599 bytes 0.005060 SOL

The multi-extension mint costs more than double the rent of the simplest. This is not a bug — it is a design tradeoff. More features mean more data, and more data means more SOL to keep the account rent-exempt.


What surprised me

You can see every authority. The display command shows who controls what — mint authority, freeze authority, rate authority, transfer fee config authority, metadata update authority. Some of these cannot be changed after creation. Reading the configuration before deploying to mainnet is how you avoid painting yourself into a corner.

Extensions are stored sequentially as TLV entries. Each extension uses a type-length-value format. The CLI parses them one by one and displays them as blocks. The order in the output matches the order in the raw account data.

Where to go deeper

Being able to read on-chain state is as important as being able to create it. The official docs explain the data model:

Next time you encounter an unfamiliar token on devnet, run spl-token display on it. You will learn more from reading one real configuration than from ten tutorials.