Typescript
SPL Token com Web3.js

SPL Token com Web3.js

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 Mint da qual detemos a mintAuthority

  • Inicializado uma conta de Token ou Associated Token para onde vamos cunhar os tokens

A quantidade de tokens que cunhamos é "normalizada" para decimais. Isso significa que, se quisermos cunhar 1 token que tem 6 decimais, precisaremos colocar 1e6 como quantidade

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`)
Blueshift © 2026Commit: 1b88646