当前的区块链底层技术平台百花齐放,不同的业务、不同的技术底层的区块链之间缺乏统一的互联互通的机制,这极大限制了区块链技术和应用生态的健康发展。跨链的需求由此而来,本文通过分析几种主流的跨链方案探讨跨链技术的本质及相应的解决思路。
跨链交互根据所跨越的区块链底层技术平台的不同可以分为同构链跨链和异构链跨链:同构链之间安全机制、共识算法、网络拓扑、区块生成验证逻辑都一致,它们之间的跨链交互相对简单。而异构链的跨链交互相对复杂,比如比特币采用 PoW 算法而联盟链 Fabric 采用传统确定性共识算法,其区块的组成形式和确定性保证机制均有很大不同,直接跨链交互机制不易设计。异构链之间的跨链交互一般需要第三方辅助服务辅助跨链交互。
截至目前,主流的区块链跨链技术方案按照其具体的实现方式主要分为三大类,分别是公证人机制、侧链/中继和哈希锁定:
1.公证人机制(Notary schemes):?公证人也称见证人机制,公证人机制本质上是一种中介的方式。具体而言,假设区块链 A 和 B 本身是不能直接进行互操作的,那么他们可以引入一个共同信任的第三方作为中介,由这个共同信任的中介进行跨链消息的验证和转发。公证人机制的优点在于能够灵活地支持各种不同结构的区块链(前提是公证人能够访问相关方的链上信息),缺点在于存在中心化风险。
2.哈希锁定(Hash-locking):?哈希锁定技术主要是支持跨链中的原子资产交换,最早起源自比特币的闪电网络。其典型实现是 h 哈希时间锁定合约 HTLC(Hashed TimeLock Contract)。哈希锁定的原理是通过时间差和影藏哈希值来达到资产的原子交换。哈希锁定只能做到交换而不能做到资产或者信息的转移,因此其使用场景有限。
3.侧链/中继链(Sidechains / Relays):?侧链是指完全拥有某链的功能的另一条区块链,侧链可以读取和验证主链上的信息。主链不知道侧链的存在,由侧链主动感知主链信息并进行相应的动作。而中继链则是侧链和公证人机制的结合体,中继链具有访问需要和验证进行互操作的链的关键信息并对两条链的跨链消息进行转移。从这个角度看中继链也是一种去中心的公证人机制。
下面就这几种跨链方式的典型实现方式进行详细分析:
至此完成了 Alice 和 Bob 的 BTC 和 ETH 的交换(案例中省去了交易所的服务费)。通过该例子可以看出交易所的方式目前仅能够支持资产的交换,且资产交换的原子性、安全性完全由中心化的交易所保障存在较大的中心化风险。
除此之外还有一种著名的分布式账本技术 Ripple,也是采用类似公证人的机制来解决全球金融机构之间的资产交换。Ripple 的系统架构如上图所示,Ripple 系统中交易通过网络中的验证者进行交易的验证,验证者验证的交易通过加密算法保护交易内容不能被验证着窥探从而保证交易的隐私性。
公证人机制的跨链技术实现简单,且能够比较灵活地支持不同类型的底层区块链体系。公证人机制的主要问题在于公证人机制的安全性保障完全由公证人系统保障。参与跨链的相关方需要对中间人给予较大的信任。
哈希时间锁定(HTLC)最早出现在比特币的闪电网络,跨链资产交换支持一定数量的 A 链资产和一定数量的 B 链资产进行原子交换。哈希时间锁定巧妙地采用了哈希锁和时间锁,迫使资产的接收方在 deadline 内确定收款并产生一种收款证明给打款人,否则资产会归还给打款人。收款证明能够被付款人用来获取接收人区块链上的等量价值的数量资产或触发其他事件。
如下图所示,我们用一个例子来阐述如何使用哈希时间锁定进行跨链的原子资产交换,假设 Alice 和 Bob 有资产交换的需求,Alice 想用 1 个 BTC 和 Bob 换 20 个 ETH. 那么首先需要在两条链上设置哈希时间锁定合约,然后执行如下步骤:
从上述的过程我们可以看出哈希时间锁定合约有一些约束条件:
哈希锁定的思想运用在支付领域较多,例如闪电网络、雷电网络以及跨链资产转移协议?Interledger?等。但是哈希锁定目前看只适合偏资产或者关键数据的交换,甚至不支持转移因此其试用场景受限。
BTC-Relay 是号称的史上第一个侧链,BTC-Relay 是通过以太坊构建了一个比特币的侧面,运用以太坊的智能合约允许用户验证比特币的交易。这里我们仍然以 Alice 1BTC 和 Bob 的 20ETH 数字资产交换为例阐述相应原理:
这种跨链的实现方式简单,但是 BTC Relay 需要额外的信任和维护成本,且智能合约内部的数据存储会有体积膨胀的问题。但是侧链的机制相对哈希锁定而言能够提供更多的跨链交互场景,侧链以及类 SPV 验证的思想适合所有跨链的场景。
为了支持平行链之间的跨链互操作,Cosmos 提出了一种跨链交互协议 IBC(Inter-Blockchain Communication protocol), 并利用 tendermint 共识算法的即时确定性实现多个异构链之间的价值和数据传输。
首先我们以 Chain A 到 Chain B 转账 10 token 为例说明使用 IBC 的跨链交互:
以上是使用 IBC 协议的两个平行链直接进行跨链的基本过程,如果区块链很多,那么这种方式的两两跨链复杂度会呈现组合级别增加。因此 Cosmos 网络又引入了一种 Hub 的中继链,所有的平行链都通过 IBC 连接到 Hub,让 Hub 辅助跨链交易的验证和转移,目前 Cosmos 实现了一个官方的 Hub 称为 Cosmos Hub(如前图所示)。
如下图所示是 Cosmos 网络的详细架构图 Cosmos 为方便平行链开发提供了基本服务 CosmosSDK 包括:共识、网络以及 IBC 协议等,这样基于 Cosmos SDK 开发的子链之间都能够方便地互相交互。此外对于非 Cosmos SDK 开发的区块链需要使用 Peg Zone 进行桥接,如图中的 Ethereum。
笔者认为 Cosmos 为跨链带来的最大贡献在于 IBC 协议的设计,IBC 协议提供了一种通用的跨链协议标准。IBC 的设计使得跨链交易可以在多个 Hub 之间进行安全路由和转发,类似目前互联网的 TCP/IP 协议。但是遗憾的是目前的 Cosmos 设计也只能够支持资产的跨链,而且由于不同区块链的业务不同其共识速率的不一致也会影响跨链交易有效性的证明。
Polkadot:Polkadot 也是一种集成平行链和中继链的多层多链架构,Polkadot 区块链的整体架构图如下图所示,主要包含三种角色链和四种参与方:
三种链角色:
四种参与方:
Polkadot 的特性包括两个,一个是共享安全性,一个是不需信任的跨链交互。这里的不需信任的跨链交互其实是和第一个特点共享安全性密切相关的,而且 Polkadot 的不需信任的跨链交互也主要是只其内部的平行链之间。
在 Polkadot 中如果 parachain A 需要发送一笔交易到 parachain B 的过程如下:
以上便是 Polkadot 跨链交易的主要步骤,由于所有平行链的共识同步发生(中继链区块示意图如下),因此跨链交易不会有诸如双花等安全性问题。
Polkadot 的平行链之间的跨链交换的安全性保障主要来自共享安全性这个特点,共享安全性使得跨链交易和普通交易同步发生也就不存在其他跨链场景中的双花等跨链数据不一致问题。其次 Polkadot 中的引入的特殊状态验证方法方便中继链进行跨链等消息的有效性验证。
值得一提的是 Polkadot 项目目前还处在项目初期,对于 parachain 的设计、Collator 的协作以及 Validator 的共识、工作效率等都未完善。这种共享安全性的方式是否也限制了平行链自身的性能都还有待考证。
综合以上的一些主流跨链场景和方案的分析,从跨链的概念以及需求上看跨链的本质其实就是如何将 A 链上的消息 M 安全可信地转移到 B 链并在 B 链上产生预期效果。那么一个成功的跨链交互到底需要解决哪些问题呢?笔者认为主要有以下四个问题:
那么针对这些关键本质问题,如何去处理呢?笔者设想未来的区块链应该在底层平台的设计之初就需要遵循统一的跨链协议标准,就像现在的操作系统对 TCP/IP 协议的支持一样。需要进行通用跨链的区块链至少要支持一下功能:
领取专属 10元无门槛券
私享最新 技术干货