Jacky Gu

Solana开发笔记: Token2022 - 燃烧代币

01 Jan 2025 Share to

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,确认燃烧代币的交易是否成功: