【区块链】区块链跨链通信研究概述

区块链跨链通信研究概述

跨链技术本质上是⼀种将A链上的数据D(或信息I,或消息M)安全可信地转移到B链并在B链上产⽣预期效果的⼀种技术。因为区块链系统本来就是⼀种特殊的分布式账簿数据库系统,所以这个转移的数据,最常见的就是资产的数据,如代币余额。

目前,主流的区块链跨链技术⽅案**按照其具体的两种架构(实现⽅式)**主要有:

  • 公证⼈机制;
  • 哈希锁定
  • 侧链&中继链
  • 分布式私钥控制。

⽬前,最有名的跨链项⽬有CosmosPolkadot,两者采⽤的都是基于中继链的多链多层架构。由此可⻅,侧链&中继链技术将会是未来跨链技术的主⼒

本⽂⾸先简要介绍跨链的技术原理。其中简要介绍公证⼈机制、哈希锁定,详细介绍侧链&中继链技术。然后将介绍⼏个相关的跨链项⽬,包括基于ETH的Plasma基于Polkadot的达尔文网络基于Cosmos 的IRIS

公证人机制及哈希锁定

跨链交互根据所跨越的区块链底层技术平台的不同可以分为:同构链跨链和异构链跨链。同构链之间安全机制、共识算法、⽹络拓扑、区块⽣成验证逻辑都⼀致,它们之间的跨链交互相对简单。⽽异构链的跨链交互相对复杂,如Bitcoin采⽤PoW算法⽽Fabric采⽤传统确定性共识算法,其区块的组成形式和确定性保证机制均有很⼤不同,直接跨链交互机制不易设计。异构链之间的跨链交互⼀般需要第三⽅辅助服务辅助跨链交互

跨链要达到安全可信必然对跨链机制、步骤等有⼀些要求,其中最重要的就是跨链事务的原⼦性。对于普通的链内交易来说,交易需要⽀持原⼦性——交易如果失败则需要回滚。⽽跨链的交易也是如此,其失败时要回滚涉及本次交易两条或多条链的交易。

1. 公证人机制(Notary Schemes)

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

假设A和B进⾏1个BTC换50个ETH的交易:
1. A将自己的1个BTC存入交易所的比特币地址;B将自己的50个ETH存入交易所的以太坊地址;
2. A在交易所上挂单:1 BTC for 50 ETH;
3. B通过交易所完成与A的交易,A得到50个ETH,B得到1个BTC。这里会有不少的形式:一种是B挂出购买比特币的单子,然后交易所撮合;另一种是B直接看到A挂出的卖单,然后直接要这个卖单。
4. A将从交易所得到的50个ETH提币到自己的以太坊账户中;B将从交易所得到的1个BTC提币到自己的比特币账户;通过引入中介完成A和B的BTC和ETH的交换。

通过该例⼦可以看出交易所的⽅式⽬前仅能够⽀持资产的交换,且资产交换的原⼦性、安全性完全由中⼼化的交易所保障,故存在⼀定的中⼼化⻛险。

2. 哈希锁定(Hash-Locking)

哈希锁定的典型实现是哈希时间锁定合约HTLC(Hashed TimeLock Contract)。哈希时间锁定最早出现在⽐特币的闪电⽹络。哈希时间锁定巧妙地采⽤了哈希锁和时间锁,迫使资产的接收⽅在deadline内确定收款并产⽣⼀种收款证明给打款⼈,否则资产会归还给打款⼈。收款证明能够被付款⼈⽤来获取接收⼈区块链上的等量价值的数量资产或触发其他事件。哈希锁定只能做到交换⽽不能做到资产或者信息的转移,因此其使⽤场景有限。
跨链交易示例说明

以公证人机制示例中的需求为例:
1. A随机构建一个字符串s,并计算出其哈希h;
2. A将h发送给B;
3. A通过合约锁定自己的1个BTC资产,设置一个较长的锁定时间T1,再设置了获取该BTC的条件:B提供h的原始值s;
4. B锁定50个ETH到自己的合约,设置一个相对较短的锁定时间T2(T2<T1)。再设置50个ETH的获取条件:A提供h的原始值s;
5. A将字符串s发送到B的合约获得50个ETH;
6. B观察到步骤5中A的s值,将其发送给A的合约成功获取1个BTC;至此完成资产的交换。
7. 如果超时,则锁定的资产返回原主。

从上述过程看,哈希时间锁定合约有一些约束条件:

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

侧链/中继链

什么是侧链?

最初,主链特指比特币主网区块链。所谓侧链就是除了比特币区块链以外的,任何能遵循侧链协议并和比特币互通的一切区块链。侧链使得比特币有更好的流动性;而在比特币主网上开发应用很困难,现在通过在侧链上开发应用再使用互通方式与主链连接可以解决这个问题,也就是间接使用了比特币,从而进一步巩固了比特币的中心地位。

扫描二维码关注公众号,回复: 10748623 查看本文章

根据维基百科上的解释:侧链用来指代与主区块链并⾏的那条区块链。来⾃主区块链的entries可以向侧链连接,也可以被侧链连接;这样⼀来,侧链就可以独⽴于主区块链进⾏操作(例如通过使⽤备⽤的记录保持⽅式)。⼀个侧链模型是驱动链。”
这里包含三个要点:

  1. 侧链是相对的。不能单纯的说某条链B是侧链,而必须说这条链B可以是链A的侧链;
  2. 侧链与主链是独立的。链B可以有自己的功能,在它自己运行时不需要链A的支持。如果链B发生运行故障或被中心化控制,不会直接影响到链A本身的运行(但是可以间接影响,比如链B被控制后,链A还依旧与之交互);
  3. 侧链与主链可以连接互通,即跨链。当要实现跨链的功能时才需要链B和链A进行互通。因为侧链的互通机制是其最主要的功能,所以常常将侧链与主链的互通称为侧链技术。至于侧链本身是否包含在侧链技术之中,还存在争论。

侧链的意义

从主链单链⻆度讲,侧链可以虚拟化横向和纵向提升主链的性能。

  • 所谓横向,就是将多个侧链与主链互通,将⼤部分交易放到侧链上,然后再通过与主链互通实现,可以虚拟地提升主链的TPS。
  • 所谓纵向,就是侧链可以有主链不具有的功能,通过侧链,主链看上去也像是⽀持了这些功能。
  • 所谓虚拟化,就是虽然有横向和纵向的提升,但是主链本身并任何没有变化,只是通过众多侧链帮其起到类似代理的作⽤,使其看上去性能提升。

从全局角度看,侧链作为跨链技术的一种,自然是为万链互连做出了重要贡献。实现万链互联有两者架构:

  1. 任何⼀条链,既有主链的功能,⼜有侧链的功能(⼀些资料将拥有侧链功能叫做遵循侧链协议),这就像计算机⽹络中任何计算机既是主机⼜是路由器。
  2. 只有特定的⼏条链作为主链,其他所有链都只⽀持侧链功能,就和现在的计算机⽹络类似,有⽹络核⼼部分——单纯的路由器,也有⽹络的边缘部分——单纯的主机。

侧链技术

