在 Solana 上买新币,老手有一套固定动作:查 mint 权限有没有放弃、freeze 权限有没有放弃、LP 池有没有烧掉。这套动作管用了好几年,因为老 SPL 代币能拿捏你的地方就那么多。

Token-2022 之后,这套动作不够用了。

Token-2022 是 Solana 官方的第二套代币标准,正式名字叫 Token Extensions。账户模型没变,变化在于允许给铸币账户和持币账户加「扩展」。大部分扩展只能在创建账户那一刻开启,之后加不上(Solana 文档)。对买家来说这是好事:页面上看到什么,代币就是什么,不存在「先装正常、后面偷偷开权限」。

坏处是,页面上能看到的东西,你可能不会看。

五个会改变你亏损上限的扩展

下面这五个,每一个都是正经功能,每一个都能对着持有人用。

永久委托(PermanentDelegate)。 铸币账户可以指定一个委托方,这个委托方可以授权该代币任意持币账户的转账和销毁,作用相当于全局代理,持币人自己取消不了。mint 权限方之后还能用 SetAuthority 换掉这个委托地址(Solana 文档)。翻成人话:这个地址不需要你的签名,就能把你手里的币转走;换人也不需要你同意。

这里就是老习惯失效的地方。freeze 权限是「不让你动」,永久委托是「替你动」。而且放弃 mint 权限并不会顺手清掉已有的永久委托,因为委托本身就是一个独立权限。

转账钩子(TransferHook)。 铸币账户可以要求每笔转账都调用一个外部程序,这个程序拒绝,转账就不成立(Solana 文档)。文档里明确写了,转账方的签名权限不会传递给钩子程序,这个设计本身是对的,但帮不了你:钩子完全可以写成允许买入、拒绝卖出,只对白名单地址放行。这是写在代币标准层的貔貅,任何授权列表都看不出来。

默认冻结(DefaultAccountState)。 这个扩展决定该代币新建持币账户的初始状态。如果默认是冻结,你买进来的币直接落在一个冻结账户里,要等项目方解冻才能转。钱包里余额是真的,K 线也是真的,出口在别人手上。

可暂停(Pausable)。 暂停权限可以把整个代币停下来,暂停期间转账、增发、销毁全部被代币程序拒绝,恢复后照常(Solana 文档)。这是正经的合规功能,也是一颗能在你持仓期间被按下的按钮。

转账税(TransferFee)。 铸币账户可以对每笔转账抽税,税率和上限由费率权限设定,钱是从到账金额里扣的,不是另扣一笔。税率够高,K 线上有流动性也等于没有。另外还有不可转让(NonTransferable)的变体,字面意思,偶尔会出现在宣传成「可以交易」的币上。

除此之外还有保密转账(藏金额)、生息余额、元数据指针等等。真正决定你仓位能不能动、会不会被划走、卖不卖得掉的,主要是上面五个。

为什么「权限已放弃」这句话不够了

放弃 mint 权限,意味着没人能继续增发。放弃 freeze 权限,意味着没人能直接冻结你的账户。这两句话,都不涉及永久委托、转账钩子和默认冻结。

因为它们是各自独立的权限,挂在各自独立的扩展上。

常见的跑路检测只扫基础账户和池子,于是一枚带着「只放行白名单卖出」的转账钩子币,会被报成安全。这不是理论上的缝隙,扩展的设计目的就是让发行方在代币层执行规则。发行方老实,规则就是产品;发行方不老实,规则就是陷阱。两种情况的链上数据长得一模一样,区别只在权限地址是谁、钩子程序在拦谁。

买之前怎么查

需要三个信息:铸币账户归哪个程序管、开了哪些扩展、每个扩展的权限在谁手里。

  1. 看 owner 程序。 在 Solscan 或 Solana Explorer 打开铸币地址。老 SPL 代币 owner 是 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA;Token-2022 是 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb。如果是后者,别停在持有人标签页。
  2. 看扩展列表。 代币页会列出启用的扩展。装了 Solana CLI,也可以本地跑 spl-token display <铸币地址>,用自己的 RPC 拉一遍状态。
  3. 看权限地址。 永久委托、暂停权限、冻结权限、费率权限、钩子程序,各看一遍。然后问一个更简单的问题:这些地址里,有没有你认不出来是谁的,或者能被悄悄换掉的?

