跨链通信简要研究

跨链通信简要研究

来源 | DegameLabs 链游实验室 责编 | Carol
出品 | 区块链大本营(ID:blockchain_camp)**
跨链技术本质上是⼀种将 A 链上的数据 D (或信息 I,或消息 M)安全可信地转移到 B 链并在 B 链上产⽣预期效 果的⼀种技术。**因为区块链系统本来就是⼀种特殊的分布式账簿数据库系统,所以这个转移的数据,最常见的就是资产的数据,如代币余额。

目前主流的区块链跨链技术⽅案按照其具体的两种架构 = 实现⽅式主要有:公证⼈机制、哈希锁定、侧链 & 中继链、分布式私钥控制。
⽬前最有名的跨链项⽬有 Cosmos 和 Polkadot,两者采⽤的都是基于中继链的多链多层架构。由此可⻅,侧链 & 中继链技术将会是未来跨链技术的主⼒。
本⽂⾸先简要介绍跨链的技术原理。其中会简要介绍公证⼈机制、哈希锁定,详细介绍侧链 & 中继链技术。然后本⽂将介绍⼏个相关的跨链项⽬,包括基于 ETH 的 Plasma、基于 Polkadot 的达尔文网络,基于 Cosmos 的 IRIS。

跨链通信简要研究

公证人机制及哈希锁定

跨链交互根据所跨越的区块链底层技术平台的不同可以分为同构链跨链和异构链跨链。同构链之间安全机制、共识算法、⽹络拓扑、区块⽣成验证逻辑都⼀致,它们之间的跨链交互相对简单。⽽异构链的跨链交互相对复杂,如 Bitcoin 采⽤PoW 算法⽽Fabric 采⽤传统确定性共识算法,其区块的组成形式和确定性保证机制均有很⼤不同,直接跨链交互机制不易设计。异构链之间的跨链交互⼀般需要第三⽅辅助服务辅助跨链交互。
跨链要达到安全可信必然对跨链机制、步骤等有⼀些要求,其中最重要的就是跨链事务的原⼦性。对于普通的链内交易来说,交易需要⽀持原⼦性——交易如果失败则需要回滚。⽽跨链的交易也是如此,其失败时要回滚涉及本次交易两条或多条链的交易。
1、公证⼈机制(Notary schemes)

公证⼈也称⻅证⼈机制,其是⼀种中介的⽅式。设区块链 A 和 B 本身是不能直接进⾏互操作的,那么他们可以 引⼊⼀个共同信任的第三⽅作为中介,由这个共同信任的中介进⾏跨链消息的验证和转发。很多时候,这个公证⼈/ 中介就是交易所。其优点在于⽀持异构的区块链跨链,缺点在于有中⼼化⻛险,只能实现交换不能实现转移。

跨链交易实例 1

假设 Alice 和 Bob 进⾏1 个 BTC 换 50 个 ETH 的交易:

  1. Alice 将⾃⼰的 1 个 BTC 存⼊交易所的⽐特币地址 ;Bob 将⾃⼰的 50 个 ETH 存⼊交易所的以太坊地址;
  2. Alice 在交易所上挂单:1 BTC for 50 ETH;
  3. Bob 通过交易所完成与 Alice 的交易,Alice 得到 50 ETH,Bob 得到 1 BTC 这⾥会有不少的形式。⼀种是 Bob 挂出购买⽐特币的单⼦,然后交易所撮合。⼀种是 Bob 直接看到 Alice 挂出卖单,然后直接要这个卖单。
  4. Alice 将交易所得的 50 ETH 提币到⾃⼰的以太坊账户;Bob 将交易所得的 1 BTC 提币到⾃⼰的⽐特币账 户;通过引⼊中介完成了 Alice 和 Bob 的 BTC 和 ETH 的交换。