侧链是通过双向锚定技术实现的。将暂时的数字货币在主链中锁定,同时将等价的数字资产在侧链中释放。实现双向锚定的最大难点在于协议改造需要兼容现有主链,也就是不能对现有主链的工作造成影响。其具体的实现方式有:单一托管模式、联盟模式、SPV模式、驱动链模式、混合模式。

  • 单一托管模式:类似交易所做中介完成锁币放币。一种最简单的实现主链与侧链双向锚定的方法就是通过将数字资产发送到一个主链单一托管方(类似于交易所),当单一托管方收到相关信息后,就在侧链上激活相应数字资产。这个解决方案的最大问题是过于中心化
  • 联盟模式:即公证⼈模式,由多个公证⼈的多重签名来对转移资产的交易进⾏签名,避免了中⼼化。在这种模式中,如果要想盗窃主链上冻结的数字资产就需要突破更多的机构,但是侧链安全仍然取决于公证人联盟的诚实度
  • SPV模式:SPV(Simplified Payment Verification)模式是最初的侧链白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化双向锚定技术最初设想。==SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。==在SPV模式中,用户在主链上将数字资产发送到主链的一个特殊的地址,这样做会锁定主链的数字资产,该输出仍然会被锁定在可能的竞争期间内,以确认相应的交易已经完成,随后会创建一个SPV证明并发送到侧链上。此刻,一个对应的带有SPV证明的交易会出现在侧链上,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上打开具有相同价值的另一种数字资产这种数字资产的使用和改变在稍后会被送回主链。当这种数字资产返回到主链上时,该过程会进行重复。它们被发送到侧链上锁定的输出中,在一定的等待时间后,就可以创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。SPV模式存在的问题是需要对主链进行软分叉
  • 驱动链模式:驱动链概念是由Bitcoin Hivemind创始人Paul Sztorc提出的。在驱动链中,矿工作为‘算法代理监护人’,对侧链当前的状态进行检测。换句话说,矿工本质上就是资金托管方,驱动链将被锁定数字资产的监管权发放到数字资产矿工手上,并且允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链的状态,当他们收到来自侧链的要求时,他们会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链中的参与程度越高,整体系统安全性也就越大。如同SPV侧链一样,驱动链也需要对主链进行软分叉
  • 混合模式:上述所有的模式都是对称的,而混合模式则是将上述获得双向锚定的方法进行有效的结合的模式。由于主链与侧链在实现机制存在本质的不同,所以对称的双向锚定模型可能是不够完善的。混合模式是在主链和侧链使用不同的解锁方法,例如在侧链上使用SPV模式,而在主链网络上则使用驱动链模式。同样,混合模式也需要对主链进行软分叉

这⾥SPV模式是使⽤得最多的,也是最有前途的。SPV就是简单⽀付验证(Simplifified Payment Verifification),其能验证交易是否存在。

BTC-Relay是号称的史上第⼀个侧链,其通过以太坊构建了⼀个⽐特币的侧链,运⽤以太坊的智能合约允许⽤户验证⽐特币的交易。
SPV交易示例

以之前的需求为例
1 B将50个ETH发送到BTCSwap的合约进行冻结(该合约若确认B接收到来自A的1个BTC就自动将50个ETH转给A)
2 A确认B冻结信息后,将1个BTC转到B的比特币账户;
3 BTC-Relay将比特币区块头推送到BTCSwap合约;A将自己转BTC给B的交易tx发给合约BTCSwap合约,请求50个ETH;
4 BTCSwap合约结合tx和比特币区块链进行SPV验证,验证通过则将50个ETH转到A的以太坊地址。

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

中继链

中继链算是公证⼈机制和侧链机制的融合和扩展,⽬前社区内最活跃的两个跨链项⽬ Cosmos 和 Polkadot 采⽤的都是基于中继链的多链多层架构,其中

  • Cosmos⽬前⽀持的是跨链资产交互;
  • Polkadot则宣称提供任意类型的跨链交互,具体实现还有待观察。

Cosmox的中继链机制

为了⽀持平⾏链之间的跨链操作,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,如图所示:
Cosmos Hub
另外,Cosmos网络的详细架构图如下所示。⼀条链从层次结构上讲,分为⽹络层、共识层、应⽤层为⽅便平⾏链开发,Cosmos提供了tendermint core(简称tendermint)和Cosmos SDK(Go语⾔)。其中tendermint 是指⽹络层、共识层的封装,⽽Cosmos SDK是应⽤层中常⽤的模块:账户、治理、Staking、IBC等等的封装。因此,⾃⼰开发⼀条新链可以使⽤Cosmos SDK+ tendermint,并且由此开发出来的链能直接与 Cosmos Hub连接(Cosmos Hub⾃⼰本身也是⽤Cosmos SDK+tendermint开发的)。
Cosmos的详细架构图
⽽对于⾮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功能的⼀条链。

