基于账户迁移的区块链分片方法及区块链系统

未命名 07-12 阅读:128 评论:0


1.本发明属于区块链分片技术应用领域,尤其涉及一种基于账户迁移的区块链分片方法及区块链系统。


背景技术:

2.区块链本质上是一种按照时间顺序将数据区块以顺序相连的方式组合成的链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链网络通常由一组点对点网络中的节点来维护,其主要具有去中心化,信息不可篡改,信息可追溯,以及公开透明性等特点。然而,传统区块链系统存在吞吐量低且无法扩展的问题。
3.区块链分片旨在解决传统区块链系统中的可扩展性问题,其核心思想是将区块链系统中的节点分为数个小组(又称分片),每个分片存储整个区块链状态的不同子集,执行不同的交易,并行地达成共识,各自生成分片链。通过这种并行化处理,分片提高了传统区块链在存储、计算、网络和每秒交易量(tps)方面的可扩展性。
4.在基于账户模型的区块链分片网络中,每个分片维护若干个账户的交易,同一个账户发送的交易被依账户的分片地址映射到对应的分片中进行处理。然而,现有的分片协议虽然能提高区块链的吞吐量,与潜在的吞吐量优化之间仍然存在显着差距。理想状态下,系统吞吐量的增长应与分片数量成比例,但是实际上现有的分片协议会导致超过30%的吞吐量损失,从而降低了吞吐量的可扩展性。更重要的是,这些分片协议忽视了另一重要的系统性能问题,即如何改善用户感知的交易确认延迟(tcd),tcd指的是用户发送交易到将交易提交到链上经过的时间延迟,而现有的分片协议仍存在高延迟的问题,用户感知的tcd达到数百秒以上,用户体验不佳。
5.跨分片交易和交易负载不平衡被认为是影响系统性能的两个重要因素,跨分片交易会带来额外的通信开销,交易负载不平衡是指不同分片处理的交易数量不平衡,导致部分分片处理的交易数量超过了处理能力。但是目前对区块链分片协议的许多研究并没有分析这两个因素对系统性能的影响程度,以及哪个因素主导了对系统性能的影响,而且这些研究并未在真实的区块链系统上得到验证,少量针对交易负载不平衡的研究也只是基于账户模型提出账户分配算法,并未涉及如何迁移账户。
6.现有的分片协议仍然存在严重的负载不均衡问题,导致系统性能提升受限,且在真实系统中仅仅账户分配算法是不够的,更重要的是设计出安全高效的账户迁移协议,使得账户和交易能够真实地在分片之间迁移以实现系统的负载平衡。


技术实现要素:

7.基于此,本发明提出一种基于账户迁移的区块链分片方法及区块链系统,提出一种安全高效的账户分配算法和账户迁移方案,分配尽可能少的账户来改善系统的交易负载平衡。
8.第一方面,本发明提供一种基于账户迁移的区块链分片方法,该方法在分配服务
器处进行,用于执行交易预测和账户分配,包括:
9.交易预测过程:
10.步骤s100.获取各账户的历史交易量,按预设条件选出第一账户;
11.步骤s200.基于历史交易量预测第一账户未来的交易量,记为第一账户的交易预测量;
12.账户分配过程:
13.步骤s300.初始化各分片的交易负载量和区块链分片网络的负载均衡度;
14.步骤s400.负载最重分片的交易负载量大于设定值时,进入步骤s500,否则进入步骤s600;
15.步骤s500.选择负载最重分片中的第一账户重分配至负载最轻分片并更新负载均衡度,直至负载均衡度不再增加;
16.步骤s600.把账户分配结果广播至各分片。
17.进一步地,步骤s500包括:
18.步骤s510.根据总交易量对负载最重分片中的第一账户降序排列;
19.步骤s520.按步骤s510确定的排列顺序不放回地取一个第一账户重分配至负载最轻分片;
20.步骤s530.更新负载均衡度,负载均衡度不增加时更新各分片的交易负载量和账户信息,返回步骤s400,否则返回步骤s520。
21.进一步地,步骤s530包括:
22.步骤s531.更新负载均衡度;
23.步骤s532.负载均衡度不增加时更新各分片的交易负载量和账户信息,进入步骤s533,否则进入步骤s534;
24.步骤s533.根据步骤s532更新的交易负载量重新确定负载最重分片和负载最轻分片,返回步骤s400;
25.步骤s534.步骤s520未取出所有第一账户时,直接返回步骤s520,否则排除当次确定的负载最重分片,重新确定负载最重分片和负载最轻分片,返回步骤s400。
26.进一步地,预设条件为历史交易量最多的k个账户。
27.进一步地,步骤s100还包括:
28.把分片内非第一账户的账户整合成一个第二账户。
29.进一步地,步骤s200还包括:
30.基于历史交易量预测第二账户未来的交易量,记为第二账户的交易预测量。
31.进一步地,步骤s200采用lstm网络进行第一账户和/或第二账户的交易预测。
32.进一步地,负载均衡度的计算包括:
33.根据第一账户的历史交易量和交易预测量、第二账户的交易预测量计算每个分片的交易负载量,交易负载量的方差值记为负载均衡度。
34.第二方面,本发明提供一种基于账户迁移的区块链分片方法,该方法在区块链分片网络的源分片中进行,包括:
35.接收分配服务器广播的账户分配结果:
36.根据账户分配结果确定迁移账户;
37.发起账户迁移交易并完成分片内共识;
38.根据账户分配结果把完成共识的账户迁移交易发送至对应的目标分片,并删除迁移账户及其在源分片中的账户状态。
39.进一步地,发起账户迁移交易并完成分片内共识包括:
40.由分片内的至少一个节点生成账户迁移交易;
41.区块生成节点把自己生成的账户迁移交易打包进区块,并把区块在分片内广播;
42.分片内的各节点对区块完成共识。
43.进一步地,分片内的各节点对区块完成共识包括:
44.各节点至少验证以下信息:
45.交易的发送账户与接收账户相同、区块生成节点的签名信息、账户迁移交易的转移值等于迁移账户的余额、迁移账户的源分片和目标分片与账户分配结果一致。
46.进一步地,为了保证账户迁移交易的安全性,各节点验证的信息还包括:
47.迁移交易的序列号连续。
48.进一步地,第二方面的方法还包括:
49.把迁移账户的排队交易发送至目标分片。
50.第三方面,本发明提供一种基于账户迁移的区块链分片方法,该方法在区块链分片网络的目标分片中进行,包括:
51.接收源分片发送的账户迁移交易;
52.根据账户迁移交易建立迁移账户在分片的账户状态。
53.进一步地,第三方面的方法还包括:
54.接收并执行迁移账户的排队交易。
55.进一步地,第三方面的方法还包括:
56.调整账户迁移交易的执行优先级至最高,使得分片在接收到账户迁移交易后立即执行。
57.第四方面,本发明提供一种区块链系统,包括分配服务器,分配服务器包括如下模块:
58.交易监控及预测模块,用于实现第一方面的方法中的交易预测过程;
59.账户分配模块,用于实现第一方面的方法中的账户分配过程。
60.第五方面,本发明提供一种区块链系统,包括分配服务器和至少两个分片,其中两个分片分为源分片和目标分片;
61.分配服务器用于实现第一方面的基于账户迁移的区块链分片方法,源分片用于实现第二方面的基于账户迁移的区块链分片方法,目标分片用于实现第三方面的基于账户迁移的区块链分片方法。
62.第六方面,本发明提供一种电子设备,包括存储器和处理器;
63.所述存储器,用于存储程序;
64.所述处理器,用于执行所述程序,实现前述基于账户迁移的区块链分片方法的各个步骤。
65.第七方面,本发明提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述基于账户迁移的区块链分片方法的各个步骤。
66.与现有的分片协议相比,本发明具有如下有益效果:
67.本发明所提供的基于账户迁移的区块链分片方法及区块链系统,对账户的未来交易量进行预测,根据交易预测量分配少数的账户来改善系统的负载平衡,并提出了一个安全高效的账户迁移机制,使得系统保证安全性的前提下快速实现账户在分片之间的迁移,而不损失过多的系统性能。通过对本发明的实施,能够克服传统区块链分片交易负载不平衡的问题,有效提升区块链系统的吞吐量,并降低交易确认延迟。
附图说明
68.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
69.图1为本发明实施例提供的区块链系统框架;
70.图2为本发明实施例提供的一种基于账户迁移的区块链分片方法的实施流程;
71.图3为本发明实施例提供的一种基于账户迁移的区块链分片方法的另一实施流程;
72.图4为本发明实施例提供的一种基于账户迁移的区块链分片方法的另一实施流程;
73.图5为本发明实施例提供的一种区块链系统结构示意;
74.图6为本发明实施例提供的针对热账户进行账户分配的实施流程;
75.图7和图8为本发明实施例示例的具体场景示例图;
76.图9为本发明实施例提供的一种电子设备硬件结构框图。
具体实施方式
77.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
78.区块链分片网络将区块链系统中的节点分为数个小组,即分片,每个分片维护其独立的状态和交易历史,并并行执行不同的交易。关于如何把交易分配到不同的分片,目前主要有utxo模型和账户模型两种。其中utxo模型是根据交易id分配至分片中,而账户模型则是根据发送账户,不同的分片维护不同的账户,因此同一账户发送的交易会被分配至同一分片中。由于账户模型的可扩展性更佳,本发明以下的实施例均基于账户模型。
79.申请人通过大量数据研究发现,交易负载不平衡是分片网络性能下降的主要原因,由于不同分片维护不同的账户,而少量账户往往产生了整个系统大部分的交易,因此产生大量交易的账户所处的分片容易超载,导致系统的分片交易负载不均。
80.为了解决以上问题,本发明提出了一种新的区块链分片方法及区块链系统,将在以下实施例中一一说明。
81.如图1所示,其示出了本发明的区块链系统的基本框架,包括分配服务器100和分
片网络200,为了平衡不同分片上的负载,分配服务器100定期进行帐户分配,预测账户的交易数量,并基于预测结果来决定账户应该分配到哪个分片;为了真正改善区块链分片网络的负载平衡,分片网络100中的源分片根据账户分配结果执行账户迁移,将迁移账户从源分片迁移到新分配的目标分片,并相应地这些账户的交易也被发送至目标分片执行。
82.容易理解的是,源分片可以同时是目标分片,目标分片可以同时是源分片,当前epoch的源分片在其他epoch可以是目标分片,当前epoch的目标分片在其他epoch也可以是目标分片。
83.基于图1示出的系统框架,图2示出了本发明实施例提供的基于账户迁移的区块链分片方法的一种实施流程,在分配服务器处进行,主要执行交易预测和账户分配,该流程可以包括:
84.步骤s10.获取各账户的历史交易量,按预设条件选出第一账户。
85.具体地,分配服务器连接每个分片的数个节点,以同步分片网络中产生的历史交易数据,例如每个账户产生的交易数量和数字货币价格,并把历史交易数据根据账户进行整合,根据整合结果选出第一账户。
86.在真实的区块链系统中,对所有账户都进行交易预测是不可行的,因为真实的系统中有着上百万的账户,更重要的是,绝大部分的账户只产生少量的,而小部分的账户产生大部分的交易,根据测算申请人发现,小于0.02%的账户发送了超过一半的交易,只对一部分的账户进行交易预测和账户分配,这样可以有效降低运算的复杂度。
87.其中,预设条件可以按账户的交易量或者交易时间选出,具体地,本发明实施例以账户的历史交易量为指标,选出第一账户,预设条件设置为历史交易量最多的k个账户。
88.步骤s11.基于历史交易量预测第一账户未来的交易量,记为第一账户的交易预测量。
89.具体地,可以使用机器学习进行交易预测,在进一步的实施例中,可以采用2层的lstm模型来预测账户在未来epoch的交易量。
90.步骤s12.初始化各分片的交易负载量和区块链分片网络的负载均衡度。
91.具体地,可以根据第一账户和第二账户的交易量计算各分片的交易负载量,根据各分片的交易负载量计算负载均衡度,负载均衡度反映了各分片之间交易负载量的差异程度,差异越大负载越不均衡。
92.该步骤针对分片计算的交易负载体现的是在即将到来的epoch分片所要处理的交易量,因此在本发明的实施例中第一账户的交易量可以根据交易预测量进行计算,进一步地考虑到第一账户是迁移对象,为了保证账户迁移后交易验证能顺利完成,对于迁移账户还在排队未验证的交易也列为分片交易负载的一部分。
93.步骤s13.负载最重分片的交易负载量大于设定值时,进入步骤s14,否则进入步骤s15。
94.具体地,为了尽可能少地迁移账户,本发明实施例在账户分配时优先考虑迁移负载最重分片中的账户,并设置了迁移条件为当分片交易负载量超出设定值。
95.步骤s14.选择负载最重分片中的第一账户重分配至负载最轻分片并更新负载均衡度,直至负载均衡度不再增加。
96.具体地,每次计算只分配一个账户,并在每次分配后都更新一次负载均衡度,以决
定是否保留当次分配结果,进一步优先分配历史交易量较多的第一账户。
97.步骤s15.把账户分配结果广播至各分片。
98.进一步,对于非第一账户的其他账户,整合为每个分片的一个聚合账户,记为第二账户,分配服务器对第二账户同样进行交易预测,但是在账户分配中不予考虑。
99.进一步,计算分片的交易负载量时,第二账户的交易量可以包括第二账户排队中的交易量,还可以包括第二账户的交易预测量。
100.进一步,步骤s14包括以下过程:
101.步骤s141.根据总交易量对负载最重分片中的第一账户降序排列。
102.步骤s142.按步骤s141确定的排列顺序不放回地取一个第一账户重分配至负载最轻分片。
103.具体地,不放回地取出第一账户的目的在于,当次取出的第一账户不能使负载均衡度降低时,该账户不进行重分配,并且按序取下一个第一账户,由于步骤s141已对第一账户按总交易量降序排列,如何可以保证每次分配的都是分片中总交易量最多的账户,实现负载均衡的最大化。
104.步骤s143.更新负载均衡度,负载均衡度不增加时更新各分片的交易负载量和账户信息,返回步骤s13,否则返回步骤s142。
105.具体地,当步骤s142的分配结果满足降低负载均衡度的要求时,该分配结果将被保留,并触发各分片维护的账户信息的改变,被重分配的账户往后发起的交易将被路由至新的分片中,因此需要根据分配结果更新各分片的交易负载量和账户信息,形成账户分配结果。
106.进一步,步骤s143可以包括以下过程:
107.步骤s1431.更新负载均衡度;
108.步骤s1432.负载均衡度不增加时更新各分片的交易负载量和账户信息,进入步骤s1433,否则进入步骤s1434;
109.步骤s1433.根据步骤s1432更新的交易负载量重新确定负载最重分片和负载最轻分片,返回步骤s13;
110.步骤s1434.步骤s142未取出所有第一账户时,直接返回步骤s142,否则排除当次确定的负载最重分片,重新确定负载最重分片和负载最轻分片,返回步骤s13。
111.参见图3,图3示出了本发明实施例提供的基于账户迁移的区块链分片方法的一种实施流程,在分片网络的源分片进行,该流程可以包括:
112.步骤s20.接收分配服务器广播的账户分配结果。
113.具体地,分配服务器连接着分片中的数个节点,每个epoch的开始分片中的各节点接收分配服务器对当前epoch的账户分配结果,并缓存到节点自己的本地区块,用于后续的共识过程。
114.步骤s21.根据账户分配结果确定迁移账户。
115.具体地,节点根据账户分配结果比较自己所在分片维护的哪些账户在当前epoch被分配至其他分片,确定这些账户为迁移账户。
116.步骤s22.发起账户迁移交易并完成分片内共识。
117.具体地,为了解决账户迁移的安全问题,例如恶意节点发起错误的迁移交易、多次
发送同一交易(重放攻击)、拒绝发送交易(沉默攻击)等,本发明实施例设计了需要在账户实际迁移之前在分片内完成对账户迁移交易的共识。
118.具体地,分片内的共识可以采用常用的共识机制,但是区别于常规的验证信息,账户迁移交易还包括其他需要验证的字段,来保证账户迁移的准确性,这些字段包括交易的发送账户与接收账户相同、区块生成节点的签名信息、账户迁移交易的转移值等于迁移账户的余额、迁移账户的源分片和目标分片与账户分配结果一致。
119.步骤s23.根据账户分配结果把完成共识的账户迁移交易发送至对应的目标分片。
120.进一步,步骤s22可以有如下过程:
121.由分片内的至少一个节点生成账户迁移交易,区块生成节点把自己生成的账户迁移交易打包进区块,并把区块在分片内广播,分片内的各节点对广播的区块完成共识。
122.进一步,考虑到恶意节点可以保存账户迁移交易并稍后重新发送以发起重放攻击,为了防止这种情况,在账户迁移交易中还添加了一个额外的字段,以维护其在账户迁移交易中的序列号(在本发明实施例中称为迁移随机数),迁移随机数应在每个帐户的状态中维护,分片内达成共识时,各节点要验证某个账户的迁移交易是否有连续的迁移随机数,只有迁移随机数是连续的,账户迁移交易才能通过验证。
123.进一步,考虑到另一种恶意行为,即源分片的恶意节点不发送经过验证的账户迁移交易到目标分片,该种行为发生时,本发明实施例还设计了询问机制,客户端超时没有收到交易确认信息,或,目标分片已接收到账户分配结果并确定有账户发生迁移但超时没有收到账户迁移交易,可以向源分片发送通知,源分片的节点收到该通知后重新发送账户迁移交易。
124.进一步,账户被迁移后其在源分片的账户状态将被清除,这会导致其在源分片中排队未打包完成的交易验证失败,进而导致交易序列号不连续,使得该账户后续交易的验证都无法通过,导致系统的吞吐量损失,为了解决这个问题,在完成账户迁移交易后把迁移账户在源分片的排队交易也发送至目标分片。
125.进一步,客户端想查询自己的账户信息或交易状态时,可以向区块链系统发送请求,节点根据账户分配结果把请求路由到对应的分片,由分片向客户端返回查询结果。
126.进一步,为了鼓励分片节点打包账户迁移交易,把账户迁移交易打包进区块的节点可以获得系统奖励。
127.参阅图4,图4示出了本发明实施例提供的基于账户迁移的区块链分片方法的一种实施流程,在分片网络的目标分片进行,该流程可以包括:
128.步骤s31.接收源分片发送的账户迁移交易。
129.具体地,本发明实施例为了提高账户迁移交易的处理效率,进而提高迁移账户的状态更新及其交易的验证,账户迁移交易等待时间过长,必然会延长迁移过程,降低吞吐量,增加延迟,因此接收到账户迁移交易后把其优先级调整至最高,使其在收到后立即执行。
130.步骤s32.根据账户迁移交易建立迁移账户在分片的账户状态。
131.进一步,除了建立迁移账户在目标分片的状态,目标分片还会接收迁移账户在源分片的排队交易并执行。
132.基于图1示出的系统框架和图5示出的区块链系统结构交互示意,下面的实施例进
一步对本发明的基于账户迁移的区块链分片方法进行说明。
133.在图5示出的结构中,设置有分配服务器300和分片a、b、c,分配服务器300连接着分片a、b、c中的各个节点,进行交易数据同步,并把账户分配结果返回节点。为了方便示意,设计每个分片有4个节点,分片a的节点包括a1~a4,分片b的节点包括b1~b4,分片c的节点包括c1~c4。
134.分配服务器300包括交易监控及预测模块310和账户分配模块320,在进行账户分配之前,分配服务器300周期性地同步历史交易数据,具体地可以在每个epoch开始时进行同步,历史交易数据用于预测账户在未来epoch的交易量。
135.交易监控及预测模块310基于历史交易数据统计各账户的历史交易量,挑选出k个产生交易数量最多的账户,这k个账户产生了系统上超过半数的交易,在本实施例中称其为热账户,对于各分片维护的非热账户的账户,把它们整合生成一个聚合账户。
136.利用机器学习对热账户和聚合账户进行交易量预测,可以预测单个epoch的交易量,也可以一次性预测多个epoch的交易量。在本实施例中,使用2层lstm模型来预测,每一层由100个神经元组成,dropout为0.001。进一步的实施例中,由于机器学习运算密集且较耗时,对于需要一次性预测多个epoch交易量的情况,可以增加预测间隔,以提高预测结果的准确度。
137.下面通过推导来阐述账户分配过程的具体实现,在本实施例中为了降低系统运算的复杂度,仅针对热账户进行分配和迁移。
138.首先,系统的账户分配问题可以表达为如下目标函数:
[0139][0140]
该目标函数的目标是最小化在epoch t中分片之间交易负载量的方差,即提高系统的负载平衡。对于账户j∈a,a表示系统上账户的集合,表示账户j在epoch t中的交易预测量,表示账户j在epoch t-1中的排队交易量;对于分片i∈s,s表示系统分片的集合,表示账户是否位于分片,表示账户j位于分片i,反之则表示账户j不位于分片i;定义为账户j在epoch t的总交易量,为epoch t中分片交易负载量的均值,表示为下式(2):
[0141][0142]
根据上述目标函数可以把账户分配问题简化为k分区问题,这是一个np-hard问题,可以利用启发式算法进行账户分配。
[0143]
由于账户分配仅针对热账户进行,聚合账户保留在原有分片,且尽可能少地分配账户以实现负载均衡的最大化,则定义在epoch t中的负载均衡度表达式如下:
[0144][0145]
容易理解的是,本实施例定义的负载均衡度由分片的交易负载量的方差式(3)体现,与式(1)不同的是,式(3)中的a
hot
表示热账户的集合,表示分片i中聚合账户在epoch t中的交易预测量,epoch t中的分片交易负载量均值的计算使用下式(4):
[0146][0147]
参阅图6,基于上述的计算推导,针对热账户的账户分配过程说明如下:
[0148]
步骤s400.获取参数s、a
hot

