跨链通信简要研究 | 技术帖

跨链技术本质上是⼀种将A链上的数据D(或信息I,或消息M)安全可信地转移到B链并在B链上产⽣预期效果的⼀种技术。

1 Abstract

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

目前主流的区块链跨链技术方案按照其具体的实现方式主要有:公证人机制、哈希锁定、侧链&中继链分布式私钥控制。

目前最有名的跨链项目有Cosmos和Polkadot,两者采用的都是基于中继链的多链多层架构。由此可见,侧链&中继链技术将会是未来跨链技术的主力。

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

2 公证人机制及哈希锁定[1]

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

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

2.1 公证人机制(Notary schemes

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

跨链交易实例:假设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.2 哈希锁定(Hash-locking

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

跨链交易实例(仍以前一节中的交易需求为例):

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;

Bob观察到步骤5中Alice的s值,将其发送给Alice的合约成功获取1个BTC; 至此完成资产的交换。

如果超时,则锁定的资产返回原主。

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

• 双方必须能够解析双方的合约内部数据,例如s,例如锁定资产的证明等;

• 哈希锁定的超时时间设置时需要保证存在时间差,这样在单方面作弊时另一方可以及时撤回自己的资产。

3 侧链/中继链

3.1 侧链的含义及意义

首先,什么是侧链

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

不过,现在自然已经不能说主链特指比特币了。根据维基百科上的说法:侧链用来指代与主区块链并行的那条区块链。来自主区块链的entries可以向侧链连接,也可以被侧链连接;这样一来,侧链就可以独立于主区块链进行操作(例如,通过使用备用的记录保持方式)。一个侧链模型是驱动链。

这个说法包含三个要点

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

侧链与主链是独立的。链B可以有自己的功能,在它自己运行时不需要链A的支持。如果B链发生运行故障或被中心化控制,不会直接影响到A链本身的运行(但可以间接影响,比如B链被控制后,A链还依旧与之交互)。

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

其次,侧链的意义?

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

从全局角度讲,侧链作为跨链技术的一种,自然是为万链互连做出了重要贡献。实现万链互联有两者架构:1. 任何一条链,既有主链的功能,又有侧链的功能(一些资料将拥有侧链功能叫做遵循侧链协议),这就像计算机网络中任何计算机既是主机又是路由器。2. 只有特定的几条链作为主链,其他所有链都只支持侧链功能,就和现在的计算机网络类似,有网络核心部分——单纯的路由器,也有网络的边缘部分——单纯的主机。

3.2 侧链的技术

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

单一托管模式就是类似交易所做中介完成锁币放币,其实和。联盟模式即公证人模式,由多个公证人的多重签名来对转移资产的交易进行签名,避免了中心化。

SPV模式是通过将交易发给本链的一个特殊地址,由此会自动创建一个SPV证明给侧链上并发起一个交易在侧链上解锁对应的资产。驱动链模式是用矿工来作为资金托管方,将资产的监管权发放到数字资产矿工手上,矿工进行投票决定何时解锁资产及将资产发送到何方。混合模式就是将这些侧链机制进行有效结合,对结构不同的链,为其使用最适合其结构的模式,如主链使用SPV,侧链使用驱动链。

这里SPV模式是使用得最多的,也是最有前途的。SPV就是简单支付验证(Simplified Payment Verification),其能验证交易是否存在。

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验证的思想适合所有跨链的场景。

3.3 中继链

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

3.3.1 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(如图3.1所示)。

跨链通信简要研究 | 技术帖

                                                                                  图3.1

3.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开发的)。

跨链通信简要研究 | 技术帖

                                                                                      图3.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更多的内容,请看其他参考文献。

3.3.2 Polkadot的中继链机制

Polkadot的平面体系结构如图3.3所示。其有三种链链角色和四种参与方。

跨链通信简要研究 | 技术帖

                                                                                图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的相关方,维护和负责验证者的安全性。

3.4对这些参与方进行了图示说明。整个过程是自动地、去中心化地执行。

跨链通信简要研究 | 技术帖

                                                                                 图3.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 语言开发。

4 跨链相关项目

4.1 ETH.Plasma

以太坊的Plasma是Layer2扩容的一个方案。Plasma其原理是将交易移到off-chain并在一条次链(Secondary Chain)中进行处理,其想法来自side chain,但完全一样。但Plasma不如State Channel来的成熟,目前只有在支付上的应用,数量也很少,正在进行支付以外领域的使用研究。

4.2 Polkadot.Darwinia

4.2.1 达尔文网络概述

达尔文网络,是使用Polkadot的Substrate的技术构建的跨链游戏网络。达尔文网络的技术其实可以看成是在Polkadot的Substrate之上的二次开发,将其改进成专门用于游戏资产和游戏操作的跨链交互。目前主要用于支撑进化星球及相关的业务体系(进化星球是一个建立在区块链上的游戏虚拟世界,也是一个DAO,类似于区块链上的《我的世界》)。主网Token是RING。

达尔文网络的运行模式有Solo模式Polkadot模式(值得注意的是,在不同的运行模式下具体的激励方案会有所不同[8]。)。

1)solo模式。其实,达尔文网络本身自己就是一个的网络,其有自己的中继链。在这个网络中,各种游戏成为达尔文的子世界(子大陆),这个子世界可以是一条使用Polkadot的Substrate开发的平行链,也可以是ETH或者EOS上的智能合约。这些子世界接入达尔文网络的中继链的方式和Polkadot Parachain接入Polkadot Relay-chain一样。

