火币区块链产业专题报告:区块链技术可扩展方案分层模型

从比特币问世,区块链行业的发展也有10年了,之所以说到当前处于区块链发展的一个迷茫期,与区块链技术突破和落地应用紧密相关。

本报告通过对27个典型 区块链 项目分析,借鉴计算机网络分层管理、各层标准化设计的思想,将 区块 链 与传统互联网OSI模型结合,建立 区块 链 技术可扩展方案分层模型三个一级层级:Layer 0层数据传输层,Layer 1层On-Chain公链自身(底层账本)层和Layer 2层Off-Chain扩展性(应用扩展)层。在一级层级的基础上,结合 区块 链 架构又可以进一步分解成七个二级层级来详细研究。

Layer 0层数据传输层与传统OSI七层模型对应,优化 区块 链 与传统网络的结合问题。 区块 链 是整个互联网协议层中的最上层,本身还是要依赖于底层的协议为它工作,虽然在比特币P2P网络设计的时候已经考虑了节点之间的发现、节点连接的握手协议、节点间地址广播和数据通信等,鉴于已经有部分项目开始探索P2P网络与传统OSI模型的结合,甚至将改进延伸到数据链路层,本报告倾向将P2P网络和传播机制并入到Layer 0层和传统OSI模型一起作为一类可扩展方案进行研究。

Layer 1层解决底层账本问题,主要负责安全,妥协性能,注重于记账功能。结合 区块 链 架构,Layer 1层可以分解成四个二级层级,从网络层的验证机制上使用诸如分片技术去改进,从数据层的数据 区块 使用诸如隔离见证和链式结构上使用DAG等技术去改进,从共识层的共识机制上去改进;

Layer 2层解决广义应用问题,主要负责性能,妥协去中心化,注重于计算功能。结合 区块 链 架构,Layer 2层可以有两个二级层级,从跨链、状态通道等多链并行、链上链下结合甚至是中心化的方式来满足性能需求,借助Layer 1层来保证安全。

通过阅读本研究报告,读者可以充分了解到当前 区块 链 技术发展趋势,尤其是可扩展方案的基本原理、思考方向和主要技术,并结合对应的项目案例加深理解,提升体系分析、辨别项目的能力。

区块 链 技术的本质是一个服务于现实场景的底层账本,不可盲目万能化,Layer 1层就是作为这个底层账本的主要载体充分服务于Layer 2层,根基于更适合的Layer 0层。

第一章 当前 区块 链 技术主要瓶颈

1.1 区块 链 技术发展概述

2009年1月, 比特币 网络正式运行, 比特币 的成名造就了 区块 链 技术。如今,从 区块 链 技术的发展上看,普遍公认的主要有两个阶段:一是以 比特币 (BTC),莱特币(LTC)等为代表的作为支付货币的第一代 区块 链 ;

在第一代的基础上,第二代 区块 链 的发展其实有几个方向:具备图灵完备的智能合约功能是大家说的最多的一个方向,典型代表有以太坊ETH)和柚子(EOS)等;隐私加密保护相对于第一代 区块 链 也是一个很重要的改进,典型代表有环签名技术的门罗币(XMR)和零知识证明的大零币ZEC)等;除此之外,一个区别传统 区块 链 概念的有向无环图DAG也是一个重大的改进方向,典型代表如IOTA等。

而第三代 区块 链 目前并没有普遍的共识,这也是当前 区块 链 发展的一个迷茫期,大家都在摸索中,有将DAG和跨链技术作为第三代的,也有将Layer理论(后文将具体介绍)作为第三代发展方向的。其中,如果将DAG作为并行于狭义 区块 链 (注:广义 区块 链 技术是包含DAG技术的)的一种技术来看时,我们也能做出另一种类比:第一代DAG项目和第一代狭义 区块 链 项目都以支付货币功能作为第一代,当DAG系列出现支持智能合约的突破后,便可以类比于第二代狭义 区块 链 的阶段。

区块 链 技术发展阶段可以用图1来表示:

图1 区块 链 技术发展阶段  

1.2 区块 链 的三元悖论

从 比特币 问世, 区块 链 行业的发展也有10年了,之所以说到当前处于 区块 链 发展的一个迷茫期,与 区块 链 技术突破和落地应用紧密相关。在技术上, 区块 链 的三元悖论是最基本的法则: 区块 链 系统最多能在去中心化、安全性、可扩展性三属性中取其二;换句话说, 区块 链 系统在去中心化、安全性、可扩展性三属性必须有所取舍,划分出优先级,或者达到动态最优。

图2 区块 链 系统三元悖论

1.3 当前 区块 链 技术主要瓶颈

理解了 区块 链 的三元悖论,就能理解为什么大家一直说 区块 链 公链项目不能满足商业需求的论述了。当前 区块 链 技术主要瓶颈就在于公链项目的可扩展性有限,而可扩展性最直接的表征一般采用TPS(Transactions Per Second)来间接描述。

TPS是一个有成熟定义的计算机术语,代表了系统每秒钟能够处理的业务数量,是衡量一个系统吞吐量的核心指标。简单地说,TPS 越高,这个系统的事务处理能力越强,越不容易造成网络拥堵,在高并发的业务领域和商业级应用场景中有很大的优势。TPS 越低,意味着系统每秒能够处理的事务数量越低,如果是在一个支付系统中,交易速度会越慢,对应的交易成本也会越高。由于TPS 是一个量化指标,所以其计算公式是确定的,即:

TPS = 系统并发数/ 平均响应时间

其中系统并发数指系统同时处理事务的最大数量,平均响应时间为系统处理一个事务平均花费的时间,所以不论是 区块 链 结构还是传统结构,系统的TPS 都由系统的并发数和平均响应时间决定。

在 区块 链 中,TPS可以理解成每秒钟处理的交易数。众所周知, BTC 平均每10分钟出一个块,每个块大小1MB,平均每笔交易的大小为600字节,那么每个块平均能够处理1600笔交易,即TPS=1600/(10*60)=2.67,即使是高峰数据统计, 比特币 的TPS也是个位数的,很多资料会以5~7TPS做为 BTC 的TPS值。

图3 BTC 每个块的平均交易数

而 ETH 目前仍然是POW的挖矿方式,所以处于20~30TPS区间,即不到百位TPS档位。热门的 EOS 一直以并行百万级宣传,主网上线后,研究员们搭载的服务器测试结果并不足1000,随着DPOS的正常运作,最新资料显示已经达到3000+,在不考虑并行的情况下,相对中心方式的 EOS 最终TPS应该也是在千位档,而并行实现百万级的概念在看完本报告后相信大家会有一个新的见解。理论上,在相对同等状态下, ETH POS+sharding应该和 EOS 的DPOS+LMAX同处于千位档。

看完 区块 链 项目的数据,我们对比一下Visa的数据:Visa平均处理2000TPS,每日平均峰值可以达到4000TPS,理论上最高能够支持5.6万TPS;而Paypal全年处理490万笔交易,性能可达10万TPS;淘宝2017年双十一交易创峰值32.5万TPS,支付峰值25.6万TPS。

在传统集中式系统中,客户端和服务器端的角色是分离的,即用户所在的客户端负责发起请求,然后中心服务器负责接收、验证、处理等一系列工作,整个系统的数据储存和记录也都由中心服务器负责。所以在传统的集中式系统中,事务处理流程很简单,由客户端发出请求,由服务器处理后更新数据库,即可返回客户端,是一种集中式数据库系统。

图4 传统集中式系统单个事务请求的确认流程

因此在传统的集中式系统中,不论是系统的并发量还是事务的平均处理速度都和中心服务器的性能有着直接的关系。中心服务器性能越强,内存越大,数据库访问速度越快,整个系统的TPS 就会越高。此外,传输过程中带宽的增大,客户端和服务器端物理距离的减少也可以使得系统平均响应时间减少,从而增大TPS。

而在 区块 链 分布式系统中没有一个中心服务器来处理事务,每个节点都是一个中心,所以就必须要解决数据分布式存储的公平性和一致性问题。所谓公平性,就是确保每个节点都能拥有记账的权利,而不会出现某些节点垄断记账。所谓一致性,就是每个节点的数据账本保持同步更新,这就要求每一条数据都需要经过多个节点甚至全网节点的验证和确认。

图5 区块 链 的分布式

概括地说,在 区块 链 分布式系统中,一笔交易从发出请求到确认需要经历以下步骤:

1)由节点发出交易请求,并且广播至整个网络;

2)其他节点接收交易请求,并且验证,如果验证通过,则放入待记录交易列表(交易池);

3)各个节点争抢记账权(即抢夺新的 区块 ),成功获得记账权的节点将待记录的交易请求记入新的 区块 中,然后将 区块 广播至整个网络;

4)网络中其他节点接收 区块 ,并且验证,如果验证通过,则该节点确认 区块 的合理性,将该 区块 记录自己的数据库;

5)当有超过一定数量的节点都记录了该 区块 ,表明整个 区块 链 系统认可了,此时最初的交易请求才算被确认。

在 区块 链 这种分布式系统中,一个事务的记账权首先需要各个节点基于共识机制进行争抢,这就需要消耗大量时间。其次,一笔事务还需要经过多个甚至全部节点的反复验证和确认才能被写入数据库,这大大减慢了事务的处理速度。如果某个节点的响应速度很慢,整个系统的处理速度都会被拉低。而在传统集中式系统中,事务永远由中心服务器处理,也不需要多个节点的反复验证和确认,所以 区块 链 的TPS 相较于传统集中式系统的TPS 普遍要低,并且我们无法单纯用强化中心服务器性能的方式来提升整个 区块 链 的TPS。同时,前文也提到淘宝双十一TPS是有两个数值的,一个是交易创建峰值,一个是支付峰值,在 区块 链 中,支付峰值才是确认的过程,会显得更加重要和实际,严格的讲, 区块 链 TPS的评估应该参考每秒确认交易数量CTPS(Confirmed Transactions Per Second)来描述一个系统的真实性能,不过鉴于公开资料并不严格区分TPS的细分定义,也不属于本报告的重点,所以本报告也只采用TPS来整体描述,仅作对比参考之用。

由此可见,即使中心化的系统由于硬件等各种问题的制约,TPS的峰值不超过10万级别,而正常日平均TPS也不超过1万级别(参考Visa),作为一个底层分布式账本的 区块 链 项目一味追求高TPS或者是宣传极高TPS就值得大家仔细思考一下了。

考虑到日常应用的需求, 区块 链 主流公链项目 BTC 、 ETH 以当前最高1000TPS的目标也落地困难,于是便产生了可扩展性的讨论。至于众多号称TPS破万,甚至百万的项目,在阅读完本报告后,相信大家会有个更清晰的认识和理解。

第二章 区块 链 技术可扩展方案分层模型

2.1 区块 链 技术可扩展方案分层模型综述

要系统的考虑 区块 链 技术可扩展方案,首先必须理解 区块 链 技术框架,如图6所示:

图6 典型 区块 链 架构

当前主流的 区块 链 架构包含六个层级:网络层、数据层、共识层、激励层、合约层和应用层。图中将数据层和网络层的位置进行了对调,主要用途将在下一节中详述。

网络层: 区块 链 网络本质是一个P2P(Peer-to-peer点对点)的网络,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,可以无需中间环节和服务器的介入。每一个节点既接收信息,也产生信息,节点之间通过维护一个共同的 区块 链 来同步信息,当一个节点创造出新的 区块 后便以广播的形式通知其他节点,其他节点收到信息后对该 区块 进行验证,并在该 区块 的基础上去创建新的 区块 ,从而达到全网共同维护一个底层账本的作用。所以网络层会涉及到P2P网络,传播机制,验证机制等的设计,显而易见,这些设计都能影响到 区块 信息的确认速度,网络层可以作为 区块 链 技术可扩展方案中的一个研究方向;

数据层: 区块 链 的底层数据是一个 区块 +链表的数据结构,它包括数据 区块 、链式结构、时间戳、哈希函数、Merkle树、非对称加密等设计。其中数据 区块 、链式结构都可作为 区块 链 技术可扩展方案对数据层研究时的改进方向。

共识层:它是让高度分散的节点对 区块 数据的有效性达到快速共识的基础,主要的共识机制有POW(Proof Of Work工作量证明机制),POS(Proof of Stake权益证明机制),DPOS(Delegated Proof of Stake委托权益证明机制)和PBFT(Practical Byzantine Fault Tolerance实用拜占庭容错)等,它们一直是 区块 链 技术可扩展方案中的重头戏。

激励层:它是大家常说的 挖矿 机制,用来设计一定的经济激励模型,鼓励节点来参与 区块 链 的安全验证工作,包括发行机制,分配机制的设计等。这个层级的改进貌似与 区块 链 可扩展并无直接联系。

合约层:主要是指各种脚本代码、算法机制以及智能合约等。第一代 区块 链 严格讲这一层是缺失的,所以它们只能进行交易,而无法用于其他的领域或是进行其他的逻辑处理,合约层的出现,使得在其他领域使用 区块 链 成为了现实, 以太坊 中这部分包括了EVM( 以太坊 虚拟机)和智能合约两部分。这个层级的改进貌似给 区块 链 可扩展提供了潜在的新方向,但结构上来看貌似并无直接联系。

应用层:它是 区块 链 的展示层,包括各种应用场景和案例。如 以太坊 使用的是truffle和web3-js. 区块 链 的应用层可以是移动端,web端,或是是融合进现有的服务器,把当前的业务服务器当成应用层。这个层级的改进貌似也给 区块 链 可扩展提供了潜在的新方向,但结构上来看貌似并无直接联系。

由此可见,单从结构上分析, 区块 链 技术可扩展方案可以直接从网络层(P2P网络、传播机制和验证机制)、数据层(数据 区块 和链式结构)以及共识层进行改进达到优化。

以太坊 社区在 区块 链 可扩展性上曾提出过Layer分层改进的概念:Layer 1层改进和Layer 2层改进。Layer 1层改进是指通过对某条公链本身的改进来提升它的可扩展性,即On-Chain链上改进;Layer 2层改进是指不影响该公链本身,通过其他方式来实现可扩展性的提升,即Off-Chain链下改进(此处链下的含义仅仅指脱离该公链),如后文将会介绍的侧链、跨链和状态通道等。

在这个理解的基础上,我们借鉴计算机网络分层管理、各层标准化设计的思想,将 区块 链 与传统互联网OSI模型结合,建立 区块 链 技术可扩展方案分层模型三个一级层级:Layer 0层数据传输层,Layer 1层On-Chain公链自身(底层账本)层和Layer 2层Off-Chain扩展性(应用扩展)层。在一级层级的基础上,结合 区块 链 架构又可以进一步分解成七个二级层级来详细研究,具体如图7的划分:

图7 区块 链 分层研究构架图

2.2 Layer 0层数据传输层

要理解Layer 0层,先得回顾一下开放系统互连参考模型OSI七层模型 (Open System Interconnect),它是国际标准组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在实际使用中,由于理论研究和现实落地的时差,广泛使用的是TCP/IP协议,不过两者在本质上是可以一一对应的。

