IBC 和 XCMP:互操作性协议的比较

原文来自于:

https://interchain-io.medium.com/ibc-and-xcmp-a-comparison-of-interoperability-protocols-3d1700e30015

本文只做翻译,版权归原作者所有。以下为翻译:

一个多链的生态系统不可避免地出现在我们面前。根据定义,多链引发了对链间通信的需求。虽然网桥在更广泛的互操作性方案中执行一项特定功能——即代币转移——但它们不足以满足具有细微用例的跨链生态系统的要求。过去几年见证的一系列桥接黑客事件不断证明,第三方桥接实施的托管性质并不能提供安全可靠的资产桥接。

现在需要的是一种通用的、无权限的、安全的和扩展的技术,它可以作为区块链之间的连接组织,同时保持容错性。区块链间通信(IBC)和跨链信息传递(XCMP)是旨在体现这种区块链世界愿景的两个协议。

本文旨在对上述两种跨链通信协议进行全面概述。对于不熟悉 IBC 和 XCMP 的读者,下一节将简要介绍这两者。在奠定了基础之后,这篇文章将这两种协议并列在一起,以了解其中一种协议的相似之处、不同之处以及优缺点。

比较的特征将基于安全性、通用性、可扩展性、用户体验和开发人员工具的水平。最后,我们总结了这篇文章的一些亮点。

什么是 IBC?

IBC 是一种协议,它允许异构区块链以可靠、有序和信任最小化的方式传递任意数据。

IBC 的基础是轻客户端中继器。通过 IBC 进行通信的链 A 和 B 拥有交易对手账本的轻客户端。链 A 无需信任第三方,通过验证区块头就可以就链 B 的状态达成共识。通过 IBC(特别是模块)进行交互的链不会将消息传递给彼此。相反,链 A 将数据包中的一些消息提交到其状态。被称为“中继者”的无需许可的账本外进程然后观察这些数据包并将它们传递给交易对手。

图 1: IBC 数据包流,来源:ibcprotocol.org
图 1: IBC 数据包流,来源:ibcprotocol.org

在高层次上,IBC 可以分为两层。IBC TAO(传输、排序和身份验证)和应用层。

IBC TAO 对通过它发送的数据包中包含的信息不做任何假设,并且对这些数据包的结构完全没有意见。它只负责确保可靠、有序和经过身份验证的通信。它是应用层,即决定如何解释数据包的模块。

使用 Tendermint 和 Cosmos SDK 堆栈可以立即为任何区块链实施 IBC 。它还可以与其他区块链集成,这些区块链可能是 UTXO 或基于帐户的模型,具有概率确定性,例如比特币或以太坊。

IBC 是 Cosmos 坚持的“区块链互联网”愿景的支柱。从这个意义上说,IBC 的设计选择受到 TCP/IP 规范的影响。与 TCP/IP 为计算机通信制定标准的方式类似,IBC 指定了一组通用的抽象,在实现时允许区块链进行通信。正如 TCP/IP 对通过网络中继的数据包的内容没有意见一样,IBC 也是如此。与 HTTP 和 SMTP 等应用程序协议是如何构建在 TCP/IP 之上的类似,IBC 也可以这样说,其中可替代/不可替代令牌传输或跨链智能合约调用等应用程序使用该协议作为构建的基础层。

什么是 XCMP?

XCMP 是Polkadot 的跨链通信版本。它是一种基于简单排队机制的协议,允许一条平行链与另一条平行链对话。XCMP 的特点是有保证、信任最小化和有序的消息传递。它是使用交叉共识消息格式(XCM) 的传输层。顾名思义,XCM 为 XCMP 可以在任意系统之间传输的任意数据提供了一种格式。换句话说,XCM 是在链之间传递的消息,而 XCMP 是传递该消息的方式

希望与平行链 B 通信的平行链 A 打开一个双向通道(或两个单向通道),以唯一标识交易对手平行链。平行链 A 发起一条跨链消息,该消息由 A 的整理者节点拾取并放入 A 的传出消息队列中。收集人本质上是维护中继链及其分配的平行链的完整节点的权威节点。平行链 B 上的收集人节点扫描任何传入消息。当它观察到来自 A 的消息时,它将该消息放入其传入队列中。然后,该消息由该收集者节点处理并包含在一个新的提议块中,并发送到中继链进行验证。一旦平行链区块被验证者成功验证,该区块的哈希值就会包含在中继链中。

