区块链跨链技术

版权声明:站在巨人的肩膀上,才可以看的更高更远。 https://blog.csdn.net/u011078141/article/details/87533048

区块链跨链技术
https://blog.csdn.net/niyuelin1990/article/details/86607309
一、跨链简述
跨链是指通过技术手段,将原本不同的、独立的区块链上的信息、价值进行交换和流通。狭义上来说是两个相对独立的区块链账本间进行资产互操作(Interoperability)的过程;广义上来说是两个独立的账本间进行资产、数据互操作的过程。
跨链应该理解成一个桥梁或者一个机制,分布式网络是不同的信息孤岛,通过跨链机制不同的桥梁相互连接。
这里读者一定要清楚,跨链并不能提高链本身性能,跨链更多的是对链本身功能的一种补充及对链间数据的互操作。
跨链历史线:

单链发展(2009-2012)
在行业早期相当一段时间内,区块链技术都是基于单一链的发展。当时 行业的普遍认知认为区块链的性能优化和技术升级可以在单一链上完成,一 旦链内成员就项目发展方向无法达成一致,只能通过硬分叉或重新设计一条 区块链来解决。
单链扩展提出(2012-2015)
由于在出块时间、区块容量的限制以及智能合约方面的不足,比特币的 发展受到了严重制约。瑞波实验室早在 2012 年就提出 Interledger 协议以解 决不同区块链账本之间的协同问题。随之而来的更多创新,例如莱特币、比 特股、以太坊的出现,加速了比特币核心开发组的危机感。因而在 2014 年10月,比特币核心开发组成立了 Blockstream,首次在白皮书中明确提出了侧链(sidechain)的概念及协议实施方案。2015 年比特币闪电网络(Lightning Network) 采用哈希时间锁(Hashed Timelock)机制,实现了比特币链下快速交易通道.
中继及跨链平台(2016- )
2016 年 BTCRelay 方案发表,基于中继跨链方案实现了比特币到以太坊的单向跨链连通。同年 Vitalik Buterin 发表的《Chain Interoperability》对区块链互操作问题做了全面和深度的分析。
2016 年利用多方计算和门限密钥共享方案,实现公有链间的跨链交易的WanChain诞生。
2017 年,Polkadot 和 Cosmos 第一次提出了建设跨链基础平台的方案,目前这两个项目还在开发过程中。
2017 年,以太坊联合和 Polkadot 创始人:Gavin Wood 正式提出了基于分布式的 Web3.0 概念。web3催生垄断主义到数据平权运动,区块链是数据平权运动的急先锋。数据平权运动让Web3.0概念自然而然的产生。Web3.0不是技术范畴,而是对某个行业应用趋势的去中心化到抽象。
二、跨链可能需要解决的问题
1、资产(原子)交易
交易双方必须是原子性的,要么发生,要么不发生。不能存在凭空损失或者创造资产,也不能有欺骗交易的发生。
2、验证另一条链上的交易
对交易的确认,一是确认交易已经发生并且上链,写入了区块账本;二是该交易已经获得了系统足够多区块的确认,这样节点作恶和产生双重支付等导致交易无效的概率非常低。区块链系统本身是较为封闭的系统, 缺乏主动获取外部信息的机制,因此要确认另外一条链的交易状态并 非一件容易的事,可以说是跨链交易的核心难点之一。
通常通过共识的方式,如公证人和 中继的模式来对原链对确认.
3、两条链资产总量不变且独立安全
在资产互换的场景下,两条 链的资产并未发生实质性的交换,因此该类情况不会改变各链的资产总量。但是在资产转移的场景下,每条链的可用资产数量是变化的, 只有保障跨链交易精确记账,且两条链的账本记账完全同步,才可实 现,换种说法就是两条链的记账必须是原子性的,要么都同时记,要 么都不记。除此之外,问题的关键是当某条链发生重构时,是否依然 能保持两条链的资产总量不变。
当两个系统发生交互时,难免会对彼此系统产生影响,如何在跨链交易的过程中保障自己系统和对 方系统的安全性是个值得考虑的问题。若是安全性问题无法隔离,那 一条链受到攻击,将影响整个跨链网络。
4、跨链平台
参照计算机网络的发展历程, 独立的区块链网络终究要走上互联互通的未来。已经存在的区块链平台能相互互联互通,未来的区块链平台也能相互互联互通。
5、总结
上述五个方面给出了业界的一些主流解决方案和解决思路。但并不是每个涉及到跨链的项目都需要解决以上所有问题,而是各取所需。
若要实现跨链资产互换功能(来回转移和使用),解决难点一即可;
若要实现跨链资产转移(资产留置或抵押),解决难点一和 难点二即可。
若系统需要达到一个安全和稳定的状态,这需要考虑难点三。
若需要建立一个跨链平台,跨链协议,这需要解决上述四个难点都需要考虑。
三、跨链实现方式
整体架构

