关于程序员:关于跨链技术的分析和思考

3次阅读

共计 5937 个字符,预计需要花费 15 分钟才能阅读完成。

以后的区块链底层技术平台百花齐放,不同的业务、不同的技术底层的区块链之间不足对立的互联互通的机制,这极大限度了区块链技术和利用生态的衰弱倒退。跨链的需要由此而来,本文通过剖析几种支流的跨链计划探讨跨链技术的实质及相应的解决思路。

一、跨链的类型

跨链交互依据所逾越的区块链底层技术平台的不同能够分为同构链跨链和异构链跨链:同构链之间平安机制、共识算法、网络拓扑、区块生成验证逻辑都统一,它们之间的跨链交互绝对简略。而异构链的跨链交互绝对简单,比方比特币采纳 PoW 算法而联盟链 Fabric 采纳传统确定性共识算法,其区块的组成模式和确定性保障机制均有很大不同,间接跨链交互机制不易设计。异构链之间的跨链交互个别须要第三方辅助服务辅助跨链交互。

二、支流跨链机制概述

截至目前,支流的区块链跨链技术计划依照其具体的实现形式次要分为三大类,别离是公证人机制、侧链 / 中继和哈希锁定:

1. 公证人机制(Notary schemes): 公证人也称见证人机制,公证人机制实质上是一种中介的形式。具体而言,假如区块链 A 和 B 自身是不能间接进行互操作的,那么他们能够引入一个独特信赖的第三方作为中介,由这个独特信赖的中介进行跨链音讯的验证和转发。公证人机制的长处在于可能灵便地反对各种不同构造的区块链(前提是公证人可能拜访相干方的链上信息),毛病在于存在中心化危险。

2. 哈希锁定(Hash-locking): 哈希锁定技术次要是反对跨链中的原子资产替换,最早起源自比特币的闪电网络。其典型实现是 h 哈希工夫锁定合约 HTLC(Hashed TimeLock Contract)。哈希锁定的原理是通过时间差和影藏哈希值来达到资产的原子替换。哈希锁定只能做到替换而不能做到资产或者信息的转移,因而其应用场景无限。

3. 侧链 / 中继链(Sidechains / Relays): 侧链是指齐全领有某链的性能的另一条区块链,侧链能够读取和验证主链上的信息。主链不晓得侧链的存在,由侧链被动感知主链信息并进行相应的动作。而中继链则是侧链和公证人机制的结合体,中继链具备拜访须要和验证进行互操作的链的要害信息并对两条链的跨链音讯进行转移。从这个角度看中继链也是一种去核心的公证人机制。

上面就这几种跨链形式的典型实现形式进行详细分析:

典型跨链机制实现剖析

1. 公证人机制

Alice 通过交易所钱包将本人的比特币打入交易所地址;
Alice 在交易所上挂上卖单 1 个 BTC 卖出 20ETH 价格;
Bob 须要将本人的 ETH 打入交易所的以太坊地址;
Bob 通过交易所挂出购买比特币的单子 20ETH 买一个比特币;
交易所将 Alice 的卖单和 Bob 的卖单进行撮合;
交易所将 Alice 在交易所存储的 1BTC 转移给 Bob 的比特币地址;
交易所将 Bob 在交易所存储的 20ETH 转移给 Alice 的以太坊地址;

至此实现了 Alice 和 Bob 的 BTC 和 ETH 的替换(案例中省去了交易所的服务费)。通过该例子能够看出交易所的形式目前仅可能反对资产的替换,且资产替换的原子性、安全性齐全由中心化的交易所保障存在较大的中心化危险。

除此之外还有一种驰名的分布式账本技术 Ripple,也是采纳相似公证人的机制来解决寰球金融机构之间的资产替换。Ripple 的零碎架构如上图所示,Ripple 零碎中交易通过网络中的验证者进行交易的验证,验证者验证的交易通过加密算法爱护交易内容不能被验证着窥探从而保障交易的隐衷性。

公证人机制的跨链技术实现简略,且可能比拟灵便地反对不同类型的底层区块链体系。公证人机制的次要问题在于公证人机制的安全性保障齐全由公证人零碎保障。参加跨链的相干方须要对中间人给予较大的信赖。

2. 哈希锁定

哈希工夫锁定(HTLC)最早呈现在比特币的闪电网络,跨链资产替换反对肯定数量的 A 链资产和肯定数量的 B 链资产进行原子替换。哈希工夫锁定奇妙地采纳了哈希锁和工夫锁,迫使资产的接管方在 deadline 内确定收款并产生一种收款证实给打款人,否则资产会归还给打款人。收款证实可能被付款人用来获取接管人区块链上的等量价值的数量资产或触发其余事件。

如下图所示,咱们用一个例子来论述如何应用哈希工夫锁定进行跨链的原子资产替换,假如 Alice 和 Bob 有资产替换的需要,Alice 想用 1 个 BTC 和 Bob 换 20 个 ETH. 那么首先须要在两条链上设置哈希工夫锁定合约,而后执行如下步骤:

