LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 深度介绍区块链链上扩容解决方案之分片 Sharding

深度介绍区块链链上扩容解决方案之分片 Sharding

2020-04-14 分布式资本 来源:链闻

原文标题:《分片:分而治之,无限扩展 ——区块链技术引卷之四》
出品机构:通证通研究院,FENBUSHI DIGITAL
文章作者:宋双杰,田志远
特别顾问:沈波,Rin,JX

分片(Sharding)是区块链扩容的链上解决方案之一,目前市场上的众多项目均采用了分片技术。

1 分片原理

1.1 分片概念

分片概念源于数据库领域。分片指数据库中数据的水平分区(将表的不同行分到不同的分区),每个分片都保存在一个单独的数据库服务器实例上,以分散负载。

当前的区块链中,每个节点存储所有的状态,同时处理所有的事务,在保证了安全性的同时限制了可扩展性。

区块链分片的基本思路是将区块链网络中的节点分成若干个相对独立的分片,单个分片处理规模较小的事务甚至只存储部分网络状态,多个分片并行处理事务,理论上整个网络的吞吐量将会提升。

1.2 分片层级

区块链分片的层级由下到上分别为:网络分片(Network Sharding)、交易分片(Transaction Sharding)和计算分片(Computational Sharding)以及状态分片(State Sharding)。

网络分片

网络按照一定规则选取节点形成分片。实施分片的第一步就是创建分片,因此网络分片是交易分片、计算分片和状态分片的基础。

交易分片

交易分片:将交易按某种规则分配到不同分片。

其思路为,按一定规则将交易分配到同一个分片处理,则既能够达到并行处理的目的又能避免双花问题的出现。在不同的记账方式下,对交易分片的要求有所区别。

目前区块链网络中存在两类记账方式,分别为UTXO (Unspent Transaction Outputs,未使用交易输出)模型账户 / 余额模型,典型代表分别如 BTC 和 ETH。

UTXO 模型:

在 BTC 交易中,每笔交易都会有一个或多个输出,UTXO 指尚未花费的区块链交易的输出,可以作为新交易的输入,而已花费的交易输出不可再花费,类似纸币交易情况下的支付和找零,顾客将一张或多张纸币支付给店家,店家则将一张或多张纸币找零给顾客。

账户 / 余额模型:

系统记录每个账户的余额,在进行交易时,系统检查账户是否有足够余额用于支付,类似于银行转账时,银行会记录每个账户的余额,只有账户余额大于所需转账金额时,交易才能够进行。

UTXO 模型下,交易分片需要跨分片通信。

在账户 / 余额模型下,由于一笔交易只有一个输入,因此只要将交易按照发送者地址进行分片,就可以保证同一个账户的多笔交易在同一个分片中处理,有效防止双花。在 UTXO 模型下,一笔交易可能包括多个输入和多个输出,仅仅按照地址分片无法避免双花问题,分片之间不得不进行通信,如果限制跨分片交易将限制平台的可用性,而允许跨分片交易则不得不权衡跨分片通信的成本和性能提升带来的收益。

计算分片

计算分片:只有网络的一个子集(如一个分片)执行计算,从而高效执行运算密集的任务。

状态分片

状态分片:特定的分片只存储部分状态,而不是完整的区块链状态。

状态分片能够减少状态储存冗余,状态分片是最为理想化的分片方式,但是面临着一系列挑战,如跨分片通信、数据有效性和数据可用性等。

区块链网络中验证节点的主要任务包括:

1)处理交易,随着处理交易量的不断增长,节点将需要更多的计算能力;

2)将已被验证的交易和已完成的区块中继给其他节点,随着需要中继的交易的数量不断增长,节点将需要更多的网络带宽;

3)存储整个网络的状态,随着状态的增多,节点将需要更多的存储空间,即便 TPS 不增加,节点的存储需求依然会不断增加。

这三项任务中的每一项都对验证节点提出了越来越高的要求,分片一方面能够降低验证节点的负载,网络分片、交易分片和计算分片可以很好地解决计算能力瓶颈,而状态分片则能够解决网络带宽和存储能力瓶颈,另一方面降低了需要验证事务的节点的数量。

