来源 | 《区块链与产业创新》
作者 | 井底望天、蒋晓军、相里朋
责编 | 乔治
出品 | 区块链大本营(blockchain_camp)
当前,区块链技术已经由1.0版本过渡到2.0版本,并逐步向3.0版本发展。新一代区块链技术发展的主要方向侧重于基础设施建设,即区块链底层技术的研发以及一些具体应用的落地。区块链3.0技术发展的目的在于提高区块链的整体运行性能,包括通过各种方式提高区块链系统的交易容量、交易速度以及系统的可扩展性等。 在提高性能的解决思路方面,社区试图通过区块扩容、隔离见证等一系列技术提升交易处理能力。
本文接上文,重点介绍如何利用侧链和子链提高区块链系统性能。
侧链
侧链技术原理
侧链(SideChain)的概念和实施方案源于侧链“白皮书”《用与比特币挂钩的侧链来提供区块链创新》。侧链协议本质上是一种跨区块链的解决方案,这种解决方案可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中,第一个区块链通常被称为主区块链或主链,第二个区块链则被称为侧链。
放在区块链系统中来看,侧链是指与主链相平行且独立的一条区块链,它和主链之间可以通过规定的协议进行通信。侧链只在特定的时间点才会和主链进行状态同步;而在其他时间内,主链与侧链各自进行自己的工作,互不干扰。
实现侧链的技术基础是双向锚定(Two-way Peg)。通过该技术,系统可以暂时将数字资产在主链中锁定,同时将等价的数字资产在侧链中释放。同样,当等价的数字资产在侧链中被锁定时,主链的数字资产也可以被释放。主链—侧链系统中,主链与侧链双向锚定一般分为以下几个阶段。
(1)用户发送锁定交易,将需要锁定的通证锁定在主链上。该步骤一般由通证持有者操作,通过发送一个特殊交易请求,把通证锁定在区块链上。
(2)用户发送锁定请求后,系统会要求用户等待一个确认周期。确认期的作用是等待锁定交易被更多区块确认,可防止假冒锁定交易和拒绝服务攻击,典型的等待时间是1~2天。
(3)系统确认期结束后,用户将在侧链上创建一个交易,并且提供一个SPV(Simplified Payment Verification Proof)工作量证明,将对应的通证输出到用户在侧链上的地址中。该交易称为赎回交易。
(4)系统要求用户等待一个竞争期。竞争期的作用是防止交易双花。在此期间,赎回交易不会被打包到区块,新传输到侧链的通证将不能使用。而且,如果有工作量更大的工作证明出现,即该赎回交易包括主链更大难度的SPV证明,则上一个赎回交易将被替换。竞争期结束后,该赎回交易将被打包到区块中,用户可以使用他的通证。
侧链技术存在的问题也是显而易见的。为了做到实时状态同步,侧链对共识机制就有一定的要求。例如,侧链A和侧链B,链内交换比较容易,甚至侧链A和主链之间的共识都可以解决,但是侧链A和侧链B之间交易的共识机制如何解决就成了最大的问题。尤其当侧链A和侧链B是不同质的区块链系统时,该问题将变得非常棘手。进一步讲,如果整个区块链网络存在多个侧链,而且交易都发生在一个侧链到另一个侧链之间,这时同步问题就有可能成为制约系统性能的瓶颈。
闪电网络和雷电网络
比特币方面的约瑟夫·朴恩(Joseph Poon)为比特币系统做的侧链叫闪电网络。以太坊的创始人维塔利克·布特林(Vitalik Buterin)在以太坊上做的侧链被称为雷电网络。他们提高交易容量的解决方法,就是把频率高、金额小的交易甩到链外,然后在固定时间段将交易的净额更新到链上。这个方法主要用于处理本地的用户交易。
a)闪电网络
闪电网络的设计思想最早是由约瑟夫·朴恩于2015年2月在论文《比特币闪电网络:可扩展的链下即时支付》中提出,主要由两个核心概念组成,一个是RSMC(Recoverable Sequence Maturity Contract),另一个是HTLC(Hashed Time Lock Contract)。其实质上是基于多重签名地址建立微支付通道。RSMC利用多重签名地址解决了链下交易的确认问题,而HTLC则利用限时转账先冻结一笔钱,建立资金池,解决了微支付通道的问题。
那么,交易双方的每笔交易都会在链下经由双方签名认证,共同确认。当需要提现时,只需要提现方提供最新的双方签名资金分配方案,将交易结果写入链上区块中,最终确认即可。
所以,只要交易双方在区块链上预先设有微支付通道(资金池),就可以实现多次、高频、双向通过轧差方式确认的微支付。当然,交易双方如果在区块链上没有直接的点对点支付通道,但只要存在一条连通双方的、由多个支付通道构成的支付路径,那么闪电网络也可以利用这条支付路径实现资金在双方之间的可靠转移。
b)雷电网络
雷电网络的原理和闪电网络一样,只是不同于闪电网络利用多重签名建立微支付通道,雷电网络的支付通道建立是通过智能合约来实现的。因为以太坊能够支持智能合约,而且能够支持更多的条件判断。
子链
1、子链技术原理
a)子链的定义
区块链2.0技术下,商业应用的落地依旧困难重重。例如,用户有一个新的想法,希望用区块链先期进行可行性实验,通常的做法是用户需要搭建一条私有链来验证,这在目前的区块链2.0技术框架下实现起来是有很大难度的。
为了解决这个难题,墨客团队率先提出了子链的概念。子链是指在母链的平台上派生出来的、具有独立功能的区块链。这个设计思路借鉴了互联网的解决方案,即在公共区块链上搭建一个逻辑区块链。该逻辑区块链被称为子链。
在互联网上搭建私人网络,通常的做法是搭建虚拟专用网络(Virtual Private Network,V**)。简而言之,就是在互联网的基础上搭建一个虚拟的私人网络,这个网络不是物理的,而是逻辑的,基本原理就是加密。在物理的网络交换器上也有虚拟网的概念,即虚拟局域网(Virtual Local Area Network,VLAN)。
子链是一种逻辑上的划分,而不是物理上的划分。所以,通过区块链的分层架构和逻辑分片,可以在主物理链上生成多个逻辑子区块链。这些逻辑子区块链可以选择不同的共识算法。而且,不同子链里面的状态可以和主物理链里面的状态保持同步。
当然,子链是在母链的平台上派生出来的、具有独立功能的区块链,它不能单独存在,必须通过主链提供的基础设施才能运行,但可以免费获得主链的全部用户。
b)子链和侧链的区别
子链和侧链是两个不同的概念。
侧链本身是和主链平行运行的区块链系统,并且能够不依赖主链而独立运行。从本质上讲,侧链其实是存在于主链之外的独立区块链系统。侧链网络中的节点是点对点相互连接的。目前的侧链都是中心化的系统,这是因为与主链算力相比,去中心化的侧链系统的网络算力将会非常小;同时,全网用以维持侧链运行的矿工的收益,远远小于黑客攻击侧链而拿走主链锁定到侧链的通证的收益。因此,去中心化的侧链系统比较容易受到攻击,也无法解决安全性的问题。
子链的安全性就完全不同。以墨客子链为例,墨客子链需要依赖主链的基础设施才能运行。具体而言,子链之间的每一个节点之间是不能直接互相通信的,它需要以对应的下层验证节点作为通信中介进行通信。所以,如果要攻击一个单独的子链,就必须攻击整个主链,而主链有成千上万个节点并使用经过时间检验的PoW共识机制。因此,墨客子链的安全性和主链是同一个级别的。
2、以太坊子链
2017年8月,以太坊创始人维塔利克·布特林和闪电网络创始人约瑟夫·朴恩在“白皮书”《Plasma:可扩展的自主智能合约》(Plasma:Autonomous Smart Contracts)中提出了一种以太坊缩放解决方案——Plasma,涉及主区块链上的第二层智能合约。与分片类似,该方法意味着网络不必验证和广播每个合同事务。智能合约交易在子链上完成,以减少主区块链的流量。
Plasma解决方案的亮点在于其系统将子链和链上应用结合起来。而且,子链不是采取链式结构,而是采取树状结构,这样系统就可以用MapReduce架构的方式来实现区块链的功能计算。
Plasma子链由以下两个关键部分组成:
(1)将所有区块链计算重新构建为一组MapReduce函数;
(2)在现有的以太坊区块链之上建立一个使用权益证明机制进行共识验证的子链。
从概念上讲,Plasma与比特币核心开发团队的扩展解决方案隔离见证非常相似,因为它消除了智能合约中不必要的数据,并且只把梅克尔树(Merkle tree)的处理结果向公共的以太坊区块链广播。
综上所述,Plasma的核心思想在于通过减少传递给以太坊根区块链的信息量和交易规模,使以太坊区块链系统能够以更低的成本来处理智能合约和交易。
3、墨客子链
墨客子链技术是在墨客区块链的分层结构中通过建立不同的区块子链来并行处理交易的技术方式。在墨客区块链系统中,子链(上层区块链)可处理交易,拥有分片处理和存储能力,并在交易层中有使用不同共识机制的交易节点组合。进行交易时,子链可选择合适的共识机制进行验证,系统要求子链固定周期与主链(底层区块链)进行数据同步,以此保证区块链系统的一致性。具体地说,墨客子链技术具有以下几个创新点。
a)良好的系统可扩展性
墨客子链实现了区块链系统的可扩展性,提供了一种解决区块链分片的确实可行的方案。在单一的区块链上解决分片问题是非常困难的,墨客区块链采用逻辑分片的设计,有效地解决了这个难题。对于一个智能合约来讲,墨客区块链系统引入了一个智能合约即子链的概念,即当系统部署一个智能合约时,系统会将该智能合约部署成物理主链下的一个子链。
这样的好处在于,智能合约的状态只需要保存在子链内部的区块链系统中,而不需要将与智能合约相关的一些状态信息同步保存在母链上。可以想象,当应用数量达到一定规模时,每个应用都需要保存自己的信息。在墨客区块链的架构下,子链只需要保存自己智能合约内的信息,而不需要把这些信息同步到母链上,这样就大大缓解了母链承受的压力。
另外,子链通常只需要选取少量的节点,如100~200个节点。根据统计数据,它们所能达到的安全性和选取所有节点的处理是一样的,可以通过子链选取少量的节点来实现相同级别的安全性。
那么,区块链系统的可扩展性就能够通过增加子链的并行度来实现,这个并行度可以是100、1000,甚至上万,取决于所能提供服务的节点数的多少。
b)可定义的共识机制
对于区块链而言,部署完成后的共识机制是固定的。例如,比特币的共识机制是PoW,在比特币系统上部署应用时就不能选择其他共识机制。如果项目方想要用快速的PoS共识机制来实现应用落地,考虑到底层的比特币系统是固定的PoW共识机制,项目方因而只能妥协或放弃。
但是,墨客区块链的子链功能可以根据项目方的应用需求来选择不同的共识模块。考虑到不同应用的要求是不一样的,墨客区块链系统会提供一个基本的共识机制,并且支持用户自己编写共识机制。
c)快速的部署能力
墨客主链的生态环境能够快速地部署具有新功能的子链,而不需要维护单独区块链所需要的节点,以及支付吸引新的用户参与要付出的成本。这使部署子链的复杂度大大降低,只需要编写子链的共识及执行模块即可。
例如,某用户想创建一个共享空气质量监测信息的区块链,所需要的仅仅是编写一个墨客子链的共识插件及提供一个相配套的硬件,或者将传感器硬件与共识插件集成到一个硬件盒子中。一个硬件盒子对应一个SCS节点。这样,多个具备空气监测能力的SCS节点注册后构成了一个子链。在这个子链中,每个SCS节点作为矿工,通过共识来维护子链。同时,用户通过分享空气质量信息而获得系统给予的奖励。
d)丰富的子链功能库
应用构建在一个子链上是完全可行的,但子链不应仅仅当作一个应用的私有链。抽象地看,子链完全可以是一个公共服务,即带有服务性质的子链。在这种前提下,子链就可以为其他子链或去中心化应用提供特定的服务。这些服务可以是去中心化的文件存储,或者是一个随机数字生成子链,或者是一些具有专业处理能力的子链,例如,具备人工智能深度学习功能的子链。
在多样的子链服务的支撑下,系统可以构建功能非常强大的去中心化应用,甚至去中心化云服务,这样的应用将很有可能改变现在的云运营方式。