Typescript
Token2022 di Web3.js

Token2022 di Web3.js

Ekstensi Non Transferable

Ekstensi NonTransferable adalah ekstensi akun Mint yang mencegah token ditransfer antar akun, sehingga token tersebut terikat secara permanen pada pemegang saat ini.

Menginisialisasi Akun Mint

Untuk menginisialisasi ekstensi MintCloseAuthority pada akun Mint kita akan membutuhkan fungsi initializeNonTransferableMint().

Berikut cara membuat mint dengan ekstensi Non Transferable:

ts
import {
    Keypair,
    SystemProgram,
    Transaction,
    sendAndConfirmTransaction,
} from '@solana/web3.js';
import {
    createInitializeMintInstruction,
    createInitializeNonTransferableMintInstruction,
    getMintLen,
    ExtensionType,
    TOKEN_2022_PROGRAM_ID,
} from '@solana/spl-token';
 
const mint = Keypair.generate();
 
// Calculate the size needed for a Mint account with Non Transferable extension
const mintLen = getMintLen([ExtensionType.NonTransferable]);
 
// Calculate minimum lamports required for rent exemption
const lamports = await connection.getMinimumBalanceForRentExemption(mintLen);
 
// Create the account with the correct size and owner
const createAccountInstruction = SystemProgram.createAccount({
    fromPubkey: keypair.publicKey,
    newAccountPubkey: mint.publicKey,
    space: mintLen,
    lamports,
    programId: TOKEN_2022_PROGRAM_ID,
});
 
// Initialize the Non Transferable extension
const initializeMintNonTransferable = createInitializeNonTransferableMintInstruction(
    mint.publicKey,
    TOKEN_2022_PROGRAM_ID,
);
 
// Initialize the mint itself
const initializeMintInstruction = createInitializeMintInstruction(
    mint.publicKey,
    6,
    keypair.publicKey,
    null,
    TOKEN_2022_PROGRAM_ID,
);
 
// Combine all instructions in the correct order
const transaction = new Transaction().add(
    createAccountInstruction,
    initializeMintNonTransferable,
    initializeMintInstruction,
);
 
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair, mint]);
 
console.log(`Mint created! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);
Daftar Isi
Lihat Sumber
Blueshift © 2025Commit: 1e001ec