对区块链系统中的分片进行扩容的方法及装置转让专利
申请号 : CN202111019550.4
文献号 : CN113468200B
文献日 : 2021-12-21
发明人 : 郑子彬 , 徐泉清 , 郑沛霖 , 闫莺 , 张辉
申请人 : 支付宝(杭州)信息技术有限公司
摘要 :
权利要求 :
1.一种对区块链系统中的分片进行扩容的方法,所述区块链系统包括第一分片,所述第一分片中包括第一节点;所述方法应用于所述第一节点,所述方法包括:接收扩容请求,所述扩容请求中包括将要执行的第一区块的信息;
在执行完成所述第一区块之后,将所述第一区块对应的第一世界状态发送给第二节点;并执行至少一个第二区块,记录各个第二区块对应的各个状态更改信息;所述第二区块为所述第一区块之后的区块;
在对所述第一区块对应的第一世界状态发送完成之后,将各个所述状态更改信息发送给所述第二节点,以使所述第二节点基于所述第一世界状态和各个所述状态更改信息,获取第二分片的初始世界状态;所述第二节点属于待增加到区块链系统中的第二分片。
2.根据权利要求1所述的方法,其中,所述区块链系统包括多个成员方,各个成员方包括各自的中心设备以及多个分片的部分分片节点;所述第一节点和所述第二节点属于所述多个成员方中的第一成员方;所述第一成员方包括第一中心设备;
其中,所述接收扩容请求,包括:从所述第一中心设备接收扩容请求。
3.根据权利要求2所述的方法,还包括:所述扩容请求为所述第一中心设备在确定满足预设条件时发送的;其中,所述预设条件包括:当前所述区块链系统包括的分片个数小于目标分片个数;所述目标分片个数基于所述区块链系统在预设时段内执行的交易总数而确定。
4.根据权利要求3所述的方法,其中,所述目标分片个数与目标比值正相关,所述目标比值为所述交易总数与预设交易数的比值。
5.根据权利要求1所述的方法,其中,所述将所述第一区块对应的第一世界状态发送给所述第二节点,包括:从状态数据库中导出所述第一区块对应的第一世界状态,并将该导出的所述第一世界状态发送给所述第二节点。
6.根据权利要求5所述的方法,其中,所述从状态数据库中导出所述第一区块对应的第一世界状态,包括:将所述第一世界状态作为临时文件存储在所述第一分片的分片节点的磁盘空间中。
7.一种对区块链系统中的分片进行扩容的装置,所述区块链系统包括第一分片,所述第一分片中包括第一节点;所述装置应用于所述第一节点,所述装置包括:接收模块,用于接收扩容请求,所述扩容请求中包括将要执行的第一区块的信息;
第一发送模块,用于在执行完成所述第一区块之后,将所述第一区块对应的第一世界状态发送给第二节点;
记录模块,用于执行至少一个第二区块,记录各个第二区块对应的各个状态更改信息;
所述第二区块为所述第一区块之后的区块;
第二发送模块,用于在对所述第一世界状态发送完成之后,将各个所述状态更改信息发送给所述第二节点,以使所述第二节点基于所述第一世界状态和各个所述状态更改信息,获取第二分片的初始世界状态;所述第二节点属于待增加到区块链系统中的第二分片。
8.根据权利要求7所述的装置,其中,所述区块链系统包括多个成员方,各个成员方包括各自的中心设备以及多个分片的部分分片节点;所述第一节点和所述第二节点属于所述多个成员方中的第一成员方;所述第一成员方包括第一中心设备;
其中,所述接收模块被配置用于:从所述第一中心设备接收扩容请求。
9.根据权利要求8所述的装置,其中,所述扩容请求为所述第一中心设备在确定满足预设条件时发送的;所述预设条件包括:当前所述区块链系统包括的分片个数小于目标分片个数;所述目标分片个数基于所述区块链系统在预设时段内执行的交易总数而确定。
10.根据权利要求9所述的装置,其中,所述目标分片个数与目标比值正相关,所述目标比值为所述交易总数与预设交易数的比值。
11.根据权利要求7所述的装置,其中,所述第一发送模块被配置用于:从状态数据库中导出所述第一区块对应的第一世界状态,并将该导出的所述第一世界状态发送给所述第二节点。
12.根据权利要求11所述的装置,其中,所述第一发送模块通过如下方式从状态数据库中导出所述第一区块对应的第一世界状态:将所述第一世界状态作为临时文件存储在所述第一分片的分片节点的磁盘空间中。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行权利要求1‑6中任一项所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1‑6中任一项所述的方法。
说明书 :
对区块链系统中的分片进行扩容的方法及装置
技术领域
背景技术
的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区
块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应
用。
者们提出了各种各样的方案来尝试提升区块的吞吐量,这一过程称为“扩容”。区块链分片
技术是一种用于对区块链进行扩容的方案。区块链分片的基本思路是将区块链网络中的节
点分成若干个相对独立的子网络,每个子网络构成一个区块链,一个子网络也就是一个分
片(shard)。通过多个分片的并行处理,可提升整个网络的吞吐量。
用大量分片数,又会造成资源的浪费。因此,区块链分片技术需要一种自动扩容的方法。
发明内容
改信息;所述第二区块为所述第一区块之后的区块;
包括:
二区块为所述第一区块之后的区块;
包括:
述的方法。
在发送第一世界状态的过程中,继续执行第一区块之后的第二区块,并记录第二区块对应
的状态更改信息,在对第一世界状态发送完成之后,将记录的第二区块对应的状态更改信
息发送给新增分片的第二节点,使得第二节点能够基于第一世界状态和各个状态更改信
息,获取第二分片的初始世界状态,从而完成扩容。实现了区块链系统的自动扩容,解决了
区块链系统中分片数量不能随交易数量增加而动态扩容的问题。也实现了状态热迁移,从
而避免了在扩容的过程中对区块的业务产生中断的情况。
附图说明
领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的
附图。
具体实施方式
所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附
权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是
指并包含一个或多个相关联的列出项目的任何或所有可能组合。
本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第
一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……
时”或“响应于确定”。
方向上来说,可以分为链上扩容和链下扩容两个方向。链上扩容通常包括扩块、隔离见证、
分片、共识层改进这些方案。链下扩容通常包括状态通道、侧链、链下计算这些方案。分片技
术是属于链上扩容的一种方案。分片概念源于数据库领域,本意是指数据库中数据的水平
分区(将表的不同行分到不同的分区),每个分片都保存在一个单独的数据库服务器实例
上,以分散负载。
种分片方式,就是将整个区块链网络划分成多个子网络,也就是多个分片。这样,区块链网
络中的多个分片可以并行处理网络中不同的交易。交易分片是将交易按某种规则分配到不
同分片,其思路为按一定规则将交易分配到同一个分片处理,这样既能够达到并行处理的
目的又能避免双花问题。交易分片的前提是先进行网络分片。在所有的分片机制当中,状态
分片是最具挑战的分片方式。状态分片的关键是将整个存储区分开,让不同的分片存储不
同的部分,每个节点只负责存储自己的分片数据,而不是存储完整的区块链状态。状态分片
能够解决存储能力瓶颈问题。
集合之间通过各自的中心设备进行通信,而属于相同分片的分片节点之间也可以通过该中
心设备进行通信。另外,该中心设备还可以接收交易,并对接收到的交易进行共识,共识之
后将交易分别分配给不同分片的分片节点。其中,上述分片节点以及中心设备可以实现为
任何具有计算、处理能力的装置、服务器或设备集群等。
中可以包括任意数目的分片和成员方。下文中将以图1a‑图1c所示的区块链系统为例进行
描述,可以理解,本说明书实施例不限于应用于图1a‑图1c所示的区块链系统,而可以应用
于任意区块链系统。
度来说,分片节点1A和分片节点2A均属于成员方A,该两个分片节点可以通过中心设备A进
行通信。分片节点1B和分片节点2B均属于成员方B,该两个分片节点可以通过中心设备B进
行通信。分片节点1C和分片节点2C均属于成员方C,该两个分片节点可以通过中心设备C进
行通信。分片节点1D和分片节点2D均属于成员方D,该两个分片节点可以通过中心设备D进
行通信。并且,中心设备A,中心设备B,中心设备C和中心设备D相互之间可以进行通信。
满足预设的扩容条件,则需要针对原有的每个分片,相应的新增一个新的分片。例如,针对
分片1,相应的新增一个新的分片3,即在每个成员方,新增一个分片3的分片节点。针对分片
2,相应的新增一个新的分片4,即在每个成员方,新增一个分片4的分片节点。在确定满足预
设的扩容条件之后,各个中心设备可以分别向各自对应的两个分片节点发送扩容请求。例
如,中心设备A分别向分片节点1A和分片节点2A发送扩容请求,中心设备B分别向分片节点
1B和分片节点2B发送扩容请求,中心设备C分别向分片节点1C和分片节点2C发送扩容请求,
中心设备D分别向分片节点1D和分片节点2D发送扩容请求。
的分片节点。同时,该分片节点还可以将正在执行的交易产生的状态更改信息进行缓存。当
该最新的世界状态传输完成之后,可以将缓存的状态更改信息也传输至新增分片的分片节
点。例如,如图1b所示,在成员方A中,分片节点1A接收到扩容请求之后,可以与新增分片3的
分片节点3A建立连接,并将获取的最新的世界状态以及缓存的状态更改信息传输至分片节
点3A。分片节点2A接收到扩容请求之后,可以与新增分片4的分片节点4A建立连接,并将获
取的最新的世界状态以及缓存的状态更改信息传输至分片节点4A。其它成员方以此类推,
在此不再赘述。
建立连接,并通知中心设备完成扩容。如图1c所示,在成员方A中,状态更改信息传输完成
后,分片节点3A得到分片3的初始世界状态,与分片节点1A断开连接,与中心设备A建立连
接,并通知中心设备A完成扩容。分片节点4A得到分片4的初始世界状态,与分片节点2A断开
连接,与中心设备A建立连接,并通知中心设备A完成扩容。其它成员方以此类推,在此不再
赘述。
点属于待增加到区块链系统中的第二分片,该方法包括以下步骤:
点设备,可以理解,本实施例对区块链系统的系统构架方面不限定。
对区块链系统的分片进行扩容,即满足扩容的条件。
可以确定满足预设条件,即满足扩容的条件,需要对区块链系统的分片进行扩容。
到的整数,Nshard表示目标分片个数。
如,当前正在执行区块m(m为区块高度),第一区块的信息可以是指示第一区块与当前区块
的高度差n(n≥1且为整数)的信息,因此,第一区块为区块高度为m+n的区块。可以理解,第
一区块的信息可以是任意形式的信息,本实施例对第一区块的信息的具体形式方面不限
定。
点建立连接,同时,继续执行当前区块,直至执行完成第一区块。在确定执行完成第一区块
之后,向第二节点发送第一区块对应的第一世界状态。
的信息确定第一区块为区块3,同时,继续执行区块1以及区块2,直至执行完成区块3,然后,
向第二节点发送区块3对应的第一世界状态。
心设备将该多个交易分别按照预设的规则分发给各自的分片节点。其中,各个联盟方中属
于第一分片的第一节点接收到h个交易。各个第一节点都执行完成该h个交易之后,生成第
一区块的区块体和区块头,存储第一区块,并基于该h个交易的执行结果对应的状态更改信
息,更新第一区块的世界状态,得到第一区块对应的第一世界状态。该第一世界状态为第一
区块对应的完整的世界状态,若第一区块产生了对前一个区块的世界状态更改的状态更改
信息,该第一世界状态即为前一个区块的利用状态更改信息更改前一个区块的世界状态之
后,得到的完整的世界状态。
第一区块对应的第一世界状态,将导出的第一世界状态作为临时文件,存储在第一分片的
分片节点的磁盘空间中。然后,再将存储在该磁盘空间中的临时文件慢慢发送给第二节点。
本实现方式将导出的第一世界状态作为临时文件,先存储在磁盘空间再发送给第二节点,
能够减少对网络资源的占用。
程需要较长的时间,因此,在发送第一世界状态的过程中,第一节点可以继续执行至少一个
第二区块,并在缓存中记录各个第二区块各自对应的各个状态更改信息。所以,实现了状态
热迁移,不会对区块的业务产生中断。其中,状态更改信息为用于更新世界状态的信息。例
如,状态更改信息可以是在执行区块中的各个交易时,产生的各个对变量的写入信息。
息,可以得到当前区块对应的世界状态。例如,第一区块为区块3,在第一节点对区块3对应
的世界状态发送完成时,已经执行完区块5,在缓存中记录有区块4和区块5各自对应的各个
状态更改信息。第一节点将区块4和区块5各自对应的各个状态更改信息发送给第二节点,
则区块3对应的世界状态加上区块4和区块5各自对应的各个状态更改信息,可以得到区块5
对应的世界状态。
中心设备完成扩容。中心设备在接收到扩容完成的通知之后,可以根据预定的分片规则,将
交易分配给新生成的分片进行处理。
发送第一世界状态的过程中,继续执行第一区块之后的第二区块,并记录第二区块对应的
状态更改信息,在对第一世界状态发送完成之后,将记录的第二区块对应的状态更改信息
发送给新增分片的第二节点,使得第二节点能够基于第一世界状态和各个状态更改信息,
获取第二分片的初始世界状态,从而完成扩容。实现了区块链系统的自动扩容,解决了区块
链系统中分片数量不能随交易数量增加而动态扩容的问题。也实现了状态热迁移,从而避
免了在扩容的过程中对区块的业务产生中断的情况。
示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备
选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个
步骤执行。
用于第一节点,该装置可以包括:接收模块301,第一发送模块302,记录模块303和第二发送
模块304。
方,第一成员方包括第一中心设备。
基于区块链系统在预设时段内执行的交易总数而确定。
盘空间中。
系统中的分片进行扩容的方案。
说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以
不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的
需要选择其中的部分或者全部模块来实现本说明书一个或多个实施例方案的目的。本领域
普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
扩容的方法。
的对区块链系统中的分片进行扩容的方法。
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例
的部分说明即可。
执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组
成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计
约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功
能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、
内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑
ROM、或技术领域内所公知的任意其它形式的存储介质中。
的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含
在本申请的保护范围之内。