在参考 《Vitalik关于跨链的报告》的报告后,笔者将跨链大致分成了3种方式,也是业界分类最为广泛的方式。1.不直接交互的方式 2. 第三方协作交互 3.区块监听方式
3.1、哈希锁定(Hash-locking)

用户AB需要互换1BTC和10ETH。
A用密码生成密文。并使用密文锁定1BTC给B。
A设置一个回撤交易,若在Y时间内B为领取,则返还给A。
B使用密文锁定10ETH给A,并广播交易。
B也设置一个回撤交易,若在X时间内A为领取,则返回为B。
A只有使用自己生成的密文和B的秘钥解锁B的交易,以获取10ETH
A解锁成功10ETH后,B也获取到了A的密文。B使用A的密码解锁1BTC,达到了资产互换。
核心技术点:
哈希时间锁协议(HTLC):通过哈希锁和时间锁机制保障了交易的原子性。在不同的系统里,其实现哈希锁和时间锁的方式都不尽相同,但原理是一样的,即只有满足一定的哈希条件或者时间条件后才允许交易生效.
哈希锁:不可逆的哈希函数,用于AB直接的解锁。
时间锁:需要交易在某个时间范围内不生效或者在某个时间点后生效。通常采用先后快高后多少块或者多少时间后生效后失效。
3.2、见证(公证)人模式(Notary schemes)
假设A和B是不能进行互相信任的,那就引入A和B都能够共同信任的第三方充当公证人作为中介。这样的话,A和B就间接可以互相信任。

见证人不断的进行数据收集,还进行交易确认和验证。此时的见证人将成为可信第三方,可以是一个双方可信的中心化见证人机制,也可以是一群去中心化的节点。在见证人对链A数据的不断收集和验证后,链B在一定比例通过得到链A的交易发生。通俗的讲就是:可信的第三方,告诉B链A 链上发生什么事,或者告诉B某个消息的真的。
单签名公证人机制:单签名公证人机制也称为中心化公证人机制,通常由单一指定的独立节点或者机构充当。方式:用户可以将资金统一转账给公证人账号,有公证人来跨链资产互换。
多重签名的公证人机制:多重签名的公证人机制是由多位公证人在各自账本上共同签名达成共识后才能完成跨链交易。多重签名的公证人组的每一个节点都拥有自己的一个密钥,只有当达到一定的公证人签名数量或比例时,跨链交易才能被确认。这种方式相较于单签名模式的安全性更高,少数几个公证人被攻击或 者是作恶都不会影响系统的正常运行。但是这种方式要求两条链本身都要有支持多重签名的功能
分布式签名的公证人机制:系统有且仅产生一个密钥,而且公证人组中谁都不会拥有完整的密钥,密钥是以碎片的形式随机地发送给每一个公证人节点,且碎片是经过处理后的密文,因此即使所有公证人将碎片拼凑在一起也无法得知完整的密钥,全面地保障了密钥的安全性。
例子1:互相不认识对帐号AB将 各自对资产转到可行的单签名公证人,当公证人都收到AB的资产后,再讲各自的资产转给账号AB。
例子2:互相不认识对帐号AB通过公证人转账
1、用户A在链A发送给链B锁定账户一笔交易,交易由哈希时间锁(Hash Time Lock)锁定,并把锁定交易告诉公证人;
2、用户B也发起一笔锁定交易,并把秘钥拆分发送给公证人。
3、公证人凑齐超过2/3比例的秘钥后,告诉用户A,
4、用户A把秘钥告诉告诉公证人,这样公证人即可帮助AB解锁各自的交易。
核心技术点:
多重签名技术(multisig):多个用户同时对一个数字资产进行签名。可以简单的理解为,一个账户多个人拥有签名权和支付权。如果一个地址只能由一个私钥签名和支付,表现形式就是1/1;而多重签名的表现形式是m/n,也就是说一共n个私钥可以给一个账户签名,而当m个地址签名时,就可以支付一笔交易。所以,m一定是小于等于n的。
共识、分布式签名
3.3、侧链/中继(Sidechains/relays)

