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`,
);
Expand
[12 more lines]

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`,
);
Expand
[1 more lines]
Blueshift © 2026Commit: 3c44267