---
title: Tornado、USDC 封禁地址，以及 Token 协议的扩展性
date: '2022-08-10 05:43:10'
draft: false
summary: 借 Tornado 和 USDC 封禁事件，讨论 Token 协议扩展性的边界。
slug: tornado-usdc-and-token-extensibility
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/4800912940074251
- platform: X / Twitter
  url: https://x.com/jolestar/status/1557241122187268096
tags:
- token
- usdc
- security
topics:
- crypto
type: post
---

美国制裁 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 协议到底应该是一种中立基础设施，还是应该内置越来越多的控制逻辑。这个边界如果不说清楚，后面的争论就只会越来越混乱。
