返回博客
Solana

如何从 Solana 代币铸币账户中回收多余的 SOL

S
Sol Slugs Team
Sol Incinerator

定价和功能依据已核实 2026年9月3日.

Solana 铸币账户不只是粘贴到区块浏览器中的地址。它是由代币程序所有的链上账户,并持有 SOL 以保持免租。如果该账户拥有的 lamport 超过当前所需额度,盈余或许可以回收,但必须由正确的签名者签名。

能否从 Solana 代币铸币账户中回收 SOL?

可以,前提是铸币账户持有的 lamport 高于实时租金储备金,并且必要的铸币权限方能够签名。 WithdrawExcessLamports 仅转移这部分盈余。它不会改变代币供应量、精度、铸币权限、冻结权限、扩展,也不会改变代币持有者的余额。

一个 82 字节的传统铸币账户过去需要 0.0014616 SOL 在每字节 6,960 lamport 的设置下。Token-2022 铸币账户可能更大,因为其扩展会增加数据量。切勿仅根据传统大小判断是否符合条件;应读取铸币账户的实际 lamport 余额和当前储备金。

谁有权从铸币账户提取资金?

代币程序的权限规则 取决于该铸币账户是否仍有铸币权限:

铸币账户状态必要签名者网站支持范围
当前铸币权限方为已连接钱包该钱包当铸币账户被识别为候选项时支持
铸币权限方为代币多签账户需要 M--of-N 签名者直接的 API/集成场景,不在网站自动支持范围内
铸币权限方为另一个钱包另一个钱包已连接的持有者无法操作
铸币权限已撤销;铸币账户由密钥对创建铸币账户的原始密钥对如果密钥仍然存在,由源签名者直接签名
铸币权限已撤销;铸币账户为非曲线或由程序控制铸币账户(通过其所属程序)需要所属程序通过 CPI 进行调用

持有某个铸币账户发行的代币,并不意味着您是该铸币账户的所有者或权限方。铸币账户归代币程序所有;由其配置的权限决定谁能授权执行此指令。

切勿在网站中输入或上传铸币账户密钥对、钱包私钥或助记词。少见的源密钥对场景应通过本地且经过审核的开发流程处理。Sol Incinerator 的浏览器流程只会请求已连接钱包签署其有权批准的交易。

Sol Incinerator 如何发现铸币账户盈余?

网站没有通用的链上查询方式来查找“此钱包可以控制的所有铸币账户”。浏览器会向后端提供一组数量有限且钱包可见的候选铸币账户,随后后端根据实时状态逐一验证:

  1. 该地址必须归传统代币程序或 Token-2022 所有。
  2. 其数据必须能够解码为铸币账户,而非其他账户类型。
  3. 其 lamport 余额必须高于按实际数据长度计算的当前储备金。
  4. 其当前铸币权限方必须是作为单一签名者的已连接钱包。
  5. 同一清理方案中的其他已选操作不得同时处理该铸币账户。

这有意使自动支持范围保持保守。未显示的铸币账户可能不符合条件,可能需要不同的签名者模式,也可能只是未出现在网站的候选集中。

铸币账户可以返还多少 SOL?

总金额为:

mint lamports − current reserve for the mint's data length

例如,如果一个从未操作过的传统铸币账户仍持有旧版 0.0014616 SOL 储备金,并且首个拟议的租金阶段生效,其重新计算后的储备金将为 0.00132993 SOL。在满足条件的情况下,总盈余将为 0.00013167 SOL.

该示例假设特性门控(feature gate)已激活、铸币账户仍为 82 字节、没有 lamport 被转移,且此前未进行过提取。网站会读取实时数值,而不会将该示例套用于所有铸币账户。

Sol Incinerator 通过其 Assetcinerator 封装器,按总盈余的 200 个基点(即 2%)收取费用。常规网络交易费另行计算。直接进行 API 集成时还可配置已披露的合作方费用,因此集成方应使用预览响应,而不是根据本文计算用户的到账金额。

提取后铸币账户会怎样?

只有其 lamport 余额会发生变化。铸币账户仍处于已初始化且免租的状态。以下数值不会变化:

  • 总供应量;
  • 精度;
  • 铸币权限和冻结权限;
  • Token-2022 扩展;
  • 与该铸币账户关联的所有代币账户;以及
  • 所有持有者的余额。

由于铸币账户仍保持开放,后续租金阶段可能再次产生盈余。除非铸币账户的权限配置发生变化,否则届时仍适用相同的权限规则。

如果铸币权限已撤销,该怎么办?

撤销铸币权限通常是为了固定供应量。这不会将提取权限转给代币持有者,也不会转给最初创建铸币账户的钱包。

对于 WithdrawExcessLamports,源铸币账户本身将成为必要签名者。由密钥对创建的曲线上铸币账户,只有在仍有人控制该确切密钥对时才能签名。程序派生或其他不在曲线上的铸币账户,只能由所有者程序通过正确的 CPI 签名。普通钱包网站无法生成其中任何一种签名。

因此,即使盈余在链上可见,也可能无法取回。这些 lamport 并非自动被放弃;可能只是必要的签名路径已不再可用。

开发者能否使用 Sol Incinerator API?

v2 API 为受支持的集成提供三条经身份验证的路由:

  • POST /withdraw-excess-lamports/preview 以检查实时资格和费用;
  • POST /withdraw-excess-lamports 以构建交易;以及
  • POST /withdraw-excess-lamports-instructions 以返回用于更大规模集成的指令。

请求会标识 userPublicKeysourceAccount,带有可选的 authorityPublicKeymultisigSignerPublicKeys。返回的交易仍须由所有必要的权限方在本地签名。API 不会接收私钥,也无法绕过代币程序的签名者检查。

阅读详细的 WithdrawExcessLamports 开发者指南 ,然后再集成权限已撤销、多签或由 CPI- 控制的铸币账户。

Sol Incinerator

Sol Incinerator

扫描钱包可见的候选铸币账户,并预览符合条件的多余 SOL。

立即试用

相关阅读

常见问题

Solana 代币铸币账户能否持有可回收的 SOL?

可以。铸币账户是一个拥有自身 lamport 余额和免租储备金的代币程序账户。如果余额高于实时储备金,在必要权限方签名后,WithdrawExcessLamports 即可转移盈余。铸币供应量、精度、权限及其他铸币数据均保持不变。

谁可以从代币铸币账户中提取多余的 SOL?

具有有效铸币权限的铸币账户需要该权限方签名。如果铸币权限已撤销,则必须由铸币账户本身签名:通过其原始的曲线内密钥对(on-curve keypair),或者由控制非曲线(off-curve)铸币账户的程序通过 CPI 进行签名。代币持有者不能仅凭持有代币就进行签名。

Sol Incinerator 能否找到钱包控制的每个铸币账户?

不能。网站只会提交一组数量有限且钱包可见的候选铸币账户,并且仅包含当前单一签名者铸币权限为已连接钱包的铸币账户。多签、权限已撤销、由程序控制或其他未被发现的铸币账户,需要兼容的直接集成以及必要的签名者。

从铸币账户提取 SOL 会改变代币供应量吗?

不会。WithdrawExcessLamports 只会改变铸币账户的 lamport 余额,且不会使其低于当前免租储备金。代币供应量、精度、铸币权限、冻结权限、扩展及每位持有者的代币余额都会与交易前完全相同。

如何从 Solana 代币铸币账户中回收多余的 SOL | Sol Incinerator