本发明涉及区块链,特别设计一种基于最小顶点重叠权数区块链交易分片方法以及装置。
背景技术:
1、区块链在物联网(iot)、金融、共享经济和身份管理等多个领域展示了巨大的实用前景。不幸的是,主要的公共区块链有一个严重的限制:网络中的每个完整节点需要处理所有交易并存储区块链的整个账本,尽管这一要求确保了非常强大的安全保障,但使其效率低下且不可扩展。一方面,各大区块链的交易吞吐量非常低。同时,它不能随着加入网络的参与者数量而扩展交易处理能力。另一方面,每个完整的节点需要保留整个总账本,以独立验证所有交易。区块链越大,有能力存储和验证整个区块链的节点就越少,从而导致网络集中化。
2、缓解公共区块链的性能和可扩展性问题的一个有效的方法就是使用分片。分片最早应用于分布式数据库,它将一个数据库分成若干块,放在不同的服务器上。在区块链系统中的分片包含三种类型:网络分片、交易分片和状态分片。网络分片是另外两种分片的基础,是将区块链中所有网络节点划分到不同分片。交易分片是在网络分片的基础上,将多个不相交的交易划分到不同分片;各分片运行片内共识协议(例如pbft协议)对分片中交易进行共识。网络节点均存储相同的状态信息。状态分片是分片类型中最具有挑战的一种,因为它将区块链的状态分隔存储到不同分片。
3、状态分片根据交易存储模型主要分为两种类型:基于未花费交易集(utxo)的状态分片、基于账户/余额的状态分片。本文主要研究基于帐户/余额的状态分片。区块链状态分片的主要挑战包括:跨分片交易的原子性和分片间负载均衡。跨分片交易指的是分片区块链中的一个交易可能依赖于多个分片。跨分片交易的原子性是指验证跨分片交易中账户的输入和输出。相较于分片内交易,跨分片交易必须等待输入分片的确认(发送方账户是否有足够的余额),才能在输出分片中进行验证,因此跨分片交易使得分片内的通信开销翻倍,也引入了分片间的通信开销;同时由于输入分片和输出分片均需要进行验证,增加了整个交易验证的时间。分片间的负载均衡是指不同分片中账户/交易的数量均衡,实现分片间的负载均衡能有效提高并行度,减少交易的排队时间。将包含较多账户/交易的分片称为热分片。热分片中存储了交易活跃的账户,因此热分片需要花费大量的时间用于交易的验证,容易导致网络拥塞问题。另一方面,正因为热分片中的账户交易活跃,热分片容易成为被攻击的对象而导致安全问题。
4、解决跨分片交易原子性验证的一个有途径是将跨分片交易转化为分片内交易。pyramid允许一个节点出现在多个分片中;这些重叠节点专门处理跨分片交易,它们将跨分片交易打包到跨分片块中成立一条单独的链,这样跨分片交易就变成了分片内交易。同时,重叠节点存储跨分片交易中账户双方所在分片的区块链,以方便验证跨分片交易的输入和输出。上述部分分片的方式导致重叠节点工作负荷较大(处理多个分片的交易共识、存储多个分片的交易)。不同于pyramid允许部分网络节点承担多个分片的任务,brokerchain将账户的状态进行分割并且存储在多个分片,网络节点只需要处理自己所在分片的交易。账户被分割为子账户,所有子账户的余额之和等于原有账户的余额(即总状态不变),子账户存储在不同的分片,处理该分内其他账户和该账户之间的交易,这样与该账户相关的跨分片交易转化为分片内交易。同时,跨分片的交易使用分割账户作为中继账户,将原有交易转化成和分割账户相关的交易,从而避免了跨分片通信。在进行账户分片时,brokerchain将账户图划分为包含节点个数相等的互不相交的子图,目标是最小化连接不同子图节点的边的个数,由此来减少跨分片交易的个数。
5、然而brokerchain通过招募来产生能够进行子账户分割的账户(由用户决定),不能实现被分割账户的优化选择,势必会影响分片性能。例如产生大量交易的热门账户并没有允许被分割为子账户。尽管可以通过使用其他分割账户作为中继节点实现片内交易,但是增加了验证时间和通信开销。例如热门账户a发送50个代币给账户b,假设账户a和账户b在不同的分片。令c为分割账户,其子账户c1和账户a位于相同分片p1,子账户c2和账户b位于相同分片p2。该交易tx被转换为两个交易tx1和tx2,其中tx1为账户a发送50代币给子账户c1,tx2为子账户c2发送50代币给账户b。首先分片p1对交易tx1进行处理,然后分片p2对交易tx2进行处理。因此,在brokerchain中,一个跨分片交易需要两次片内共识和一次跨分片通信。随着跨分片交易增多,跨分片交易需要的确认时间、通信和计算开销变得很大。如果该热门账户a是可分割的账户,那么只存在一次片内交易,通信开销和验证时间均减半。此外,brokerchain将账户分割成子账户,必须要保持总余额的不变;同时面临子账户余额的动态调整的问题,即可能存在某个子账户余额不足导致子账户与接收账户交易无法确认的问题。分割的子账户越多,使得账户的维护更加复杂。综上所述,需要设计有效的账户分片机制,降低转化后的片内交易的数目的同时减少分割账户的数目。
技术实现思路
1、本发明实施例的目的在于提供一种基于最小顶点重叠权数的区块链交易分片方法以及装置,以实现对区块链进行分片并降低各分片间跨分片交易数量这一目标。
2、为解决上述技术问题,本发明所采用的技术方案是:
3、将历史交易数据映射为状态图,每条边归属一个分片,意味着该分片被分配了该交易的输入和输出账户,这样账户被自动划分到多个分片,即该账户被分割成子账户。上述划分方式的优势是:历史交易都是片内交易。另外,考虑到负载均衡,需要每个分片中的边(交易)数目不超过给定阈值。
4、本发明的第一方面,提供了一种基于最小顶点重叠权数的区块链交易分片方法以及装置,包括如下步骤:
5、把区块链中的账户和交易构建成账户交易图;
6、对账户交易图中的边集进行分片。在每个分片边集的数量不超过分片负载的情况下,账户在所有分片中的重叠权数达到最小;
7、构建最小顶点重叠权数优化目标函数和约束条件,优化目标函数为:
8、
9、其中,表示所有顶点的重叠权数之和的最小值;o(v)表示除主分片(顶点v权数最高所在的分片)外,其它分片中顶点v的权数之和;其中,o(v)的计算公式为:
10、
11、wv为顶点v的顶点权数,表示为账户v参与交易的总次数;为顶点v在主分片中的顶点权数;
12、约束条件为:
13、
14、其中,e(si)表示第i(1≤i≤k)个分片si中的边集;μ表示分片大小的负载因子;k表示分片的个数;e表示账户交易图中的所有边集;表示每个分片中边的数量小于分片的负载大小。
15、本发明的第二方面,设计了一种静态下的最小顶点重叠权数分片装置,其特征在于,包括:
16、1)优先对账户交易图中高权值边进行分片,避免因高权值边被划分到不同分片而造成大量的重叠度数,有效降低权值较大的边对重叠权数的影响;
17、2)优先对账户交易图中高权数顶点(活跃账户)的邻边进行分片,能有效避免因活跃账户被分割到不同的分片而产生大量的重叠权数。
18、本发明的第三方面,在第二方面的基础上,添加了针对新交易(动态)的分片装置,包括:
19、1)通过新交易与现有分片中交易的局部信息(例如相邻),计算出新交易的最优分片;
20、2)通过新交易与现有分片中交易的全局信息,计算出新交易账户的最优分片;
21、本发明的第四方面,提供了一种用于存储分片信息的计算机可读存储设备,其特征在于:所述计算机可读存储设备可以完成计算机下达的分片存储执行指令,这些指令用于使计算机执行上述发明二、三方面中任一所述分片装置。
22、本发明的有益效果是:
23、可以根据分片数量、交易数量和负载因子μ计算出每个分片的负载大小。在得到分片负载大小的情况下,通过基于最小化顶点重叠权数分片装置对账户交易图进行分片,以降低各分片间的跨分片交易数量,从而提高区块链系统的可扩展性和适用性。