包装代币是个替身。它活在一条链上,代表另一条链上的某枚币——也有一种很常见的情形,是代表同一枚币的另一种格式。它值不值它标的那个数,取决于价格图永远不会回答的一个问题:原币现在在谁手上,以及什么东西能拦住那个人不把它交出去?
如果只读一段
- 包装代币本身只是一份记账凭证;合约不知道、也没办法知道原币还在不在。
- 原币的持有者只有三类:同一条链上的一个合约、一家(或几家)托管公司、一座跨链桥。
- 三类的失效方式不一样:合约怕代码有洞,托管方怕人和公司变,桥怕被伪造的存款凭证骗过去。
- 票面名字一样,不等于是同一个东西。要看的是合约地址,不是币种代号。
为什么要有「包装」这回事
区块链之间互相看不见对方。以太坊上的应用读不到一个比特币余额,Solana 上的程序也搬不动一枚以太币。想让比特币在以太坊的借贷应用里当抵押物用,就必须有一样东西在以太坊这一侧替它站着。
这样东西就是一枚按宿主链标准发行的代币——在以太坊上是 ERC-20,在 Solana 上是 SPL——外加一句承诺:这边的一单位,对应着锁在别处的原币一单位。承诺才是产品的全部。代币合约自己只负责记余额,它没有任何办法去确认那些比特币到底存不存在。
三类持有人
几乎每一个包装资产都落在下面三种安排里的某一种。名字每年都在换,安排没换过。
| 同链上的合约 | 托管方 | 跨链桥 | |
|---|---|---|---|
| 原币放在 | 包装合约自己里面 | 一家或数家公司控制的钱包里 | 锁在源链的一个合约里,凭一组验证者或一套证明系统的指令放行 |
| 典型例子 | WETH | WBTC、交易所自己发的锚定比特币 | 从以太坊跨到别的网络上的各种代币 |
| 你能不能解包 | 能,随时,自己发一笔交易就行 | 通常只能通过获批准的机构 | 桥还在跑、而且那边有钱的时候,能 |
| 主要的失效方式 | 合约代码出漏洞 | 托管方把储备弄丢、冻住或挪用 | 桥被攻破,凭空铸出没有背书的代币 |
合约拿着的时候:WETH
包装以太币是这一类里最不神秘的一个,也是看清「包装」这个念头本身、同时又不必先处理信任问题的好起点。以太币比 ERC-20 标准出现得早,所以 ETH 本身在应用里的行为跟别的代币不一样。WETH 把这件事抹平:你把 ETH 发给 WETH 合约,它给你记上等量的 WETH;你调它的提取函数,它烧掉 WETH,把 ETH 退回来。
整个过程没有第三方。ETH 从没离开过那个合约,余额在链上公开可查,也没有哪个运营方能把合约暂停。想看看它有多朴素,去区块浏览器上打开那个合约:「Write Contract」那一栏里就列着 deposit 和 withdraw 两个函数,机制基本就这么多。真正会卡住人的是提取那一步的单位——填的是 wei,也就是最小单位,所以一枚 WETH 要写成 1 后面跟十八个零。
剩下的风险是代码。这么小、又被用得这么狠的一个合约,在以太坊上已经算是被检验得相当彻底的了,但「检验得彻底」是一种判断,不是一句保证。
多数钱包和交易所会替你完成解包,所以很多持有人根本没意识到 WETH 的存在——ETH 自己是怎么发行的,见以太坊档案。
公司拿着的时候:WBTC 和它的后来者
比特币没法被以太坊的合约锁住,因为以太坊看不见比特币。原币只能交给某个人保管,于是包装代币就变成了对这个人的一纸索取权。
2019 年 1 月上线的 Wrapped Bitcoin 是跑得最久的样本。它的结构里有三种角色:
- 商户是经过身份核验的机构。它们把比特币交给托管方,请求铸出 WBTC;反过来也可以交回 WBTC 销毁,换回比特币。
- 托管方持有比特币,并在以太坊上执行铸造和销毁。
- 其余所有人只是在市场上买卖 WBTC。普通持有人并不直接赎回。
装着储备的比特币地址是公开的,总量可以跟流通中的 WBTC 对上。这能说明比特币在那儿。它说明不了谁有权移动它,也说明不了这些人在压力之下会怎么做。
后一个问题在 2024 年 8 月不再抽象:WBTC 最初的托管方 BitGo 宣布,托管改为一种跨司法辖区的安排,其中牵涉到 BiT Global——一家与波场创始人孙宇晨有关联的公司。储备没有变,「谁拿着它」这个问题的答案变了。一些大用户重新掂量了自己的敞口;已在 2024 年 9 月推出自家包装比特币 cbBTC 的 Coinbase,在当年 12 月下架了 WBTC。BiT Global 就下架一事提起的诉讼,后来撤回了。
这段经过里没有任何一处显示比特币少了。这恰恰是值得从里面取走的那一点:一枚托管型包装代币可以储备足额,却在这个月和下个月之间变成了不同的资产,因为你信任的对象是机构,而机构会易主。
交易所自己发的锚定代币是同一套模式,只是所有角色由一方全兼:交易所拿着币、铸出代币,也决定谁可以赎回。理解起来更简单;整张索取权压在一张资产负债表上。去中心化一些的做法,是把单一托管方换成一组轮换的签名人,必须协同才能动那些比特币——这是把信任摊开,不是把信任取消。
跨链桥拿着的时候
绝大多数代币是靠桥去到第二条链上的。常见的做法是把原币锁在源链的一个合约里,当一组验证者、或者一份密码学证明确认了这笔锁定之后,在目标链上铸出一份代表物。
薄弱之处在于,目标链上那枚代币的成色,完全取决于「什么条件下可以铸」这条规则。如果攻击者能让桥相信一笔根本没发生的存款发生了,桥就会铸出背后什么都没锁的代币——而这些代币和真的那些,看上去毫无分别。
2022 年 2 月的 Wormhole 就是这么出的事:一个缺陷让攻击者在 Solana 上凭空铸出了约 12 万枚包装 ETH,源头一分钱没存。项目的支持方 Jump Crypto 补上了缺口,持有人没有受损。要是没有这笔补足,Solana 上那些包装 ETH 的背书就会少于流通量,短缺由每一位持有人分摊。救助是某个人做出的决定,不是设计里自带的功能。
桥还有一种更安静的失效。桥一旦关停,留在对岸的代币就失去了回家的路。发行 renBTC 的 Ren 原始网络,在其背后的 Alameda Research 于 2022 年末崩塌后被清盘,持有人被告知要在关停前把资产跨回来。
同一个代号,不是同一份权利
真正让人亏钱的是这一节,而且它一点都不好看。
以太坊上的 USDC,和另一条网络上跨链过去的那个「USDC」,可以顶着同一个名字、同一个图标,却是两份不同的索取权:一份由发行公司原生发出,一份由持有着原生 USDC 的桥发出。ETH、BTC 以及大多数在多条链上都存在的大资产,都是这个情况。交易所和钱包有时候会认真标注(「USDC.e」「Bridged」),有时候不标。
这个档案库自己的做法很直白:说不清原币在谁手上的,就把它当作一项自带风险的独立资产,而不是当作它名字里那枚币。把某个包装版本提到一条不支持它的链上,或者发给一家只认原生版本的交易所,是实务里最常见的一个失误——这一步的前半段可以用地址与链识别器核一下,而同一枚币为什么会散落在这么多网络上,见 Layer 1 与 Layer 2 那一篇。
手上已经有一枚包装代币,怎么查
- 先找合约地址,不是找名字。你的钱包里、或者交易所的充值页上都会显示它。代号相同、地址不同,就是两个代币。
- 去发行方自己的网站上对一遍,看这个地址在不在它列的清单里。发行方没列,那它就是别人发的——通常是某座桥。
- 给持有人归类:合约、托管方,还是桥。
- 如果是托管方,找到公开的储备地址,以及谁有资格赎回。要看今天的托管方是谁,不是上线那天的托管方是谁。
- 如果是桥,查清楚是什么东西批准一次铸造——多少个验证者、由谁运行——以及它以前有没有被攻破过。
- 问一句你要怎么出来。如果答案是「拿到市场上卖掉」,那你的退出靠的是流动性,不是储备;这和大多数稳定币持有人所处的位置是同一个,稳定币那一篇把这层讲得更细。
主要出处
- WBTC 项目官网,商户与托管方的模型,以及它的储备透明度页面。
- Etherscan 上的 WETH 合约,存入与提取两个函数可以直接读到。
这里描述的各项结构核验于 2026 年 9 月。2024 年的 WBTC 托管变更、2024 年 cbBTC 的推出与 WBTC 被下架,以及 2022 年 Wormhole 被攻破,都是公开记录。托管方、商户名单和桥的验证者组成变起来往往没什么预告;真要依赖某一项安排之前,请去发行方当下的页面上查一遍,包括这篇文章里描述的这些。