2 分片挑战

对于目前的区块链而言,分片是一个令人兴奋和充满希望的方向,但是分片在提升了效率的同时也带来了新的问题,主要包括分片内部的安全和效率问题,以及跨分片交易引发的跨分片安全和效率问题。

分片的第一步即网络分片,将网络中的节点按照某种规则分配到不同的分片,这里的问题是,单个分片的算力以及单个分片内的验证节点数量远低于分片之前的整个区块链网络,从而导致对采用 PoW 共识的单个分片发起 51% 攻击,或者对采用非 PoW 共识的分片发动女巫攻击(Sybil Attacks)的成本也极大地降低了。

因此,采用何种共识机制、如何划分分片大小以及如何为分片分配节点以防止恶意节点控制分片变得至关重要。现有的分片设计主要通过某种随机性分配验证节点,降低作恶者控制单个分片的概率,针对恶意分叉问题可以通过将部分分片链上的区块连接到信标链(信标链负责协调系统的参与者,如随机分配验证节点到分片及从分片接收状态更新等),并将分叉选择规则设定为首选交叉连接到信标链的链。对女巫攻击问题的解决方案包括要求节点提供抵押物或执行 PoW 等,以提升作恶成本。

接下来是交易分片,如前文所述,在 UTXO 模型下,一笔交易可能包括多个输入和多个输出,进行跨分片通信需要权衡通信导致的成本和性能提升带来的收益。

另外跨分片交易往往不可避免,极端情况下,系统内的交易全部是跨分片交易,此时系统的性能将低于分片之前。

对跨分片交易问题的解决方案包括同步和异步两种方式,同步方式下,当跨分片交易发生时,各个分片的验证节点协作执行跨分片交易;异步方式下,跨分片交易在各个分片中异步执行,即在有足够证据表明发送方所在的分片已执行其负责的任务后,接收方所在的分片处理其负责的任务,这种方式相对简单且容易协调,因此目前更为普遍。

通过分片理论上能够提升整个网络层面的性能,但是对于单个分片仍然可能存在单点过热问题,即单个分片内部仍然存在交易量过大导致拥堵的可能。

以上仅仅是进行网络分片和交易分片 / 计算分片面临的问题,没有实施状态分片的情况下,每个验证节点都存储有整个区块链网络的状态,可以自由地从区块链中读取任何数据,但一旦实施状态分片,分片内的验证节点只存储区块链网络的部分状态,从而引发了数据有效性和数据可用性等问题。

数据有效性

数据有效性问题是关于如何识别无效区块,比如作恶者在分片 1 上创建无效区块 B (导致甲的账户上凭空产生 1000 个通证),并且随后创建有效的区块 C,继而发起跨片交易,将凭空产生的通证转移到乙的账户。这种情况下,分片 2 的节点验证该笔交易之前的一个区块或 N 个区块都是徒劳的,因为作恶者总是可以在无效区块后创建 N+1 个有效块。通过单个分片验证相邻的多个分片能够解决单个分片创造无效区块的问题,但是当多个分片合谋时,这种方式将不再有效。目前这一问题的解决方案包括渔夫(Fisherman)和 SNARKs (Succinct Non-interactive Arguments of Knowledge,简洁的非交互知识论证)。渔夫方案的思路是在链间传递区块头信息时设置质疑期,期间任何诚实节点都可以提供区块无效证明,该方案的第一个问题在于质疑期需要足够长,从而诚实节点能够下载区块、验证区块以及准备发起质疑;第二个问题是质疑的存在为攻击者提供了新的攻击媒介,要求质疑者提供抵押一定程度上是有效的,但是攻击者提出无效质疑仍然可能是有利可图的,比如出于某种认定阻止诚实节点提出的质疑通过。第二种解决方案是通过使用某种加密结构证明某个计算是正确执行的,其问题在于创建证明本身需要一定时间、系统设计更为复杂、可能出现无效证明以及无法用于图灵完备智能合约语言的协议。

数据可用性