图8 OSI模型、TCP/IP协议、 区块 链 分层模型对应关系

大部分的 区块 链 项目所使用的底层网络协议就是TCP/IP协议,少部分支持UDP协议。从协议层角度看, 区块 链 是基于TCP/IP协议的,也就是在传输层之上,属于最上面的应用层。从这个角度来看, 区块 链 本身只是整个互联网协议层中的最上层,它本身还是要依赖于底层的协议为它工作。对应的接口就是 区块 链 的网络层,这也是本报告将数据层和网络层位置对换的主要原因,虽然在 比特币 P2P网络设计的时候已经考虑了节点之间的发现、节点连接的握手协议、节点间地址广播和数据通信等,鉴于已经有部分项目开始探索P2P网络与传统OSI模型的结合,甚至将改进延伸到数据链路层,本报告倾向将P2P网络和传播机制并入到Layer 0层和传统OSI模型一起作为一层进行可扩展方案研究。

这样,Layer 0层数据传输层改进的主要思路就是通过加快全网节点之间的传播速度来提升全网的确认共识,改进主要体现在上图中标红的传输层(TCP/IP)和网络层(IP)上,且不论这样的效果究竟有多大,从逻辑上这样的一个思路是具有合理性的。具体改进可以有:P2P网络拓扑结构改进,节点之间的快速发现,节点之间的快速广播和通信等。

2.3 Layer 1层On-Chain公链自身改进

Layer1层On-Chain公链自身改进的主要思路的出发点是将 区块 链 技术底层账本和上层应用分离,底层账本的重心放在安全性和去中心化上,在性能上有所取舍。只是将需要共识确权的数据上链,从而降低对TPS的需求,从目前技术发展来看,可能千位级别(1000~3000)TPS即可满足。结合前文介绍的 区块 链 的架构可以看出,能够提升的地方有共识层的机制改进和数据层的数据 区块 大小调整、链式结构的优化以及网络层的验证机制改进等方法。

所以,Layer 1层改进的思路是做好一条底层账本公链,将其他的事情交由Layer 2 层来互补处理。这里对于隐私加密技术的需求对Layer 1层会是一个不错的附加属性,但不属于可扩展方案讨论范畴,在没有很好的处理方案前,在Layer 2层考虑也是个能接受的选择。

图9 Layer 1层三元优先级

2.4 Layer 2层 Off-Chain扩展性改进

Layer2层Off-Chain扩展性改进是基于 区块 链 的底层账本技术之上的应用型扩展,可以是基于 区块 链 技术的应用,也可以是中心化的应用结合,它的重心放在性能和安全上,对去中心化有所取舍。最终关键数据传输给Layer1层上链,本身利用高性能处理大量数据,达到现实世界对性能的需求。该类型的改进有跨链——基于 区块 链 技术的多链生态扩展;状态通道——链下数据处理来提升性能;Plasma通过一系列的智能合约,来构建多种应用场景达到多链并行的结果;Truebit一种帮助 以太坊 在链下进行繁重或者复杂运算的技术等。

所以,Layer 2层作为Layer 1层的互补来解决与现实世界的需求,并将必要的数据上链到Layer 1层。

图10 Layer 2层三元优先级  

综上,我们可以将 区块 链 技术可扩展方案分层模型以及当前比较典型的研究项目整理成下面一张思维导图,并在下一节结合具体项目来阐述。

图11 区块 链 技术可扩展方案分层模型下典型项目思维导图  

第三章 Layer 0层数据传输层可扩展方案

3.1 中继网络(Relay Network)

比特币 设计的P2P网络是个节点随机连接的网络,交易和块的信息传输都是通过这些节点,直到全网所有的节点都收到最新的交易和块信息。原本上,这个设计在不考虑性能需求时是非常完美的,但是随着 比特币 的关注度和使用性的提高,2014年Bitcoin Core贡献者Matt Corallo提出了Bitcoin Relay Network  的创意,旨在解决两个问题:

1)优化 比特币 P2P网络数据和块传输速度,提升 比特币 整个网络的安全性,降低攻击风险;

2)减少整个 比特币 网络的延时。

当网络存在延时时,矿工往往需要10-15秒的时间才能收到新挖出来的 区块 信息,以10秒为例,10分钟挖出一个块,相当于丢失了1.6%潜在时间收益,在 挖矿 规模化时这也是不能接受的。尤其大的矿场还可以利用自己的优势搭建私有网络,利用 挖矿 和传播的优势完全碾压小矿场。Bitcoin Relay Network的本质是建立网络对话中枢(hub-and-spoke),它通过8个位于纽约,西雅图,阿姆斯特丹,北京,东京,新加坡,香港和俄罗斯的新西伯利亚的服务器枢纽构成的节点网络来组成 区块 数据传播铁路,矿工们通过这个铁路快速的传播着自己的共识,然后能够立刻开始挖新的 区块 。但是,这个提议的最大问题是从某种意义上讲,Corallo控制着这个网络,尤其是对网络的维护,不过这只是一个更快的选择,传统的P2P网络传播方式仍然是可以是使用的。目前该系统已被描述为 比特币 的血管或神经系统——一个在整个身体传递信息的关键组成部分。