通过该例⼦可以看出交易所的⽅式⽬前仅能够⽀持资产的交换,且资产交换的原⼦性、安全性完全由中⼼化的交易所保障,故存在⼀定的中⼼化⻛险。
2、 哈希锁定(Hash-locking)
哈希锁定的典型实现是哈希时间锁定合约 HTLC(Hashed TimeLock Contract)。哈希时间锁定最早出现在⽐特币的闪电⽹络。哈希时间锁定巧妙地采⽤了哈希锁和时间锁,迫使资产的接收⽅在 deadline 内确定收款并产 ⽣⼀种收款证明给打款⼈,否则资产会归还给打款⼈。收款证明能够被付款⼈⽤来获取接收⼈区块链上的等量价值的数量资产或触发其他事件。哈希锁定只能做到交换⽽不能做到资产或者信息的转移,因此其使⽤场景有限。

跨链交易实例 2

仍以前⼀节中的交易需求为例

  1. Alice 随机构建⼀个字符串 s,并计算出其哈希 h;
  2. Alice 将 h 发送给 Bob;
  3. Alice 通过合约锁定⾃⼰的 1 个 BTC 资产,设置⼀个较⻓的锁定时间 T1, 再设置了获取该 BTC 的条件:Bob 提供 h 的原始值 s;
  4. Bob 锁定 50ETH 到⾃⼰的合约,设置⼀个相对较短的锁定时间 T2(T2 < T1)。再设置 50ETH 的获取条件:Alice 提供 h 的原始值 s;
  5. Alice 将字符串 s 发送到 Bob 的合约获得 50 个 ETH;
  6. Bob 观察到步骤 5 中 Alice 的 s 值,将其发送给 Alice 的合约成功获取 1 个 BTC; ⾄此完成资产的交换。
  7. 如果超时,则锁定的资产返回原主。

从上述的过程可以看出哈希时间锁定合约有⼀些约束条件:

  • 双⽅必须能够解析双⽅的合约内部数据,例如 s,例如锁定资产的证明等;
  • 哈希锁定的超时时间设置时需要保证存在时间差,这样在单⽅⾯作弊时另⼀⽅可以及时撤回⾃⼰的资产。

跨链通信简要研究

侧链 / 中继链

1、 侧链的含义及意义
首先,什么是侧链?

根据 [3],在⼀开始,主链特指⽐特币主⽹区块链。所以所谓侧链就是除了⽐特币区块链以外的,任何能遵循侧链协议并和⽐特币互通的⼀切区块链。侧链使得⽐特币有更好的流动性;⽽在⽐特币主⽹上开发应⽤很困难,现在通过再侧链上开发应⽤再使⽤互通⽅式与主链连接可以解决这个问题——间接使⽤了⽐特币,进⼀步巩固了⽐特币的中⼼地位。
不过,现在⾃然已经不能说主链特指⽐特币了。根据维基百科上的说法:“侧链⽤来指代与主区块链并⾏的那条区块链。 来⾃主区块链的 entries 可以向侧链连接,也可以被侧链连接;这样⼀来,侧链就可以独⽴于主区 块链进⾏操作(例如,通过使⽤备⽤的记录保持⽅式)。⼀个侧链模型是驱动链。”
这个说法包含三个要点:

  1. 侧链是相对的。我们不能单纯的说某条链 B 是侧链,⽽必须说这条链 B 可以是链 A 的侧链;

  2. 侧链与主链是独⽴的。链 B 可以有⾃⼰的功能,在它⾃⼰运⾏时不需要链 A 的⽀持。如果 B 链发⽣运⾏故障或被中⼼化控制,不会直接影响到 A 链本身的运⾏(但可以间接影响,⽐如 B 链被控制后,A 链还依旧与之交互);

  3. 侧链与主链可以连接互通,即跨链。当要实现跨链的功能时才需要 B 链和 A 链进⾏互通。因为侧链的互通机制是其最主要的功能,所以常常将侧链与主链的互通叫做侧链技术。⾄于侧链本身是否包含在侧链技 术之中,不同的项⽬有不同的看法。

