关闭账户指令
关闭一个 token account,并将其剩余的 SOL 租金转移到目标账户。该 token account 必须余额为零,除非它是一个原生 SOL 账户。
在我们关闭任何 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`)