- “桥” 的 安全/威胁 模型各有不同 -
通过链下协议增强网络可扩展性的方案在密码学货币社区内掀起了一股热潮。这类方案使得绝大多数交易的处理任务可以从 Layer 1 区块链转移到链下系统,从而绕开 Layer 1 区块链的一切费用和延迟问题。
在本文中,我想要讨论一个对所有链下协议来说都很基础的组件。这个组件常常被忽视,但是对于资产安全保护来说至关重要:
“桥”的作用是持有 Layer 1 区块链上的资产,同时在另一个(外部)服务上发行它们。它规定了资产托管者以及解锁资产的条件。
简而言之,Layer 1 区块链(如以太坊)连接到其它系统时都会使用 “桥”。所有的 “桥” 都执行相似的操作:
存款。用户可以将资金存到 “桥” 上,通过 “桥” 将这笔资产等量映射到另一个系统上。
更新用户余额。“桥” 会收到账户余额的更新通知,并将其用于取款流程。
取款。用户可以通过 “桥” 将资金提取到 Layer 1 区块链上,同时将另一个系统上的对应余额销毁。
最常见的一类 “桥”(很少有人注意到它们)就是单一组织桥:
- 绝大多数密码学货币交易所都是 "桥” -
如果我们只考虑 “桥” 的定义,我们完全可以说密码学货币交易所是一种链下协议。用户可以将资金锁定在该协议内,避免交易时的 gas 费和网络延迟,最后再将余额提取到 Layer 1 区块链上。
除了单一组织桥之外,还有两类依赖于多名托管者的桥:
多组织桥。被锁定的资金托管给一组固定的独立参与方(K/N)。
密码学经济桥。被锁定的资金托管给一组动态的参与方,具体取决于这些参与方的 资产权重。
需要注意的是,上述三类 “桥”,它们在 Layer 1 区块链上都无法验证其对象系统上的账户余额数据是否正确(或者其对象系统内的负债是否超过了 “桥” 所持有的资产)。托管者需要验证每一笔取款是否与其对象系统存在冲突。他们最终决定是否释放资金,以及收款方是谁。
上文主要讨论的是利用 “桥” 将用户引导到托管服务(如密码学货币交易所)上。“桥” 还有一个越来越受欢迎的应用场景,即,实现区块链之间的互联(顺带一提,这就是侧链的起源)。
- "桥" 和侧链在安全性上彼此独立 -
下面列举了一些现有的“桥” 项目 :
WBTC:单一组织桥,将 BTC 转移到以太坊上。
流动网络或 RSK:多组织桥,由部署了硬件安全模块(HSM)的联盟成员将 BTC 转入/转出其它区块链。
Polygon 桥:密码学经济桥,其中,验证者需要凭借不少于总质押量的 2/3 + 1 定期就所有 Polygon 用户的账户余额达成共识,用户可以根据共识将资金提取到以太坊上。(实际上,Polygon 最终由一个小型多签合约控制,但是这里侧重的是它的长期目标)。
Rainbow 桥:密码学经济桥,其中,桥合约是一个轻客户端,可以验证另一条区块链的状态变化。它不会验证另一条区块链的有效性,资产的安全性最终取决于另一条区块链的持续状态变化(由密码学经济机制保障)。
最重要的是,每个桥都有自己的安全模型,并且独立于区块链网络。我们可以举一个简单的例子 WBTC 来作进一步阐述:
BitGo Trust 负责保管被锁定的 BTC,并在以太坊上发行等量的 WBTC。以太坊上的智能合约会追踪所有涉及 WBTC 转账的账户的余额。用户需要相信 BitGo 会尊重记录在智能合约内的账户余额。
就 WBTC 而言,我们需要考虑以下几点:
单一托管方。WBTC 桥依赖于单一托管方来保证其完整性。托管方可以在以太坊上超额发行 WBTC,也可以拒绝退回 BTC。
独立的安全模型。以太坊的安全模型独立于比特币。WBTC 桥的安全模型则独立于这两个区块链。
将以太坊作为侧链。在实现从比特币到以太坊的跨链时,交易被转移到了链下。
上述三类 “桥” 的共同点是都不验证侧链的完整性,而且没有在托管方(或侧链)掉线时保护资金的自动应急计划。它们构想了自己的安全模型,而非依赖于其所在的 Layer 1 区块链的安全模型。
Layer 2 的可扩展性承诺是将交易吞吐量从 Layer 1 区块链转移到链下系统。“桥” 的作用是保管资产,并将它们映射到另一个系统上。
然而,不同于上文提到的所有 “桥”,Layer 2 协议力图为其保管的资金提供与 Layer 1 区块链同等的安全性,而且它不能依赖一组托管者(或另一个链下系统)来保护资金。
这就需要一种全新类型的 “桥”:
Layer 2 桥。资金托管在 Layer 1 区块链上,“桥” 必须能够确认 Layer 2 协议没有遭到破坏。遇到最糟糕的情况时,“桥” 将自行增强 Layer 2 协议的活性,直到所有资金能够取出为止。
Layer 2 桥是所有 “桥” 中最强大的。
Layer 2 桥不依赖于一组托管者来保护资金的安全性。Layer 2 桥在释放资金之前必须确保链下系统一切正常。一旦 Layer 2 桥出于任何原因相信链下系统遭到破坏,它完全可以彻底避开另一个网络。
- 一些致力于开发 Layer 2 桥、打造全新区块链网络的公司 -
这就是为什么 Layer 2 协议如此令人兴奋的原因,以至于上述公司甘愿花费数年时间研究 Layer 2 解决方案。这些公司都在力争率先推出 Layer 2 协议。这场竞赛主要专注于如何实现安全的 Layer 2 桥(而不一定是如何实现另一个区块链网络)。
这正是进一步探索 “桥” 的技术问题和定义的好机会。我们已经明确指出,“桥” 必须有办法确定 Layer 2 协议没有遭到破坏。而 Layer 2 协议被破坏的情形可以归结为下面四种:
数据可得性。“桥” 如何确保另一个区块链网络的所有数据都是公开可得的,以便用户可以独立重新计算 Layer 2 数据库?
状态转换完整性。我们如何让 “桥” 相信 Layer 2 网络的所有状态转换是合法且有效的?
取款完整性。当 Layer 2 网络遭到破坏时,“桥” 如何保证所有诚实用户都能取回自己的资金?
协议活性。当 Layer 2 协议暂停或掉线时,“桥” 如何保证交易依然能够执行?
当然了,上述问题必须得到解决。与此同时,由于桥合约拥有的计算资源比链下系统少得多,桥无法实时重新执行所有交易。否则,它就不是可扩展性解决方案了。
解决上述问题就像是掉进了深不见底的兔子洞,需要面对链上挑战、欺诈证明、有效性证明、将交易数据发布到 Layer 1 区块链(rollup)等重重问题。
尽管我们的文章不会着重介绍各种解决方案,但是我们要强调:所有解决方案各有不同。一些即将部署的 Layer 2 协议无法满足上述安全性目标。事实上,它们并不能被称为 Layer 2 协议,因为缺少 Layer 2 桥。
- 所有 "桥" 都将帮助我们 to the moon -
正如本文讨论的那样,总共有四类 “桥” 。它们可以将资金锁定在一条区块链内,并将其映射到另一个链下系统(甚至是另一条区块链)上。
托管桥。前三类 “桥” 侧重于确定被锁定的资产由哪些托管者控制。托管者的职责是在允许用户取回托管在 “桥” 中的资金之前,先验证链下系统是否正确。托管桥假设链下系统的完整性是客户端问题,且托管者拥有足够的算力来处理它。虽然有额外的措施来减少托管者的职责,或引入密码学经济激励来鼓励托管者遵守协议,桥协议无法完全约束托管者。曾经发生过几例桥丢失用户资产的事件(如 MtGo 交易所),这是因为桥的完整性归根结底还是取决于信任。
Layer 2 桥。“桥” 完全取代了托管者来保管资金,并验证链下系统的完整性。核心问题是,“桥” 必须确保链下系统没有遭到破坏。与此同时,它缺少独立验证每笔交易的算力(否则它就不是可扩展性方案了)。除了会带来巨大的技术挑战之外,Layer 2 桥还有着很高的成本。为了让 Layer 1 区块链相信链下系统是合法且完整的,Layer 2 桥会持续产生经济成本。然而,最终来说会是 “桥” 成为资金的托管方,而链下系统的运营方则无权托管。
总而言之,用户是否真正关心 Layer 2 桥?我们是否应该将以太坊的安全模型扩展至链下系统?这些问题尚无定论。我认为这四类 “桥” 将一直存在下去,因为它们在提高用户采用率方面具有重要意义。
我希望每一位用户都能关注 “桥”,并思考自己最喜欢的协议采用的是哪一类 “桥”。这有助于用户更好地理解自己正在使用的协议是如何保护资金安全的。