Token2022 - 燃烧代币
与转移代币一样,燃烧代币操作也无需anchor程序,在前端完成即可。
创建燃烧代币指令
在tests/token2022.ts
中添加以下测试代码,完成燃烧,将50
个代币从user1
的token account中燃烧掉。
it("burn tokens", async () => {
// Get user1's token account (ATA)
const tokenAccount = await getAssociatedTokenAddress(mintAccount, user1Account.publicKey, false, TOKEN_2022_PROGRAM_ID);
// Amount to burn: 50 tokens (considering 9 decimals)
const burnAmount = 50 * Math.pow(10, 9);
// Get initial balance
const initialBalance = await provider.connection.getTokenAccountBalance(tokenAccount);
console.log("Initial balance:", initialBalance.value.uiAmount);
// Create burn instruction
const burnIx = createBurnInstruction(
tokenAccount,
mintAccount,
user1Account.publicKey,
burnAmount,
undefined,
TOKEN_2022_PROGRAM_ID,
);
// Send transaction
const tx = new anchor.web3.Transaction().add(burnIx);
const signature = await provider.sendAndConfirm(tx, [user1Account]);
console.log("Burn transaction signature:", signature);
// Get final balance
const finalBalance = await provider.connection.getTokenAccountBalance(tokenAccount);
console.log("Final balance after burn:", finalBalance.value.uiAmount);
})
执行后,检查交易hash,确认燃烧代币的交易是否成功: