自学内容网 自学内容网

【无标题】

面向账户/余额模型分片区块链的跨片交易处理 BrokerChain: A Cross-Shard Blockchain Protocol for Account/Balance-based Blockchain

摘要:区块链分片仍面临两个主要问题,在分片数目多的情况下,跨分片交易比例高,并带来大量跨分片通信开销,并给系统增加了一些额外的交易负载。与此同时,分片间会出现负载不均衡,热分片中的交易确认延迟增加,而冷分片区块的交易填充率不高,造成了资源浪费。该项工作主要解决这两个问题,文章发表在INFOCOM22。

论文链接:https://ieeexplore.ieee.org/document/9796859
目录

  1. 研究背景
  2. 研究动机与总体设计
  3. 具体方案设计
  4. 实验验证
  5. 总结

研究背景

区块链节点之间由于通常采用拜占庭信任假设,节点间运行容拜占庭错误的共识协议(如PoW,PBFT)保持一致性,相较传统共识协议占用更多的网络资源。同时,节点之间重复执行交易,存储所有历史版本数据,导致传统区块链系统的存储和执行无可扩展性,交易的吞吐远低于当前广泛应用的金融系统吞吐(如VISA)。因此,在保证区块链系统安全性基础上,如何赋予区块链系统可扩展性,提高系统交易处理吞吐、降低延时是一个重要的研究方向。
当前致力于提高区块链可扩展的方案从架构层面分析可以分为两类,一类是链下解决方案(Layer 1方案),另一类是链上解决方案(Layer 2)。其中,链下解决方案的主要思路是将链上交易任务迁移至计算存储资源充足的链下处理,链上只负责交易的最终确认。链上方案可分为垂直扩展和水平扩展两类,垂直扩展技术通过提高每个节点的性能来提高系统整体性能;水平扩展技术(即分片)将链划分为多个可以并行处理不同交易的组,通过提高系统内的交易处理并行度来提升性能。分片是最直接、最有可能被广泛运用的区块链可扩展提升方案,2016年至今,学术界有许多围绕区块链分片展开的工作,从公链到联盟链,从交易分片到交易和状态全分片,动态分片等。本篇论文的工作属于动态分片范畴。

研究动机与总体设计

当前区块链分片技术仍然面临许多挑战,以账户余额模型区块链系统为例,分片技术存在以下两个问题:

跨片交易比例过高。以实际以太坊历史交易数据为例,若采用随机分片策略(如根据账户地址的前k位决定账户被映射到的分片),当系统中的分片数目达到64个时,跨分片交易比例接近100%。过高的跨分片交易比例不仅给系统带来了额外的交易负载,同时将增加系统的交易平均处理延时。

图1 跨分片交易比例过高
分片间负载不均衡。需要处理过量交易的分片称为热分片(Hot Shard),只需处理少量交易的分片称为冷分片(Cold Shard)。热分片由于持续被注入过量的交易,片内交易的确认延迟较大,同时可能成为整笔跨片交易处理过程中的性能瓶颈。冷分片由于接收的交易数目少,区块内的交易填充率低,导致分片内节点计算、网络等资源浪费。
图2 分片间负载不均衡
本篇论文的工作BrokerChain致力于解决以上分析的两个问题,片间负载均衡的同时跨片交易数目尽可能少,以达到系统交易处理高吞吐、低延迟的目标。
解决方案总体来说,BrokerChain根据一段时间内累积的交易内容对片间状态的分布重新调整,该过程兼顾状态调整后每个分片处理的交易量和跨分片交易比例,同时通过“账户分割”机制来进一步缓解热分片负载和减少跨片交易。针对依然存在的少量跨分片交易,文章通过引入做市商账户(Broker)来协调跨分片交易的处理,减少跨片交易处理网络开销,并引入状态时间锁来对超时的跨片交易进行回滚,避免一笔交易被阻塞过长时间。

具体方案设计