2)Polkadot模式。达尔文网络整体也可以看做是Polkadot的一个Parachain,并接入Polkadot的Relay-chain。从这个意义上讲,达尔文网络可以被看做是Polkadot的一个二阶Relay-chain (2nd order Relay-chain)

跨链通信简要研究 | 技术帖

                                                                          图4.1

达尔文网络结构见图4.1。在图中我们看到有一个东西叫做达尔文应用链,达尔文应用链之于达尔文网络等于Parachain之于Polkadot网络。达尔文应用链是基于 Substrate 和达尔文网络区块链内核(Darwinia Kernel)设计开发的一套应用区块链的框架。

4.2.2 星际资产标准

对于游戏资产跨链而言,最重要的自然是资产的数据结构及操作的定义。在达尔文网络官网的[9]中的“NFT可识别性”部分大致叙述了其星际资产编码标准。其认为在单一网络中,域内的Token ID在域内能标识唯一的物品,但是到了互连的环境下则不行。因此其设计了一个星际资产编码标准,让不同公链、不同游戏的资产在达尔⽂网络可以得到唯⼀标识,让游戏资产可以⽅便的跨链转移。  星际资产编码标准的字段含义如下。

 跨链通信简要研究 | 技术帖

                                                                             图4.2

4.3 Cosmos.IRIS

前面的达尔文网络是Polkadot生态中的项目(主网Token为IRIS),而IRIS则是Cosmos生态下的项目[10]。其旨在解决的主要挑战有两个:

分布式账本上链外计算和资源的集成与协作

– 解释:IRIS认为很多事情不应该放到链上或以智能合约的方式来解决,比如一些计算问题

– 解释:IRIS认为跨链的不应该只是资产,而应该是各种各样的资源(那为什么还选Cosmos?Cosmos只支持资产跨链=_=)

跨异构链的服务的互操作性

之前的达尔文网络面向的主要是游戏,而IRIS面向的是商业应用(其团队有一位曾在中科院计算技术研究所担任过研究员的博导站台)。IRIS预设企业和IRIS以Consumer(服务消费方)/Provider(服务提供方)的方式进行合作:IRIS为企业和项目方提供了更易用的SDK,来帮助他们利用分布式账本所带来的好处。

说完了IRIS的愿景,来看看其网络拓扑结构。

在拓扑结构上,IRIS和达尔文网络差不多。IRIS用Cosmos SDK+ Tendermint开发的,本身是一个网络,有Hub,也能接入Cosmos生态作为其Zone。当然IRIS是Cosmos生态下的,而达尔文网络是Polkadot生态下的。

跨链通信简要研究 | 技术帖

4.3中显然的内容都不解释了。其中的iService其实是IRIS Services的简称,其是用来弥合区块链世界与非链应用世界之间的鸿沟的。弥合的方式是协调Off-Chain服务的完整生命周期(从其定义、绑定(提供者注册)、调用到其治理(分析和争议解决),就是蓝色表格中的几个内容)。通过增强IBC处理逻辑以支持服务语义,IRIS SDK旨在允许分布式业务服务在整个区块链互联网上可用[11]

另外,其网络包含三种角色

• 消费者(Consumers):通过向网络发送请求并从网络接收响应来使用Off-Chain服务。

• 提供者(Providers):可以提供一个或多个iService定义的实现。并且通常充当位于其他公链和企业遗留系统中的基础服务和资源的适配器。提供程序监视并处理传入的请求,将响应发送回网络。通过将请求发送给其他提供者,提供者可以同时充当消费者