Alice 随机构建一个字符串 s,并计算出其哈希 h = hash(s);
Alice 将 h 发送给 Bob 的合约;
Alice 锁定本人的 1 个 BTC 资产,并设置一个较长的锁定工夫 t1, 并设置了获取该 BTC 的一个条件:谁可能提供 h 的原始值 s 就能够失去该 BTC;
Bob 察看到 Alice 合约中锁定了一个 BTC, 而后 Bob 锁定本人的 20 个 ETH 资产,并设置一个绝对较短的锁定工夫 t2 , t2 < t1, Bob 也设置了同样获取条件(谁提供 h 的原始值 s 就能够获取 20 个 ETH);
Alice 将本人最后生成的字符串 s 发送到 Bob 的合约里获得了 20 个 ETH;
Bob 察看到步骤 5 中 Alice 的 s 值,将其发送给 Alice 的合约胜利获取 1 个 BTC; 至此 Alice 和 Bob 实现了资产的替换。

从上述的过程咱们能够看出哈希工夫锁定合约有一些约束条件:

进行跨链资产替换的单方必须可能解析单方的合约外部数据,例如 s,例如锁定资产的证实等;
哈希锁定的超时工夫设置时须要保障存在时间差,这样在单方面舞弊时另一方能够及时撤回本人的资产。

哈希锁定的思维使用在领取畛域较多,例如闪电网络、雷电网络以及跨链资产转移协定 Interledger 等。然而哈希锁定目前看只适宜偏资产或者要害数据的替换,甚至不反对转移因而其试用场景受限。

3. 侧链 / 中继链

侧链:侧链是绝对于主链而言的,最后的侧链提出是针对比特币做新个性的测试和研发。侧链绝对主链而言可能验证和解析主链中的区块数据和账本数据。侧链实现的根底技术是双向锚定(Two-way Peg),通过双向锚定技术能够将数字资产在主链上进行锁定,同时将等价的资产在侧链中开释。相同当侧链中相干资产进行锁定时,主链上锚定的等价资产也能够被开释。

BTC-Relay 是号称的史上第一个侧链,BTC-Relay 是通过以太坊构建了一个比特币的侧面,使用以太坊的智能合约容许用户验证比特币的交易。这里咱们依然以 Alice 1BTC 和 Bob 的 20ETH 数字资产替换为例论述相应原理:

Bob 将 20ETH 发送到 BTCSwap 的合约进行解冻;(该合约只有可能确认 BTC 网络上 Bob 接管到来自 Alice 1BTC 就主动将 20ETH 转给 Alice);
Alice 确认 Bob 解冻信息后,将 1 BTC 转给 Bob 比特币账户;
BTC Relayer 将比特币区块头推送到 BTCSwap 合约;
Alice 接下来就能够调用 relay tx;
BTCSwap 合约联合 tx 和 BTC 链的区块链进行 SPV 验证,验证通过则将 20ETH 转给 Alice 以太坊地址。

这种跨链的实现形式简略,然而 BTC Relay 须要额定的信赖和保护老本,且智能合约外部的数据存储会有体积收缩的问题。然而侧链的机制绝对哈希锁定而言可能提供更多的跨链交互场景,侧链以及类 SPV 验证的思维适宜所有跨链的场景。

中继链:中继链实质上算是公证人机制和侧链机制的交融和扩大,目前社区内最沉闷的两个跨链我的项目 Cosmos 和 Polkadot 采纳的都是基于中继链的多链多层架构,其中 Cosmos 目前反对的是跨链资产交互而 Polkadot 则声称提供任意类型的跨链交互,具体实现还有待察看。

为了反对平行链之间的跨链互操作,Cosmos 提出了一种跨链交互协定 IBC(Inter-Blockchain Communication protocol), 并利用 tendermint 共识算法的即时确定性实现多个异构链之间的价值和数据传输。

首先咱们以 Chain A 到 Chain B 转账 10 token 为例阐明应用 IBC 的跨链交互:

相互跟踪,也就是说如果 A 要和 B 进行跨链交易,那么 A 和 B 链须要别离运行相当于对方区块链的轻节点服务,这样相互能够实时接管到对方的区块头信息(不便后续执行类 SPV 验证);
A 链上初始化 IBC 协定,解冻相干资产 10 token, 并生成相应的证实发送给 B 区块链;
B 链接收到相应的 IBC 音讯,通过 A 链的区块头信息确定 A 的确进行相应的资产解冻,而后 B 链会生成等价值 10 token 的资产。

以上是应用 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 区块链的整体架构图如下图所示,次要蕴含三种角色链和四种参与方:

三种链角色:

