Skip to content

调研:ClaimYourSOL

帮助用户关闭无用的 Solana 账户并回收租金。技术简单但解决了真实痛点。


项目背景

ClaimYourSOL 帮助用户关闭无用的 Solana 账户并回收租金(SOL)。

问题来源

在 Solana 上,每个 Token Account 创建时都需要锁定一定 SOL 作为租金。交易完成后如果不主动关闭这些账户,锁定的 SOL 就无法回收。

问题产生过程

用户购买 NFT

创建 Token Account
锁定 ~0.002 SOL 租金

NFT 卖出或转走

Token Account 余额为 0
但仍存在且锁定租金

💸 大量空账户
SOL 被白白锁定

部分平台(如 ME)会自动关闭空 Token Account,但部分不会。

核心概念回顾

概念说明
AccountSolana 链上的存储区域
Rent存储数据需支付的租金
Rent Exempt持有超过 2 年租金则免租(SOL 被锁定)
Token Account存储特定 SPL Token 的账户

实现原理

1. 查找空 Token 账户

javascript
// 获取用户所有 Token 账户
const parsedTokenAccounts = await connection.getParsedTokenAccountsByOwner(
  new PublicKey(walletAddress),
  { programId: new PublicKey(TOKEN_PROGRAM_ID) }
);

// 筛选余额为 0 的空账户
const emptyTokenAccounts = parsedTokenAccounts.value.filter(
  accountInfo => accountInfo.account.data.parsed.info.tokenAmount.amount === '0'
);

2. 计算可回收租金

javascript
const totalRent = emptyTokenAccounts.reduce(
  (total, item) => total + item.account.lamports, 0
);
console.log(`可回收: ${totalRent / 1e9} SOL`);

3. 关闭账户并回收

javascript
for (const accountInfo of emptyTokenAccounts) {
  const closeAccountInstruction = createCloseAccountInstruction(
    accountInfo.pubkey,  // 要关闭的账户
    feePayer,            // 接收余额的账户
    feePayer,            // 关闭权限
  );
  transaction.add(closeAccountInstruction);
}

完整流程

SolanaSolana RPCClaimYourSOL用户SolanaSolana RPCClaimYourSOL用户连接钱包查询所有 Token 账户返回账户列表筛选余额为 0 的空账户计算可回收总租金显示可回收金额确认回收构建 closeAccount 交易请求签名签名并发送交易租金返还到钱包 💰

商业模式

项目比例
用户收到80%
平台抽成20%
邀请返佣平台抽成的 20%(即总额的 4%)

启发

  • 技术实现并不复杂,核心就是查询空账户 + 调用 closeAccount
  • 但解决了一个真实的用户痛点
  • 这类工具如果集成到钱包中,可以成为差异化功能
  • 思路:关注用户在链上交互中的"痛点碎片",用简单工具解决