与 IBC 类似,XCMP 保证信任最小化的消息传递,而无需指定接收链应如何解释这些消息。执行代码/解释逻辑的角色由SPREE 模块执行。Shared Protected Runtime Execution Enclaves (SPREE) 是 WebAssembly 代码的 blob,它们通过治理提案上传到中继链。平行链可以决定选择加入 SPREE 模块执行的逻辑。SPREE 在补充 XCMP 方面发挥着重要作用,因为 XCMP 保证消息传递,而 SPREE 保证消息执行。

除了 XCMP,Polkadot 还具有两种使用 XCM 格式的不同传输机制。即向上消息传递(UMP)和向下消息传递(DMP)。前者负责将消息从平行链传递到中继链,而后者将消息从中继链传递到平行链。UMP 和 DMP 属于垂直消息传递 (VMP) 的范畴。

需要注意的是,XCMP 目前正在开发中(尽管 XCM 已经上线)。取而代之的是一种称为水平中继路由消息传递 (HRMP) 的权宜之计协议。HRMP 从根本上说是不可持续的,因为所有跨链消息都必须存储在中继链上,这使得它在存储和成本方面的资源密集度很高。Polkadot 计划在 XCMP 经过实战测试并准备好发货后逐步淘汰 HRMP。

相比之下,IBC 自 2021 年 4 月以来一直在使用。在此期间,它见证了大量采用。截至撰写本文时,46 条链通过协议互连, 30 天的交易量为 50 亿美元,流经 IBC 管道。

IBC 的先发优势和 XCMP 正在开发中的事实并没有放弃对这两种协议进行比较的范围。这主要是因为 XCMP 的架构和设计选择(尽管尚未上线)已经确定。

比较 IBC 和 XCMP

本节讨论 IBC 和 XCMP 之间的优缺点,以及异同。在比较这两个标准时,需要考虑以下属性:

  • 安全

  • 通用性-Generalizability

  • 可扩展性

  • 用户体验

  • 开发者工具

鉴于这两种协议都旨在实现相同的互操作性目标,因此两者之间存在一些共同点。但是由于 Cosmos 和 Polkadot 生态系统的底层架构彼此根本不同,并且鉴于 IBC 和 XCMP 的某些属性是它们各自协议架构强加的属性,因此它们之间存在许多关键差异。

请注意,由于 Polkadot 的互操作性设计,上述一些属性将更多地适用于 XCM 而不是 XCMP。在这种情况下,区分将被明确定义。从某种意义上说,IBC TAO 层映射到 XCMP,而 IBC 的应用层映射到 XCM。因此,如果不讨论 XCM,IBC 与 XCMP 的比较是不完整的。

安全

IBC

在分布式系统中,安全属性本质上与信任最小化属性相关联。因此,了解区块链的安全程度意味着了解其信任最小化程度。

在特定于应用程序的区块链的Cosmos 生态系统中,网络保护自己。每条链都有自己的验证器集,因此也有自己的安全模型。上一节提到,IBC中数据包的鉴权和排序是由轻客户端完成的。从 IBC 的角度来看,通过协议进行通信的两个分类帐归结为双方的轻客户端维护和更新其交易对手的状态。因此,IBC 的安全属性归结为轻客户端的安全属性。简而言之,IBC 通过轻客户端实现描绘了不同区块链的共识算法之间的交互。

这意味着如果您信任两个特定的链来使用它们提供的功能(以及默认情况下它们的共识算法),那么在使用 IBC 在所述链之间进行交互时不需要额外的信任假设。因此,术语信任最小化。

值得注意的是,IBC 将在实现跨链安全——Cosmos 生态系统的共享安全版本中发挥重要作用。一旦推出此功能,生态系统内的区块链将可以选择保护自己的链、从 Cosmos Hub 租用安全性,或两者兼而有之(称为分层安全性)。

XCMP

通过Polkadot 的共享安全模型,所有平行链都衍生出中继链的经济安全性。一旦平行链在 Polkadot 上为自己确保了一个插槽并连接到中继链,保护中继链的验证器集也会保护平行链。这意味着破坏平行链的成本等同于破坏生态系统中任何其他链的成本,包括中继链。从操作的角度来看,平行链只需要维护将状态转换证明传送给验证器的收集器。

XCMP 从这种共享安全模型中获得了信任最小化的特性,其中消息传递的正确性和真实性由中继链的安全特性保证,而无需受信任的第三方。由于同一个验证器集可以保护所有平行链,因此 XCMP 上的跨链通信不需要两个不同的验证器集被信任。而是只有一个。

