撰文:Alex Manuskin
翻译 & 校对:闵敏 & 阿剑
tBTC 平台起步于追逐密码学货币社区梦寐以求的理想:让比特币进入以太坊的 DeFi 生态,在密码学货币领域中彼此独立的两大网络之间架起桥梁。然而,其第一个版本非常短命。
在本文中,我们会深入探索 tBTC ,阐明其背后的设计意图,分析内部的运作原理,了解失败的根本原因,最后预测其前景。
作为密码学货币领域的领头羊,比特币拥有最高的市值,最多的用户以及最充足的流动性(目前为 1700 亿美元),但是它除了作为价值贮藏物(「长期持有」)之外没多大用途。
比特币的市值占密码学货币总市值的 2/3 (来源:Coinmarketcap)
另一方面,去中心化金融(DeFi)已经利用以太坊区块链上的智能合约功能,实现了真正的飞跃。DeFi 协议越来越受欢迎。通过以太坊网络上的智能合约,用户现在可以通过完全去中心化的方式交换、交易并借贷各种代币和 ETH 。
将近 10 亿美元的价值锁定在 DeFi 应用中(来源:defipulse)
如果能在两大独立的网络之间架起桥梁,就可以让用户利用其持有的比特币在 DeFi 中获得收益。虽然有一些解决方案试图在比特币网络上构建 DeFi ,但是让比特币进入以太坊的 DeFi 领域似乎更容易一些。
迄今为止,所有试图打破 BTC 和 DeFi 之间壁垒的方案中,最引人瞩目的一种是 BitGo 的 WBTC (Wrapped BTC)—— 基于以太坊的(ERC 20)代币。一方面,由于 wBTC 是 ERC20 代币,wBTC 持有者可以使用 DeFi 服务。另一方面,发行方承诺 wBTC 是由足额比特币背书的,因此其价值锚定比特币。也就是说,以太坊上每发行一个 wBTC ,都会锁定一个比特币为其背书。这样一来,在 DeFi 中使用类似 比特币的代币的目标就实现了。
wBTC 以及类似解决方案的问题在于,用于背书的比特币是由中心化托管机构持有的。普通用户无法直接用比特币换出 wBTC ,wBTC 必须先由托管机构铸造出来。
这既限制了 wBTC 代币的发行数量,又迫使用户必须信任 wBTC 托管机构会像承诺的那样锁定足额的比特币。
锚定比特币的中心化代币 wBTC 的铸造流程
为了缓解这些问题,tBTC 项目应运而生。
去中心化是 KEEP 开发的 tBTC 项目与 wBTC 的主要区别,因为 tBTC 可以让任意用户通过一个签署者网络来利用比特币(和一些以太币)铸造 tBTC 。不同于之前的解决方案,tBTC 不依赖于某个中心化托管机构持有被锁定的比特币。签署者是随机选择的,每铸造一个新的 tBTC 时,系统都会选择一组不同的签署者。这组签署者提供以太币作为质押品,来确保他们不会携款跑路。
所有比特币存款都是由超额质押品背书的。每存入一个比特币,签署者必须提供价值 1.5 个比特币的以太币作为质押品。在锁定以太币作为质押品之后,签署者会得到手续费作为奖励,手续费会在用户赎回 BTC 时支付。
另一个有趣之处是,签署者通过门限签名协议创建一个唯一的地址。这就意味着,不可能出现某个签署者携款跑路的情况。一切操作都必须由所有被选中的签署者合作执行。
同样地,如果要违反协议,偷走被锁定的比特币,一定得所有签署者合谋才能成功。
如果签署者违反协议,任何人都可以提供签署者作恶的证据。作为回报,签署者的质押品会被奖励给举报者。由于签署者是超额质押,如果他们带着比特币跑路的话,他们将得不偿失。
锚定比特币的去中心化代币 tBTC 的铸造流程
同样地,任何 tBTC 持有者都可以使用 tBTC 从签署者手中赎回比特币。赎回流程与铸造流程相反。
使用锚定比特币的去中心化代币赎回比特币的流程
tBTC 解决方案的关键在于能够向以太坊合约证明比特币付款已完成。要做到这点并不容易,因为以太坊和比特币是两条不同的区块链。存款智能合约需要知道是否可以为该用户生成 tBTC 。为此,存款者必须提供已向签署者付款的_证明_。为了生成证明,智能合约需要执行简化的比特币验证流程(类似比特币的 SPV (简化支付验证)客户端)。存款者提供付款的哈希值,以及付款已完成并在比特币区块链上获得了 6 个验证的证明。鉴于比特币的工作量证明共识机制,这个证明是可靠的。签署者在赎回比特币的过程中需要提供相同的证明。只有这样,签署者才能赎回他们的质押品。
官方 tBTC 去中心化应用(DApp)于 5 月 16 日上线。在 5 月 18 日(运行约 48 小时后),Keep Network 项目的 CEO 宣布其团队启动了一次性切断开关,暂时关闭了该平台的比特币存款功能。
Keep 团队在 5 月 20 日发布的详细复盘中指出,根本问题出在赎回协议上。正如复盘中所说,在赎回期间,赎回者会提供一个比特币地址,签署者应该将由他们托管的比特币发送至这个地址。有效的比特币地址有好几个版本。每个版本在长度和前缀上都略有区别。
例子:
新格式:bc1qngsulfgcudt8ztwv9quef9k5sv0ld2px0jh8nw旧格式:1PPhYgecwvAN7utN2EotgTfy2mmLqzF8m3
由于合约的赎回流程出了 bug ,签署者无法证明他们正确地将比特币发送到了旧格式的地址上。
这对诚实的赎回者不会产生任何影响。赎回者可以提供任意比特币地址并收到他们的比特币。问题出在签署者这边。签署者在试图证明他们已经向赎回者付款时,如果赎回者使用的是旧格式的地址,即使签署者是诚实的,合约也不会接受他们的证明。因此,签署者会因为没有及时提供付款证明而被系统认为是作恶者。在这种情况下,任何用户都可以指控签署者的 「恶行」,并获得签署者的部分质押品作为奖励。
一旦这一 bug 被利用,签署者(协议的支柱)就会同时失去比特币(被发送给了赎回者)和以太币(被奖励给了指控者)。发现了这个 bug 的恶意赎回者会发起多个恶意赎回流程,不仅能取回比特币,还能获得签署者的以太币。
编写完美的代码本身就很难,更何况是上传一次就再也不能更改的智能合约的代码。
Keep 团队选择不在智能合约上加入 「升级」 功能。这种做法肯定有其优势,也会带来很大的风险。也正是因此,他们不能简单地用新的合约来代替旧的合约,解决将来的问题。Keep 团队的复盘提到了原本可以采取的预防措施,以及如何避免 tBTC 2.0 出现同样问题的未来计划。
根据我们在该协议正式上线之前的实验经验来看,我们认为测试网 DApp 测试阶段应该更久一些,在主网上线前应该有更广泛的测试和用例。例如,我们在尝试赎回时,无法完成该流程,卡在了下面这个界面上。
我们在 tBTC DApp 的测试阶段遇到了一些问题
虽然初次上线就惨遭失败,但是 tBTC 还有翻盘的机会。好在 99.87% 的 tBTC 都找了回来并归还给了持有者(剩下的 tBTC 很可能就成了这次事件的纪念品),没有造成什么经济损失。tBTC 团队全程在沟通和信息披露方面做得非常好。
这次失败是因为合约出了 bug 。在系统被关停之前,没有时间测试更加复杂的运作环节(价格信息输入机制、签署者分布、清算等)。
更重要的是,在连接比特币和以太坊的 DeFi 方面有很大的需求和潜力。我们终将在二者之间架起桥梁。如果 tBTC 做不到,还会有后来者。
来源链接:medium.com
想了解更多币圈资讯热点,请点击头像关注私信 “ 币圈内容社区 ”