
Solana Token Extensions (còn gọi là SPL Token-2022) là nâng cấp lớn nhất cho token standard trên Solana từ khi SPL Token ra mắt năm 2020. Ra mắt mainnet-beta tháng 1/2024, Token-2022 gom hơn 15 extension vào một program duy nhất — cho phép tạo token có tính năng: transfer fee, confidential transfer, mint close authority, metadata pointer, group pointer, interest-bearing, non-transferable, permanent delegate, và nhiều hơn nữa — tất cả không cần smart contract tùy chỉnh.
Solana Token Extensions tutorial là chủ đề nóng trong cộng đồng dev Solana Việt Nam hiện nay, vì nó mở ra khả năng phát hành stablecoin tuân thủ quy định, token hóa tài sản thực tế (RWA), loyalty points không chuyển nhượng được, và DeFi primitives mới — tất cả với chi phí gas ~0.00025 SOL/lần transfer, nhanh 400ms block time.
Token-2022 khác gì SPL Token cũ?
SPL Token (Token-2020) là program không thể mở rộng — muốn thêm tính năng (ví dụ: burn fee, whitelist transfer) phải viết custom program, audit tốn kém, và không tương thích wallet/exchange sẵn có. Token-2022 giải quyết bằng kiến trúc extension: mỗi extension là một module độc lập, bật/tắt khi khởi tạo mint, và wallet/exchange chỉ cần cập nhật SDK để hỗ trợ.
| Extension | Chức năng | Use case chính |
|---|---|---|
| TransferFeeConfig | Thu phí % hoặc cố định mỗi lần transfer | Royalty NFT, protocol fee, stablecoin fee |
| ConfidentialTransfer | Ẩn số dư/amount bằng zero-knowledge proof | Enterprise payroll, private DeFi |
| MetadataPointer | Lưu metadata on-chain (name, symbol, URI) | Token không cần off-chain metadata server |
| MintCloseAuthority | Đóng mint, thu hồi toàn bộ supply | Token event, token thời hạn |
| InterestBearingConfig | Tự động tăng supply theo lãi suất | Yield-bearing token, staking derivative |
| NonTransferable | Không cho transfer sau khi mint | Soulbound token, certificate, KYC badge |
| PermanentDelegate | Delegate vĩnh viễn cho địa chỉ quản lý | Compliance: freeze/seize token vi phạm |
| GroupPointer / MemberPointer | Token nhóm/thành viên cho multi-token | Token gated community, subscription tier |
| DefaultAccountState | Mặc định frozen/thawed cho account mới | KYC-required token, compliance |
Tạo Token-2022 với Solana CLI
Yêu cầu: Solana CLI ≥1.18, Rust ≥1.75, Node ≥20. Tạo token có transfer fee 0.5% và metadata on-chain:
# 1. Tạo keypair cho mint authority
solana-keygen new -o ~/mint-authority.json
# 2. Tạo mint với extensions
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
--enable-metadata
--transfer-fee 50 1000000000
--authority ~/mint-authority.json
--decimals 9
# Output: Creating token under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
# 3. Khởi tạo metadata
spl-token initialize-metadata "My Stablecoin" "MYUSD"
"https://arweave.net/metadata-json-uri"
--program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
# 4. Tạo token account cho recipient
spl-token create-account --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
# 5. Mint token
spl-token mint 1000000 --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Lưu ý: program ID Token-2022 là TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb (khác SPL Token cũ TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA). Tất cả lệnh spl-token cần flag --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.