但这并不完全意味着 XCMP 不会强加额外的信任假设。由于整理者负责在平行链之间发送和接收消息,因此理论上他们可以审查消息。例如,整理者可以接收消息但选择不传递它们。因此,XCMP 强加了额外的信任假设,即至少有一个诚实的整理者。

Generalizability 通用性

IBC

IBC 被设计为一种通用的消息传递协议。这意味着任何形式的任意数据(可替代和不可替代的代币转移、治理投票、智能合约调用等)都可以通过 IBC 进行通信。

通过 IBC 中继的数据包可能包含不同的信息,具体取决于它所服务的应用程序。对于令牌传输,数据包包含与令牌面额、数量、发送方和接收方地址有关的信息。对于跨账本治理——链 A 上的账户可以投票支持链 B 上的提案——数据包包含投票信息。对于跨链账户管理(又称跨链账户),数据包包含有关要传递的消息类型的信息。通过 IBC 发送的数据包还可以包含有关某个验证器集的组成及其投票权的信息。这是 IBC 为链间安全执行的功能之一(用于链间安全的特定 IBC 级协议称为“跨链验证”)。

几乎所有上述 IBC 的应用都由 IBC 为其开放网关的各种跨链原生产品实现。例如,OsmosisCrescent 网络都拥有利用 IBC 进行链间代币传输的去中心化交易所 (DEX)。Quicksilver 协议是 Cosmos 区域实施跨链账户的示例,以对存在于不同链上的提案进行投票,同时保留在单个平台上。Osmosis 和 Quicksilver 也准备成为第一个使用跨链安全的链。

XCM 和 XCMP

鉴于 XCMP 充当传递 XCM 格式消息的传输层(尽管它可以使用任何其他建议的格式),XCMP 的通用性与 XCM 的通用性密切相关。

XCM 旨在促进不同共识系统之间任意信息的传输。XCM 的主要目标之一是抽象交叉共识通信的低级细节。这会创建用例,例如不同区块链上的两个智能合约之间的交互、桥接上的跨链通信或分片间通信。

截至目前,XCM 的一些用例包括:

  • **(Teleporting)传送:**以在一条链上燃烧资产并在另一条链上铸造等量资产的形式进行代币转移。基于反向的传输也使用令牌传输应用程序。

  • **(Remote transfers)远程转账:**类似于跨链账户,“本地链”上的账户可以控制“远程链”上的账户。在这种情况下,XCM 消息将包含本地和远程帐户信息以及本地链对远程链执行的操作。

  • (Platform-specific functions)特定于平台的功能: XCM 还旨在允许平行链(或任何基于 Substrate 的链)向其众多(pallets)托盘之一发送远程调用,以利用特定特性或功能。

可扩展性

IBC

对于互操作性协议,可扩展性意味着它是否可以部署在不同的域(不限于区块链)上。

虽然 Tendermint 的即时确定性保证和 Cosmos SDK 提供的模块化对于实现 IBC 的账本来说当然是可取的,但它们绝不是必要的要求。IBC 被设计为与共识无关,并且可以通过可能发明的共识算法的当前和任何未来迭代进行扩展。为了连接具有概率确定性的区块链,例如以太坊,使用了一个称为 peg-zone 的独特代理链。Peg zone 支持 IBC,因为它们具有即时确定性,并用于为其连接的链(在这种情况下为以太坊)建立确定性保证。Gravity Bridge是使用这种挂钩区域来实现以太坊和 Cosmos 生态系统互操作的链的一个例子。

目前正在开发使用 IBC 互连基于 Substrate 的链。这将允许 Polkadot 和Kusama(Polkadot 的金丝雀网络)上的平行链与通过 IBC 连接的其他链进行通信。Composable Finance的团队为Substrate IBC 托盘的开发做出了贡献,他们也在积极努力将 IBC 引入 NEAR 协议。Composable Finance 提供的一系列互操作性工具中不可或缺的一部分是跨链虚拟机 ( XCVM )。XCVM 是一个供开发者部署智能合约的平台,可以与不同平台上的其他智能合约进行通信。它使用 IBC 和 XCM 作为传输层,以促进 dapp 之间的本地互操作性。

IBC 不仅可以用于将具有不同共识算法的区块链互连,还可以与单机(没有共识算法的系统)连接。例如,使用 IBC 单机,可以在 Crypto.org 链上发行支持 IBC 的原生代币,而无需构建与 IBC 连接的区块链。

XCM 和 XCMP

