A complete, production-grade toolkit for deploying and managing stablecoins on Solana using Token-2022 extensions.
The project defines two compliance presets — SSS-1 (minimal) and SSS-2 (compliant with blacklist enforcement) — and provides everything needed to go from zero to a fully operational stablecoin: a CLI for operators, a TypeScript SDK for integrators, a REST backend for infrastructure, an on-chain Anchor program for transfer-hook compliance, and a React demo that ties it all together.
- Video Demo — Full walkthrough of the CLI, SDK, backend, and React demo
Programs deployed (devnet):
- SSS-Core Program — Stablecoin config, RBAC, quotas, seize
- Blacklist Transfer Hook Program — Transfer-hook blacklist enforcement
On-chain examples (devnet):
- SSS-2 Stablecoin Deployment — Deployed token with blacklist transfer hook
- Mint Transaction — Minting tokens to a recipient
- Blacklist Transaction — Adding a wallet to the blacklist
- Unblacklist Transaction — Removing a wallet from the blacklist
- Transfer After Unblacklist — TransferChecked succeeding after unblacklist
solana-stablecoin-standard/
├── programs/sss-core/ Anchor program — stablecoin config, RBAC, quotas, seize
├── transfer_hooks/blacklist/ Anchor program — transfer-hook blacklist (SSS-2)
├── tests-litesvm/ LiteSVM Rust-native fuzz & integration tests
├── cli/ Command-line interface for deploying & managing stablecoins
├── sdk/ TypeScript SDK wrapping all on-chain operations
├── backend/ REST API service (mint/burn lifecycle, webhooks, event listener)
├── demo/ React + Phantom wallet demo app
└── docs/ Full documentation
| Standard | What it provides | Token-2022 Extensions |
|---|---|---|
| SSS-1 | Minimal stablecoin — mint/burn, freeze, on-mint metadata | Metadata Pointer |
| SSS-2 | SSS-1 + compliance — blacklist enforcement via transfer hook, KYC-gated accounts | Metadata Pointer, Transfer Hook, DefaultAccountState::Frozen |
SSS-Core features: RBAC roles, per-minter quotas, supply cap, triple-layer pause (Token-2022 + SSS-Core + hook), metadata updates, compliance toggle, burn-from-any-account, and reserve attestation (proof-of-reserve for GENIUS Act compliance) — with a feature-gated module system (compliance, quotas, supply-cap) that lets issuers strip modules they don't need at compile time.
See docs/SSS-1.md and docs/SSS-2.md for the full specifications.
cd cli && npm install && npm run build
# Generate a starter config
npx solana-stable init --preset sss-1
# Edit sss-token.config.toml (set authorities, name, symbol)
# Then deploy
npx solana-stable init --custom sss-token.config.toml
# Mint tokens
npx solana-stable operate mint <recipient-wallet> 1000000
# or (flat, backward-compatible):
npx solana-stable mint <recipient-wallet> 1000000The CLI organizes commands into groups: operate (mint/burn/transfer), admin (freeze/thaw/pause/set-authority), compliance (blacklist management), and inspect (status/supply/balance/audit-log). Flat commands still work for backward compatibility.
import { SolanaStablecoin, Presets } from "sss-token-sdk";
const stable = await SolanaStablecoin.create(connection, {
preset: Presets.SSS_1,
name: "My Dollar",
symbol: "MUSD",
decimals: 6,
authority: adminKeypair,
});
await stable.mintTokens({ recipient: walletPubkey, amount: 1_000_000n, minter: adminKeypair });
const supply = await stable.getSupply();cd backend && npm install
cp .env.example .env
# Edit .env with your mint address and keypair
npm run devcd demo && npm install
npm run dev
# Open http://localhost:5173, connect Phantom, enter your mint address in Settings| Document | Contents |
|---|---|
| docs/SSS-SPEC.md | Formal specification — SSS-1, SSS-2, SSS-Core, SDK/CLI interface |
| docs/README.md | Overview, quick start, preset comparison, architecture diagram |
| docs/ARCHITECTURE.md | Layer model, data flows, security model |
| docs/SDK.md | Presets, custom configs, TypeScript examples |
| docs/OPERATIONS.md | Operator runbook (mint, freeze, blacklist, etc.) |
| docs/SSS-1.md | Minimal stablecoin standard specification |
| docs/SSS-2.md | Compliant stablecoin standard specification |
| docs/COMPLIANCE.md | Regulatory considerations, audit trail format |
| docs/API.md | Backend REST API reference |
Each component also has its own README:
- programs/sss-core/README.md — SSS-Core program (RBAC, quotas, seize)
- transfer_hooks/blacklist/README.md — Blacklist hook program
- cli/README.md — CLI usage and config reference
- sdk/README.md — SDK API and examples
- backend/README.md — Backend setup and endpoints
- demo/README.md — React demo app
- On-chain: Solana, Token-2022, Anchor Framework (Rust)
- CLI: TypeScript, Commander, TOML config
- SDK: TypeScript,
@solana/web3.js,@solana/spl-token - Backend: Express, Pino, Docker
- Demo: React, Vite, Tailwind CSS, Solana Wallet Adapter
The React demo provides a full management UI with Phantom wallet integration.
Configure the RPC endpoint, mint address, token program, and transfer hook program ID.
Live view of supply, decimals, your wallet balance, and on-chain authorities.
Mint tokens to any wallet or burn from your own — every action triggers a Phantom signature prompt.
Freeze, thaw, check balances, and update authorities.
Add or remove wallets from the on-chain blacklist and check status in real time.
MIT




