You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Solana web3js工具关闭associated token关联账户

关闭Solana关联代币账户(ATA)的JS实现方案

可用依赖库

不需要额外引入非官方库,直接使用Solana官方维护的两个JS SDK即可实现操作:

  • @solana/web3.js:Solana链上基础交互工具库
  • @solana/spl-token:SPL代币标准交互工具库,内置ATA关闭的相关指令封装

具体实现步骤

1. 安装依赖

执行命令安装对应SDK:
npm install @solana/web3.js @solana/spl-token

2. 核心代码实现

// 导入依赖
import { Connection, Keypair, PublicKey, Transaction, sendAndConfirmTransaction } from '@solana/web3.js';
import { closeAccount, getAssociatedTokenAddress } from '@solana/spl-token';

// 配置参数
const RPC_ENDPOINT = '你的Solana RPC节点地址';
const connection = new Connection(RPC_ENDPOINT, 'confirmed');
// 待操作的钱包所有者密钥对,实际业务中可替换为钱包适配器签名逻辑
const ownerKeypair = Keypair.fromSecretKey(Uint8Array.from([/* 你的私钥数组 */]));
// 对应代币的Mint地址
const TOKEN_MINT_ADDRESS = new PublicKey('你的代币Mint地址');

(async () => {
  // 1. 获取目标ATA地址
  const ataAddress = await getAssociatedTokenAddress(
    TOKEN_MINT_ADDRESS,
    ownerKeypair.publicKey
  );

  // 2. 构建关闭ATA的交易
  const transaction = new Transaction().add(
    closeAccount(
      ataAddress, // 待关闭的ATA地址
      ownerKeypair.publicKey, // 关闭后SOL的接收地址,一般填所有者即可
      ownerKeypair.publicKey // ATA的所有者地址,用于权限校验
    )
  );

  // 3. 发送并确认交易
  const txSignature = await sendAndConfirmTransaction(
    connection,
    transaction,
    [ownerKeypair] // 签名者必须为ATA所有者
  );

  console.log('ATA关闭成功,交易哈希:', txSignature);
})();

注意事项

  • 关闭操作执行前必须确保ATA内的代币余额为0,否则交易会直接失败
  • 只有ATA的当前所有者签名才能触发关闭操作,签名地址不匹配会触发权限校验错误
  • ATA账户占用的SOL存储押金会在关闭成功后全额返还到指定的收款地址

内容的提问来源于stack exchange,提问作者Bart Tyson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:45:01