harichen

Posted on Sep 09, 2023Read on Mirror.xyz

跨链桥——区块链互操作性的基础

随着越来越多的区块链以不同的设计、编程语言和共识机制被开发出来,区块链互操作性已成为生态系统中不可或缺的一部分。如果没有互操作性,不同区块链之间的价值交换将变得复杂,资产的流动性也会被分割。互操作性对于实现区块链技术的全部潜力至关重要,因为它允许数据和资产在不同区块链之间无缝移动,增加了互联性并提高了资产的流动性。

跨链互操作性是指不同区块链之间相互通信和交换价值的能力。它涉及在其他区块链之间建立跨链桥,以允许资产和数据在它们之间无缝移动。这些跨链桥作为基于规则的协议,是扩展解决方案的基础,并使用消息基础设施确保不同区块链之间的安全通信。

有几种方法可以实现区块链的互操作性:

  1. 互操作协议。这些协议旨在促进不同区块链之间的通信和价值转移。例如,Polkadot、Cosmos和Aion。

  2. 侧链。这些是连接到主区块链的独立区块链,使得可以在具有相同资产的独立链上进行交易。例如,RSK是比特币的侧链,而Plasma是以太坊的侧链。

  3. 原子交换。这使得在没有中介的情况下交换一种加密货币换另一种成为可能,从而实现跨链交易。例如,闪电网络用于比特币的原子交换。

  4. 跨链桥。这些跨链桥建立在不同的区块链之间,使得资产和数据可以在它们之间传输。例如Wormhole,被Uniswap选为以太坊和币安智能链之间的跨链治理消息传递。

跨链桥

在区块链技术的背景下,跨链桥是建立在消息协议之上的应用程序,它促进了不同区块链之间的互操作性。它是连接两个或多个区块链网络的接口,允许在它们之间传输资产和数据。随着我们逐渐进入一个多链的世界,跨链桥已经成为跨链交互不可或缺的基础设施。 Connext 创始人 Arjun Bhuptani 根据验证者的不同,将所有跨链桥分为三种基本类型:原生验证、外部验证和本地验证。

原生验证(Natively Verified)

原生验证是指所有底层链的验证器都完全验证链间传递的数据。通常的做法是在目标链虚拟机中部署源链的轻节点,对源链的信息进行验证。

原生验证(Natively Verified)

所谓轻节点,是指一个体积较小的,只存储区块头信息的节点。轻节点并不存储链上的全部交易,但是可以通过区块头信息,验证某个交易是否存在于链上。轻节点合约则是包含了轻节点的智能合约,用于验证源链的信息。通过在目标链部署源链的轻节点合约,即可实现对源链的信息进行真实性验证。

  1. 当源链A有请求传递一笔跨链交易信息给目标链B时,交易发起者将该交易的明细内容、区块高度、以及该交易SPV证明一并提交到B链;

  2. 部署在B链上的A链轻节点合约,通过SPV证明,重新计算该交易所在区块的区块头哈希值;

  3. 得到的哈希值与轻节点中对应的区块头哈希值进行比较,如果一致,则表明该交易确实发生在该区块中,若不一致,则说明该交易并不存在于该区块。

尽管任何人都可以向目标链提交交易明细及其SPV证明,但实际跨链应用中,往往会有专门的角色来做这件事,也就是中继者(Relayer)。中继者将源链的区块头传输到目标链,建立轻节点,然后中继者从源链搬运交易信息到目标链时,用轻节点上的区块头信息验证交易信息的正确性。

原生验证需要至少有一个诚实的中继者,或者用户必须自己传输交易。原生验证是信任最小化程度最高的一种跨链通信方式,但是它成本也很高,开发灵活性较低,而且更适合状态机相似度较高的区块链,比如以太坊和L2网络之间,或者基于Cosmos SDK开发的区块链之间。例如 Cosmos IBC 和 Near RainbowBridge,Rollup 的入口和出口也是这种特殊形式。此外,基于零知识证明(ZK)的互操作性协议也使用轻客户端和中继来验证跨链转移。

外部验证(Externally Verified)

外部验证是指使用外部验证器集合来在链之间传递数据。通常的做法是引入一组外部的验证者来负责验证跨链信息,用户必须相信这些验证者是可信的,验证者内部可能有某种机制来达成共识。

外部验证(Externally Verified)

外部验证者有许多不同的实现方法,比如多方计算系统、预言机网络以及门限多重签名合约等,但这些方案都需要验证节点进行信任最小化的链下计算,并在链上进行验证。