协议应该是各⽅达成共识的,上面说到的“侧链协议”其实并不是真正的协议,因为侧链技术⽬前没有像计算机⽹络⼀样有⼀些共识的协议,所以其实只能说是侧链机制。⽽Cosmos为跨链带来的最⼤贡献在于IBC协议的设计,IBC协议提供了⼀种通⽤的跨链协议标准。IBC的设计使得跨链交易可以在多个Hub之间进⾏安全路由和转发,类似⽬前互联⽹的TCP/IP 协议。但是遗憾的是⽬前的Cosmos设计也只能够⽀持资产的跨链,⽽且由于不同区块链的业务不同其共识速率的不⼀致也会影响跨链交易有效性的证明。这⾥只讲了Cosmos的侧链技术,关于Cosmos更多的内容,请看其他资料。

Polkadot的中继链机制

Polkadot的平⾯体系结构下图所示,其中有三种链⻆⾊和四种参与⽅。
Polkadot体系结构
三种链角色

  • 中继链(Relay chain):中继链位于Polkadot的体系的核心地位,主要是为整个系统提供统一的共识和安全性保障;
  • 平行链(Parachain):在Polkadot中平行链负责具体的业务场景,平行链自身不具备区块的共识,它们将共识的职责渡让给了中继链,所有平行链共享来自中继链的安全保障,中继链是Polkadot组成的一部分(中继链有可能不是一条链,Polkadot对其定义是App的数据结构,因此可以是DApp甚至是一般的App;不过大部分情况下还会是一条链);
  • 转接桥(Bridges):在Polkadot中转接桥其实有三个含义,其中最重要的含义是:为Polkadot体系之外的区块链(如Bitcoin,Ethereum)提供不同的Bridge与Polkadot连接在一起进行跨链交互。三种链角色和Cosmos体系中差不多。

四种参与方

  • 验证者(Validator):验证者负责Polkadot的⽹络出块,会运⾏⼀个中继链的客户端,在每⼀轮区块产⽣中会对其提名的平⾏链出的块进⾏核验。当平⾏链的块都被他们的验证者集合确定好之后,验证者们会将所有平⾏链区块头组装到中继链的区块并进⾏共识;
  • 收集者(Collator):也叫核对⼈: 帮助验证者收集、验证和提交备选平⾏链区块,维护了⼀个平⾏链的全节点;
  • 钓鱼人(Fisherman):钓鱼人主要靠检举非法交易或者区块以获取收益;
  • 提名人(Nominator):拥有stake的相关方,维护和负责验证者的安全性。

下图对这四种参与方进行了描述。整个过程是自动地、去中心化地执行。
四种参与方的详细描述
用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。这组验证人并不是来自平行链,而是来自中继链统一管理的验证人池,通过随机分组指定给平行链。
每条平行链都有一个消息输出队列和一个消息输入队列。如果用户发起的是跨链交易,交易就会被放进输出队列。再被目标平行链的收集人放入其输入队列。目标平行链的收集人执行交易,生成区块,由验证人组敲定。
提名人是Polkadot基础通过DOT的持有者,它希望质押DOT获得收益。但是要么是因为DOT数量少,要么是缺少运行维护验证人节点的专业技能。因此系统提供了另一个参与途径,就是持币者选择它信任的验证人,把自己的DOT通过验证人质押,分享验证人收益。
钓鱼人是个软件进程,它监控网络上的非法行为,一旦发现就会向区块链提交举报交易。举报交易也要经过共识过程,通过2/3以上验证人验证,打包进区块,惩罚和奖励也都是区块链交易。

在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语言开发。

参考资料

  • https://mp.weixin.qq.com/s/X7ztDBG6kqgrBaGwrrsfQw
  • https://www.jianshu.com/p/233657a2a205
  • https://www.jinse.com/blockchain/189868.html
发布了279 篇原创文章 · 获赞 169 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/ARPOSPF/article/details/105451866