侧链/中继 不依赖于可信的第三方帮助其验证交易,而是在拿到发送链数据后由接收链自行验证。就是 A 能读 B,B 不能读 A;如果一条 C 链能读到所有链,按理说也能成为一个 “链上” 中介,整个过程就是“A-C-B”。侧链更多的链的关系表达,中继更像是多条链的调度中心,当一条 “侧链” 链接了很多主链时,它就变成一条中继链。
侧链需要锚定对方的数据。
例子: 绑定:BTC钱包向多签地址发起金额为0的转账交易,并在OP_RETURN操作符中写明链B的地址。链B接受BTC的轻节点块,并验证用户链B地址的交易是否存在(类似过滤器的监听机制)。若存在,则B链地址和BTC地址绑定.
入金 :btc钱包往B链的多签地址打钱,B链通过SPV监听, 充值金额绑定到B链地址, 即可完成跨链转账
出金: B链多签多私钥通过后,可转回用户BTC
核心技术:
SPV证明
SPV证明:即简单支付证明.通过下载比特币或者以太坊的区块头(Header),进行默克尔树的验证. 通过不断计算一笔交易的hash得到根hash,证明一笔交易在不在

验证过程:
0). 从网络上获取并保存最长链的所有block header至本地;
1). 计算该交易的hash值tx_hash;
2). 定位到包含该tx_hash所在的区块,验证block header是否包含在已知的最长链中;
3). 从区块中获取构建merkle tree所需的hash值;
4). 根据这些hash值计算merkle_root_hash;
5). 若计算结果与block header中的merkle_root_hash相等,则交易真实存在。
6). 根据该block header所处的位置,确定该交易已经得到多少个确认。
3.4、各方案的对比
跨链技术 哈希锁定 公证人 侧链/中继
互操作性 只有交叉依赖 所有 所有(需要所有链上都有中继,否则值支持单项)
信任模型 链不会失败或者51%攻击 多数公证人诚实 链不会失败或者51%攻击
适用跨链交换 支持 支持 支持
适用跨链资产转移 不支持 支持(需要共同的长期公证人信任) 支持
适用跨链预言机(Oralces) 不直接支持 支持 支持
适用跨链资产抵押 大多数支持但有难度 支持(需要长期公证人信任) 支持
实现难度 容易 中等 难
四、跨链案例剖析
4.1、状态通道(state channels)
状态通道(State Channel)是一种使用哈希时间锁的方式将交易和其他状态更新的放到“off-chain”的技术。我们通过将用户的频繁操作尽可能的在链下通道进行,以扩展区块链的处理能力。
状态通道有如下特点:
状态通道依赖于可靠性。如果爱丽丝在质疑时间内掉线了(也许是鲍勃不顾一切地想要赢下奖品,而破坏了她家的互联网连接),她可能无法在质疑时间内做出回应。但是,爱丽丝可以付款给其他人,让其保存一份她的状态副本,并作为她的权益代表,以保持系统的可靠性。
状态通道在需要长期交换大量状态更新的情况下非常有用。这是因为部署 Judge 合约时创建一个通道会产生初始成本。但是一旦部署完成,该通道内每一个状态更新的成本都会很低
状态通道最适于有一组明确参与者的应用程序。这是因为 Judge 合约必须始终知晓所有参与到给定通道的实体(比如,地址)。我们可以增加或删除用户,但是每次都需要更改合约。
状态通道有很强的隐私属性。因为一切都发生在参与者之间的通道“内”,而不是公共广播并记录在链上。只有开启和关闭交易必须公开。
状态通道的权威性是即时生效的。这意味着只要双方签署了一个状态更新,它可以被认为是最终状态。双方都有明确保证,在必要的情况下,他们可以将状态“执行”到链上。
4.1.1 闪电网络(Lightning Network)
闪电网络主要通过引入智能合约的思想来完善比特币链下的交易渠道。技术特点:
一个是序列到期可撤销合约(RSMC,Recoverable Sequence Maturity Contract),另一个是哈希时间锁(HTLC,Hashed Timelock Contract)。前者解决了链下交易的确认问题,后者解决了支付通道的问题。
RSMC定义了交易通过多重签名建立微支付通道,一个是序列到期可撤销合约。微支付通道中沉淀了一部分资金,通道也记录有双方对资金的分配方案。通道刚设立时,初值可能是{Alice: 0.4, Bob: 0.6},意味着打入通道的资金共有1.0 BTC,其中Alice拥有0.4 BTC,Bob拥有0.6 BTC。通道的设立会记录在比特币区块链上。
如果Alice暂时不需要将通道中现在属于她的0.5 BTC用作支付,她可以无需及时更新区块链上记录的通道余额分配方案,因为很可能一分钟后Alice又需要反过来向Bob支付0.1 BTC,此时他们仍然只需在链下对新的余额分配方案达成一致,并设法作废前一版本的余额分配方案就行了。
如果Alice打算终止通道并动用她的那份资金,她可以向区块链出示双方签字的余额分配方案。如果一段时间之内Bob不提出异议,区块链会终止通道并将资金按协议转入各自预先设立的提现地址。如果Bob能在这段时间内提交证据证明Alice企图使用的是一个双方已同意作废的余额分配方案,则Alice的资金将被罚没并给到Bob。
HTLC定义了双方有时间或者快高限定的协议。通过HTLC,Alice和Bob可以达成这样一个协议:协议将锁定Alice的0.1 BTC,在时刻T到来之前(T以未来的某个区块链高度表述),如果Bob能够向Alice出示一个适当的R(称为秘密),使得R的哈希值等于事先约定的值H®,Bob就能获得这0.1 BTC;如果直到时刻T过去Bob仍然未能提供一个正确的R,这0.1 BTC将自动解冻并归还Alice。
当然闪电网络支付通道远不止这些。