其次,侧链的意义?
从主链单链⻆度讲,侧链可以虚拟化地横向和纵向提升主链的性能。所谓横向,就是将多个侧链与主链互通,将⼤部分交易放到侧链上,然后再通过与主链互通实现,可以虚拟地提升主链的 TPS。所谓纵向,就是侧链可以有主链不具有的功能,通过侧链,主链看上去也像是⽀持了这些功能。所谓虚拟化,就是虽然有横 向和纵向的提升,但是主链本身并任何没有变化,只是通过众多侧链⼩弟帮其起到类似代理的作⽤,使其看上去性能提升。
从全局⻆度讲,侧链作为跨链技术的⼀种,⾃然是为万链互连做出了重要贡献。实现万链互联有两者架构:1. 任何⼀条链,既有主链的功能,⼜有侧链的功能(⼀些资料将拥有侧链功能叫做遵循侧链协议),这就像计算机⽹络中任何计算机既是主机⼜是路由器。2. 只有特定的⼏条链作为主链,其他所有链都只⽀持侧链功能,就和现在的计算机⽹络类似,有⽹络核⼼部分——单纯的路由器,也有⽹络的边缘部分——单纯的主 机。
1.2、侧链的技术
侧链实现是通过双向锚定技术。将暂时的数字货币在主链中锁定,同时将等价的数字资产在侧链中释放。实现双向锚定的最⼤难点在于协议改造需兼容现有主链,也就是不能对现有主链的⼯作造成影响。根据 [2] 的说法,其具体实现⽅式有:单⼀托管模式、联盟模式、SPV 模式、驱动链模式、混合模式。
单⼀托管模式就是类似交易所做中介完成锁币放币,其实和。联盟模式即公证⼈模式,由多个公证⼈的多重签名来对转移资产的交易进⾏签名,避免了中⼼化。
SPV 模式是通过将交易发给本链的⼀个特殊地址,由此会⾃动创建⼀个 SPV 证明给侧链上并发起⼀个交易在侧链上解锁对应的资产。驱动链模式是⽤矿⼯来作为资⾦托管⽅,将资产的监管权发放到数字资产矿⼯⼿上,矿⼯进⾏投票决定何时解锁资产及将资产发送到何⽅。混合模式就是将这些侧链机制进⾏有效结合,对结构不同的链,为其使⽤最适合其结构的模式,如主链使⽤SPV,侧链使⽤驱动链。
这⾥SPV 模式是使⽤得最多的,也是最有前途的。SPV 就是简单⽀付验证(Simplifified Payment Verifification),其能验证交易是否存在。
BTC-Relay 是号称的史上第⼀个侧链,其通过以太坊构建了⼀个⽐特币的侧链,运⽤以太坊的智能合约允许⽤户验证⽐特币的交易。

SPV 交易实例

仍以之前的交易需求为例

  1. Bob 将 50ETH 发送到 BTCSwap 的合约进⾏冻结 (该合约若确认 Bob 接收到来⾃Alice 的 1BTC 就⾃动将 50ETH 转给 Alice);
  2. Alice 确认 Bob 冻结信息后,将 1BTC 转到 Bob⽐特币账户;
  3. BTC-Relay 将⽐特币区块头推送到 BTCSwap 合约;Alice 将⾃⼰转 BTC 给 Bob 的交易 tx 发给合约 BTCSwap 合约,请求 50ETH;
  4. BTCSwap 合约结合 tx 和⽐特币区块链进⾏SPV 验证,验证通过则将 50ETH 转到 Alice 的以太坊地址。

侧链的机制相对哈希锁定⽽⾔能够提供更多的跨链交互场景,侧链以及类 SPV 验证的思想适合所有跨链的场景。

2、中继链

中继链算是公证⼈机制和侧链机制的融合和扩展,⽬前社区内最活跃的两个跨链项⽬ Cosmos 和 Polkadot 采⽤的都是基于中继链的多链多层架构,其中 Cosmos⽬前⽀持的是跨链资产交互;⽽Polkadot 则宣称提供任意类型的跨链交互,但具体实现还有待观察。

Cosmos 的中继链机制 [1]

为了⽀持平⾏链之间的跨链操作,Cosmos 提出了⼀种跨链交互协议 IBC(Inter-Blockchain Communication Protocol)。

以链 A 到链 B 转账 10token 为例说明使⽤IBC 的跨链交互:

  1. 互相跟踪。如果 A 要和 B 进⾏跨链交易,那么 A 和 B 链需要分别运⾏相当于对⽅区块链的轻节点,这样可以实时接收到对⽅的区块头信息(⽅便后续执⾏类 SPV 验证);链 A、链 B 初始化 IBC 协议;

  2. 链 A 冻结 10token, 并⽣成相应的证明发送给链 B;

  3. 链 B 接收到相应的 IBC 消息,通过链 A 的区块头信息确定链 A 确实进⾏相应的资产冻结,然后链 B 会⽣成等价 10token 的资产。

