• home > theory > CST > blockchain >

    区块链的分叉、侧链、跨链技术浅析

    Author:zhoulujun Date:

    能够让区块链保证数据唯一性的前提是:所有矿工都遵从同样的机制。如果矿工不遵从同样的机制,那么也会出现分叉。在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。对于公有链还是私

    区块链分叉

      比特币采用的是工作量证明,就是让旷工相互竞争计算Hash,那么就会有一个问题:两个旷工同时算出了结果,这时要怎么办呢?
      在任何区块里,第一条交易记录都是没有转出地址的,就是所谓的CoinBase(挖矿交易)。没有任何人付给矿工这笔钱,矿工只是理所应当的写上自己应当获得的比特币,比如12.5比特币,并且所有节点都认可矿工这样写,因此矿工就得到了挖矿收入。不同的矿工在填写区块的时候,数据一定是不一样的,因为每个矿工的第一条肯定不一样,矿工只会把挖矿收入转入自己的地址。
      由于每个矿工的区块数据都不一样,所以他们解题得出的结果也是不一样的,都是正确答案,只是区块不同。于是,区块链在这个时刻,出现了两个都满足要求的不同区块。那么,全体矿工这时该怎么办呢?

      由于距离远近,不同的矿工看到这两个区块是有先后顺序的。通常情况下,矿工们会把自己先看到的区块复制过来,然后接着在这个区块开始新的挖矿工作。于是,出现了这样的情景:
    1.jpg

    我们把这种现象叫做分叉。

    在以工作量证明机制为共识算法的区块链系统中,这个问题是这样被解决的:从分叉的区块起,由于不同的矿工跟从了不同的区块,在分叉出来的两条不同链上,算力是有差别的。形象地说,就是跟从两个链矿工的数量是不同的。由于解题能力和矿工的数量成正比,因此两条链的增长速度也是不一样的,在一段时间之后,总有一条链的长度要超过另一条。当矿工发现全网有一条更长的链时,他就会抛弃他当前的链,把新的更长的链全部复制回来,在这条链的基础上继续挖矿。所有矿工都这样操作,这条链就成为了主链,分叉出来被抛弃掉的链就消失了。

    2.jpg

    这样,最终只有一条链会被保留下来,成为真正有效的账本,其他都是无效的,所以整个区块链仍然是唯一的。

    注意,能够让区块链保证数据唯一性的前提是:所有矿工都遵从同样的机制。

    软分叉与硬分叉

    如果矿工不遵从同样的机制,那么也会出现分叉。这种分叉又有两种情况:

      一、由于整个区块链系统软件的升级,一部分矿工没有来得及升级,出现了遵从不同机制产生的分叉。当这部分矿工升级系统后,这个分叉就会消失,我们称这种分叉为软分叉。
      二、是由于矿工之间出现分歧,一部分矿工决定采用不同的机制,产生出来的分叉是不会消失的。我们一般把这种分叉称为硬分叉。

    软分叉很好理解,我们重点谈谈硬分叉。

      区块链圈里第一个有影响力的硬分叉应该是以太坊的分叉事件。以太坊上一个著名的项目The       DAO由于其自身漏洞,导致黑客窃取了当时价值约6000万美元的以太币。2016年7月,以太坊开发团队通过修改以太坊软件的代码,在第1920000个区块强行把The       DAO及其子DAO的所有资金全部转到一个特定的退款合约地址,从而“夺回”黑客所控制的DAO合约币。
      由于一部分矿工并不认同这个修改,于是形成两条链,一条为以太坊(ETH),一条为以太坊经典(ETC),各自代表不同的社区共识以及价值观。当以太坊发生了这次硬分叉后,产生了两条区块链。由于这两条链在发生分叉之前的数据都是一样的,一个非常有意思的现象出现了:原本持有以太币(ETH)的人,发现自己除了持有原有的ETH外,又有了相同数量的ETC。也就是说,凭空的多出了一些资产。
      这些资产的价值具体怎样,还要看市场交易情况。但总的来说,区块链的硬分叉,没有减少资产,反而让人手里多了一种资产,看上去总归是一件不亏的事情,于是区块链分叉就成了一种资产凭空增加的方式。

      在2017年8月1日,由ViaBTC领导的矿工团体创建一个比特币分叉——Bitcoin Cash(简称BCC或BCH)。这次分叉,让大量的比特币持有者凭空的增加了一种新的数字货币(BCH)。

      硬分叉这种创造货币的方式和ICO非常类似,于是一个新的名词诞生了——IFO(Initial Fork       Offerings)。矿工团队在创造分叉的同时,可以在分叉发生的区块中,利用自己的特权,分配一些货币给自己或其他人(直接写成CoinBase交易即可),然后再开放让所有人都可以参与挖矿。

      随着越来越多的硬分叉发生,比特币的公信力是否还能像以前一样?IFO会不会成为比特币的杀手?还需要时间的考验。

    区块链的跨链技术

    目前主流的跨链技术包括:

    • 公证人机制(Notary schemes)

    • 侧链/中继(Sidechains/relays)

    • 哈希锁定(Hash-locking)

    • 分布式私钥控制(Distributed private key control)

    各种跨链技术对比:
    3.jpg
      早期跨链技术包括以瑞波和BTC    Relay为代表,它们更多关注的是资产转移;现有跨链技术以Polkadot和Cosmos为代表更多关注的是跨链基础设施;新出现的FUSION实现了多币种智能合约,是一种很有应用价值的公有链,在其上可以产生丰富的的跨链金融应用。

    1、公证技术:瑞波Interledger协议

      早在2012年,瑞波实验室提出Interledger协议旨在连接不同账本并实现它们之间的协同。Interledger协议适用于所有记账系统、能够包容所有记账系统的差异性,该协议的目标是要打造全球统一支付标准,创建统一的网络金融传输的协议。
    4.jpg
      Interledger协议使两个不同的记账系统可以通过第三方“连接器”或“验证器”互相自由地传输货币。记账系统无需信任“连接器”,因为该协议采用密码算法用连接器为这两个记账系统创建资金托管,当所有参与方对交易达成共识时,便可相互交易。该协议移除了交易参与者所需的信任,连接器不会丢失或窃取资金,这意味着,这种交易无需得到法律合同的保护和过多的审核,大大降低了门槛。同时,只有参与其中的记账系统才可以跟踪交易,交易的详情可隐藏起来,“验证器”是通过加密算法来运行,因此不会直接看到交易的详情。理论上,该协议可以兼容任何在线记账系统,而银行现有的记账系统只需小小的改变就能使用该协议,从而使银行之间可以无需代理银行就可直接交易。

    2、侧链技术

    侧链是以锚定某种原链上的代币为基础的新型区块链,正如美金锚定到黄金。侧链是连接各种链,其它区块链则可以独立存在。但是,现在侧链很难做到在其上建立跨链智能合约,所以很难实现各种金融功能,这正是现有区块链在股票、债券、衍生品等领域尚未取得进展的原因。

    什么是侧链

    侧链协议是一种跨区块链解决方案,它允许资产在比特币区块链和其他区块链之间互转。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主区块链或者主链,每二个区块链则被称为侧链。

      最初,主链通常指的是比特币区块链,而现在主链可以是任何区块链。二者通过双向挂钩(Two-way peg),实现比特币从主链转移到侧链进行流通。

      侧链最早是在 2013 年 12 月提出,2014 年 4 月立项,由 Blockstream 公司(由比特币核心开发者 Adam Back、Matt Corallo 等共同发起成立)主导研发。侧链协议于 2014 年 10 月在白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中公开。

    侧链形成背景

      2012年首次出现了关于侧链概念的相关讨论,当时比特币的核心开发团队正在考虑如何可以安全的升级比特币协议,以增加新的功能,但是直接在比特币区块链上进行功能添加比较危险,因为如果新功能在实践中发生软件故障,则会对现有的比特币网络造成严重影响。另外,由于比特币的网络结构特性,如果进行较大规模的改动,还需要获得多数比特币矿工的支持。

    这时,比特币核心开发者便提出了侧链方案。

    这种技术允许开发人员将新功能附加在其他的区块链,但是这些区块链仍然附着在现有比特币区块链上。这些区块链中新功能可以充分利用现有比特币的网络特性,而不会对现有的比特币网络造成危害。

      侧链可以是一个独立的区块链,有自己按需定制的账本、共识机制、交易类型、脚本和合约的支持等。侧链不能发行比特币,但可以通过支持与比特币区块链挂钩来引入和流通一定数量的比特币。当比特币在侧链流通时,主链上对应的比特币会被锁定,直到比特币从侧链回到主链。可以看到,侧链机制可将一些定制化或高频的交易放到比特币主链之外进行,实现了比特币区块链的扩展。

    侧链的实现方式

     侧链的核心在于能够冻结一条链上的资产,然后在另一条链上产生。它实现的技术基础是双向锚定(Two-way Peg),通过双向锚定技术,可以实现暂时的将数字资产在主链中锁定,同时将等价的数字资产在侧链中释放,同样当等价的数字资产在侧链中被锁定的时候,主链的数字资产也可以被释放。

    双向锚定实现的最大难点是协议改造需兼容现有主链,也就是不能对现有主链的工作造成影响,其具体实现方式可以分为以下几类:

    1、单一托管模式

      最简单的实现主链与侧链双向锚定的方法就是通过将数字资产发送到一个主链单一托管方(类似于交易所),当单一托管方收到相关信息后,就在侧链上激活相应数字资产。这个解决方案的最大问题是过于中心化。图1给出了以比特币为主链的单一托管模式的工作原理示意图:

    区块链 单一托管模式
    2、联盟模式

      联盟模式是使用公证人联盟来取代单一的保管方,利用公证人联盟的多重签名对侧链的数字资产流动进行确认。在这种模式中,如果要想盗窃主链上冻结的数字资产就需要突破更多的机构,但是侧链安全仍然取决于公证人联盟的诚实度。图2给出了以比特币为主链的联盟模式的工作示意图:

    联盟模式是使用公证人联盟来取代单一的保管方


    3、SPV模式

      SPV(Simplified Payment Verification)模式是最初的侧链白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化双向锚定技术最初设想。SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。

    在SPV模式中,用户在主链上将数字资产发送到主链的一个特殊的地址,这样做会锁定主链的数字资产,该输出仍然会被锁定在可能的竞争期间内,以确认相应的交易已经完成,随后会创建一个SPV证明并发送到侧链上。此刻,一个对应的带有SPV证明的交易会出现在侧链上,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上打开具有相同价值的另一种数字资产。

    这种数字资产的使用和改变在稍后会被送回主链。当这种数字资产返回到主链上时,该过程会进行重复。它们被发送到侧链上锁定的输出中,在一定的等待时间后,就可以创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。SPV模式存在的问题是需要对主链进行软分叉。图3给出了以比特币主链的SPV模式的工作流程示意图:

    SPV(Simplified Payment Verification)模式

    4、驱动链模式

    驱动链概念是由Bitcoin Hivemind创始人Paul Sztorc提出的。在驱动链中,矿工作为‘算法代理监护人’,对侧链当前的状态进行检测。换句话说,矿工本质上就是资金托管方,驱动链将被锁定数字资产的监管权发放到数字资产矿工手上,并且允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链的状态,当他们收到来自侧链的要求时,他们会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链中的参与程度越高,整体系统安全性也就越大。如同SPV侧链一样,驱动链也需要对主链进行软分叉。图4给出了以比特币为主链的驱动链模式的工作流程示意图:

    驱动链模式

    区块链侧链场景分析:

    BTC Relay

    BTC Relay是在以太坊基金会支持之下诞生并成长起来的,它被认为是区块链上的第一个侧链。BTC Relay把以太坊网络与比特币网络通过使用以太坊的智能合约连接起来,可以使用户在以太坊上验证比特币交易。它通过以太坊智能合约创建一种小型版本的比特币区块链,但智能合约需要获取比特币网络数据,这还比较难实现去中心化。BTC        Relay进行了跨区块链通信的有意义的尝试,打开了不同区块链交流的通道。

    5.jpg

    RootStock

    RootStock是一个建立在比特币区块链上的智能合约分布式平台。它的目标是,将复杂的智能合约实施为一个侧链,为核心比特币网络增加价值和功能。RootStock实现了以太坊虚拟机的一个改进版本,它将作为比特币的一个侧链,使用了一种可转换为比特币的代币作为智能合约的“燃料”。

    6.jpg

    元素链

    元素链,元素链是Blockstream的开源侧链项目,使用了比特币双向挂钩技术,侧链协议的目的是实现双向锚定(Two-way        Peg),使得比特币可以在主链和侧链中互转。元素链给比特币快速带来许多创新技术,除了智能合约外,他还给比特币快速带来许多创新技术,包括私密交易、证据分离、相对锁定时间、新操作码、签名覆盖金额等等特性。这些技术可以被任意组合应用到任意侧链中。

    7.jpg

    LISK

    LISK,新一代的区块链平台,它把每个应用加到LISK的单独侧链上。用过比特币和以太坊的朋友都知道,由于比特币和以太坊只有一条主链,所有功能和数据都加入这条主链导致区块快速膨胀,超大的区块体积,超长的同步时间,这个一个很痛苦的经历。Lisk的侧链模式给在处理高交易量下如何解决网络拥堵的问题提供了一种方法,用户只有用到相关的应用时才需要下载对应的侧链,大大减小了无效的同步数据,保持了整个Lisk网络的高效运行,而且,Lisk网络的速度随着时间的推移会继续加快,越显示他的特别优势。

    3、中继技术

    Polkadot

    Polkadot是由原以太坊主要核心开发者推出的公有链。它旨在解决当今两大阻止区块链技术传播和接受的难题:即时拓展性和延伸性。Polkadot计划将私有链/联盟链融入到公有链的共识网络中,同时又能保有私有链/联盟链的原有的数据隐私和许可使用的特性,将多个区块链互相连接。

    在Polkadot看来,其它区块链都是平行链,Polkadot为通过中继链(relay-chain)技术能够将原有链上的代币转入类似多重签名控制的原链地址中,对其进行暂时锁定,在中继链上的交易结果将由这些签名人投票决定其是否生效。它还引入了钓鱼人角色对交易进行举报监督。通过Polkadot可以将比特币、以太币等都链接到Polkadot上,从而实现跨链通信。151741323181952.jpeg        Polkadot目前还是以以太坊为主,实现其与私链的互连,并以其他公有链网络为升级目标,最终让以太坊直接与任何链进行通讯。

    COSMOS

    Cosmos是tendermint团队推出的一个支持跨链交互的异构网络。Cosmos采用的Tendermint共识算法,是一个类似实用拜占庭容错共识引擎,具有高性能、一致性等特点,而且在其严格的分叉责任制保证下,能够防止怀有恶意的参与者做出不当操作。

    Cosmos上的第一个空间叫做”Cosmos        Hub”。Cosmos Hub中心是一种多资产权益证明加密货币网络,它通过简单的管理机制来实现网络的改动与更新,还可以通过连接其他空间来实现扩展。
    Cosmos网络的中心及各个空间可以通过区块链间通信(IBC)协议进行沟通,这种协议是针对区块链网络的,类似UDP或TCP网络协议。代币可以安全快速地从一个空间传递到另一个空间,两者之间无需体现汇兑流动性。相反,空间内部所有代币的转移都会通过Cosmos        中心,它会记录每个空间所持有的代币总量。这个中心会将每个空间与其他故障空间隔离开。因为每个人都可以将新空间连接到Cosmos中心,所以Cosmos也可以兼容未来新的区块链。

    8.jpg          

    这一架构解决了当今区块链领域面临的许多问题,包括应用程序互操作性、可扩展性、以及无缝更新性。比如,从        Bitcoind、Go-Ethereum、ZCash或其他区块链系统中衍生出来的空间,都可以接入Cosmos中心。这些空间允许Cosmos实现无限扩展,从而满足全球交易的需求。

      4、哈希锁定技术:Lighting network

        Lightning    network闪电网络提供了一个可扩展的bitcoin微支付通道网络,它极大提升了比特币网络链外的交易处理能力。交易双方若在区块链上预先设有支付通道,就可以多次、高频、双向地实现快速确认的微支付;双方若无直接的点对点支付通道,只要网络中存在一条连通双方的、由多个支付通道构成的支付路径,闪电网络也可以利用这条支付路径实现资金在双方之间的可靠转移。
        闪电网络的关键技术是HTLC哈希锁定技术,基本原理如下:Alice和Bob可以达成这样一个协议:协议将锁定Alice的0.1    BTC,在时刻T到来之前(T以未来的某个区块链高度表述),如果Bob能够向Alice出示一个适当的R(称为秘密),使得R的哈希值等于事先约定的值H(R),Bob就能获得这0.1    BTC;如果直到时刻T过去Bob仍然未能提供一个正确的R,这0.1 BTC将自动解冻并归还Alice。
      9.jpg
      闪电网络并不试图解决单次支付的问题,其假设是单次支付的金额足够小,即使一方违约另一方的损失也非常小,风险可以承受。因此使用时必须注意“微支付”这个前提。

      5、分布式私钥控制技术WanChain

        WanChain万维链也支持主流公有链间的跨链交易,但首先需要完成在万维链上的注册,确保万维链能够对该链进行唯一识别。对于跨链交易,万维链利用多方计算和门限密钥共享方案。当一种未注册资产由原有链转移到万维链上时,万维链节点会使用一个基于协议的内置资产模板,根据跨链交易信息部署新的智能合约创建新的资产。当一种已注册资产由原有链转移到万维链上时,万维链节点会为用户在已有合约中发放相应等值代币,确保了原有链资产在万维链上仍然可以相互交易流通。
      10.jpg
        万维链通过分布式的方式完成不同区块链账本的连接及价值交换。它采用通用的跨链协议以及记录跨链交易、链内交易的分布式账本,公有链、私有链还是联盟链,均能接入万维链,实现不同区块链账本的连接及资产的跨账本转移。
        但是,实现各种链映射到一条链上只是完成了第一步,如果上面的智能合约还是像现在的仅为交易触发,智能合约没办法实现分布式运算和多触发机制,那多币种智能合约能实现仍然是相当有限的功能。

      FUSION

      FUSION,各种加密资产可以通过分布式私钥生成与控制技术被映射到FUSION公有链上。多种被映射的加密资产可以在其公有链上进行自由交互。实现和解除分布式控制权管理的操作称为:锁入(Lock-in)和解锁(Lock-out)。锁入是对所有通过密钥控制的数字资产实现分布式控制权管理和资产映射的过程。解锁是锁入的逆向操作,将数字资产的控制权交还给所有者。151741339188151.jpeg          由于各种资产映射到FUISON上,其原链上的功能丧失了,其主要属性是金融价值。所以FUSION要做的是价值互联网时代的金融,即加密金融。之所以叫加密金融是因为,各种加密金融的资产都是由私钥控制的。

        FUSION(fusion.org)协议支持各种代币之间的价值转移的同时,在并行运算和多触发机制方面进行了极大的革新,从而实现了高效率的、面向多币种和多种触发机制的增强型智能合约。
        FUSION通过多层共识机制和记账节点分组,实现了一定的并行计算。多层机制使合约计算与计算结果的记账分步完成,记账节点分组使不同的智能合约由不同的记账节点分组完成。
        FUSION想要做的加密金融合约还必须有多种触发机制才能完成完整的金融功能。针对这一问题,FUSION引入了“先知”的功能。虽然这一功能已经被多次提出,但一直没有很好的实现手段,这是由于智能合约每次加载相当浪费资源,也不现实。FUSION创造性的使用了“Calling list”机制将各种触发条件与智能合约分开储备,记账节点只要加载触发条件的列表即可,被触发时才加载智能合约,这使各种交易触发、时间触发和事件触发(包括链外数据触发)可以写到触发列表里。

      价值互联网如何能够称为“网”,而不是一组平行线,就需要各种跨链技术。但跨链交易只是对跨链最粗浅的要求,多币种合约才是跨链的本质。另外,跨链使各种原链上的代币被转化为金融资产,而产生加密金融应用。但是要实现完事的金融功能,还需要对智能合约进行增强,并使用并行计算提高智能合约的效率,从而使加密金融能够完成完整的金融功能,这是跨链技术的未来方向。

      转载连接:

      区块链的跨链技术 www.jouypub.com/2018/525cf031048ec6751661a7f45ff5b65b/

      区块链分叉 www.jouypub.com/2018/4572bae8d860fbd1062ac58114e684e2/



      转载本站文章《区块链的分叉、侧链、跨链技术浅析》,
      请注明出处:https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/blockchain/8251.html