Alice想给Dave发送0.05 BTC,但Alice和Dave之间并没有微支付通道。但这没关系,Alice找到了一条经过Bob、Carol到达Dave的支付路径,该路径由Alice/Bob, Bob/Carol和Carol/Dave这样三个微支付通道串接而成。
Dave生成一个秘密R并将Hash®发送给Alice,Alice不需要知道R。R和Hash®的作用就像是古代调兵用的一对虎符。
Alice和Bob商定一个HTLC合约:只要Bob能在3天内向Alice出示哈希正确的R,Alice会支付Bob 0.052 BTC;如果Bob做不到这点,这笔钱3天后自动退还Alice。
同样地,Bob和Carol商定一个HTLC合约:只要Carol能在2天内向Bob出示哈希正确的R,Bob会支付Carol 0.051 BTC;如果Carol做不到这点,这笔钱到期自动退还Bob。
最后,Carol和Dave商定一个HTLC合约:只要Dave能在1天内向Carol出示哈希正确的R,Carol会支付Dave 0.05 BTC;如果Dave做不到这点,这笔钱到期自动退还Carol。
一切就绪后,Dave及时向Carol披露R并拿到0.05 BTC;现在Carol知道了R,她可以向Bob出示密码R并拿到0.051 BTC(差额部分的0.001 BTC成了Carol的佣金);Bob知道R后当然会向Alice出示并拿到他的那份0.052 BTC,差额部分的0.001 BTC成了Bob的佣金。
4.1.2 雷电网络(Raiden Network)
以太坊社区链下微支付通道解决方案。和闪电网络一样,双方需要在以太坊区块链上开设通道并各自锁定以太坊。这步动作可通过向Raiden智能合约发送一条双方签名认可的报文来实现。报文中的关键信息包括:双方公钥、双方锁定资产数量、双方签名。雷电网络旨在实现更高的扩展性、更快的交易速度、更多的隐私保护、更好的胡操作性以及更低的费用。
雷电网络存在以下特点:
第一,雷电网络的支付通道是被链上的一个智能合约控制,该智能合约更加丰富;
第二,雷电网络引入了更为通用的“智能条件(Smart Condition)”,实现智能转账(smart transfers),HTLC 成为其可 实现的一个子集,除了哈希锁、时间锁等条件,它还可设定更复杂的 条件。 Smart Condition表现为一个可在区块链上执行的函数Function(argument),可接受任何格式的报文为参数。
第三,在设计细节上雷电网络也不同于闪电网络。比如,雷电网络中用来更新通道余额分配的报文,增加了序号字段和等待期字段以便识别作废的报文;在余额分配中,申明新余额分配的方式是出示余额分配的净增减,而不是重新申明余额等。
4.2、公证人加Hash锁混合
瑞波是一种新型的区块链技术,专注于解决分布式的支付和清算问题。Ripple 在底层的 Ripple 共识账本之上定义 了 Interledger Protocol(ILP,跨账本交易协议),该协议能够在实现跨账本转账的同时消除交易中存在的对手方风险。技术上采用公证人和Hash锁的实现方式。
ILP 将 在交易者账户与一个 Ripple 本地账户之间建立起双向锚定的关系, 实现二者的同步变化,确保交易过程的透明性。同时,对于没有直接支付通道的两个账本系统,通过 ILP 可实现多跳间接跨账本交易。
A 先挑选一家汇率最合适的流动性提供商,假设人民币和美 元的汇率为 6:1,然后在银行 M 向其托管账户 1 汇款 600 人 民币,并同时在 Ripple 的应用上填写汇款信息、收款地址以 及超时时间等;
这些信息将被 Interledger Module 打包发送给 Ripple 上的账户 1,Ripple 账户 1 对托管账户 1 中增加的 600 人民币进 行记账,并将转账证明发给验证人(Validator,一种公证人 节点);
对于收款方,B 公司在 Ripple 的应用上填写汇款地址、超时 时间等信息,在 Ripple 网络中广播,此时之前 A 挑选的流动 性供应商会先行垫付转账款给 B,通过其自己在 Ripple 的账 户 3 转 100 美元给 Ripple 账户 2,并将转账证明发给验证人 (Vadilator);
验证人对两个转账证明核对;核对通过后,IPL 账本将按照 Hashed Time Lock Agreement 原子交易协议同时进行清算;
清算完成后,Ripple 账本将通过 Interledger Module 将账 户变动同步到其所对应的托管账户,然后托管账户 1 中的 600 人民币将汇给流动性提供方,托管账户 2 中的 100 美元 汇给收款者账户,从而实现收款人与汇款人之间的跨账本交 易。
4.3、分布式签名公证人机制
主要包括FUSION和Wanchain项目
4.3.1 Wanchain(万维链)
Wanchain也是一种跨链平台,不过更多的是需要其他公有链主动去兼容它
Wanchain(万维链)是 2016 年发起的区块链跨链平台项目。Wanchain 是一个异构跨链框架,主要基于分布式公证人模式实现跨链。该模式主要采用了密码学“安全多方计算(Secure Multi- Party Computation)”和“门限密钥共享技术(Threshold Key Sharing Scheme) ”来实现验证人的分布式签名。同时在用户隐私方面采用环签名和一次性账户技术。
门限密钥共享技术是现代密码学体制的设计是使得密码体制的安全性取决于密钥的安全,密钥的泄露就意味着体制失去了安全性,因此门限密码解决了如何分配给多方参与者,并如何共同使用的问题。
其中一种实现:以色列密码学家 Shamir提出了Shamir 门限密钥共享的概念:密钥被分为n份分配给n个参与者,每个参与者掌握一个密钥份额(key sharing),只有集齐超过k个密钥份额,才能够将密钥恢复。
安全多方计算是分布式密码学的理论基础,也是分布式计算研究的一个基本问题。安全多方计算是指在一个互不相信的多用户网络中,两个或多个用户能够不泄漏各自私有输入信息,协同合作执行某项计算任务。
简单地说,安全多方计算是指一组人,比如 P1…Pn ,共同安全地计算函数f(X1…Xn)=(Y1,…Yn) 。 其中这个函数的n个输入分别由这n个参与者秘密掌握的,设Pi的秘密输入是Xi, 并且在计算结束后, Pi得到输出Yi。这里的安全性是要求即使在某些参与者有欺骗行为的情况下,保证计算结果的正确性,即计算结束后每个诚实的参与者Pi都能得到正确的输出Yi,同时还要求保证每个参与者输入的保密性,即每个参与者Pi除了(Xi,Yi)外,得不到任何其他信息。安全多方计算已经有了丰富的理论成果和强有力的工具,虽然它的实际应用还处于起步阶段,但终将成为计算机安全一个不可缺少的部分。
安全多方计算协议分类:基于 VSS 子协议的安全多方计算协议,基于 Mix-Match 的安全多方计算协议,基于 OT 的安全多方计算协议,基于 OT 的安全多方计算协议。
Wanchain 上将验证节点设计为三类:普通验证节点(Validator)、跨链交易证明节点(Voucher)和锁定账户管理节点(Storeman)。其中 Voucher 负责在跨链交易过程中提供原链账户与锁定账户之间交易的证明,Voucher 将用户跨链交易证明提供给 Storeman,Storeman 收到证明后完成后续跨链操作,Validator 负责 wanchain 的共识记账。将交易和验证分开,一定程度规避了合谋作恶。
用户发起跨链交易请求后 Wanchain 确认原链交易的方式如下:
(1)用户在原链的 token 会被发送至 Wanchain 在原链的锁定账户,交易由哈希时间锁(Hash Time Lock)锁定;
(2)Voucher 验证确认了原链上的交易后,Storeman 会在 Wanchain 上发起跨链的合约交易,将需要映射的 Wtoken(Wtoken 此处指 Wanchain 上与原链 token 等量对应的映射 token)转移至用户在 Wanchain 上的跨链账户,且锁定;
(3)用户钱包检测到跨链合约锁定的交易后,账户释放多个密数(Secret)的私钥以碎片形式分散到多个 Storeman 手中, 超过一定比例(2/3)的 Storeman 见证人完成签名才可最终确认。 也就是说通过门限秘钥技术使得链达到共识后,方可对用户token的锁定。
(4)Storeman 通过密数得到原链 token 的控制权,从而实现对原链交易的确认。
如果用户没有在哈希时间锁的范围内释放密数,哈希时间锁到期后跨链合约的交易自动失效,用户重获原链 token 的控制权。
委托去中心化的验证人掌柜用户私钥,事实上用户同时还掌握了自身代理资产的那部分私钥,所有这笔资产从来没有离开用户的掌握,它并没有像中心化交易所一样,完全用第三方来掌握这个资产。
以太坊——万维链 跨链示例
4.4、侧链(Sidechain)
4.4.1、Luquid
Liquid Network是独立的区块链,所以也有自己的代币Liquid Bitcoin (LBTC)。Liquid Network的核心原理是2-way peg,即BTC和L-BTC双向锚定。其实很简单,就是在使用Liquid Network转账时,主链上的BTC会被锁定,兑换成相应的LBTC,然后在侧链上通过LBTC进行资产的转移,收到LBTC后,接收方在将LBTC转换成等额的主链上的BTC资产。
RSK和Liquid Network使用相同的共识机制,但是不同点在于RSK网络更加的开放,任何人都可以加入进来,而Liquid network的用户想要只用网络,必须通过交易所等中间媒介。
Luquid Network和闪电网络/RSK的区别
Liquid网络是为了满足交易所和场外交易者的快速、大额和匿名转账需求而设计的,转账额度并不受通道容量限制,达到可预见性和可靠性。而闪电网络则主要是为了满足小额支付和转账而设计的,转账额度受通道容量限制(目前为0.168BTC),而且需要接收方在线,否则速度会受到极大的影响。
4.4.2、Plasma
Plasma 可以扩展我们与基于区块链的数字资产之间的交互,但是这些资产应当是首先由以太坊主链创建的。然后,我们将实际的游戏应用程序以智能合约的方式部署到子链上,这样子链就包含了游戏所有的逻辑和规则。 它是通过创建依附于“主”以太坊区块链的“子”区块链。
Plasma 侧链支持多 级侧链,并采用 MapReduce 模式来执行 并行计算,可大大提高侧链性能。侧链的 区块头和哈希数据将被发送到主链,并且 可通过 Proof of Fraud 来确保子链交易的 正确性。
Plasma 和 Raiden 区别
雷电网络旨在提供更高扩展性、更快交易速度、更多隐私保护以及更低费用的交易,让交易双方能在交易通道交易。Plasma是一种利用侧链层次树来扩大交易规模的概念,本来在主链执行的交易放到侧链执行。Plasma是区块链中的区块链。Plasma的实现将与雷电网络相辅相成。甚至可以在Plasma子链上建立状态通道。
链接:http://8btc.com/article-4662-1.html
4.5、中继
4.5.1、BTC-Relay
BTC-Relay 本身为以太坊的一个智能合约,该合约的功能就是对比特币上的某些交易进行验证,并且提供验证信息给以 太坊上的其它 DApp 用户。Relayer 是从比特币获取区块头数据的一 群用户,并拥有以太坊网络的账户地址,最快向 BTC-Relay 合约提交 区块头数据的 Relayer 可以得到以太坊的交易费奖励。BTC-Relay 智 能合约获得区块头数据以后就可以依据 SPV 证明的原理对某交易进 行验证,当比特币网络中的某交易确实发生,则可触发以太坊网络的 特定交易或者智能合约执行。
BTC-Relay使用场景举例
1.Alice和Bob同意使用BTCSwap合约来进行交易,Alice要买Bob的eth,Bob把他的 eth发送到BTCSwap合约
2.Alice向Bob发送bitcoin,她希望BTCSwap这个合约能知道这件事以便BTCSwap合约可以释放Bob之前的eth
3.Alice通过bitcoin的交易信息以及BTCSwap合约地址来调用btcrelay.relayTx(),btcrelay验证这笔交易通过后就触发BTCSwap合约里面的processTransaction方法
4.BTCSwap合约在被触发后确认这个btcrelay地址是一个合法地址,然后释放之前Bob的eth
4.6、跨链平台
跨链平台更多的是对以上多种技术的综合,包括哈希时间锁、公证人、中继。在市面上做的好的跨链平台主要是cosmos和Polkadot。
4.6.1、Cosmos
Cosmos 的整体架构如下图所示,Hub 上可以连接很多 Zone(Hub 是一条链,每一个 Zone 也是一条链),Cosmos Hub 维护了一个多资 产分布式账本,掌握了与其相连的所有 Zone 的资产种类以及数量情 况。每一个 Zone 也是能维护多资产类型的账本,其可接收其它 Zone传来的资产,也可将自己的资产转移到其它的 Zone。每一个 Zone 会 同步 Hub 的状态,但 Zone 和 Zone 之间的交流只能通过 Hub 间接地进行。每一次跨链资产转移都需要发送 Zone、Hub、和接收 Zone 的共同确认才可成功。你也可以认为 Zone 是 Hub 的一种资产子分片。
Zone 和 Zone 之间通过消息(数据包)进行信息传输,基于 IBC (Intra Block Communication)通讯协议。某空间内的区块将要传 递的数据打包成标准的 IBC 数据包,最终通过网络层的 UDP 或 TCP 协议完成传输。
下图中每一个Zone和Hub的共识均采用Tendermint 共识。Tendermint协议在这里不做专门的介绍。

