Mint Compressed Tokens
Complete guide to mint compressed tokens with mintTo(), troubleshooting, and advanced configurations.
The mintTo() function creates compressed token accounts for recipients and increases the mint's token supply. Only the mint authority can perform this operation.
Before minting compressed tokens, you need an SPL mint with a token pool for compression. This token pool can be created for new SPL mints via createMint() or added to existing SPL mints via createTokenPool().
// Mint compressed tokens - mints SPL tokens to pool, creates compressed token accounts
const transactionSignature = await mintTo(
rpc,
payer,
mint, // SPL mint with token pool for compression
recipient, // recipient address (toPubkey parameter)
payer, // mint authority
amount,
);Full Code Example
2
Minting Compressed Tokens
Run this script to mint compressed tokens to a recipient!
// 1. Setup funded payer and connect to local validator
// 2. Create SPL mint with token pool for compression
// 3. Call mintTo() with mint, recipient, and amount - mint SPL tokens to pool and create compressed token accounts
// 4. Verify via getCompressedTokenAccountsByOwner
import { Keypair, PublicKey } from '@solana/web3.js';
import { createRpc } from '@lightprotocol/stateless.js';
import { createMint, mintTo } from '@lightprotocol/compressed-token';
async function mintCompressedTokens() {
// Step 1: Setup funded payer and connect to local validator
const rpc = createRpc(); // defaults to localhost:8899
const payer = Keypair.generate();
const airdropSignature = await rpc.requestAirdrop(payer.publicKey, 1000000000); // 1 SOL
await rpc.confirmTransaction(airdropSignature);
// Step 2: Create SPL mint with token pool for compression
const { mint, transactionSignature: mintCreateTx } = await createMint(
rpc,
payer,
payer.publicKey, // mint authority
9
);
console.log("Mint with token pool for compression created!");
console.log("Mint address:", mint.toBase58());
console.log("Create mint transaction:", mintCreateTx);
// Generate recipient keypair
const recipient = Keypair.generate();
// Define amount to mint
const mintAmount = 1_000_000_000; // 1 token with 9 decimals
// Step 3: Call mintTo() with mint, recipient, and amount
// Mint SPL tokens to pool and create compressed token account
const transactionSignature = await mintTo(
rpc,
payer,
mint, // SPL mint with token pool for compression
recipient.publicKey,
payer, // mint authority
mintAmount
);
console.log("\nCompressed token minted!");
console.log("Recipient:", recipient.publicKey.toBase58());
console.log("Compressed Token Balance:", mintAmount / 1_000_000_000, "tokens");
console.log("Mint token transaction:", transactionSignature);
// Step 4: Verify via getCompressedTokenAccountsByOwner
const tokenAccounts = await rpc.getCompressedTokenAccountsByOwner(
recipient.publicKey,
{ mint }
);
if (tokenAccounts.items.length > 0) {
const balance = tokenAccounts.items[0].parsed.amount; }
return { transactionSignature, recipient: recipient.publicKey, amount: mintAmount };
}
mintCompressedTokens().catch(console.error);Troubleshooting
Advanced Configuration
Next Steps
Learn how to transfer compressed tokens you just minted.
Transfer Compressed TokenLast updated
Was this helpful?