我们需要意识到,在引入外部验证者的同时,引入了新的安全假设。外部验证通常要假设一半以上的节点是诚实的,这样才能维持跨链交互的可靠性。不过,要提升信任最小化水平,还需要采用其他技术,比如加密经济质押、反欺诈网络以及乐观的通证桥验证(optimistic bridge validation)等。采用外部验证的互操作性协议有: Thorchain、Multichain、PolyNetwork等。

本地验证(Locally Verified)

本地验证是指仅涉及跨链交互的各方验证该交互。本地验证协议将复杂的n方验证问题转化为一组更简单的2方交互,其中每个参与方仅验证其对等方。只要双方在经济上是对抗性的,即双方没有办法勾结起来从更广泛的链中获取数据,这种模型就可以运作。

本地验证(Locally Verified)

在本地验证的系统中,利用底层区块链的验证者集合进行跨链交换。与两个链上的整个验证者集合都验证一笔交易不同,两个验证者(分别代表己方链)会验证对方链上的交易对手。 这两个验证者在流动性网络中充当“路由器”的角色:

  1. 在每个链上持有流动性池;

  2. 相互验证(交易对手);

  3. 促进原子交换。

这种系统通常使用锁定/解锁机制和争议解决过程来确保用户数据的安全,并有效地消除了每个链上的验证者勾结窃取数据的可能性。本地验证系统实际上是无需信任的,如 Connext、Hop和其他简单的原子交换系统。

互操作性不可能三角

Arjun Bhuptani 在他的文章中,提出了著名的互操作性不可能三角(The Interoperability Trilemma ),即任何跨链方案最多只能满足以下三者当中的两者:

无需信任(Trustless):具有与底层区块链相同的安全性,不会引入新的信任假设。

可扩展性(Extensible):可以在许多异构链上部署,并且只需进行最少量的定制工作。

通用性 (Generalizable):支持跨链通用信息传递。

互操作性不可能三角

类似于区块链可扩展性的三难题,所有互操作性协议只能具备以上三个属性中的两个:

三种类型跨链桥的属性

我们以表格的形式总结了三种验证类型的跨链桥的优缺点:

三种类型跨链桥的优缺点

通过对比三种跨链桥发现,原生验证具有无信任假设和支持跨链通用信息传递的优点,理论上只要源链和目标链不发生重组,跨链信息传递就是安全的,但其可扩展性差。

外部验证虽然可扩展性强且完全支持跨链通用信息传递,在速度和成本效益方面它们通常也表现良好。 但这些是以安全性为代价的,由于引入了新的信任假设,其安全性必须依赖于第三方。要提升信任最小化水平,还需要采用其他技术,比如加密经济质押、反欺诈网络以及乐观的通证桥验证(optimistic bridge validation)等,这就增加了跨链成本。

本地验证尽管具备无信任假设、可扩展性强的双重优点,但是其无法支持跨链通用信息传递,因此,适用范围相对狭窄。

跨链桥的安全挑战

随着去中心化金融(DeFi)的不断普及和以太坊 Layer-2 生态系统的日益流行,跨链桥黑客攻击越来越频繁。这些跨链桥连接不同的区块链和 Layer-2 解决方案,每个方案都有不同的技术,并同时连接许多区块链,从而暴露出更多的攻击向量。此外,随着 DeFi 的不断普及,跨链桥正在转移更大量的价值,使它们更具吸引力。

跨链桥安全有三个支柱:经济安全、实施安全和环境安全

经济安全取决于获得控制大多数验证者的成本,而妥协经济安全的最常见方式是窃取验证者的私钥。本地验证的跨链桥提供最佳的经济安全性,而外部验证的跨链桥则提供最低的安全性。

实施安全涉及系统的复杂性和可能危及跨链桥安全的风险向量。智能合约漏洞和RPC端点的妥协是危及实施安全的最常见方式。为了最大程度地减少安全漏洞的风险,跨链桥需要由多个第三方进行审计。

环境安全涉及跨链桥运行环境的完整性,例如跨链桥运行的节点的安全性。跨链桥需要漏洞赏金计划来最小化安全漏洞的风险。跨链桥节点的安全对于环境安全至关重要。多个第三方审计也是环境安全所必需的。

跨链桥安全和跨链互操作性的未来尚未确定。为了克服这些挑战并实现更高效、更安全的互操作性,需要研发更为灵活和高效的跨链桥,并持续优化其安全机制,确保数据传输既安全又可信。