与泛化性类似,XCMP 的可扩展性与 XCM 的可扩展性程度相关。XCM 旨在创建可以跨任意共识系统理解的通用消息格式。它的设计目标之一是面向未来和向前兼容。共识不可知性是 XCM 的另一个关键属性。这意味着它的范围超出了与中继链或平行链间通信相关的平行链。从理论上讲,它还可以促进采用这种消息传递格式的完全异构区块链之间的交互。

评论当今存在的架构,如前所述,存在三种使用 XCM 的主要传输协议——XCMP、UMP 和 DMP。目前,没有一个能够促进 Polkadot 和另一个独立区块链之间的互操作性。目前,使用 XCMP、UMP 或 DMP 可互操作意味着是平行链。尽管如此,可以想象,未来可能会出现一种利用 XCM 的传输协议,它确实可以实现 Polkadot 和其他独立区块链之间的通信。

用户体验

IBC

从最终用户的角度来看,IBC 交易是无缝的。虽然可以通过多个平台发起 IBC 转账,但请考虑通过Crescent DEX进行 IBC 交易的示例。如果用户 Alice 想使用她的 ATOM 代币为池提供流动性,或者将它们换成其他代币,她可以将她的 Keplr 钱包连接到 DEX 上并立即执行这些功能。

将她的 ATOM 从 Hub 发送到 Crescent DEX 是 IBC 转移,因为资金正在两个不同的区块链中移动——Cosmos Hub 和 Crescent DEX。然而,Alice 不需要知道 IBC 转账是什么或如何发起转账。在将她的代币存入 DEX 时,UI 会自动填写她的 Crescent 公共地址,如下所示。

post image

IBC 转账——在这种情况下是从 Hub 到 Crescent 的存款——快速、便宜且易于验证。正如 minstcan 区块浏览器中的时间戳所示,下面显示的事务只需要几秒钟即可执行。

post image

Tendermint 提供的即时确定性属性确保用户可能希望使用 IBC 执行的任何功能都具有成本效益。这个例子中的交易只有几美分。

Osmosis 是另一个启用 IBC 的区域,它完全从最终用户那里抽象出链间转移的概念。Osmosis DEX提供了一个时尚且易于导航的界面,供用户进行交换、质押、提供流动性或参与治理。

Interchain Accounts 使用 IBC 来进一步简化 Interchain UX。它允许区块链 A(控制器链)上的帐户控制区块链 B(主机链)上的帐户。在最广泛的意义上,这意味着 Alice 可以在她的链 B 账户上做的任何事情(投票、股权、转账)都可以从她的链 A 账户中执行。这通过将要在 IBC 数据包中执行的事务捆绑在一起来工作,然后将其从控制器发送到主机链。然后该消息在主机链上解绑并作为本地事务执行。使用跨链账户大大减少了平台跳跃的需要,以及执行特定功能所需的时间。

XCM 和 XCMP

XCM 于 5 月 4日上线,但截至撰写本文时,目前尚无用于跨平行链通信的 XCMP 通道。尽管如此,用户仍然可以通过 HRMP 在MoonbeamAcala之间发送资产来了解 XCMP 传输的工作原理。Moonbeam 是部署为平行链的普通以太坊。Acala 是另一个平行链,旨在充当 Polkadot 的 DeFi Hub,用户可以在其中质押、交换、借出和借入资产。

Polkadot 生态系统内正在进行积极的开发,以将 XCM 与所有平行链集成。最近部署了 Moonbeam 上的第一个 XCM 集成。Moonbeam 上的用户现在可以将他们的原生 DOT 代币从中继链转移到 Moonbeam,并在生态系统内与 EVM 兼容的 dapp 上使用它们。

XCM 另一个当前活跃的功能是中继链和 Acala 之间的可替代代币转移。随着 Acala 推出他们的流动质押产品,用户现在可以将他们的 DOT 从中继链发送到 Acala 并流动质押这些代币。Acala 平台具有直观且简单的用户界面,用于桥接代币、参与治理、LP-ing 和流动质押。

在平台上连接您的 Polkadot{.js} 钱包后,将 DOT 从中继链移动到 Acala 将在 UI 上自动填充您的目标地址。通过 XCM 启用的转账可在几秒钟内执行,通常花费不到一美元。

post image

开发者工具

IBC

在 Cosmos 生态系统中构建的个人可用的软件工具包括高吞吐量 BFT 共识引擎(Tendermint Core)、用于构建状态机的模块化框架(Cosmos SDK),以及通过IBC将区块链与其他数据系统无限互连的方法. 从 2017 年开始,随着时间的推移,所有这些都作为一系列公共产品提供。自首次发布以来,这些公共产品中的每一个都根据使用它们的团队共享的反馈不断地迭代。

