Typescript
Token2022 mit Web3.js

Token2022 mit Web3.js

Die Non Transferable Erweiterung

Die NonTransferable Erweiterung ist eine Mint Kontoerweiterung, die verhindert, dass Token zwischen Konten übertragen werden können, wodurch sie dauerhaft an ihre aktuellen Besitzer gebunden sind.

Initialisierung des Mint-Kontos

Um die MintCloseAuthority Erweiterung auf einem Mint Konto zu initialisieren, benötigen wir die initializeNonTransferableMint() Funktion.

Hier ist, wie man einen Mint mit der Non Transferable Erweiterung erstellt:

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`);
Blueshift © 2025Commit: e573eab