• Profiler:是代表IRIS Foundation Limited(“基金会”)的特殊用户,IRIS Foundation Limited是在香港成立的一家有限责任公司。该基金会将领导IRIS网络的建设。Profiler是唯一被授权以配置文件模式调用iService的用户,该服务旨在帮助创建和维护目标提供者配置文件,供消费者选择合适的提供者。

4.4 其他项目

ChainX、Edgeware是Polkadot生态中非常重要的两个项目,可以说是Polkadot生态中的一哥和二哥。基于Polkadot生态的项目在Teams building on Polkadot中有列出。这里暂时只作简要介绍。

ChainX是基于Polkadot的Substrate的资产跨链项目。ChainX通过去中⼼化的⽅式将链间资产进⾏统⼀转化,任何链只要建⽴与ChainX的连接,就可以与所有链进⾏资产互通。Polkadot旨在做底层基础建设,实现任意消息跨链,而ChainX则专注于资产跨链。ChainX的主网Token为PCX。

Edgeware是一个智能合约平台。一旦Polkadot上线主网,用户可以使用Edgeware在Polkadot上快速部署智能合约。支持WebAssembly,用户可以使用Rust编写Edgeware智能合约,在WASM中执行合约相比大部分虚拟机更快、更高效。

个人思考

万链互联令人激动,此举必将降低链开发的成本。因此未来会有更多区块链出现,鱼龙混杂不可避免。我猜想其中大部分链到时可能不是去中心化的,节点都被某一个公司所控制。在这种情况下,多条中心化的链互联,结果会是如何。

Reference

[1]趣链科技 WeChat. 关于跨链技术的分析和思考 

[2]李万才. 深入理解EOSp:232-247.

[3]长铗. 区块链:从数字货币到信用社会p:84-94.

[4]哔哔News. Cosmos 的万链互联计划!30秒说清楚 Cosmos 是什么!

[5]Polkadot. Documentation/Parachains

[6]Polkadot. Documentation/Bridges

[7]链闻ChainNews. 两万字全解 Polkadot 架构及下一代 DApp 开发技术

[8]达尔文网络 WeChat. 达尔文网络–Polkadot生态中的第一个游戏链

[9]达尔文网络 Website. Genepaper

[10]StakingScan Wechat. Iris Network(IRIS)

[11]Irisnet Github. WHITEPAPER

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年12月1日 下午6:46
下一篇 2019年12月1日 下午8:45

相关推荐

跨链通信简要研究 | 技术帖

星期日 2019-12-01 18:46:52

1 Abstract

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

目前主流的区块链跨链技术方案按照其具体的实现方式主要有:公证人机制、哈希锁定、侧链&中继链分布式私钥控制。

目前最有名的跨链项目有Cosmos和Polkadot,两者采用的都是基于中继链的多链多层架构。由此可见,侧链&中继链技术将会是未来跨链技术的主力。

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

2 公证人机制及哈希锁定[1]

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

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

2.1 公证人机制(Notary schemes

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

跨链交易实例:假设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.2 哈希锁定(Hash-locking

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

跨链交易实例(仍以前一节中的交易需求为例):

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;

Bob观察到步骤5中Alice的s值,将其发送给Alice的合约成功获取1个BTC; 至此完成资产的交换。

如果超时,则锁定的资产返回原主。

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

• 双方必须能够解析双方的合约内部数据,例如s,例如锁定资产的证明等;

• 哈希锁定的超时时间设置时需要保证存在时间差,这样在单方面作弊时另一方可以及时撤回自己的资产。

3 侧链/中继链

3.1 侧链的含义及意义

首先,什么是侧链

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

不过,现在自然已经不能说主链特指比特币了。根据维基百科上的说法:侧链用来指代与主区块链并行的那条区块链。来自主区块链的entries可以向侧链连接,也可以被侧链连接;这样一来,侧链就可以独立于主区块链进行操作(例如,通过使用备用的记录保持方式)。一个侧链模型是驱动链。

这个说法包含三个要点

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

侧链与主链是独立的。链B可以有自己的功能,在它自己运行时不需要链A的支持。如果B链发生运行故障或被中心化控制,不会直接影响到A链本身的运行(但可以间接影响,比如B链被控制后,A链还依旧与之交互)。

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

其次,侧链的意义?

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

从全局角度讲,侧链作为跨链技术的一种,自然是为万链互连做出了重要贡献。实现万链互联有两者架构:1. 任何一条链,既有主链的功能,又有侧链的功能(一些资料将拥有侧链功能叫做遵循侧链协议),这就像计算机网络中任何计算机既是主机又是路由器。2. 只有特定的几条链作为主链,其他所有链都只支持侧链功能,就和现在的计算机网络类似,有网络核心部分——单纯的路由器,也有网络的边缘部分——单纯的主机。

3.2 侧链的技术

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

单一托管模式就是类似交易所做中介完成锁币放币,其实和。联盟模式即公证人模式,由多个公证人的多重签名来对转移资产的交易进行签名,避免了中心化。

SPV模式是通过将交易发给本链的一个特殊地址,由此会自动创建一个SPV证明给侧链上并发起一个交易在侧链上解锁对应的资产。驱动链模式是用矿工来作为资金托管方,将资产的监管权发放到数字资产矿工手上,矿工进行投票决定何时解锁资产及将资产发送到何方。混合模式就是将这些侧链机制进行有效结合,对结构不同的链,为其使用最适合其结构的模式,如主链使用SPV,侧链使用驱动链。

这里SPV模式是使用得最多的,也是最有前途的。SPV就是简单支付验证(Simplified Payment Verification),其能验证交易是否存在。

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验证的思想适合所有跨链的场景。

3.3 中继链

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

3.3.1 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(如图3.1所示)。

跨链通信简要研究 | 技术帖

                                                                                  图3.1

3.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开发的)。

跨链通信简要研究 | 技术帖

                                                                                      图3.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更多的内容,请看其他参考文献。

3.3.2 Polkadot的中继链机制

Polkadot的平面体系结构如图3.3所示。其有三种链链角色和四种参与方。

跨链通信简要研究 | 技术帖

                                                                                图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的相关方,维护和负责验证者的安全性。

3.4对这些参与方进行了图示说明。整个过程是自动地、去中心化地执行。

跨链通信简要研究 | 技术帖

                                                                                 图3.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 语言开发。

4 跨链相关项目

4.1 ETH.Plasma

以太坊的Plasma是Layer2扩容的一个方案。Plasma其原理是将交易移到off-chain并在一条次链(Secondary Chain)中进行处理,其想法来自side chain,但完全一样。但Plasma不如State Channel来的成熟,目前只有在支付上的应用,数量也很少,正在进行支付以外领域的使用研究。

4.2 Polkadot.Darwinia

4.2.1 达尔文网络概述

达尔文网络,是使用Polkadot的Substrate的技术构建的跨链游戏网络。达尔文网络的技术其实可以看成是在Polkadot的Substrate之上的二次开发,将其改进成专门用于游戏资产和游戏操作的跨链交互。目前主要用于支撑进化星球及相关的业务体系(进化星球是一个建立在区块链上的游戏虚拟世界,也是一个DAO,类似于区块链上的《我的世界》)。主网Token是RING。

达尔文网络的运行模式有Solo模式Polkadot模式(值得注意的是,在不同的运行模式下具体的激励方案会有所不同[8]。)。

1)solo模式。其实,达尔文网络本身自己就是一个的网络,其有自己的中继链。在这个网络中,各种游戏成为达尔文的子世界(子大陆),这个子世界可以是一条使用Polkadot的Substrate开发的平行链,也可以是ETH或者EOS上的智能合约。这些子世界接入达尔文网络的中继链的方式和Polkadot Parachain接入Polkadot Relay-chain一样。

2)Polkadot模式。达尔文网络整体也可以看做是Polkadot的一个Parachain,并接入Polkadot的Relay-chain。从这个意义上讲,达尔文网络可以被看做是Polkadot的一个二阶Relay-chain (2nd order Relay-chain)

跨链通信简要研究 | 技术帖

                                                                          图4.1

达尔文网络结构见图4.1。在图中我们看到有一个东西叫做达尔文应用链,达尔文应用链之于达尔文网络等于Parachain之于Polkadot网络。达尔文应用链是基于 Substrate 和达尔文网络区块链内核(Darwinia Kernel)设计开发的一套应用区块链的框架。

4.2.2 星际资产标准

对于游戏资产跨链而言,最重要的自然是资产的数据结构及操作的定义。在达尔文网络官网的[9]中的“NFT可识别性”部分大致叙述了其星际资产编码标准。其认为在单一网络中,域内的Token ID在域内能标识唯一的物品,但是到了互连的环境下则不行。因此其设计了一个星际资产编码标准,让不同公链、不同游戏的资产在达尔⽂网络可以得到唯⼀标识,让游戏资产可以⽅便的跨链转移。  星际资产编码标准的字段含义如下。

 跨链通信简要研究 | 技术帖

                                                                             图4.2

4.3 Cosmos.IRIS

