Post
Tornado、USDC 封禁地址,以及 Token 协议的扩展性
借 Tornado 和 USDC 封禁事件,讨论 Token 协议扩展性的边界。
美国制裁 Tornado Cash 之后,USDC 直接封禁了一批地址。很多人第一反应是:链不是去中心化的吗,为什么稳定币还能被封?
答案其实不复杂。这不是“链”本身的问题,而是 Token 协议设计里预留了怎样的扩展能力。
在 Solidity 的 ERC20 模型里,transfer 是由 Token 合约自己实现的。所以发行方完全可以在转账逻辑里加入额外限制。USDC 用它来做地址封禁,一些恶意项目也会用类似机制做“只准买不准卖”的限制。
Move 在设计 Token 模型时,会遇到另一种难题。Move 里的 Token 更像一种“自由状态”:铸造出来之后,Token 合约并不能一直控制它。用户的 Token 默认在自己的余额容器里,但用户也可以把它提取出来,放进别的容器或者别的组合结构里。这样一来,即便你在某个标准账户容器里增加封禁逻辑,用户也可以绕开这个容器,换一个没有限制的存储方式。
这也是为什么 Libra 当年在 Currency 设计里,干脆去掉了“提款”这类能力:它为了合规,牺牲了 Move 最核心的一部分自由状态特性。
所以未来如果中心化稳定币要真正进入 Move 生态,也一定会重新遇到这个问题。我的判断是:如果一种资产需要被强监管、可冻结,那它就不应该继续伪装成“自由 Token”,而应该明确用另一种类型来表达,让用户清楚它和普通 Token 根本不是同一种资产。
很多人会说,打击犯罪当然重要,Tornado 本来就被大量用于洗钱。这个判断本身没问题。但问题在于,打击犯罪不应该以牺牲金融基础设施的中立性为代价。真正应该被讨论的,不是“能不能冻结”,而是冻结能力应该放在哪一层、用什么类型表达、由谁来承担这个控制权。
从这个角度看,Tornado 和 USDC 这次事件,其实再次把一个更底层的问题暴露了出来:Token 协议到底应该是一种中立基础设施,还是应该内置越来越多的控制逻辑。这个边界如果不说清楚,后面的争论就只会越来越混乱。