2016年,Corallo在Bitcoin Relay Network的基础上又提出快速互联网 比特币 传播引擎(Fast Internet Bitcoin Relay Engine,FIBRE)的改进,FIBER是一种基于UDP (User Datagram Protocol)的中继网络,可以解决TCP模式下小数据的丢包问题,提升了去中心化性,同时实现了压缩数据,以进一步减少传输的数据量和网络延迟,改善信息传播的速度,矿工可以减少孤儿块(orphan block)的数量,或者被网络拒绝的交易 区块 数量。

同样,康奈尔大学的Soumya Basu, Ittay Eyal和Emin Gün Sirer研究了另一个中继网络 Falcon Relay Network。Falcon使用“直通路由(cut-through routing)”而不是“存储转发”来减少延迟,接收到块时仅仅初步验证块的头部信息就传播出去,而不是等待直到接收到完整的块。当然,这种处理方案有个显著的问题就是如不诚信的矿工可以传播无效的数据浪费竞争对手的资源,为了解决这个问题,康奈尔大学的这个团队得自己扮演把关者的角色,但正常情况下,它提升的速度效率会更高。

3.2 OSI模型改进

FIBRE和Falcon是目前在 比特币 中继网络(Relay Network)上落地并显著改善的代表,在它们的基础上,又有许多新的项目开始了自己的探索,这些探索将视角进一步深化到传统互联网的架构上,试图从OSI模型去进行优化,如Blockchain Distribution Network (BDN),该思路灵感来自于Content Distribution Network (CDN),重点在于对于OSI第四层传输层的改进,也有试图将整个OSI模型与 区块 链 结合改进的项目,思路都很开放,但唯有落地才能解决问题,这里仅挑选个别项目作简要的介绍用于直观了解Layer 0层的设计思路。

3.3 Blockchain Distribution Network(BDN)

BDN是Bloxroute LABS首先提出来的概念,团队中有两位创始人就是Falcon的发起人。项目的主旨思想是通过自己提供的BDN网络来提升节点之间通讯的速度,也是从提供专属网络的角度来改善节点同步情况,各节点通过BLOXROUTE提供的对等节点(Peer Node)接入BDN网络,对等节点作为 区块 链 应用程序和BDN的中间网关,它会针对不同的 区块 链 节点制定专属的接口协议,更具体的技术细节尤其是BDN网络的设计思路批露较少,核心可以用白皮书中的系统架构图表示:

图12 BLOXROUTE架构图

3.4 其他

Marconi协议是一个试图增强乃至取代现有网络基础设施的项目,体系上包括网络协议、 区块 链 协议、去中心化网络管理等,采用向下延伸覆盖至以太网的设计,并且支持去中心化网络堆栈,在OSI 模型第二层建立的安全通信管道提供数据包级加密。这是一个试图在以太网级别上去构建去中心化的点对点的网络协议,最终是否能够落地挑战也是非常大的,白皮书中展示了其OSI模型内的Marconi通道架构。

图13 OSI模型内的Marconi管道

Toda Network也是一个定位新一代 区块 链 版“TCP/IP”协议的项目,愿景未来任何 区块 链 项目都可以在TODA上运行,目前官网虽然没有提供白皮书,但却有十几个 区块 链 项目使用了它的技术。

以上案例,仅仅用来表明在Layer 0上进行 区块 链 可扩展研究的一些思路和项目的探索。

第四章 Layer 1层On-Chain层可扩展方案

4.1 网络层改进——分片(Sharding)

Layer 1层上网络层是连接Layer 0层OSI网络层的,由上节不难发现,Layer 0层的改进有些是贯穿Layer 1层网络层的——整体改进;有些是通过增加一道协议来支持Layer 1层网络层,重点改进Layer 0层。除此之外,针对Layer 1层的改进还可以从验证机制入手,典型代表就是分片(Sharding)技术。

分片其实是一种传统数据库的技术,它以前用作将大型数据库分成更小、更快、更容易管理的部分,以此增加数据库的操作效率。而在 区块 链 中,分片技术的运用会更为繁琐,不过主要思想都是通过缩小验证规模和大量事务并行处理来达到性能提升的效果,主要难点在于各分片之间数据的一致性和分片内部的防作恶,由于验证规模的大大缩小,所以BFT(Byzantine Fault Tolerance,拜占庭容错)类共识会是分片内主要使用的共识机制。目前主流的分片技术分为网络分片、交易分片和计算(状态)分片等三个层级,其技术难度也随之递增,但是网络分片还是最主要的。

网络分片:通过利用随机性,网络可以随机抽取节点形成分片,达到防止网络攻击如女巫攻击等和恶意节点串谋作恶的情况,由于诚实节点验证是整个分片网络的安全之本,所以网络分片是其他所有分片的基础。

交易分片:交易分片的思想是将交易进行预处理,将相干的交易分配到同一个分片内进行验证,而将不相干的交易分到其他分片中验证,最终到达并行处理同时又防止了双花的情况;当然解决思路也有从增加各片之间的通讯和确认来进行研究的。