以上是使⽤IBC 协议的两个平⾏链直接进⾏跨链的基本过程,如果区块链很多,那么这种⽅式的两两跨链复杂度会呈现组合级别增加。因此 Cosmos⽹络⼜引⼊了⼀种 Hub 的中继链,所有的平⾏链都通过 IBC 连接到 Hub,让 Hub 辅助跨链交易的验证和资产转移(于是乎,某链能与 Cosmos 体系中的链进⾏交互 = 某链能连接 到 Hub)。⽬前 Cosmos 实现了⼀个官⽅的 Hub 称为 Cosmos Hub (如图 1 所示)。

跨链通信简要研究

图 1__

图 2 是 Cosmos⽹络的详细架构图。⼀条链从层次结构上讲,分为⽹络层、共识层、应⽤层。 为⽅便平⾏链 开发,Cosmos 提供了 tendermint core (简称 tendermint)和 Cosmos SDK (Go 语⾔)。其中 tendermint 是指⽹络层、共识层的封装,⽽Cosmos SDK 是应⽤层中常⽤的模块:账户、治理、Staking、IBC 等等的封装 [4]。因此,⾃⼰开发⼀条新链可以使⽤Cosmos SDK+ tendermint,并且由此开发出来的链能直接与 Cosmos Hub 连接(Cosmos Hub⾃⼰本身也是⽤Cosmos SDK+tendermint 开发的)。

跨链通信简要研究

图 2

⽽对于⾮Cosmos SDK 开发的区块链(如已经存在的这些区块链),如果要与 Cosmos 体系中的链进⾏交互 (即能与 Hub 连接),需要使⽤Peg Zone 进⾏桥接,所谓的 Peg Zone 就是使⽤Cosmos SDK 开发的,既能 接⼊Hub 的,⼜能和原链进⾏交互的⼀条链。如图中的 Ethereum,如果要接⼊Cosmos Hub,则需要专⻔使⽤Cosmos SDK 开发⼀条起 Peg Zone 作⽤的新链。
所谓 Cosmos 主⽹是指由 Cosmos 团队⾃⼰开发的第⼀个官⽅版 Hub,也就是不同链进⾏跨链操作时的第⼀个中央枢纽。以太坊将是 Cosmos 最先连接的⾮Cosmos SDK 开发的公链,⽬前有两个项⽬去实现这种连接:Cosmos 开发团队主导的 Ethermint 项⽬,以及由 Loom Network 主导的 PlasmaChain。这两个项⽬其实就是开发⼀个连接以太坊和 Cosmos Hub 的、起 Peg Zone 功能的⼀条链。
协议应该是各⽅达成共识的,在 3.1、3.2⼩节中说到的“侧链协议”其实并不是真正的协议,因为侧链技术⽬前没有像计算机⽹络⼀样有⼀些共识的协议,所以其实只能说是侧链机制。⽽Cosmos 为跨链带来的最⼤贡献 在于 IBC 协议的设计,IBC 协议提供了⼀种通⽤的跨链协议标准。IBC 的设计使得跨链交易可以在多个 Hub 之间进⾏安全路由和转发,类似⽬前互联⽹的 TCP/IP 协议。但是遗憾的是⽬前的 Cosmos 设计也只能够⽀持资产的跨链,⽽且由于不同区块链的业务不同其共识速率的不⼀致也会影响跨链交易有效性的证明。这⾥只讲了 Cosmos 的侧链技术,关于 Cosmos 更多的内容,请看其他参考⽂献。

Polkadot 的中继链机制

Polkadot 的平⾯体系结构如图 3 所示。其有三种链链⻆⾊和四种参与⽅。

跨链通信简要研究

图 3__