如果您使用 Cosmos SDK 构建应用程序,启用 IBC 就像导入 IBC 模块并对代码库进行一些更改一样简单,详见此处。您还可以创建自己的自定义 IBC 应用程序模块

在轻客户端和中继器方面,Golang 和 Rust 中的Tendermint 轻客户端实现以及Solo Machine 轻客户端正在生产中。EVM和基于 Substrate 的链的轻客户端目前正在开发中。对于中继器,GolangRust中的实现是活跃的。

除了实施 IBC 所需的工具外,Cosmos 生态系统还为开发人员提供了一套广泛的产品来构建自己的主权区块链。例如,使用 Cosmos SDK 构建的Ignite CLI有助于在几分钟内启动生产就绪的区块链,使用内置中继器连接其他支持 IBC 的链等等。

由于可用工具的质量和可访问性,Cosmos 上的开发活动在过去几年中优于其他生态系统(如下面的 Messari 图表所示)。根据chaindebrief 最近发布的一份报告,从 2020 年到 2021 年,Cosmos 生态系统中的开发者增长率为 72%,而 Polkadot 为 47%。

 Source: Messari
 Source: Messari

XCMP

SubstrateCumulus构成了 SDK——或 PDK(平行链开发工具包)——可供开发人员构建平行链或平行线程。与 Cosmos SDK 类似,PDK 大大减少了启动新区块链所需的时间和精力。构建基于 Substrate 的链允许在 Polkadot 生态系统内无缝集成并与其他平行链交互,同时由中继链保护。

使用 Substrate 应用程序开发链提供了许多开箱即用的有用功能,例如 P2P 网络、共识层和存储。但它不提供与 Polkadot 的直接兼容性。为此,作为 Substrate 的扩展的 Cumulus 可用于构建平行链,可以与它们的对应物以及中继链连接。它提供了实现平行链基本方面所需的必要工具,例如状态转换功能和收集器。将来也可以使用 Cumulus 实现 XCMP。

除了 PDK 之外,Polkadot 还为开发人员提供了一系列有用的工具,例如XCM 模拟器、支持 WebAssembly 智能合约的Substrate 合约托盘和自己的原生编程语言墨水!,一个用于 Polkadot API 的 CLI 工具,以及一个 XCM 测试网Rococo,其中平行链可以通过中继链路由消息来相互交互。

结论

经济学家托马斯·索威尔著名地写道“没有解决办法,只有取舍”。这对于设计分布式系统尤其适用。建立互操作性标准没有一个正确的解决方案,只有权衡取舍。从这个意义上说,Cosmos 和 Polkadot 通过各自的设计决策选择了两种截然不同的权衡。

IBC 和 XCMP 之间的主要区别很大程度上受底层协议设计以及各自的共识算法的影响。Polkadot 的共享安全模型在中继链和平行链之间引入了高度依赖。它还强加了许多资源限制。例如,平行链可以与其对应方开放的 XCMP 通道数量存在上限,以及与通道开放相关的经济成本。

话虽如此,共享安全的优势也不容忽视。平行链的好处是从一开始就受到中继链的保护。相比之下,Cosmos 区域在早期阶段更容易受到攻击,因为它们需要引导自己的验证器集。启动后,Interchain Security 解决了这个问题。

但另一方面,保护自己的链增加了 Cosmos 区域享有的绝对主权。这允许用户和建设者决定他们网络的命运,而不必受制于中央机构,其利益可能并不总是与其他人的利益一致。

虽然 IBC 并非没有局限性,但 XCMP 特有的通道缺陷和资源限制在 IBC 上是不存在的。通过 IBC 互连的特定应用程序链生态系统之间不存在依赖关系。Cosmos 设计的本质允许独立链失败而不影响其他链。

互操作性标准中的这种容错特性怎么强调都不为过。Terra 最近发生的事件就是一个例子。Terra 是支持 IBC 的区块链之一。尽管该链停止运行,并且其稳定币几乎失去了所有价值,但 Terra 与其他链互连的事实并没有因为 IBC 本身而产生风险。在危机中,IBC 在安全性、可靠性或性能方面没有表现出任何妥协。

Cosmos 和 Polkadot 设想了一个区块链相互共享和复合价值的世界。为了实现上述愿景,两个网络都选择了在技术和哲学上彼此不同的方法。尽管如此,两个生态系统都必须继续建立和创造价值,以使跨链取得成果。

关于作者:这篇文章由IBC 的协议分析师Aditya Ravi Raj撰写

本文只做翻译,版权归原作者所有。