Instrução Close Account
Fecha uma conta de token e transfere o SOL restante de aluguel para uma conta de destino. A conta de token deve ter saldo zero, a menos que seja uma conta nativa de SOL.
Antes de podermos fechar qualquer conta de token, precisaremos já ter:
Inicializado uma conta
MintInicializado uma conta de
TokenouAssociated Tokenque não tenha nenhum token dentro
Instrução Raw
Usando apenas a instrução "raw" sem qualquer abstração, é assim que fechar uma conta ficaria:
ts
// Delega um ATA
const closeAccountInstruction = createCloseAccountInstruction(
tokenAccount // conta
keypair.publickey // destino
keypair.publickey // autoridade
);
const transaction = new Transaction().add(closeAccountInstruction);
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
console.log(`Contas de token fechadas! Confira sua transação aqui: https://explorer.solana.com/tx/${signature}?cluster=devnet`);Instrução Abstraída
É assim que as mesmas instruções ficariam abstraídas com a instrução closeAccount():
ts
let tx = await closeAccount(
connection,
keypair,
ata.address, // conta de token
keypair.publicKey, // destino
keypair.publicKey, // autoridade
);
console.log(`Fechamento realizado com sucesso! Transação aqui: https://explorer.solana.com/tx/${tx}?cluster=devnet`)