数据可用性包括两个方面,一是特定分片由于某些原因脱机(如受到攻击),依赖于脱机分片的事务无法继续执行,这一问题可以通过备份网络状态解决,但是备份节点将不得不存储系统的整个状态并可能因此产生中心化的风险。第二个方面是由于节点恶意删除历史数据等原因导致区块变得不再可用,针对这一问题目前有监护证明(Proof of Custody)、纠删码(Erasure Codes)以及 SNARKs 或 STARKs (Scalable Transparent Arguments of Knowledge,可扩展知识论证)等解决方案。监护证明的思路是让公证人在分片之间轮换,下载一个区块证明其可用性,为避免公证人始终选择证明能够下载区块,公证人需要提供相应证明或者抵押资产。利用纠删码技术即使区块只有部分可用仍然能够恢复整个区块,因此轻节点收到区块时可以下载区块的部分内容,从而节点能够确认区块是可用的。


最后分片并不是静态的,由于遭遇攻击或新节点加入等原因,分片需要进行动态调整。

但在状态分片下,动态调整必须考虑可能导致的状态同步失败及系统中断等问题。

3 分片方案的优劣势

相比于其他链上扩容方案,分片方案的主要优势在于通过并行处理事务提升效率,同时减少计算或存储的冗余,一定程度上保证了非中心化,理论上能够无限扩展。相比于链下扩容方案,分片方案保证了交易链上进行,一定程度上兼顾了非中心化,但是由于分片将网络进行了切分,导致作恶成本相对降低,因此分片方案的安全性问题需要关注。

总体而言,分片方案的主要问题在于安全风险较高,实施周期较长,目前仍存在一系列技术难题有待解决。

4 分片相关项目分析

除了备受关注的 ETH 分片以外,目前市场上还出现了众多的分片项目。本部分简要介绍了 ETH 和在分片相关项目中市值排名靠前的 Zilliqa 的分片情况,并对 10 个分片相关项目进行了分片策略、通证市值和市场关注度等方面的比较,除这些项目以外,还可以关注 EcoBall、Chainspace、Dfinity、Fast Access Blockchain、IOST、MultiVAC 和 OntologyNetwork、Monoxide 等。

ETH 分片简介

在分片相关项目中,ETH 的分片无疑最为引人关注。

ETH 的分片定位于计算分片和状态分片,目前 ETH 的分片路线图规划了七个阶段,在第零阶段将引入信标链(Beacon Chain),在第一阶段将实现基本分片,在第四阶段将实现跨分片交易,在第六阶段实现指数分片。目前第零阶段已经有了详细具体的规划,第一阶段的规划相对而言没有第零阶段那么详细。

第零阶段测试网计划于 2019 年一季度发布,此前 ETH 研发人员曾预计信标链将于 2019 年底推出,照此看来,ETH 的分片还处于相当早期的阶段,距离真正实现还需要一定的时间。

验证者委员会定期轮换防止操纵。

用户可以在信标链上抵押 32 个 BETH (BETH 是一种仅供信标链上的验证者持有的加密资产,可通过提供验证服务或者以 ETH 1:1 单向购买获得)成为验证者。在第零阶段,验证者仅管理信标链,第一阶段开始验证者还将管理 1024 个分片链。信标链负责协调其他分片链的验证者,所有验证者都将验证信标链。分配给分片链的一组验证者称为验证者委员会,由 128 个验证者组成。为防止验证者委员会被操纵,每 64 个区块的时间,信标链将重新分配分片链的验证者。

通过交联(crosslinking)操作验证分片状态。

分片链的验证者委员会通过交联操作证明分片链的内容和状态,即验证者委员会必须在信标链中提交有关分片的可验证信息(如默克尔树根节点的哈希值),在第二阶段或以后,交联操作将支持跨分片通信,如果验证者委员会对交联持有不同意见,显然至少有一个委员会是错误的,最终将受到权益削减的惩罚。

Zilliqa 分片简介

Zilliqa 创始团队均为计算机相关专业博士,包括最早提出将分片应用于区块链的 Prateek Saxena,学术背景深厚,具有一定的先发优势。

