Jacky Gu

Solana开发笔记: 使用前端SDK燃烧代币

01 Jan 2025 Share to

使用前端SDK燃烧代币

前面一篇中,详细介绍了如何铸造代币,这篇介绍燃烧代币。

该操作无需anchor程序,在前端完成即可。

创建燃烧代币指令

tests/legacy_token.ts中添加以下测试代码,完成燃烧,将50个代币从user1的token account中燃烧掉。

  it("burn tokens", async () => {
    // Get user1's token account (ATA)
    const tokenAccount = await getAssociatedTokenAddress(mintAccount, user1Account.publicKey, false, TOKEN_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
    );

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