Cosmos-Bridge
Cosmos 和系统外的其它异构链进行跨链交易需要通过 Cosmos Bridge 进行,Bridge-Zone 将专门负责和原链的对接,包括对原链的交易确认、在 Cosmos 上创建/销毁对应的跨链代币等工作。
以以太坊到 Cosmos Bridge-Zone 资产转移为例。以太坊内部将部署一个 bridge-contract 的智能合约,负责以太坊到 Cosmos 的跨链交易处理。用户如果需要转账到 Cosmos,可直接将 ETH 转移到 bridge- contract 合约即可,转移到合约后 ETH 资产即被冻结,除非跨链交易失败或者 bridge-contract 检测到 Cosmos 有资产转移过来 (bridge-contract 会追踪 Bridge-Zone 验证节点的状态,Cosmos- Bridge 可以和 Cosmos Hub 共享同一组验证节点)。Bridge-Zone 的验证节点将对以太坊上 bridge-contract 的交易进行验证,若验证通过,可以在 Bridge-Zone 生成对应的 Cosmos-ETH(SPV验证)。将 Cosmos-ETH 转移到 以太坊上过程也类似,只不过 Bridge-Zone 转到以太坊的 Cosmos-ETH 将被销毁,而冻结在 bridge-contract 的 ETH 会被解锁,并转移到某账户地址中。
Cosmos Zone 之间资产转移机制
Cosmos Zone 之间的资产转移主要是依托于 IBC 通讯机制。IBC协议中设计了两个消息:
IBCBlockCommitTx:发送方所在区块链的最新的区块信息。
IBCPacketTx:跨链交易本身的信息,及其在发送方链中被打包的区块信息。
接收链通过Hub作为中继,接收来自发送链的信息,并通过Merkle Proof以及验证节点的签名情况来判断发送链的交易是否最终确认。
如下图所示,为Zone 1空间向Zone 2空间传递代币的消息时序图,我们将以此为例来说明 IBC 通讯协议的详细过程。
1). Zone 1 发起 IBCBlockCommitTx 交易,将新区块头部信息(包括所有验证人的公钥)传递到 HUB;
2) Zone 1 发起代币转移交易, Zone 1 对该交易进行逻辑验证,是否合法有效;, 将该合法交易放到面向 HUB 的消息队列中;
3) Zone 1 的中继程序监听到队列中有新的消息,即生成 Merkle Proof,并作为 IBCPacketTx 的 Payload 发送给 HUB。(在每个 空间内都有一个独立的第三方中继程序,它负责从原链生成 Merkle Proof 并组装成 Packet,并发起交易,传递到目标链 上);
4) HUB 验证 Merkle Proof 是否有效,若有效则发送消息给 Zone2(HUB 给 Zone2 发送消息的过程同步骤 1~4);
5) Zone2 在接收到 HUB 的消息后验证 Zone1 为真实有效的交易,发送消息给 HUB 确认可接收来自 Zone1 的资产;
6) HUB 给 Zone2 发送消息,将资产发送给 Zone 2,完成了资产在不同区块链之间的一次转移;
Cosmos 现状
Cosmos现在工程迭代速度缓慢,也长时间未真正落地。同时也存在以下问题:
IBC协议目前只完成了基本消息的传递功能,并没有安全校验、注册机制以及一些异常的处理。
Tendermint 协议性能不高,所有Zone和Hub基于该协议过于局限
Hub 作为中枢网关,需要负责交易验证,承载压力过重
4.6.2、Polkadot
在介绍Polkadot和Substrate之前, 有必要先介绍下Gavin Wood。Vitalik发起了以太坊项目,初步构思了白皮书,同时进行了以太坊的ICO,但是直到Gavin加入以太坊技术才步入正轨。Gavin Wood完成了以太坊的白皮书,以及花了3周时间完成了以太坊cpp版本源码,可以说Gavin Wood是以太坊的隐形大脑。同时Gavin Wood也是以太坊Rust客户端Parity项目的发起人。所以追随Gavin Wood的脚步也许就是区块链的未来。
Polkadot是Gavin Wood在发现以太坊不足之后,所创建的项目,旨在完成全新的区块链平台。Polkadot 介绍可以看笔者这篇分享:区块链-Polkadot技术调研