如果永久委托挂在一个你不认识的地址上,最诚实的解读就是:有人能拿走你手里的币。你不需要证明他一定会动手,你只需要把这个可能性算进仓位。

你原来的防御,有一半在这里无效

取消授权没用。取消授权管的是 allowance,也就是某个合约最多能拉多少。永久委托不需要 allowance,转账钩子不是花费方,可暂停代币根本不需要你的钱包同意。你可以一笔授权都没签过,仍然卖不出去。

钱包弹窗也没用。钱包负责显示「你要签什么」,如果陷阱在铸币配置里,你签的就是一笔普普通通的 swap,拦截发生在代币程序那一步。

真正有用的还是那些笨办法:新币控制仓位、不熟悉的铸币用单独钱包、买之前看扩展而不是跌了之后看群、把「mint 权限已放弃」当成一个勾,而不是整份体检报告。

一份买前清单

  • owner 是 Token-2022 的话,打开扩展列表,别只看持有人。
  • 有永久委托:搞清权限在谁手里。答案是「团队」的话,等于把余额交给团队保管。
  • 有转账钩子:找到钩子程序。看不懂它拦什么,就按最坏情况算仓位。
  • 默认冻结:你的第一笔买入可能是单程票。
  • 可暂停:别人可以在他选的时间点停掉交易,包括顶部。
  • 有转账税:算到账金额,别算 K 线价格。
  • 流动性仍然是硬条件。权限再干净,两万美元的池子也是进得去出不来的仓位。

Token-2022 不是坏标准。它只是把「代币规则」变成了「代币风险」的一部分,而老三样只覆盖了最外面那一层。

基础那一层,也就是 mint 权限、freeze 权限、LP 池怎么查,写在 Solana 代币安全指南里。这篇讲的是上面那一层:那三个勾打完之后,铸币账户还能对你做什么。

钱包侧的同类问题,可以接着看无限授权和买币前怎么验证一个代币。它们解决的是「你给了别人什么」,这篇解决的是「代币本身就带着什么」。

资料来源

常见问题

Token-2022 到底是什么?

Solana 的 Token Extensions 计划,是第二套代币标准。它在普通代币的基础上,允许在铸币账户或持币账户上开启「扩展」,比如永久委托、转账钩子、转账税、保密余额、可暂停转账。大部分扩展只能在创建账户时开启,之后改不了。

怎么判断一个 Solana 代币是不是 Token-2022?

看铸币地址的 owner 程序。老 SPL 代币的 owner 是 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA;Token-2022 代币是 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb,代币页面会把启用的扩展列出来。装了 Solana CLI 的话,spl-token display <铸币地址> 也能直接看到扩展和权限。

有永久委托的代币,项目方可以直接把我的币转走吗?

能。永久委托是铸币层级的全局权限,可以授权任意持币账户的转账和销毁,持币人无法撤销。而且 mint 权限方之后还能用 SetAuthority 把委托地址换掉,所以你今天查到的地址不代表明天还是它。

取消授权(revoke)能防住这些扩展吗?

不能。取消授权管的是 allowance,也就是某个合约最多能拉走多少。永久委托不走 allowance,转账钩子是转账路径本身的一部分,可暂停代币根本不需要你的钱包配合。你可能一笔授权都没有,照样卖不出去。

Token-2022 本身是骗局吗?

不是。它是 Solana 官方代币程序,正经项目在用它做转账税、合规控制、保密余额这些真功能。问题在于,站在买家视角,一个合规功能和一枚陷阱长得一模一样,区别只在权限在谁手里、钩子程序到底在拦谁。

已经买了带永久委托或暂停权限的币怎么办?

把它当成「第三方随时可撤销的仓位」。有流动性就自己判断值不值得先出来;如果已经被暂停或账户被冻结,链上没有出口。不要为了摊低成本继续加仓。