Token-2022转账费怎么收? 图 1
Token-2022转账费怎么收? · 图 1

普通SPL Token转账常按“发送多少、收到多少”理解,启用Token-2022 Transfer Fee后会多出第三个数:withheld fee。发送账户扣除总额,接收账户可用余额增加净额,费用作为暂扣字段留在接收Token账户,之后才能被汇集和提取。

费用流转的三个链上事实

  1. Transfer Fee扩展按basis points计算费用,并受maximum fee上限约束;接收账户获得扣费后的净额。
  2. 费用先以withheld amount记录在接收Token账户,之后可汇集到Mint并由withdraw authority提取。
  3. transfer fee config authority可更新未来费率配置,withdraw withheld authority负责提取,两种权限应分别核验。
项目计算或位置谁能改变
basis points转账额的万分比transfer fee config authority
maximum fee单笔费用上限transfer fee config authority
withheld amount接收Token账户或Mint协议指令迁移
提取权限提取已暂扣费用withdraw withheld authority

先算比例,再应用上限

费用按转账原始整数数量乘basis points并按规范舍入,再与maximum fee比较取较小值。代币decimals只负责展示,不改变链上整数公式。钱包若先把小数转成浮点数再计算,容易出现精度或方向错误,应使用大整数并展示总额、费用和净额。

费用为什么在接收账户

扩展把费用暂存在每个接收Token账户的withheld amount中,这部分不能由普通持有人花费。管理方可把多个账户的暂扣费用汇集到Mint,再由withdraw authority提取。数据索引器只看可用余额变化会漏掉费用库存,必须解析Token-2022扩展字段。

钱包展示转账费的步骤

  1. 确认Mint由Token-2022程序管理并启用扩展
  2. 读取当前与下一期费率及maximum fee
  3. 用整数计算总额、费用和净额
  4. 分别核对config与withdraw authority
  5. 转账后检查可用余额和withheld字段

地址与账户读取可结合Solana ALT解析,延迟或多签发送参考Durable Nonce;任何代币仍应先按合约地址核验确认Mint来源。

两种authority要分别审计

config authority能更新费率配置,withdraw authority能取走已收费用。它们可能是不同地址、多签或已被永久取消。用户在转账前应读取当前epoch适用配置和计划中的新配置;不能把项目网页的百分比当成链上实时值。

转账费不是网络费

转账费不是Solana基础网络费,也不支付给验证者;它是Mint自身规则。接收方看到净额不代表发送方钱包偷扣,关键是交易预览是否准确展示扩展配置。反之,界面没有展示费用也不意味着链上不会扣。