扩容导论

为什么要扩容?

在今年的 “双 11” 全民购物狂欢节中,根据阿里云公布的数据显示,订单创建峰值达到了每秒 54.4 万笔,又一次创造了新记录,且远远超过去年的每秒 49.1 万笔,是 2009 年第一次 “双 11” 的 1360 多倍。而之所以会有这么庞大的 TPS,就得益于中心化系统的优势。

与之相比,区块链这样的去中心化技术在性能上就相形见绌了。比特币每秒的交易量大约是 7 笔,以太坊每秒只能处理约十几笔交易,然而,对于以性能见长的 EOS 来说,在测试中的最高 TPS 也仅有四五千左右,平时运行时的 TPS 仍然只有两位数。

且TPS 决定的只是每秒钟内可以发生的交易数,但区块链的交易只有在上链被真正确认后才有效,然而所有区块链的交易确认速度也都比较慢,这样的交易确认速度对于用户而言,体验也是非常的不友好。总之,目前市面上的公有链都不具备良好的性能。

同样,当前各个大的区块链平台之间是相互独立的,各个区块链平台上的资产和信息也都是相互隔离的,各个链正在形成一个价值孤岛。价值孤岛的形成必将阻碍区块链真正价值的发挥,只有各个链上的信息能够实现彼此互连和整合,彼此之间能够实现互操作,才能更好地拓展区块链的边界。因此,打破区块链之间的壁垒势在必行,通过跨链将各个区块链连接起来,建立起一个更加立体的生态框架,最终形成万链互连的繁荣生态。

当前区块链的性能不足问题和各个区块链之间的互操作性问题的存在,会在很大程度上影响区块链技术的大规模商业落地。在解决这些问题的众多手段当中,扩容是其中最有效的一种。

目前业内比较通用的扩容方案包括零层扩容一层扩容(链上扩容)和二层扩容(链下扩容)。

本文中所指的 “扩容” 并不单指狭义上的 “扩大容量(提升性能)”,而是一个更广义的概念,这里表达的是 Scaling 的含义,更像是扩展,它同时包含了 “区块链性能问题” 和 “区块链互操作性的问题”,是广义上的区块链扩容。

扩容技术概览

近年来,不断有技术开发人员和项目团队提出各种各样的针对区块链扩容的解决方案。在这些解决方案中,最主要的可以分为三类:零层扩容一层扩容(链上扩容)和二层扩容(链下扩容)。这里的分层主要是借鉴了在计算机网络通信体系架构中的 OSI 模型,可以将区块链逻辑架构分为三层,其中零层对应的是 OSI 模型的 1-4层(底层协议),一层和二层对应的是 OSI 模型中的 5-7 层,主要是上层协议。其中一层主要包括数据层、网络层、共识层和激励层,二层主要包括合约层和应用层。

零层扩容

所谓零层扩容,是指一种不改变区块链的上层架构,且保留原有链生态规则的扩容方案。其中零层扩容对应于 OSI 模型的 1-4 层,以及底层协议,旨在通过优化区块链底层的数据传输协议来提升区块链的可拓展性。零层扩容的主要思路包括中继网络OSI 模型优化两类,其中 OSI 模型优化方案主要包括 BDN组播锁定组QUIC 协议三类。

BDN 是一种基于 CDN 技术思路的区块链扩容应用,即一种能够快速发送交易和区块的高容量、低延迟网络系统,其典型项目为 bloXroute。组播通信指允许一个或多个信息源对不同用户同时发送单一数据包的通信方式,能有效解决单播和广播无法解决的 “单点发送、多点接收” 问题,提升网络传播效率,目前 Nexus 项目应用了该技术。QUIC 协议是一种由 Google 提出的基于 UDP 进行多路并发传输的新一代网络传输协议,旨在整合 TCP 的可靠性和 UDP 协议的高效性,在 Harmony 区块链项目中有所应用。

链上扩容

所谓的链上扩容(一层扩容),就是指对区块链自身的改进,将区块链自身变的更快,容量变的更大。就某一个区块链项目来说,它本身可能是由 P2P 网络、共识机制、虚拟机、区块链的编程语言支持等模块组成的。要想在一层链上对区块链进行扩容,就要想办法从这几个模块进行改进。

由于区块链是由多个部分组成的,可以据此将一个区块链项目分为网络层共识层数据层,而一层扩容方案就主要针对以上三层进行改进。比如莱特币(LTC),在比特币代码基础上,把出块速度从平均 10 分钟左右,提高了 4 倍到每 2.5 分钟出块;还有比特币现金 (BCH),也是在比特币基础上,把区块从 1M 大小直接提到 32M,处理能力提高了 32 倍;还有采用相对复杂的分片方案,把原来全网共同处理每一笔交易,优化成多个小组并行运作,在同样的时间干更多的活,等等。总之,对于链上扩容的基本思路是增加区块大小减少区块验证传播时间和形成共识的时间

链下扩容

