Instrução Mint To
Cria novos tokens e os deposita em uma conta especificada. Apenas a autoridade de cunhagem (mint authority) pode realizar essa operação.
Antes de podermos cunhar qualquer token, precisaremos já ter:
Inicializado uma conta
Mintda qual detemos amintAuthorityInicializado uma conta de
TokenouAssociated Tokenpara onde vamos cunhar os tokens
Instrução Raw
Usando apenas a instrução "raw" sem qualquer abstração, é assim que cunhar um token ficaria:
ts
const destination = Keypair.generate();
const tokenAccount = await getAssociatedTokenAddress(
mint.publicKey,
destination.publicKey,
);
// Cria instrução de criação de ATA
const createAtaInstruction = createAssociatedTokenAccountIdempotentInstruction(
keypair.publicKey, // pagador
tokenAccount, // endereço da conta de token associada
destination.publicKey, // proprietário
mint.publicKey, // mint
);
// Cunha tokens na ATA
const mintToInstruction = createMintToInstruction(
mint.publicKey, // mint
tokenAccount, // destino
keypair.publicKey, // autoridade de cunhagem
1_000e6, // quantidade de tokens
);
const transaction = new Transaction().add(
createAtaInstruction,
mintToInstruction,
);
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
console.log(`Contas de token criadas e tokens cunhados! Confira sua transação aqui: https://explorer.solana.com/tx/${signature}?cluster=devnet`);Instrução Abstraída
É assim que as mesmas instruções ficariam abstraídas com a instrução mintTo():
ts
const destination = Keypair.generate();
const ata = await getOrCreateAssociatedTokenAccount(
connection,
keypair,
mint,
destination.publicKey
);
console.log(`Este é o seu ATA: ${ata.address}!`)
let tx = await mintTo(
connection,
keypair,
mint,
ata.address,
keypair.publicKey,
1e6,
);
console.log(`Cunhagem realizada com sucesso! Transação aqui: https://explorer.solana.com/tx/${tx}?cluster=devnet`)