三种链角色:

  • 中继链(Relay chain): 中继链位于 Polkadot 的体系的核⼼地位,主要是为整个系统提供统⼀的共识和安全性保障;

  • 平⾏链(Parachain): 在 Polkadot 中平⾏链负责具体的业务场景,平⾏链⾃身不具备区块的共识,它们将共识的职责渡让给了中继链,所有平⾏链共享来⾃中继链的安全保障,中继链是 Polkadot 组成的⼀部分(中继链有可能不是⼀条链 [5],Polkadot 对其定义是 App 的数据结构,因此可以是 DApp 甚⾄是⼀般的 App;不过⼤部分情况下还会是⼀条链);

  • 转接桥 (Bridges):在 Polkadot 中转接桥其实有三个含义 [6],其中最重要的含义是:为 Polkadot 体系之外的区块链 (如 Bitcoin, Ethereum) 提供不同的 Bridge 与 Polkadot 连接在⼀起进⾏跨链交互。三种链⻆⾊和 Cosmos 体系中差不多。

四种参与方:

  • 验证者 (Validator): 验证者负责 Polkadot 的⽹络出块,会运⾏⼀个中继链的客户端,在每⼀轮区块产⽣中会对其提名的平⾏链出的块进⾏核验。当平⾏链的块都被他们的验证者集合确定好之后,验证者们会将所有平⾏链区块头组装到中继链的区块并进⾏共识:

  • 收集⼈(Collator),也叫核对⼈: 帮助验证者收集、验证和提交备选平⾏链区块,维护了⼀个平⾏链的全节点:

  • 钓⻥⼈(Fisherman): 钓⻥⼈主要靠检举⾮法交易或者区块以获取收益;

  • 提名⼈(Nominator): 拥有 stake 的相关⽅,维护和负责验证者的安全性。

图 4 对这些参与⽅进⾏了图示说明。整个过程是⾃动地、去中⼼化地执⾏。

跨链通信简要研究图 4
⽤户在平⾏链发起交易,交易被收集⼈收集,打包成区块,交给⼀组验证⼈去验证。这组验证⼈并不是来⾃平⾏链,⽽是来⾃中继链统⼀管理的验证⼈池,通过随机分组指定给平⾏链。
每条平⾏链都有⼀个消息输出队列和⼀个消息输⼊队列。如果⽤户发起的是跨链交易,交易就会被放进输出队列。再被⽬标平⾏链的收集⼈放⼊其输⼊队列。⽬标平⾏链的收集⼈执⾏交易,⽣成区块,由验证⼈组敲 定。

提名⼈是 Polkadot 基础通证 DOT 的持有者,他希望质押 DOT 获得收益。但是要么是因为 DOT 数量少,要么是缺少运⾏维护验证⼈节点的专业技能。因此系统提供了另⼀个参与途径,就是持币者选择他信任的验证 ⼈,把⾃⼰的 DOT 通过验证⼈来质押,分享验证⼈收益。

钓鱼人是个软件进程,它监控⽹络上的⾮法⾏为,⼀旦发现就会向区块链提交举报交易。举报交易也要经过共识过程,通过 2/3 以上验证⼈验证,打包进区块,惩罚和奖励也都是区块链交易 [7]。

在 Polkadot 中如果 Parachain A 需要发送⼀笔交易到 Parachain B 的过程如下:

  • 链 A 将跨链交易放到⾃⼰的消息输出队列 engress。

  • 链 A 的 Collator 收集 A 链的普通交易以及跨链交易并提交给链 A 的验证者集合。

  • 链 A 的验证者集合验证成功,将本次链 A 的区块头信息以及链 A 的 engress 内信息提交到中继链上。中继链运⾏共识算法进⾏区块确认以及跨链交易路由,中继链上的验证者会将链 A 的相应交易从链 A 的 engress queue 中移动到链 B 的消息输⼊队列 ingress queue 中。

  • 链 B 执⾏区块,将 ingress queue 中相应交易执⾏并修改⾃身账本。

以上便是 Polkadot 跨链交易的主要步骤。Polkadot 为应⽤链提供的⼯具是 Substrate,⽬前⽀持 Rust 语⾔开发。
跨链通信简要研究跨链通信简要研究

推荐阅读

老铁们求在看!👇

猛戳“阅读原文”,填写中国远程办公-调查问卷

来源链接:mp.weixin.qq.com