One Symbol. One Token.
TNS Protocol is a decentralized registry for unique token symbols on Solana. Like DNS for token tickers. Verify any token with a single on-chain lookup.
The Problem
On Solana, anyone can create a token with any symbol. Search "BONK" on any DEX and you'll find hundreds of results. Search "AAPL" and you'll find dozens of fake RWA tokens. Which one is real? Current solutions rely on centralized verification teams and proprietary algorithms. This doesn't scale and creates trust dependencies.
20,000+ tokens created daily. Hundreds call themselves "BONK". Dozens call themselves "AAPL". Which one is real? Right now, there's no way to know on-chain.
With millions of tokens, centralized verification off-chain is error prone and mutable. Aggregators need a single on-chain source of truth.
Tokenized securities and RWAs can't come on-chain without unique symbols and indisputable verification.
The Solution
Without on-chain truth, verification is centralized and disputable—two orgs can claim different tokens are "verified." A better primitive exists on Solana to enforce symbol uniqueness efficiently. It is called PDAs (Program Derived Addresses). TNS provides a single source of truth. One symbol, one token, verifiable by anyone.
On-Chain Registry
Simple PDA lookup. Verify any token with one RPC or CPI call.
Unique Symbols
Each symbol can only be registered once. Like stock tickers.
Decentralized
ICANN-inspired pricing baked into the contract.
Trustless
No committees, no data science, no trusted third parties.
On-Chain Verification
Any program can verify symbols with a simple PDA lookup or CPI call. Trusted programs can reject unregistered tokens on-chain.
Off-chain verification
// Single RPC call - no search requiredconst [pda] = PublicKey.findProgramAddressSync([Buffer.from("token"), Buffer.from(symbol)],TNS_PROGRAM_ID);const account = await connection.getAccountInfo(pda);const isVerified = account !== null;
On-chain guards
// CPI: Read TNS accountlet tns_account = Account::<Token>::try_from(&tns_pda)?;// Guard: Symbol must be registered to place traderequire!(tns_account.mint == token_mint.key(),ErrorCode::UnverifiedSymbol);
A New Standard On-Chain
What if duplicate symbols were impossible? A new token standard could enforce uniqueness at creation—not through flags, but by design.
The Mint Instruction
// In the new token standard's mint instruction:let tns_result = tns_program::cpi::lookup(symbol);// Reject if symbol already existsrequire!(tns_result.is_none(),ErrorCode::SymbolAlreadyExists);// Register symbol atomically with minttns_program::cpi::register(symbol, new_mint.key())?;
This is a proposal, not a guarantee
Whether this becomes an official standard depends on community adoption. The on-chain verification above works today—this is about what's possible next.
Token / Token-2022
The current standard. Anyone can create any symbol. Duplicates allowed. Great for memes, experiments, and permissionless creation. Requires on-chain lookup to know if it's the verified token.
Token-2027
A new standard where mint CPIs into TNS—failing if the symbol exists, auto-registering if it doesn't. If it's this type, it's unique by definition.
Two standards, two purposes. Memes stay permissionless. Utility tokens get the uniqueness guarantee that serious projects need.
The Future
Soon, every launchpad will be able to offer symbol registration at token creation. Just like choosing a domain name or stock ticker, part of building a project will be finding a symbol that's truly yours. The TNS contract is written such that up to 10% of the registration fee can be shared as a platform fee with partners building on the TNS.
Create Token
Launch your token on Solana
Checked via TNS — single PDA lookup
Register unique symbol on TNS?
Claim "WOOF" so no other token can use it. $10/year.
What if the symbol is taken?
Concept: TNS integrated into a launchpad's token creation flow. One PDA call to check. One instruction to register.
Memecoins
No registration required. Create freely, trade at your own risk. Like memes themselves, anyone can remix and repost.
Utility Tokens
Registered symbols for legitimate projects that need unique identity.
RWAs
A clear mechanism for shareholders to trust a single source of truth on-chain.
DNS ensures no one else can take traffic to your .com. TNS ensures no other token can claim your symbol.
Built for the Solana Ecosystem
Just as SNS (Solana Name Service) maps .sol domains to wallet addresses, TNS (Token Name Service) maps token symbols to verified mints. Two complementary naming systems for the Solana ecosystem.
What About Existing Tokens?
Existing verified tokens can claim their symbols during the genesis phase. TNS launches with training wheels that are progressively removed. See the Genesis Lists for the full curation methodology and data sources.
Phase 1: Genesis
Working with the DAO to verify the list of existing symbols and seed them for free for 5 years. Verified tokens can be claimed by their mint authority. Reserved tradfi symbols (S&P 500, Russell 3000) and non-whitelisted tokens require admin approval.
Phase 2: Open Registration
Non-whitelisted symbols open to anyone. Verified tokens remain protected for mint authorities. Reserved tradfi symbols stay admin-only for legitimate RWA onboarding.
Phase 3: Full Decentralization
All restrictions removed. Any symbol—including reserved finance tickers—becomes first-come, first-served.
Phase 4: Immutability
Upgrade authority permanently revoked. No admin, no governance, no changes. Pure infrastructure, like TCP/IP.
Not on the whitelist?
Open a pull request to add your token to the verified whitelist.
Request Whitelist AdditionSimple Pricing
ICANN-inspired pricing schedule. Hardcoded in the program.
Matching .com wholesale pricing
Save $7
Save $25 with max years