前面的达尔文网络是Polkadot生态中的项目(主网Token为IRIS),而IRIS则是Cosmos生态下的项目[10]。其旨在解决的主要挑战有两个:

分布式账本上链外计算和资源的集成与协作

– 解释:IRIS认为很多事情不应该放到链上或以智能合约的方式来解决,比如一些计算问题

– 解释:IRIS认为跨链的不应该只是资产,而应该是各种各样的资源(那为什么还选Cosmos?Cosmos只支持资产跨链=_=)

跨异构链的服务的互操作性

之前的达尔文网络面向的主要是游戏,而IRIS面向的是商业应用(其团队有一位曾在中科院计算技术研究所担任过研究员的博导站台)。IRIS预设企业和IRIS以Consumer(服务消费方)/Provider(服务提供方)的方式进行合作:IRIS为企业和项目方提供了更易用的SDK,来帮助他们利用分布式账本所带来的好处。

说完了IRIS的愿景,来看看其网络拓扑结构。

在拓扑结构上,IRIS和达尔文网络差不多。IRIS用Cosmos SDK+ Tendermint开发的,本身是一个网络,有Hub,也能接入Cosmos生态作为其Zone。当然IRIS是Cosmos生态下的,而达尔文网络是Polkadot生态下的。

跨链通信简要研究 | 技术帖

4.3中显然的内容都不解释了。其中的iService其实是IRIS Services的简称,其是用来弥合区块链世界与非链应用世界之间的鸿沟的。弥合的方式是协调Off-Chain服务的完整生命周期(从其定义、绑定(提供者注册)、调用到其治理(分析和争议解决),就是蓝色表格中的几个内容)。通过增强IBC处理逻辑以支持服务语义,IRIS SDK旨在允许分布式业务服务在整个区块链互联网上可用[11]

另外,其网络包含三种角色

• 消费者(Consumers):通过向网络发送请求并从网络接收响应来使用Off-Chain服务。

• 提供者(Providers):可以提供一个或多个iService定义的实现。并且通常充当位于其他公链和企业遗留系统中的基础服务和资源的适配器。提供程序监视并处理传入的请求,将响应发送回网络。通过将请求发送给其他提供者,提供者可以同时充当消费者

• Profiler:是代表IRIS Foundation Limited(“基金会”)的特殊用户,IRIS Foundation Limited是在香港成立的一家有限责任公司。该基金会将领导IRIS网络的建设。Profiler是唯一被授权以配置文件模式调用iService的用户,该服务旨在帮助创建和维护目标提供者配置文件,供消费者选择合适的提供者。

4.4 其他项目

ChainX、Edgeware是Polkadot生态中非常重要的两个项目,可以说是Polkadot生态中的一哥和二哥。基于Polkadot生态的项目在Teams building on Polkadot中有列出。这里暂时只作简要介绍。

ChainX是基于Polkadot的Substrate的资产跨链项目。ChainX通过去中⼼化的⽅式将链间资产进⾏统⼀转化,任何链只要建⽴与ChainX的连接,就可以与所有链进⾏资产互通。Polkadot旨在做底层基础建设,实现任意消息跨链,而ChainX则专注于资产跨链。ChainX的主网Token为PCX。

Edgeware是一个智能合约平台。一旦Polkadot上线主网,用户可以使用Edgeware在Polkadot上快速部署智能合约。支持WebAssembly,用户可以使用Rust编写Edgeware智能合约,在WASM中执行合约相比大部分虚拟机更快、更高效。

个人思考

万链互联令人激动,此举必将降低链开发的成本。因此未来会有更多区块链出现,鱼龙混杂不可避免。我猜想其中大部分链到时可能不是去中心化的,节点都被某一个公司所控制。在这种情况下,多条中心化的链互联,结果会是如何。

Reference

[1]趣链科技 WeChat. 关于跨链技术的分析和思考 

[2]李万才. 深入理解EOSp:232-247.

[3]长铗. 区块链:从数字货币到信用社会p:84-94.

[4]哔哔News. Cosmos 的万链互联计划!30秒说清楚 Cosmos 是什么!

[5]Polkadot. Documentation/Parachains

[6]Polkadot. Documentation/Bridges

[7]链闻ChainNews. 两万字全解 Polkadot 架构及下一代 DApp 开发技术

[8]达尔文网络 WeChat. 达尔文网络–Polkadot生态中的第一个游戏链

[9]达尔文网络 Website. Genepaper

[10]StakingScan Wechat. Iris Network(IRIS)

[11]Irisnet Github. WHITEPAPER