[0149]
步骤s401.基于epoch t-1的账户分配情况和epoch t的交易预测情况,对epoch t的参数初始化如下:
[0150][0151][0152]
步骤s402.根据分片交易负载量对分片i∈s降序排列形成分片列表s
heavy
,确定负载最重分片i
heavy
和负载最轻分片i
light

[0153]
步骤s403.根据账户总交易量对负载最重的分片i
heavy
中的账户降序排列,形成账户列表a
heavy

[0154]
步骤s404.计算时进入步骤s405,否则进入步骤s409.
[0155]
步骤s405.在a
heavy
中按序不放回地取一个账户j,a
heavy
中的账户被取完时进入步骤s408。
[0156]
步骤s406.把步骤s405取出的账户j分配至i
light
,更新
[0157]
步骤s407.时,则更新分片交易负载量、s
heavy
、i
heavy
、i
light
、a
heavy
,并返回步骤s404,否则返回步骤s405。
[0158]
步骤s408.把i
heavy
移出s
heavy
,重新确定i
heavy
、i
light
、a
heavy
,返回步骤s404。
[0159]
步骤s409.输出各
[0160]
基于上述对图6的说明,容易理解的是,每一轮次的账户分配都是从负载最重分片中选择总交易量最大的热账户,将其重新分配至负载最轻分片,若当次分配结果能够提高负载均衡度(即减小v
t
),则保留分配结果,否则按序选择总交易量次位的账户;如果初始确定的负载最重分片中所有的热账户都不能提高负载均衡度,则上述算法会尝试对负载较轻
的分片中的热账户进行分配。由于v
t
是单调递减的,且只有v
t
递减时才会发生账户迁移,因此上述算法最终会收敛而停止对热账户的分配。
[0161]
分片a、b、c中的各个节点在每个的开端会接收到分配服务器300输出的上述账户分配结果如果一个账户被分配到与上一个epoch分配的分片不同的新分片,则该账户应该从以前的分片迁移(即,源分片)到新分片(即目标分片)。
[0162]
每个分片维护多个账户,分片内的节点维护账户的状态并处理账户产生的交易,账户状态包含账户的基本信息,如余额、交易序列号等,而账户的每笔交易都包含以下基本字段,包括发送账户、接收账户、交易序列号、转账金额、签名等。当一笔交易被打包进区块时,节点对该交易进行验证(共识)以查验发送方余额是否足够,交易序列号是否连续,签名是否正确等,其中交易序列号应是连续的以保证交易的安全性。
[0163]
在本实施例的设计中,为了高效安全在分片之间共享账户状态以实现账户迁移,提出账户迁移交易,且需要在分片内完成共识再把账户迁移交易发送至对应的目标分片。
[0164]
除了前面提及的基本验证信息,每个账户迁移交易还有如下几个需要共识的字段,包括交易的发送账户与接收账户相同、区块生成节点的签名信息、账户迁移交易的转移值等于迁移账户的余额、迁移账户的源分片和目标分片与账户分配结果一致、迁移随机数连续。
[0165]
进行账户迁移时,源分片(例如分片a或b或c)的每个节点在本地生成账户迁移交易并使用自己的签名对其进行签名,区块生成节点将自己产生的账户迁移交易与其他正常交易一起打包进区块,并在分片内发起区块共识。源分片完成共识后,把账户迁移交易发送至与账户分配结果对应的目标分片(例如a或b或c),源分片删除已迁移的账户,而目标分片构建迁移账户并更新账户状态。如果客户端想查询自己的账户或交易状态,可以向区块链网络发送请求,节点根据账户分配结果将请求路由到对应的分片,分片将查询结果返回给客户端。
[0166]
由于账户迁移需要时间,在账户迁移过程中,由于目标分片中的账户状态未更新(账户迁移交易等待打包),因此迁移账户产生的新交易将验证失败,而未能验证这些新交易会导致交易序列号不连贯,再次导致显着的吞吐量损失,因此迁移账户的新交易将在目标分片的交易队列中等待,且账户迁移交易的优先级调整至最高,使得目标分片在收到后立即执行。另外,迁移账户在源分片中的排队交易在完成账户迁移后将被发送至目标分片。
[0167]
图7通过具体场景对上述实施例的区块链分片方法进行介绍。
[0168]
参见图7,分片a维护有账户a1、a2、a3,分片b维护有账户b1、b2、b3,分片c维护有账户c1、c2、c3。在某次的账户分配结果中,账户a1从分片a迁移至分片c,账户b2从分片b迁移至分片c,账户c3从分片c迁移至分片a。
[0169]
上述账户分配结果已广播至各分片的各节点,因此各分片内部可发起账户迁移交易并完成共识。在分片a中,由节点a1发起交易共识并向分片c发送账户迁移交易;分片b由节点b2发起交易共识并向分片c发送账户迁移交易;分片c由节点c3发起交易共识并向分片a发送账户迁移交易。
[0170]
图8示例了本技术区块链分片方法的另一种场景。
[0171]
图8的示例大致与图7类似,不同的在于分片a负责发起区块共识的节点a1是一个
恶意节点,在共识后拒绝发送账户迁移交易,导致分片c无法收到交易。
[0172]
设定超时时限为10min,分片c在10min后由于未收到账户迁移交易,于是向分片a发送通知,分片a的各节点均能接收该通知,由节点a3把自己生成的账户迁移交易打包进区块,并在分片a内发起共识,完成共识后将交易发送至分片c。
[0173]
本技术实施例提供的区块链系统可应用于电子设备。图9示出了这一电子设备的硬件结构框图,参照图9,电子设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
[0174]
在本技术实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;
[0175]
处理器1可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
[0176]
存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
[0177]
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:实现前述分配服务器在区块链分片方案中的各个处理流程,或,实现前述源分片和/或目标分片在区块链分片方案中的各个处理流程。
[0178]
本技术实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:实现前述分配服务器在区块链分片方案中的各个处理流程,或,实现前述源分片和/或目标分片在区块链分片方案中的各个处理流程。
[0179]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0180]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