分片状态分布调整分为以下四个阶段:① 用户交易共识阶段;② 交易图划分阶段;③ 划分结果共识阶段;④ 状态调整阶段。系统内的分片分为两类,一类是M-shard,负责接收用户向系统发送的交易,并对交易进行共识、出块;另一类是P-shard,其分析M-shard共识产生的交易,根据交易内容构造账户间的交易图,并对交易图进行划分。
阶段一:用户交易共识阶段。多个M-shard接收来自不同用户的交易请求,M-shard内对交易进行共识、出块,随后将区块均发送至同一个P-shard。
阶段二:交易图划分阶段。P-shard收齐当前epoch内所有M-shard的区块后,对所有收到的区块中的交易参与方进行分析,构建以账户为节点,账户间的交易用边来表示的交易图。
图3 交易处理阶段1-2
阶段三:划分结果共识阶段。P-shard对构造好的账户间交易图采用Metis图划分算法进行划分,将原图划分成节点数目均衡的多个子图,并保证在原图上切分的边数目尽可能少。P-shard内所有节点均执行划分操作,并对划分结果达成共识,产生新区块。
阶段四:状态调整阶段。P-shard将包含状态(账户)划分结果的区块广播给所有M-shard,M-shard在收到P-shard划分账户结果后,根据内容重新调整片间账户的分布。
图3 交易处理阶段2-4
M-shard在根据P-shard的划分结果对账户分布重新调整后,仍然会存在跨片交易(交易关系图中被切断的边未来会是跨分片的交易),BrokerChain通过引入账户分割机制(Account Segmentation)将一个账户划分至多个存在不同分片上且Key相同的账户,由于账户存在多个分片上,不仅能够消除一定数量的跨分片交易,同时也能够进一步缓解分片负载不均衡。对于系统内仍然存在的跨片交易,引入“做市商账户(Broker)”来协调处理跨片交易,降低跨片交易处理延时。Broker账户就是先前被分割的账户,假设其拥有足够多数量的代币,具体流程会在后面进行介绍。
如图5中账户C被分割成C1和C2后分别存储在分片1和分片2中,且它们拥有相同的账户地址,原来A账户与C账户之间的跨片交易可以转换为A账户与C1账户之间的片内交易。原来A账户与B账户之间的跨分片交易可以通过C1与C2进行协调,减少跨片交易处理网络延迟。
图4 基于做市商账户的机制加速跨片交易处理
图5 账户分割例子
对于跨分片交易的处理,BrokerChain进一步引入“状态时间锁”来保证跨片交易的原子性,同时在交易确认延时到达一定阈值时能够回滚交易。假设有一笔跨片交易,分片1的账户A要向分片2的账户B转v个代币,账户A首先生成原始交易并发送给做市商账户C,账户C收到交易后对交易重新打包并向区块链系统广播,分片1和分片2都会收到这笔交易,分片1将交易上链同时将A转给C的v个代币暂时锁定,经过一段时间后才会真正转向账户C。当做市商账户确认第一笔跨片子交易上链后(A->C),向分片2发送后序跨片子交易(C->B),最后分片2对收到的跨片子交易上链,最终完成跨片交易处理流程。如果做市商账户作恶(例如不将第二个跨片子交易发送给分片2),分片2会将前序分片1上链的交易也上链,并向分片1的节点广播交易的SPV证明,分片1收到后中止交易流程,v个代币被退回给账户A。

图6 跨片交易处理流程

实验验证

实验设置:本文使用Python进行分片区块链仿真实验,使用以太坊2015年8月至2016年2月的1,600,000条真实历史交易。在实验中,交易以一定的速率注入系统,所有分片的出块时间间隔设置为8秒,每个区块中的交易数量上限为2000。
实验一分别测试了不同交易到达率、不同分片数目设置下系统的交易吞吐和延时情况,BrokerChain相较于Baseline方案性能更有优势。
图7 不同交易达到率和分片数目系统吞吐与延时情况
实验二测试不同交易达到率下,不同系统的交易池内交易数目,当交易到达率较高时,BrokerChain交易池内的交易数目要少于Baseline方案下的情况。

图8 不同交易达到率下交易池内的交易数目
实验三分别测试了不同分片数目下,系统整体和各分片的负载情况,以及不同分片方案下的跨片交易比例。实验结果发现,BrokerChain的系统整体负载最低,分片间的负载方差最小,跨片交易比例最低,其中账户分割机制可以在基于Metis的交易关系图切分方案基础上将跨片交易比例进一步降低10%。
图9 系统整体负载、分片负载方差和跨片交易比例

总结

本文提出了一种处理账户余额模型的分片系统中跨分片交易的处理协议,基于账户间的交易图切分以及账户分割机制来平衡分片间的负载,同时引入做市商账户协调跨片交易的处理过程,过程中利用“状态时间锁”保证跨片交易的原子性。最后,通过仿真实验验证设计的有效性。


原文地址:https://blog.csdn.net/BOBOyspa/article/details/142972626

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!