返回博客
Solana

Token-2022 扩展:为什么 Solana 账户租金不同

S
Sol Slugs Team
Sol Incinerator

两种 Solana 代币在钱包里可能看起来相似,却有不同的账户存储要求。一种可能使用经典 Token Program,另一种可能使用 Token-2022,其扩展会添加状态或改变允许的操作。

要理解回收预览,不能只看显示的代币数量。你需要知道检查的是哪个账户、存储多少数据、由哪个程序拥有,以及拟执行操作有哪些条件。

Token-2022 扩展如何影响租金?

Token-2022 扩展可能增加 mint 或代币账户的数据大小,从而提高所需 SOL 存储储备。结果取决于该具体账户附带的扩展和实时网络租金设置。因此,经典代币账户租金示例并不是通用的 Token-2022 回收报价。

Token-2022 概览介绍了基于扩展的布局。应把存储问题与特定扩展是否改变转账、销毁或关闭行为区分开。账户更大和账户受限不是一回事。

扩展实际位于哪个账户?

有些配置属于 mint,另一些状态属于各个代币账户。持有人可以控制代币账户,而不控制发行方的 mint。这种区分既影响租金计算,也影响提款授权。

例如,转账费用配置与 mint 关联,而预扣转账费用金额可以记录在代币账户中。在相应扩展下,代币元数据可能与 mint 一起存储,而不是采用经典 Metaplex NFT 的相同布局。

不要把围绕某个代币找到的所有账户相加,就称为自己可回收的租金。先确定交易将使用哪个账户,再检查余额、数据长度和权限。即使钱包持有某协议的代币,你也未必有权关闭属于该协议的账户。

应关注哪些扩展?

这是一份实用检查清单,并非完整扩展目录,也不是固定的字节价格表。

扩展或状态检查内容
转账费用Mint 费用配置,以及代币账户中的预扣金额
不可变所有者代币账户布局及所有者变更限制
元数据指针或代币元数据元数据存储在哪个账户、由谁控制
永久委托人Mint 层级权限,与普通账户授权分开
CPI Guard是否允许拟采用的交易路径
保密转账状态额外余额状态及必要清理条件

Solana 分别提供转账费用元数据扩展文档。具体账户行为与经典情形不同时,请查阅相关扩展文档。

如何计算当前储备?

确定账户实际数据长度,再查询网络当前对该大小要求的免租金最低余额。Solana 提供 getMinimumBalanceForRentExemption用于此目的。

储备和账户余额回答不同的问题。储备是账户当前维持免租金状态所需金额,余额则是它实际持有的金额。历史押金、此前提款或其他余额变动,都可能使两者不同。

仅作说明,假设两个账户的代币数量相同,但数据长度不同。在相同且为正的每字节费率下,较大账户需要更高最低储备。这并不能说明任何一个账户的当前余额,也不能证明你有权回收它。

为什么零余额账户也可能关闭失败?

除了普通代币余额和关闭权限检查,Token-2022 还可能施加扩展特有条件。例如,预扣转账费用状态需要在关闭账户前妥善处理。钱包中经过四舍五入的显示值不会揭示所有这些条件。

不要仅因为可见代币余额为零,就反复提交相同的失败交易。记录账户、扩展类型和报告的错误。如果工具不支持必要的清理顺序,请先把该账户排除出批次,再进行调查。

清除特殊状态也不意味着可以使用消息或论坛帖子中找到的任意指令。操作必须使用正确权限和程序路径。请阅读当前程序规则,并与钱包请求你签署的内容进行比较。

保留 Token-2022 代币时能回收多余租金吗?

受支持的多余 lamports 回收可以保持账户开启并保留代币数据,仅提取高于必要储备的余额。网站采用保守的资格检查,因此并非所有可能的 Token-2022 配置都会成为网站候选项目。

如果目标是保留代币和账户,而不是销毁持仓,这种方式很有用。它不会移除最低储备,也不会授予 mint 权限。关于准确指令和签名者要求,请参阅 Solana 上的 WithdrawExcessLamports

Wrapped SOL、受保护账户、锁定的 CPI Guard 配置及其他排除状态,都需要各自的处理方式。当前回收选择中没有某项目,不应被当作可以手动绕过这些限制的许可。

如何比较不同资产的回收金额?

比较相同类型的操作。关闭空账户、销毁并关闭代币账户,以及从保留账户提取多余余额,是不同操作。它们可能释放不同的毛额,并产生不同成本。

先看来源账户的实际余额和该操作允许回收的金额,再计入协议或合作方费用、网络成本及必要准备成本。如果两个预览采用不同操作路径,就不要把全部差额都归因于“Token-2022 租金”。

有用的检查笔记应记录程序、mint、数据长度、扩展状态、所选操作及预计净变化。这样既能解释意外预览,也能为支持团队提供足够调查信息,无需钱包秘密信息。

遇到陌生扩展,最安全的下一步是什么?

在理解相关账户和权限之前,不要选中该资产。开始时进行只读检查就足够了。如果只是想让界面整洁,可以把钱包显示选项与链上操作分开考虑。

理解账户后,在 Sol Incinerator 中使用受支持流程并查看当前报价。了解扩展的清理方式,是为了让交易匹配真实账户状态,而不是把每种资产都硬套进经典代币模板。

Sol Incinerator

Sol Incinerator

根据账户当前状态,检查受支持的 Token-2022 回收项目。

立即试用

相关阅读

常见问题

为什么 Token-2022 账户可能需要更多租金?

扩展可以向 Token-2022 mint 或代币账户添加数据,增加需要资金支持的存储空间。因此,不同扩展组合可能需要不同储备。请检查实际账户数据长度并查询实时租金要求,不要把一种经典代币账户金额套用到所有扩展账户。

空的 Token-2022 账户总能关闭吗?

可见代币余额为零并非唯一可能的关闭条件。扩展可能要求清除额外状态,例如预扣转账费用。账户权限和受支持的交易路径也很重要。应以当前资格结果和模拟为依据,而不是对每个看似为空的账户强行使用通用关闭指令。

代币持有人能回收 mint 扩展中的租金吗?

持有代币不会自动获得 mint 账户权限。钱包可能控制自己的代币账户,而 mint 由发行方或程序控制。任何 mint 层级回收都需要正确的签名者模型和受支持操作;元数据或扩展存储并非自动可退还给每个持有人。

Token-2022 扩展:为什么 Solana 账户租金不同 | Sol Incinerator