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

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

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

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

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

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

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

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

跨链桥

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

原生验证(Natively Verified)

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

原生验证(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)
外部验证(Externally Verified)

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

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

本地验证(Locally Verified)

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

本地验证(Locally Verified)
本地验证(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端点的妥协是危及实施安全的最常见方式。为了最大程度地减少安全漏洞的风险,跨链桥需要由多个第三方进行审计。

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

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

Subscribe to harichen
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.