Typescript
使用 Web3.js 的 SPL 代币

使用 Web3.js 的 SPL 代币

关闭账户指令

关闭一个 token account,并将其剩余的 SOL 租金转移到目标账户。该 token account 必须余额为零,除非它是一个原生 SOL 账户。

从 Token2022 开始,可以关闭供应量为 0 的 Mint 账户。

在我们关闭任何 token account 之前,我们需要已经完成以下操作:

  • 初始化一个 Mint 账户
  • 初始化一个 Token 账户或一个没有任何代币的 Associated Token 账户。

原始指令

仅使用“原始”指令而不进行任何抽象时,关闭账户的操作如下:

// Delegate an ATA 
const closeAccountInstruction = createCloseAccountInstruction(
    tokenAccount // account
    keypair.publickey // destination
    keypair.publickey // authority
);
 
const transaction = new Transaction().add(closeAccountInstruction);
 
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
 
console.log(`Token accounts closed! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);

抽象指令

以下是使用 closeAccount() 指令抽象后的操作:

  let tx = await closeAccount(
    connection,
    keypair,
    ata.address, // token Account
    keypair.publicKey, // destination
    keypair.publicKey, // authority
);
 
console.log(`Succesfully Closed!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)
Blueshift © 2025Commit: fd080b2