Typescript
SPL токен з Web3.js

SPL токен з Web3.js

Інструкція Mint To

Створює нові токени та депонує їх на вказаний рахунок. Цю операцію може виконувати лише орган емісії.

Перш ніж ми зможемо емітувати будь-який токен, нам потрібно вже мати:

  • Ініціалізований рахунок Mint, для якого ми маємо mintAuthority
  • Ініціалізований рахунок Token або рахунок Associated Token, на який ми збираємося емітувати токени

Кількість токенів, які ми емітуємо, "нормалізована" для десяткових знаків. Це означає, що якщо ми хочемо емітувати 1 токен, який має 6 десяткових знаків, нам потрібно буде фактично вказати 1e6 як кількість

Raw Instruction

Використовуючи лише "сиру" інструкцію без будь-якої абстракції, емісія токена виглядатиме так:

ts
const destination = Keypair.generate();
 
const tokenAccount = await getAssociatedTokenAddress(
    mint.publicKey,
    destination.publicKey,
);
 
// Create ATA creation instruction
const createAtaInstruction = createAssociatedTokenAccountIdempotentInstruction(
    keypair.publicKey, // payer
    tokenAccount, // associated token account address
    destination.publicKey, // owner
    mint.publicKey, // mint
);
 
// Mint tokens to ATA 
const mintToInstruction = createMintToInstruction(
    mint.publicKey, // mint
    tokenAccount, // destination
    keypair.publicKey, // mint authority
    1_000e6, // amount of tokens
);
 
const transaction = new Transaction().add(
    createAtaInstruction,
    mintToInstruction,
);
 
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
 
console.log(`Token accounts created and tokens minted! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);

Abstracted Instruction

Ось як ті самі інструкції виглядатимуть з абстракцією за допомогою інструкції mintTo():

ts
const destination = Keypair.generate();
 
const ata = await getOrCreateAssociatedTokenAccount(
    connection,
    keypair,
    mint,
    destination.publicKey
);
 
console.log(`This is your ATA: ${ata.address}!`)
  
let tx = await mintTo(
    connection,
    keypair,
    mint,
    ata.address,
    keypair.publicKey,
    1e6,
);
 
console.log(`Succesfully Minted!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)
Blueshift © 2025Commit: 6d01265
Blueshift | SPL токен з Web3.js | Емісія