技术特征:
1.一种基于账户迁移的区块链分片方法,其特征在于,所述方法在分配服务器处进行,用于执行交易预测和账户分配,包括:交易预测过程:步骤s100.获取各账户的历史交易量,按预设条件选出第一账户;步骤s200.基于历史交易量预测所述第一账户未来的交易量,记为第一账户的交易预测量;账户分配过程:步骤s300.初始化各分片的交易负载量和区块链分片网络的负载均衡度;步骤s400.负载最重分片的交易负载量大于设定值时,进入步骤s500,否则进入步骤s600;步骤s500.选择负载最重分片中的第一账户重分配至负载最轻分片并更新负载均衡度,直至负载均衡度不再增加;步骤s600.把账户分配结果广播至各分片。2.根据权利要求1所述的基于账户迁移的区块链分片方法,其特征在于,所述步骤s500包括:步骤s510.根据总交易量对负载最重分片中的第一账户降序排列;步骤s520.按步骤s510确定的排列顺序不放回地取一个第一账户重分配至负载最轻分片;步骤s530.更新所述负载均衡度,所述负载均衡度不增加时更新各分片的交易负载量和账户信息,返回步骤s400,否则返回步骤s520。3.根据权利要求2所述的基于账户迁移的区块链分片方法,其特征在于,所述步骤s530包括:步骤s531.更新所述负载均衡度;步骤s532.负载均衡度不增加时更新各分片的交易负载量和账户信息,进入步骤s533,否则进入步骤s534;步骤s533.根据步骤s532更新的交易负载量重新确定负载最重分片和负载最轻分片,返回步骤s400;步骤s534.步骤s520未取出所有第一账户时,直接返回步骤s520,否则排除当次确定的负载最重分片,重新确定负载最重分片和负载最轻分片,返回步骤s400。4.根据权利要求1所述的基于账户迁移的区块链分片方法,其特征在于,所述预设条件为历史交易量最多的k个账户。5.根据权利要求1所述的基于账户迁移的区块链分片方法,其特征在于,所述步骤s100还包括:把分片内非第一账户的账户整合成一个第二账户。6.根据权利要求5所述的基于账户迁移的区块链分片方法,其特征在于,所述步骤s200还包括:基于历史交易量预测所述第二账户未来的交易量,记为第二账户的交易预测量。7.根据权利要求1或5所述的基于账户迁移的区块链分片方法,其特征在于,所述步骤s200采用lstm网络进行第一账户和/或第二账户的交易预测。
8.根据权利要求6所述的基于账户迁移的区块链分片方法,其特征在于,所述负载均衡度的计算包括:根据第一账户的历史交易量和交易预测量、第二账户的交易预测量计算每个分片的交易负载量,交易负载量的方差值记为负载均衡度。9.一种基于账户迁移的区块链分片方法,其特征在于,所述方法在区块链分片网络的源分片中进行,包括:接收由分配服务器利用权利要求1~8任一项的基于账户迁移的区块链分片方法得到的账户分配结果:根据所述账户分配结果确定迁移账户;发起账户迁移交易并完成分片内共识;根据所述账户分配结果把完成共识的所述账户迁移交易发送至对应的目标分片,并删除所述迁移账户及其在源分片中的账户状态。10.根据权利要求9所述的基于账户迁移的区块链分片方法,其特征在于,所述发起账户迁移交易并完成分片内共识包括:由分片内的至少一个节点生成账户迁移交易;区块生成节点把自己生成的账户迁移交易打包进区块,并把所述区块在分片内广播;分片内的各节点对所述区块完成共识。11.根据权利要求10所述的基于账户迁移的区块链分片方法,其特征在于,所述分片内的各节点对所述区块完成共识包括:各节点至少验证以下信息:交易的发送账户与接收账户相同、区块生成节点的签名信息、账户迁移交易的转移值等于迁移账户的余额、迁移账户的源分片和目标分片与账户分配结果一致。12.根据权利要求11所述的基于账户迁移的区块链分片方法,其特征在于,各节点验证的信息还包括:迁移交易的序列号连续。13.根据权利要求9所述的基于账户迁移的区块链分片方法,其特征在于,所述方法还包括:把所述迁移账户的排队交易发送至目标分片。14.一种基于账户迁移的区块链分片方法,其特征在于,所述方法在区块链分片网络的目标分片中进行,包括:接收源分片利用权利要求9~13任一项的方法发送的账户迁移交易;根据所述账户迁移交易建立迁移账户在目标分片的账户状态。15.根据权利要求14所述的基于账户迁移的区块链分片方法,其特征在于,所述方法还包括:接收并执行所述迁移账户的排队交易。16.根据权利要求14所述的基于账户迁移的区块链分片方法,其特征在于,所述方法还包括:调整所述账户迁移交易的执行优先级至最高,使得目标分片在接收到所述账户迁移交易后立即执行。
17.一种区块链系统,其特征在于,包括分配服务器,所述分配服务器包括如下模块:交易监控及预测模块,用于实现权利要求1~8任一项方法中的交易预测过程;账户分配模块,用于实现权利要求1~8任一项方法中的账户分配过程。18.一种区块链系统,其特征在于,包括分配服务器和至少两个分片,所述两个分片分为源分片和目标分片;所述分配服务器用于实现如权利要求1~8任一项所述的基于账户迁移的区块链分片方法,所述源分片用于实现如权利要求9~13任一项所述的基于账户迁移的区块链分片方法,所述目标分片用于实现如权利要求14~16任一项所述的基于账户迁移的区块链分片方法。19.一种电子设备,其特征在于,包括存储器和处理器;所述存储器,用于存储程序;所述处理器,用于执行所述程序,实现如权利要求1~8,和/或权利要求9~13、和/或权利要求14~16任一项的基于账户迁移的区块链分片方法。20.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~8,和/或权利要求9~13、和/或权利要求14~16任一项的基于账户迁移的区块链分片方法。

技术总结
本申请公开了一种基于账户迁移的区块链分片方法及区块链系统,利用系统的历史交易数据对账户的未来交易量进行预测,根据交易预测量不断把负载最重分片中交易量最大的账户重分配至负载最轻分片,并尽可能少分配账户来最大化改善系统的负载平衡;提出了一个安全高效的账户迁移机制,使得系统保证安全性的前提下快速实现账户在分片之间的迁移,而不损失过多的系统性能,本申请公开的方法能够克服传统区块链分片交易负载不平衡的问题,有效提升区块链系统的吞吐量,并降低交易确认延迟。并降低交易确认延迟。并降低交易确认延迟。


技术研发人员:张进 李明哲
受保护的技术使用者:南方科技大学
技术研发日:2023.03.20
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