Mint Tokens
Mint tokens of an existing token
New Way
import { TOKEN_PROGRAM_ADDRESS, findAssociatedTokenPda, getMintToInstruction } from "@solana-program/token";
import { createSolanaRpc, createSolanaRpcSubscriptions, sendAndConfirmTransactionFactory, pipe, createTransactionMessage, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, getSignatureFromTransaction, setTransactionMessageFeePayerSigner, appendTransactionMessageInstructions, createKeyPairSignerFromBytes, address } from "@solana/web3.js";
import walletSecret from '../wallet.json';
async function mintTokens() {
const rpc = createSolanaRpc('http://127.0.0.1:8899');
const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');
const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions });
const payer = await createKeyPairSignerFromBytes(new Uint8Array(walletSecret));
const mint = address('ERrUbrQcDf6EzChT8gTonvsKTiRrTG9YVhMDJhruHcjP'); // make sure its already created
const [ata] = await findAssociatedTokenPda({
mint: mint,
owner: payer.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
});
const instructions = [
getMintToInstruction({
mint: mint,
token: ata,
amount: BigInt(1_000_000_000),
mintAuthority: payer.address
})
];
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
const transaction = pipe(
createTransactionMessage({ version: 0 }),
(tx) => setTransactionMessageFeePayerSigner(payer, tx),
(tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),
(tx) => appendTransactionMessageInstructions(instructions, tx)
);
const signedTransaction = await signTransactionMessageWithSigners(transaction);
try {
await sendAndConfirmTransaction(signedTransaction, {
commitment: 'processed',
skipPreflight: true
});
const signature = getSignatureFromTransaction(signedTransaction);
console.log(`Tokens minted to: ${ata} Signature: ${signature}`);
} catch (e) {
console.error('Transaction failed:', e);
throw e;
}
}
mintTokens();
Old Way
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
import { mintTo } from '@solana/spl-token';
import walletSecret from './wallet.json' assert { type: "json" };
const mintTokens = async () => {
try {
const wallet = Keypair.fromSecretKey(new Uint8Array(walletSecret));
const connection = new Connection('http://127.0.0.1:8899', 'confirmed');
const TOKEN = new PublicKey('4RWxatXMBct4NQxVG39SXenRbTzSsXvAYBNm8WTXEcxa');
const TOKEN_ACCOUNT = new PublicKey('4dbNk9diMY8R4sKQEjhvotvsKCSUPEUG2m4QqWvcjpVj');
await mintTo(
connection,
wallet,
TOKEN,
TOKEN_ACCOUNT,
wallet.publicKey,
10000 // number of tokens - remember to factor in the decimals
);
console.log(`Minted 10000 tokens to ${TOKEN_ACCOUNT.toBase58()}`);
return {
mintAddress: TOKEN.toBase58(),
tokenAccountAddress: TOKEN_ACCOUNT.toBase58()
};
} catch (error) {
console.error('Token creation failed:', error);
throw error;
}
};
mintTokens();