Tích hợp vào dApp với @solana/spl-token (JS/TS)
SDK hỗ trợ đầy đủ Token-2022 từ phiên bản 0.4.0+. Ví dụ tạo token account và transfer có fee:
import {
createInitializeMintInstruction,
createInitializeMetadataInstruction,
createInitializeTransferFeeConfigInstruction,
createMintToInstruction,
createTransferCheckedInstruction,
getMint,
getAccount,
TOKEN_2022_PROGRAM_ID,
ExtensionType,
} from '@solana/spl-token';
import { Connection, Keypair, Transaction, sendAndConfirmTransaction } from '@solana/web3.js';
// Tạo mint với transfer fee 0.5% (50 basis points), max fee 1 token
const mint = Keypair.generate();
const mintAuthority = Keypair.generate();
const decimals = 9;
const transferFeeBasisPoints = 50; // 0.5%
const maximumFee = 1_000_000_000; // 1 token (9 decimals)
const mintSize = ExtensionType.getAccountLen([ExtensionType.TransferFeeConfig, ExtensionType.MetadataPointer]);
const lamports = await connection.getMinimumBalanceForRentExemption(mintSize);
const tx = new Transaction().add(
SystemProgram.createAccount({
fromPubkey: payer.publicKey,
newAccountPubkey: mint.publicKey,
lamports,
space: mintSize,
programId: TOKEN_2022_PROGRAM_ID,
}),
createInitializeTransferFeeConfigInstruction(
mint.publicKey,
mintAuthority.publicKey,
mintAuthority.publicKey,
transferFeeBasisPoints,
maximumFee,
TOKEN_2022_PROGRAM_ID
),
createInitializeMetadataInstruction(
mint.publicKey,
mintAuthority.publicKey,
"My Stablecoin",
"MYUSD",
"https://arweave.net/...",
TOKEN_2022_PROGRAM_ID
),
createInitializeMintInstruction(
mint.publicKey,
decimals,
mintAuthority.publicKey,
null,
TOKEN_2022_PROGRAM_ID
)
);
Stablecoin tuân thủ (Compliant Stablecoin) trên Solana
Token-2022 cho phép phát hành stablecoin đáp ứng yêu cầu MiCA (EU), NYDFS (US), hoặc quy định Việt Nam đang soạn thảo:
- KYC/AML: DefaultAccountState = Frozen + PermanentDelegate cho compliance authority. Chỉ unfreeze sau khi verify KYC.
- Freeze/Seize: PermanentDelegate cho phép freeze tài khoản vi phạm (sanction list, fraud) hoặc seize token lệnh tòa án.
- Transfer fee: Thu phí 0.1-0.5% mỗi transfer — mô hình doanh thu cho issuer, tương tự Visa/Mastercard interchange fee.
- Confidential Transfer: Ẩn số dư/amount giữa các enterprise partner — dùng cho B2B settlement, payroll.
- Interest-bearing: Tự động tính lãi suất hàng ngày cho holder — phù hợp money market fund tokenized.
Dự án thực tế: PayPal USD (PYUSD) trên Solana dùng Token-2022 với MetadataPointer + TransferFeeConfig (0% fee hiện tại). USDC mới nhất (2024) cũng migrate sang Token-2022 để hỗ trợ institutional features.
Wallet và Explorer hỗ trợ
Hiện tại (2025 Q3):
- Phantom: Hiển thị token-2022 balance, metadata, transfer fee warning khi send.
- Solflare: Hỗ trợ đầy đủ extensions, hiển thị confidential balance (nếu user opt-in).
- Backpack: Hỗ trợ xNFT + Token-2022, giao diện quản lý extensions trực quan.
- Solscan / SolanaFM: Explorer hiển thị extension tags trên mint page, decode confidential transfer logs.
- Jupiter / Orca: Swap Token-2022 tokens bình thường (fee được trừ tự động).
Kết luận
Solana Token Extensions (Token-2022) biến token từ đơn vị giá trị đơn giản thành primitive có thể lập trình — có fee, có privacy, có compliance, có metadata, có yield — tất cả native, không cần custom contract. Với dev Việt Nam, đây là cơ hội xây dựng: stablecoin VNĐ tuân thủ, loyalty point cho chuỗi bán lẻ, RWA tokenized (bất động sản, carbon credit), DeFi primitives mới. Chi phí dev giảm 90% so với custom program, time-to-market từ tháng xuống tuần. Bắt đầu hôm nay bằng spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb trên devnet.
Solana Program Library — Token-2022, SPL Token-2022 GitHub, Solana Dev Guide — Token Extensions