计算(状态)分片:计算(状态)分片是迄今为止最具挑战性的分片技术提案,它主要用来并行处理智能合约的计算问题,如一些片主要用于矩阵计算,一些片主要用于排序,一些片用于最终结果聚合,每个片独立计算自己的工作,并进行交叉验证来确保最终结果的一致性,其复杂性可以想象。

在分片研究方向,可以关注 以太坊 的Casper,Zilliqa项目,Radix项目和Rchain等。

4.2 数据层改进

Layer 1层上对数据层的改进是最直接的改进方向之一,我们分别从数据 区块 ,链式结构来看看技术上的研究状况。

4.3 增加数据 区块 大小

通过增加数据 区块 大小来达到扩容效果最有名的案例莫属于BCH比特现金[1]了,它是 比特币 于 区块 高度478558的硬分叉产物,旨在通过将 比特币 区块 的1M太小限制提升到8M(2018年5月15日提升到32M,8月份nChain提议再次提升到128M),是一种典型的链上扩容方法,通过 区块 容量的增加来提升交易处理能力,从而能够保证在交易量非常大的情况下也能快速交易并保持较低的手续费。但是,更大的 区块 会造成更多孤块产生的风险,影响系统的整体性能和安全性,同时对矿工的带宽也可能提出新的要求,造成加剧中心化的风险等。

4.4 改进数据 区块 结构——隔离见证(SegWit)

隔离见证(SegWit)就是把 比特币 脚本签名(ScriptSig)信息从基本结构(base block)里拿出来,放在一个新的数据结构当中。通过隔离见证,独立出脚本签名,其签名的大小不会计算在交易 区块 内,因此 比特币 区块 在不改变大小的情况下可以容纳更多的交易,进而达到扩容的效果。

4.5 改进链式结构——DAG

传统 区块 链 技术是一种链式数据库结构,每个 区块 就像铁链一样,环环相扣,块与块之间是完全的串行,这样的链式结构注定了效率的瓶颈,如下图所示:

图14 区块 链 的链式结构

所以,很多研究也从并行的角度去思考可扩展方案,如典型的DAG有向无环图技术就在一定程度上将链式结构改进成网状结构,达到并行提升效率的作用,如下图所示:

图15 DAG的网状结构

当然DAG将最长链共识改成多条链互证共识,它没有 区块 概念,不是把所有数据打包成 区块 ,再用 区块 链 接 区块 ,而是每个用户都可以提交一个数据单元,这个数据单元里只有交易,数据单元间通过引用关系链接起来,从而形成具有半序关系的DAG。

在DAG技术的基础上,很多研究开始放眼于将DAG和传统 区块 链 结合的思路上去进行并行处理,并试图增加智能合约的功能,但是DAG最大的问题来自安全,它全网处于一个异步验证的状态,对当前状态的确认是个相当有挑战的问题,所以主流DAG项目都借鉴了中心化的方式来协助处理。一些关于DAG的情况可以参考火币研究院【超越白皮书3】DAG技术解析与实测 以及IOTA,Byteball,Hashgraph,Conflux的研究。本篇纲要篇发布之后,我们也会针对每一块进行更加具体的对比分析。

4.6 共识层改进

Layer 1层上对共识层的改进也是大家比较熟悉的一块了,主要是针对共识机制的改进,从早期 比特币 的POW(Proof of Work)算力 挖矿 工作证明的共识机制衍生出POS(Proof of Stake)拥有即 挖矿 的股权证明的共识机制,至今各种类型的共识机制层出不穷,主要可以分成两大类:一类是中本聪共识,如PoW,PoS,dPoW,dPoS,PoA,PoWeight,PoR,PoET,PoC/PoSpace,PoI,Ouroboros等;一类是BFT类共识,如PBFT,SBFT/Chain,Ring,Zyzzyva,Zyzzva5,CheapBFT,MinBFT,OBFT等。

共识机制的改进本质是在保证安全的前提下,提升全网验证出块的效率和去中心化程度的取舍来提升性能,这块火币研究院详细的研究报告已经在准备中。

第五章 Layer 2层Off-Chain层可扩展方案

5.1 跨链

分析完Layer 1层可扩展方案,不难发现,Layer 1层上能够改进的方向已经很明确而且比较有限了。所以,更多的主力将 区块 链 的扩展方案放在了Layer 2层上,跨链就是Layer 2层上很有前景的一个方向。

在2016年9月份, 以太坊 创始人Vitalik Buterin 为银行联盟链R3[1]写了关于跨链互操作的报告提到三种跨链方式基本上覆盖了当前主流跨链技术:公证人机制,侧链/中继和哈希锁定。随着大家对三种技术认识的不断深入,当前很多跨链项目已经采用的是混合模式,相互取长补短,也衍生出改进思路,如分布式密钥控制技术。其中公证人技术引入了可信第三方,作为跨链过程中的资产保管人,侧链/中继技术利用SPV证明,中继链等技术,实现了不同 区块 链 之间的可信互通,基于哈希锁定利用了哈希原像脚本,实现了公平的跨链资产交换,分布式密钥控制技术利用分布式密钥生成算法,使得跨链过程中的资产保管人角色由全网节点承担,而不是少数第三方。通过跨链技术,不同链之间可以实现四种场景:

1)A链和B链的资产交互;

2)A链资产支付和B链智能合约调用;

3)A链智能合约调用和B链资产支付;

4)A链智能合约和B链智能合约相互调用。

跨链技术可以关注Polkadot,Cosmos,RSK, BTC Relay的研究以及火币研究院后续的详细分析报告。

5.1.1 公证人机制

公证人机制(Notary schemes):中心化或多重签名的见证人模式,见证人是链A的合法用户,负责监听链B的事件和状态,进而操作链A。本质特点是完全不用关注所跨链的结构和共识特性等。假设A和B是不能进行互相信任的,那就引入A和B都能够共同信任的第三方充当公证人作为中介。这样的话,A和B就间接可以互相信任。具有代表性的方案是Interledger,它本身不是一个账本,不寻求任何的共识。相反它提供了一个顶层加密托管系统称之为“连接者”,在这个中介机构的帮助下,让资金在各账本间流动。

5.1.2 侧链/中继

侧链/中继(Sidechains/Relays): 区块 链 系统本身可以读取链B的事件和状态,即支

持SPV(Simple Payment Verificaiton),能够验证块上Header、merkle tree的信息。本质特点是必须关注所跨链的结构和共识特性等。一般来说,主链不知道侧链的存在,而侧链必须要知道主链的存在;双链也不知道中继的存在,而中继必须要知道两条链。

5.1.3 哈希锁定

哈希锁定(Hash-locking):在链AB间设定相互操作的触发器,通常是个待披露明文的随机数的hash值。本质特点是HTLC(Hashed TimeLock Contract),是通过锁定一段时间猜hash原值(preimage)来兑换支付(redeem)的机制。哈希锁定起源于 比特币 闪电网络,闪电网络本身是一种小额的快速支付的手段,后来它的关键技术哈希时间锁合约被应用到跨链技术上来。虽然哈希锁定实现了跨链资产的交换,但是没有实现跨链资产的转移,更不能实现这种跨链合约,所以它的应用场景是相对比较受限的。

5.1.4分布式密钥

分布式密钥控制技术本质上属于公证人机制的升级版,采用分布式私钥生成和控制技术来生成原链的锁定账户,然后将相应资产映射到自己的链上。其利用密码学中的分布式密钥生成算法和门限签名技术保证了跨链过程中资产锁定和解锁由系统参与共识的所有节点决定并且在此过程系统中的任何节点或者少数节点联合都无法拥有资产的使用权。大致过程可分为两个阶段:锁定资产阶段和解锁资产阶段。

5.2 状态通道

状态通道本质上是通过在不同用户之间或用户和服务之间建立一个双向通道,为不同实体之间提供状态维护服务。它允许把 区块 链 上的许多操作在链外进行管理,等完成链外操作后多方签名确认后,才将最终结果上链,所以说这是一个链上链下互通的扩展性研究方向。链下支付网络通过将大量交易离线处理,同时将 区块 链 作为仲裁平台,处理通道支付过程中的异常情况,如双方对通道的状态有分歧等,间接地提升系统的交易吞吐量。

双向通道支付过程大致可分为三个阶段:初始阶段,用于双方建立通道;支付阶段,通道双方完成支付,即通道状态的更新;关闭通道阶段,双方关闭通道,赎回通道中自己的资金,在关闭通道过程中,一旦某一方作恶,即利用之前的通道状态来谋利,将会触发提交阶段。在提交阶段中,双方提交证据交易给 区块 链 确定通道内的真实状态。

状态通道的研究方向上闪电网络,雷电网络,Liquidity Network和Celer Network都是可以对比研究的。

5.2.1 闪电网络

闪电网络是最早通过链下支付通道形成支付网络,提升 区块 链 交易吞吐量的方案,主要针对目标是 比特币 的扩容解决方案。它主要包含两个协议RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract),基本上同类型的其他相关方案都是在两个协议上进行修改。RSMC主要实现了双人双向的支付通道,使得通道双方可以在交易不上链的情况下即时确认交易;而HTLC如前文所述,通过时间锁(timelock)的机制来延迟通道一方取回通道资产的时间,同时引入惩罚交易的概念来保证通道双方的资产状态是基于最新的交易情况,一旦某一方试图使用之前的通道状态来谋利,另一方可以在这段延迟时间内(timelock)发现,并没收其通道内资产作为惩罚。

5.2.2 雷电网络

雷电网络是 以太坊 链下扩容解决方案,以闪电网络技术理念为基础,由于 以太坊 实现了图灵完备的脚本系统,可以实现更为灵活的智能合约,因此基于 以太坊 模型设计的雷电网络可以更多的使用智能合约来实现。

5.3 其他

5.3.1 TrueBit

TrueBit的思路是把智能合约的运算外包给第三方,把复杂的计算任务放到链下执行,通过经济激励,促使第三方之间互相监督,从而保证计算结果的正确性, 以太坊 通过智能合约作为终极仲裁,奖善罚恶。造假者会获得经济惩罚,所以在绝大多数情况下,外包商会诚实的执行代码并提供正确的结果,链上节点无需完整验证,从而大大减轻了链上的计算负担,也节省了用户的gas消耗。

