作者:黄世亮
来源:闪电HSL
原文标题:《如何拉黑加密数字货币——从稳定币(USDC 和 USDT)黑名单地址说起》
加密数字货币是去中心化的存在,币圈一直以币无法被冻结为骄傲。但事实上,币圈最大的两个稳定币 USDT 和 USDC,现在都有一个黑名单地址,在黑名单上的 USDT 和 USDC 都无法使用。
这是不是打破了加密数字货币不可被冻结的神话?
USDC 和 USDT 被冻结
USDC 是在以太坊上发行的一个 ERC20 代币,锚定美元的稳定币,使用智能合约发行。合约账户为:
USDC 合约:
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
近日 USDC 被新闻报出将一个 10 万 USDC 的地址列入黑名单,这意味着这个地址上 10 万美元的资产将不可被使用。这和银行冻结银行卡是一样的。
USDC 合约的黑名单地址也是不可以接收新的 USDC 的。
USDT 是币圈最著名的稳定币,也有 ERC20 版本的 USDT,合约账户为:
USDT ERC20 版合约:
0xdac17f958d2ee523a2206206994597c13d831ec7
目前这个 USDT ERC20 合约也有一个黑名单地址,一共有 40 个以太坊地址,冻结了上百万的 USDT。
USDT black list:
https://explore.duneanalytics.com/public/dashboards/3zhIaRUCFgmZMKqHG0pguvSvw1aOGL8gxFtZ2ujf
USDC 官网是明确说明,USDC 合约是带有黑名单功能的,见下:
The only circumstance where a transfer might fail to be executed by the USDC smart contract is when either the sender or receiver wallet address has been blacklisted.
USDC 智能合约维护着一个全球黑名单地址,可以禁止和冻结其接收发送 USDC。
使用智能合约规则来禁止和冻结币
USDT 除了 ERC20 版本的代币外,还在其他多条链上均发布了代币。BTC 上发行了 omni 版本的 USDT,波场上有 TRC20 版的 USDT,在 BCH 上有 slp 版的 USDT……
USDT 的 ERC20 和 TRC20 版本都是采用智能合约来发行,即 Tether 公司在以太坊上写了一个代码并部署在以太坊网上,波场也一样。
智能合约代码就可以定义所有的 USDT 规则,其中就可以包括黑名单禁用地址。任何 USDT-ERC20 的转账是要依赖于 USDT-ERC20 这个合约代码的执行。这就非常容易在代码里设定黑名单规则。
智能合约代码写的规则不是以太坊的共识规则,比如 USDT-ERC20 合约是无法禁止其黑名单地址接受和花费以太币及其他代币。一个合约只能够禁止合约自己的代币。只要你持有一个地址的私钥,那你还是可以花费上面的 ETH,哪怕是该地址在 USDT-ERC20 的黑名单地址上。
一个智能合约的规则是由项目方来定义的,这不是以太坊的共识规则。所以一个智能合约发行的代币的信用和价值是要依赖于项目方的。项目方有能力也有权通过合约代码来定义其代币。
以太坊上的智能合约是不可篡改的(理论上是可以改,但很难,目前以太坊社区公认为合约规则不可随便改)。一个合约发布后,其代币规则就定义好了。USDC 和 USDT 的黑名单功能是在合约发布时定义好的。
BTC 的 omni 和 BCH 的 SLP
USDT-omni 和 USDT-slp 这两个版本的 USDT 不是使用智能合约技术,采用的是比特币的 Op-return 字段附代特殊信息的技术。
Op-return 是 BTC 和 BCH 的交易输出的一种,这是比特币交易的一部分,这是比特币协议的共识规则。
Op-retrun 在功能上相当于写备注信息的小纸条,就像你在银行转账时的备注信息一样。
Omni 和 slp 协议都是在交易的 op-return 字段里填写信息来实现代币功能的。omni 和 slp 代币的交易都是 BTC 和 BCH 交易中的交易。你要发一笔 omni 代币交易,是要在发一笔比特币交易里内置一笔 omni 代币交易,slp 交易也一样。
所以说,omni 和 slp 交易是「交易内的交易」,这些交易都要遵守比特币协议规则。
opreturn 里的信息具体写的是什么,比特币协议是不管的。使用 omni 和 slp 协议来发代币,则是将代币规则写进 opreturn 里。所以代币规则是受 omni 和 slp 协议的约束,而 omni 和 slp 协议也是需要写一套代码来追踪和检查代币交易是否遵守规则。
理论上,omni 和 slp 协议也可以内置地址黑名单功能,但是这两个协议都已经写好了,并且已经获得了 BTC 和 BCH 的共识,协议里不带黑名单功能。
所以我们看不到 Tether 公司推出 USDT-omni 的黑名单地址。
ETH-智能合约和 omni\slp
以太坊的智能合约是由第三方书写并发布的,合约代码规则是由项目方决定。使用智能合约发行代币,项目方有权有能力决定代币的功能,包括黑名单。
而 omni 和 slp 协议,是 BTC 和 BCH 的第二层协议,协议已经定义好了,已经成了网络共识的一部分。使用 omni 和 slp 协议来发代币,绝大多数功能是受到了协议的约束,远不如智能合约那么灵活。
所以你看 omni 和 slp,本质上就只有孤零零的发币功能。虽然理论上 omni 定义好了交易功能,但我们根本看不到产品。理论上 slp 协议也定义好了非同质化代币(ERC721)功能,但我们也没看到产品。这都是因为协议定死了,留给开发者的发挥空间太窄。
而反观智能合约,允许开发者使用代码实现任何想象。这也是我们看到了以太坊上什么乱七八糟的项目都有,如 DApp,DeFi 这些名类繁多的产品。
但同时也意味着和智能合约代币对比,omni 和 slp 协议的代币,发行方的权力更小,代币用户的权力更大。用户使用 omni 和 slp 代币不用担心被列入黑名单。
矿工黑名单
这是不是意味着 USDT-omni 和 USDT-slp 绝对不可能被拉黑呢?
理论上不是的。
比特币和以太币,任何转账,包括 BTC 交易,ETH 交易转账,以及各种代币的转账,所有的转账都是由矿工挖矿发布区块来打包,最终确认交易完成。
用户可以构建交易,将自己的币发给任何地址,但矿工如果不打包的话,那这笔交易就会被作废。
所以如果想拉黑 USDT-omni 和 USDT-slp,就可以通过矿工体系来拉黑。让矿工全体维持一个黑名单地址。
但比特币和以太坊的挖矿是开放的,是去中心化的,而且是匿名的,很难有一个办法让全体矿工共同维持一个黑名单。哪怕是联合国出面并执法,都很难行的通。
币安交易所曾经被黑客盗走 7000 个 BTC,老板赵长鹏发推特希望比特币矿池帮忙冻结并回滚黑客的交易。结果是得到了全体币圈的嘲笑。
改协议建黑名单
还有一种办法冻结币,改协议。以太坊在 2016 年的 The DAO 硬分叉,本质上也是通过改协议来实现对币的所有权的更改。
想要改协议,不但要征得开发者的同意写代码,还得征得矿工的同意来更新软件,还要征得交易所来配合,还要用户最终还能接受新的协议。
对于一个成功去中心化的币,想通过改协议来实现币的冻结是太难了,只存在理论上的可能性。
USDT 借助 omni 协议非常成功,一个重大的特性就是匿名化。USDT-ERC20 可以被冻结了,不知道会不会引发用户对 USDT 的不信任。
作为 USDT 用户,我觉得还是优先接受不可被冻结的版本为好。