所谓链下扩容(二层扩容)是指在主链之外建立一个第二层的交易网络。如果将链上扩容类比为道路的拓宽,那么链下扩容就是在旁边新建高架桥、隧道、小路等等。在进行链下扩容时,其本质没有发生在区块链上,不会直接改动到区块链本身的运行规则(区块大小、共识机制等),而是将必要的信息或需要共识参与时才与区块链进行信息的交互和传播。

在链下扩容的方案中,由于大量的事务通常只在参与节点间直接交易,而不会进行全网传播,效率直接取决于节点间的网络性能,因此其效率通常会更高。而且由于没有全网广播 ,信息便不会公开可查,通常隐私性也更高。

链下扩容主要包括状态通道侧链跨链链下计算等解决方案。

扩容所面临的核心问题

要做区块链的扩容,可以从两个方面考虑,即整体的区块链网络和网络中的单个节点。对于整体的区块链网络最需要解决的问题是其网络负载,而对于单个节点来讲,最重要的是其性能问题。

网络负载

区块链是基于 P2P 网络搭建的。采用非集中式的拓扑结构其优点就是维护简单,面对网络的动态变化具有较好的容错能力。而其缺点是随着节点的不断增多网络规模不断扩大,从而导致区块的传播性能有所下降,因而当前区块链的网络状况是否可以承载区块链的进一步扩容就是其核心问题之一。

  • 区块容量

    以比特币来说,Decker 和 Wattenhofer 对 2012 年比特币网络的区块传播状况进行了度量。他们的分析结果表明对于较大的区块 (超过 20 KB) 其传播时间随着大小呈线性增长趋势,即区块容量越大其传播时间就越长。

    曾经有来自 7 家知名大学与研究机构的 12 位研究人员对比特币网络的区块传播状况进行了分析。他们发现按照平均 10 分钟的区块生成区间如果在一个区间内要达到 50 % 有效吞吐量即至少 50% 的节点能接收到区块则区块大小最多不能超过 38 MB;而如果要达到 90% 的有效吞吐量则区块大小最多不能超过 4 MB。因此,要能够设置合适的区块容量才好。

  • 区块生成频率

    区块的生成频率同样会影响有效吞吐量。以 80 KB 的区块为例如果要达到 90 % 有效吞吐量则区块生成间隔不得低于 12 秒。

从网络负载来看无论是扩大区块容量还是提高区块生成频率都不能无限制地进行链上扩容,否则将导致区块链中形成孤立块的概率增加,从而导致资源浪费和系统的不安全。

单节点瓶颈

在一个区块链网络中,一个节点是其最基本的一个独立工作单元,而单节点的工作效率又会直接影响到整个区块链的运营效率。

  • 节点性能

    在区块链中的每一笔交易都需要被节点验证、传播才能被写入账本中。

    因此理论上某个单节点的带宽也会影响区块链的性能。但要提高网络的传播效率不仅应该提高网络中单节点的平均带宽,还应该从其他方面入手,如网络结构和交易处理流程的优化等。

  • 存储成本

    区块链技术的本质是分布式账本技术,而网络中一个正常运行的全节点是需要存储账本中的全部信息的。但随着区块链网络的运行,该账本的容量就会越来越大,对于单节点的存储压力也会越来越大。因此,如何能够合理控制网络中单节点的存储成本也是一个需要解决的问题。

从网络中单节点的瓶颈来看链上扩容意味着一个全节点需要下载、存储和验证更多的区块,而那些不参与挖矿或验证区块的全节点不能从维护某个区块链网络中获得任何直接收益。随着成本的上升或许会造成全节点数量的下降,而这对任何区块链网络的长期发展都是不利的,而这也是解决区块链扩容时会遇到的核心问题。

扩容技术评估

基于OSI 模型将区块链的扩容方案分为链上扩容、链下扩容以及零层扩容。那么针对这三类扩容技术,它们分别有哪些具体的技术以及它们的优劣势分别是什么呢。

链上扩容

链上扩容主要通过优化和改进公链的基本协议以提升区块链拓展性。主要可从数据层、网络层和共识层三个方面进行改进。

  • 数据层

    在数据层的改进方案中,主要包括扩块隔离验证有向无环图(DAG)

    对于扩块和隔离见证方案来说,它们仍然在链上进行交易,并且不会影响到原有区块链上的安全性,且在实施这些方案时,它们的技术风险相对较低,实施周期短且扩容效果在短期内还是比较明显的。但这两个方案的提升空间相对有限,还可能会导致算力中心化的问题和传输速度降低的问题。

    DAG 是指有向无环图,即从一个顶点沿着若干边前进(有向),但永远不会回到原点形成环形(无环)。DAG 通过这种网状结构与传统的链式结构形成对比,它可以避免因网络延迟和数据同步而造成的时间浪费,因此做到高并发,但同时也会存在双花和影子链攻击的问题。

  • 网络层

    在网络层中最主要的扩容方式就是分片。分片技术可以将区块链分成多个不同的部分,即多个分片,多个分片之间可以并行处理事务,从而可以提高单位时间内处理交易的数量。但同时分片的技术风险和安全风险较高,且实施周期较长。

  • 共识层

    随着区块链技术的发展,“去中心化”的思想也有了新的演进,之前人们会更多的觉得“去中心化”就是让大家找不到中心机构,但是渐渐的人们也认识到找不到中心机构的意义其实并没有那么大。除此之外,我们更需要关注于思想的去中心化和架构的去中心化,而非形式上的去中心化。在这样的情况下,区块链技术在共识层也取得了一定的发展,一些非 BFT 类共识(例如 POS 共识)也逐渐进入大众视野,被人们所接受。

    当前区块链的共识主要包含拜占庭容错类(BFT)共识,非 BFT 类共识和混合共识。共识机制的改进能够有效降低区块链网络中的能耗,显著提高区块链中形成共识的速度,但共识机制的改进的技术难度相对较高,实施起来周期较长,且由于一些共识中参与者并非直接参与决定共识的具体内容,因此也会被人诟病损害了去中心化的特性。