在具体实施上,Zilliqa 暂未实施状态分片,目前已经实现了网络分片、交易分片和计算分片,主网已于 2019 年 1 月 31 日上线(此前计划于 2018 年三季度上线)。Zilliqa 在测试中实现了最高 2828 的 TPS (6 个分片,3600 个节点,根据 Zilliqa 测算,当分片节点数达到 600 个,分片中至少有三分之一恶意节点的概率降低到百万分之一),目前其主网刚刚上线,相关数据较少,最终效果还有待验证。

利用 Pow 防范女巫攻击。

Zilliqa 的共识算法为 PBFT+PoW,分片内部运行 PBFT 共识,使用 PoW 防范女巫攻击以及实现网络分片。想要加入网络的新节点必须执行 PoW,经过网络中现有的节点验证后方可加入,从而使操纵多个节点的成本上升。

网络分片实现:基于 PoW 结果随机分配节点到分片,防止作恶者控制单个分片。Zilliqa 基于 PoW 选举节点组成目录服务委员会(Directory Service Committee,简称 DS 委员会),并根据先进先出的原则定期增加一个新节点,移出一个原有节点。DS 委员会形成后便开始分片,网络中的其他节点执行 PoW 并提交给 DS 委员会验证,PoW 的后几位二进制数字决定了节点被分配到哪个分片。

交易分片及计算分片实现:依据事务分类进行分配。

Zilliqa 将事务分为三类:第一类事务为用户之间的交易,不涉及智能合约;第二类事务为用户调用单一智能合约,不涉及转移资金给其他用户;第三类事务为除第一类和第二类以外的其他事务。其中,前两类事务按照一定规则分配给普通分片处理,第三类交易在普通分片处理完第一类和第二类事务后由 DS 委员会处理。这种方式的问题在于,随着分片的增加,DS 委员会将会面临越来越大的处理压力。

不实施状态分片无疑简化了系统的设计和实现,但是随着系统效率的提升,节点将很快面临存储瓶颈。同样,不并行执行影响同一智能合约的交易也是简化的实现方式,但在未来,顶级应用将会受到分片处理能力的限制。

分片相关项目对比和总结

通过对比现有的 10 个分片相关项目可以发现,尽管现有的分片项目普遍定位于状态分片,但由于分片技术难度较高,现有项目开发周期普遍较长,多数都还处于研发或测试阶段。这种情况下,是否具有清晰的发展路径和按时完成目标任务显得格外重要。

针对分片存在的待解决问题,很多项目提出了理论上可行的解决方案,但在具体落地过程中存在较多不确定性,市场关注度较高的分片项目均出现了不同程度的延期,表明项目方普遍低估了分片的实现难度。

分片作为一种理论上可行的提升区块链可扩展性的解决方案受到了越来越多的关注,市场上不乏利用分片概念进行炒作的项目,对投资者的辨别能力提出了更高的要求。

注:通证流通市值、上线交易所数量、Twitter 关注人数及最近更新时间、Github 主要代码仓库代码提交次数数据截至 2019 年 2 月 27 日。

5 分片项目分析要点

针对分片项目的技术难度高和落地周期长等特点,在分析评价分片相关项目时可重点关注以下几个方面。

技术逻辑和实现可能。

目前市场上不乏炒作概念的区块链项目,分片技术难度较高,是否具有完整的技术逻辑、对关键性问题提出可行的解决方案以及平衡效率、安全和非中心化至关重要。

项目团队研发实力。

同样由于分片技术难度较高,因此只有具备相当强研发实力的项目团队才有可能在分片领域做出重要贡献,同时还需关注项目团队的稳定性以及人员背景的真实性等。

发展计划和项目进度。

包括项目是否具有具体可行的发展计划,项目方是否按照预定路线推进项目发展、实现预定目标,以及落地速度相比于同类项目是否具有优势等。

附注:

因一些原因,本文中的一些名词标注并不是十分精准,主要如:通证、数字通证、token、Crowdsale 等,读者如有疑问,可来电来函共同探讨。

—-

编译者/作者:分布式资本

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...