不难看出,状态通道是将交易放到链下进行来增强扩展性,TrueBit是将复杂的计算链下进行来增强扩展性。

5.3.2Plasma

Plasma的扩展性方向是采用子链的模式,智能合约创建在 以太坊 主链之上,这些智能合约充当Plasma子链的“根”,根里包含了子链的基本状态交易规则,记录了子链状态的哈希值,并且让用户在 以太坊 主链和子链之间转移资产。子链负责处理各自数据和业务,拥有自己的共识算法,且独立于 以太坊 主链,正常运作时, 区块 制造者们会定期地向主链提交验证,实质就是证明子链当前的状态是有效的,符合共识机制的要求,子链与主链的验证交互只是最终需要验证的数据,其他过程均由子链自己处理,子链还可以生成链上链的结构,对每个层级Plasma要解决两个最重要的事情,一是子链的反欺诈,另一个是资金的进入与退出。

图16 Plasma原理图

值得注意的是,因为 以太坊 出来的时间太早了,所以诸如雷电网络、TrueBit和Plasma对 以太坊 扩展思路只能是适应 以太坊 既有的设计,而针对其他新出来的 区块 链 项目,是可以借鉴这些思路在设计上就直接实现扩展的,我们将在下一章节进行描述。

第六章 总结

通过对Layer 0,Layer 1和Layer 2一层层可扩展方案的分析和典型项目原理描述,不难发现, 区块 链 技术可扩展方案分层模型基本可以按照图7、图8和图11的架构来分部考虑。

如果我们跳出可扩展方案的框架去思考这个三个层级:Layer 0层解决的是 区块 链 与传统网络的结合问题;Layer 1层解决的是底层账本问题,也可以理解成一直说的公链问题;Layer 2层解决的才是扩展性延伸和链上链下打通的问题,也可以理解成广义的应用问题。从分层的角度去设计一个 区块 链 项目,可以有效的规避 区块 链 的三元悖论问题:Layer 1层主要负责安全,妥协性能,注重于记账功能;Layer 2层主要负责性能,妥协去中心化,注重于计算功能,Layer 1层底层设计时就充分考虑好Layer 2层的交互问题,这种架构设计等于将前文介绍的 以太坊 和plasma进行重新设计,从底层设计就提供一致性和可交互性。

图17 Layer 1层和Layer 2层的互补

这里还需要强调一下隐私加密技术的需求对Layer 1层会是一个很不错的功能,也是值得底层账本好好研究的方向,在没有很好的处理方案前,在Layer 2层考虑也是个能接受的选择。

目前,明确提出上述Layer 1层和Layer 2层分层设计的项目有两个:Cardano和Nervos。

Cardano的两层为:

1)Settlement Layer清算层(Layer 1层):Cardano的代币ADA在该层流动,是Cardano整个系统的基础;

2)Computation Layer 计算层(Layer 2层):Cardano将在该层提供智能合约,身份认证,消息通信等等功能,以方便开发者在此开发程序。

Nervos的两层为:

1)Common Knowledge Layer共识层(Layer 1层):CKB(Common Knowledge Base)只关心全球共识和安全,它是整个网络的安全基石,为Layer 2层服务;

2)Generation Layer拓展层(Layer 2层): 诉求是快和安全,同时CKB也可以支持其他的Layer 2,比如状态通道,类似Plasma风格的Layer ,Truebit等。

而完整从Layer 0,Layer 1和Layer 2三层统一布局的项目目前也有一个PlatOn,不过这些项目基本都在早期阶段,仅作研究探讨之用。

图18 Layer 三层架构构想

看到这里,大家应该理解号称TPS破万,十万,甚至百万的项目是如何实现的了,基本上都是Layer 1层和Layer 2层组合实现的方式,如母子链,多链并行的模式,或者是直接牺牲去中心化来实现,Vitalik也提到借助Sharding和Plasma能将 以太坊 实现百万TPS,也有部分极客在中心化的模式下将 以太坊 实现150万TPS的测试,所以我们应该更加理性的去认识以高TPS作为主打亮点的项目。正如前文所述,从当前技术发展来看,Layer 1层最乐观的可能落地的最大TPS在千位级别(1000~3000),进一步扩展的空间就交由Layer 2层去创造了。

西方的项目喜欢聚焦到每一个点去解决问题,而东方的项目则喜欢大一统巨无霸。无论哪种风格,如果从设计之初就采用辨证统一的视角去全盘规划,需要统一的共识和标准, 区块 链 技术的本质只是一个底层账本,它是服务于现实场景的,而不是现实场景都往 区块 链 上蹭热度,沦为资本游戏,期待能够看到公认的第三代 区块 链 技术。

声明:本文来自火币网平台用户投稿,观点仅代表作者本人,不代表【火币网-www.qihuob.com】立场,文章内容仅供参考,如若转载请标注文章来源:【当前页面链接】

区块链相关

区块链媒体相关

区块链技术相关

挖矿相关

比特币相关