Polkadot由一个中继链Relay Chain和若干平行链Parachain组成,以及异构链的转接桥Bridges。
**中继链(Relay Chain)**负责全网的共享安全共识和平行链的跨链交易转发,中继链可以理解为具有安全共识的网关。在中继链上,Polkadot 通过一个现代的异步(asynchronous)拜占庭容错(BFT) 算法达成对有效区块的相互共识,算法受简单的 Tendermint 和 HoneyBadgerBFT 启发。中继链本身不包含任何,只负责最顶层跨链消息的路由,应用均在平行链上进行开发和部署。
平行链(Parachain) 是附着于由中继链提供的安全性上的,可并行化的区块链应用。平行链由中既链提供共享安全共识和平行链之间的跨链消息转发。平行链可以使用不同类型的区块链底层技术,允许每个参与者定义自身有效性的方法,来解决特定领域的问题。比如平行链可以是不同币的跨链平台,也可以是一个撮合交易的平台。
转接桥(Bridges): 相对于部分异构链来说可能需要,比如当以太坊的需要与 Polkadot 交互时候,以太坊的数据会通过针对以太坊专门开发的 Bridge 转换成在 Polkadot 中交互所需的模式。
Substrate
Parity Substrate是独立于Polkadot的项目。 Polkadot是基于Substrate构建的,是 Polkadot 运 行 环 境 ( PRE , Polkadot Runtime Environment)。Substrate包括对共识、 网络、WebAssembly、数据库、客户端等均有模块化的支持。
用户可以使用Substrate来快速构建新的区块链项目,比如使用Substrate开发自己的区块链平台。当然最重要的是可以基于Substrate,我们可以搭建Polkadot的平行链。比如ChainX。
ChainX

任何人都可以竞争性地向ChainX内的各资产链轻节点提交跨链数据,ChainX会根据原链的共识算法得出最优链和有效的跨链交易。由ChainX社区全民公投选举产生15个信托节点,在各资产链上生成多签地址来联合托管用户的链外充值资产,单方或几方无法挪用储备资产。对于Polkadot生态内的新型链,ChainX将使用双向轻节点跨链协议,无需多签锁定即可实现更高效的跨链资产转移。
ChainX v2将于2019年Q3 Polkadot发布v1后上线。ChainX将接入Polkadot并转变为其平行链运行。
五、总结
跨链项目总体处于探索阶段,跨链技术成熟度较低,相比于单链技术更加复杂,所以未来仍有较大发展空间。并且跨链技术设计的技术点非常多,无论是hash锁、公证人、中继都值得读者深入研究。对于以上案例来说,目前发展速度最快、迭代速度最快是Polkadot,所以笔者认为Polkadot值得不断学习和跟踪。
六、参考
1、https://ethfans.org/posts/chain-interoperability-report
2、https://blog.csdn.net/taifei/article/details/73497970

在这里插入图片描述

没有更多推荐了,返回首页