链下扩容

链下扩容不会改变区块链的基本协议,而是通过链下在应用层进行改进以提升区块链的扩展性。链下扩容允许用户在客观上没有一层安全的环境中进行交易,其安全性由一层提供支持,具体包括状态通道、侧链、跨链和链下计算方案。

  • 状态通道

    状态通道方案将部分的链上交易转移到链下的通道中进行,只将通道开启和关闭时的状态记录在区块链上。这样就可以大大降低区块链上的交易数量,从而间接提升区块链的交易处理能力并相应降低了交易的手续费。

    状态通道的目标是对交易扩容,它不改变区块链本身,因此能够维护区块链本身的安全性,且理论上可以无限拓展。但同样的状态通道的技术难度相对较高,实施起来周期较长,且面临数据可能会被修改等风险。

  • 侧链

    侧链技术是希望通过将部分操作转移到侧链,以解决主链的性能和功能瓶颈的问题。侧链要做的是通过多级的子链来减轻主链的压力,理论上可以达到无限扩展的效果。但同样侧链的技术难度也是比较高的,且它的实施周期也相对较长。

  • 跨链

    跨链技术想要解决的范围会更广泛一些,它主要的目的是实现资产和状态等的跨链转移和交换,在跨链技术中链与链之间的关系不仅仅是主侧链的关系。跨链技术主要包含公证人机制、哈希时间锁定和中继链等方案。

    • 公证人机制

      公证人机制是一种基于中心化交易所的跨链资产交换。这种跨链方式的技术难度较低,实现起来比较简单,但这种跨链的方式比较单一,目前只支持资产的交换,且资产交换的原子性和安全性完全由中心化的交易所保证,存在较大的中心化风险。

    • 哈希时间锁定

      哈希时间锁定方案结合了哈希锁和时间锁,迫使资产的接收方在截止时间内确定收款并产生一个收款证明给打款人,否则资产就会归还给打款人。但哈希时间锁定目前更适用于偏资产或者关键数据的交换,甚至不支持资产的转移,可见其使用场景是受限的。

    • 中继链

      中继链本质上算是公证人机制和侧链机制的融合和拓展,其中的 “公证人” 仅充当数据收集器并将收集的数据转发到目标链的角色。基于中继链的跨链方案是一种相对分散且松散耦合的方式,它具有更高的可扩展性。但是基于中继链的跨链方案具有较高的技术难度,实现起来比较复杂,实施周期也会比较长。目前社区内最活跃的两个跨链项目 Cosmos 和 Polkadot 采用的都是基于中继链的多链多层架构,其中 Cosmos 目前支持的是跨链资产交互,且已于2019 年 3 月正式主网上线;而 Polkadot 宣称提供任意类型的跨链交互,但还未具体实现,主网也还未上线。

  • 链下计算

    如果说状态通道解决的是交易容量问题,那么链下计算方案想要解决的就是智能合约容量问题。链下计算的思路是将复杂的交易放到链下执行,再把执行结果提交回链上,以此减轻链上的处理压力。

    同样,该方案不会改变区块链本身的安全性,但该方案的技术难度较高,实施起来周期较长,并不是适用与所有的公有区块链的。

零层扩容

目前,区块链的扩容方案的主要集中点都在链上扩容和链下扩容中,相比之下,市场对于零层扩容的关注度较低,且相关的项目比较少。但整体来看,零层扩容和链上及链下扩容是相互补充的,且具有乘数效应的,零层扩容的实现也具有显著的显示的意义,但当前技术由于其技术难度较高以及实施周期长的风险,其发展还是具有较大的不确定性的。

区块链扩容项目

基于以上区块链扩容的技术解决方案,社区中出现了一些相对比较成熟的产品或项目,主要有以下这些。

链上扩容

链下扩容

跨链

零层扩容

  • bloXroutearrow-up-right,是基于 BDN 扩容方案实现的区块链分发网络(blockchain distribution network - BDN)。

最后更新于