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