中继链(Relay chain): 中继链位于 Polkadot 的体系的外围位置,次要是为整个零碎提供对立的共识和安全性保障;
平行链(Parachain): 在 Polkadot 中平行链负责具体的业务场景,平行链本身不具备区块的共识,它们将共识的职责渡让给了中继链,所有平行链共享来自中继链的平安保障,中继链是 Polkadot 组成的一部分;
桥接链:桥接链指的是非 Polkadot 体系之外的区块链,如 Bitcoin, Ethereum,这些区块链有本身的共识算法,它们通过不同的 Bridge 与 Polkadot 连贯在一起进行跨链交互。

四种参与方:

验证者 (Validator): 验证者负责 Polkadot 的网络出块,会运行一个中继链的客户端,在每一轮区块产生中会对其提名的平行链出的块进行核验。当平行链的跨都被他们的子验证者汇合确定好之后,验证者们会将所有平行链区块头组装到中继链的区块并进行共识。
核验人 (Collator): 帮忙验证者收集、验证和提交备选平行链区块,保护了一个平行链的全节点。
钓鱼人 (Fisherman): 钓鱼人次要靠检举非法交易或者区块以获取收益;
提名人(Nominator): 领有 stake 的相干方,保护和负责验证者的安全性。

Polkadot 的个性包含两个,一个是共享安全性,一个是不需信赖的跨链交互。这里的不需信赖的跨链交互其实是和第一个特点共享安全性密切相关的,而且 Polkadot 的不需信赖的跨链交互也次要是只其外部的平行链之间。

在 Polkadot 中如果 parachain A 须要发送一笔交易到 parachain B 的过程如下:

A 链将跨链交易放到本人的 engress(每个平行链有一个音讯输入队列 engress 和一个音讯输出队列 ingress);
A 链的 Collator 收集 A 链的一般交易以及跨链交易并提交给 A 链的验证者汇合;
A 链的验证者汇合验证胜利,将本次 A 链的区块头信息以及 A 链的 engress 内信息提交到中继链上;
中继链运行共识算法进行区块确认以及跨链交易路由,中继链上的验证者会将 A 链的相应交易从 A 链的 engress queue 中挪动到 B 链的 ingress queue 中。
B 链执行区块,将 ingress queue 中相应交易执行并批改本身账本。

以上便是 Polkadot 跨链交易的次要步骤,因为所有平行链的共识同步产生(中继链区块示意图如下),因而跨链交易不会有诸如双花等安全性问题。

Polkadot 的平行链之间的跨链替换的安全性保障次要来自共享安全性这个特点,共享安全性使得跨链交易和一般交易同步产生也就不存在其余跨链场景中的双花等跨链数据不统一问题。其次 Polkadot 中的引入的非凡状态验证办法不便中继链进行跨链等音讯的有效性验证。

值得一提的是 Polkadot 我的项目目前还处在我的项目初期,对于 parachain 的设计、Collator 的合作以及 Validator 的共识、工作效率等都未欠缺。这种共享安全性的形式是否也限度了平行链本身的性能都还有待考据。

对于跨链技术的几点思考:

综合以上的一些支流跨链场景和计划的剖析,从跨链的概念以及需要上看跨链的实质其实就是如何将 A 链上的音讯 M 平安可信地转移到 B 链并在 B 链上产生预期成果。那么一个胜利的跨链交互到底须要解决哪些问题呢?笔者认为次要有以下四个问题:

音讯 M 的真实性证实,也就是说 M 是否的确是存在 A 链上的,也的确是 A 链发给 B 链的;
音讯 M 的路由,如何让跨链音讯平安跨零碎路由;
音讯 M 的有效性证实,这里的有效性是指来自 A 链的音讯 M 如何让 B 链认可其到达 B 链时状态依然无效,比方转移的资产是否是解冻的,没有双花的,如果是状态那么是否在此期间未产生扭转等;
音讯 M 的执行后果证实,这个是指 A 链须要确认跨链操作是否胜利,以及胜利操作的相应回执。

那么针对这些要害实质问题,如何去解决呢?笔者构想将来的区块链应该在底层平台的设计之初就须要遵循对立的跨链协定规范,就像当初的操作系统对 TCP/IP 协定的反对一样。须要进行通用跨链的区块链至多要反对一下性能:

提供跨链音讯的输出和输入口径,例如 Cosmos 和 Polkadot 的跨链队列;
提供跨链音讯的真实性证实,区块链须要提供相似 SPV 的证实伎俩;
音讯的无效路由须要构建跨链音讯的对立格局,定义好消息的起源和去处以及音讯内容,如 Cosmos 的 IBC 协定;
音讯的有效性证实,区块链可能须要设计新的相似 UTXO 的可验证存储构造,不便做类 SPV 类验证,否则目前的基于 KV 的数据存储形式做有效性证实简直不可能;
跨链执行后果证实,和有效性证实相似,须要全新的数据结构和运行算法反对。

除此之外,跨链零碎的设计还须要思考零碎稳定性、可扩展性以及易降级性、容错等等,总而言之,真正的可信互联网建设艰苦漫长,诸君共勉!

更多区块链技术常识,欢送增加小助手 18458407117(vx),退出技术交换群与咱们共话前沿吧~

正文完
 0