CN111680050A - 一种联盟链数据的分片处理方法、设备和存储介质 - Google Patents
一种联盟链数据的分片处理方法、设备和存储介质 Download PDFInfo
- Publication number
- CN111680050A CN111680050A CN202010448849.0A CN202010448849A CN111680050A CN 111680050 A CN111680050 A CN 111680050A CN 202010448849 A CN202010448849 A CN 202010448849A CN 111680050 A CN111680050 A CN 111680050A
- Authority
- CN
- China
- Prior art keywords
- account
- node
- transaction
- slave
- fragmentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种联盟链数据的分片方法及系统、设备和存储介质,包括:第一从分片节点接收主分片节点分配的若干交易,各所述交易的发送方账户和/或接收方账户对应第一从分片节点;在本分片内执行各所述交易,并将执行结果发送至主分片节点以供主分片节点接收后根据所述执行结果生成一区块,并存储该区块对应的区块数据;所述执行结果包括各账户更新后的账户状态数据。本发明通过设计分片架构,解决了单个节点执行的问题,从架构层面,为执行模块提供了横向拓展的可能;另一方面,对于整个交易batch,在交易分发步骤中,将交易按照from,to向各个分片分发,实现了一定程度上的不相关交易并行,另外,还通过分布式共享内存实现了跨分片交易的执行。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种联盟链数据的分片方法及系统、设备和存储介质。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
传统的区块链网络中,节点需要执行全量的交易,且存储全量的数据,在网络中的数据量逐渐增大的过程中,单节点的存储能力和执行能力会必然的成为区块链网络的性能瓶颈,这样的区块链系统不具备良好的拓展性。但受限于区块链系统固有的区块交易按序执行,节点存储全量数据的要求,以及全量账本数据实时校验的要求,区块链网络中的节点的执行和存储的拓展性一直都是区块链系统面临的挑战。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种提高联盟区块链网络中的节点单机处理能力和存储能力,解决数据容量和性能的瓶颈问题的一种联盟链数据的分片方法、设备和存储介质。
第一方面,本发明提供一种联盟链数据的分片处理方法,该方法将一区块链节点内部分为一主分片节点和若干从分片节点,每个账户对应唯一的从分片节点,该方法适用于从分片节点,所述方法包括:
第一从分片节点接收主分片节点分配的若干交易,各所述交易的发送方账户和/或接收方账户对应第一从分片节点;
在本分片内执行各所述交易,并将执行结果发送至主分片节点以供主分片节点接收后根据所述执行结果生成一区块,并存储该区块对应的区块数据;其中,所述执行结果包括各账户更新后的账户状态数据。
进一步,第一从分片节点在本分片内执行各所述交易时,若各所述交易的发送方账户和接收方账户均在本分片中,则本分片节点直接执行各交易并生成账户状态数据。
进一步,第一从分片节点在本分片内执行各所述交易时,若发送方账户和接收方账户不在同一个分片节点内,则将交易的执行信息发送至分布式共享内存,以供在后执行的从分片节点根据所述执行信息对本从分片节点的对应交易进行处理;其中,所述执行信息包括交易状态信息和交易信息。
进一步,第一从分片节点根据待执行的第一交易判断在本从分片节点内的账户是发送方账户还是接收方账户:
若为发送方账户,则在验证发送方账户状态合法且余额充足后,执行本分片的第一交易,并将第一执行信息发送至分布式共享内存以供第一交易的接收方账户所在的第二从分片节点监控到以后执行其分片内的第一交易,更新接收方账户的账户状态数据,并将第二执行信息发送至分布式共享内存以供第一从分片节点监控到第二执行信息后更新发送方账户的账户状态数据并将分布式共享内存中的第二执行信息确认;
若为接收方账户,则监控分布式共享内存,等待第一交易的发送方所在的从分片节点发送的第一执行信息后,再根据该执行信息执行本分片的第一交易,更新本账户的账户状态数据,并发送执行本分片的第一交易的第二执行信息至分布式共享内存以供发送方所在的从分片节点监控到该第二执行信息后更新发送方账户的账户状态数据,并将分布式共享内存中的第二执行信息确认。
进一步,发送方账户所在的从分片节点监控接收方分片节点发送的执行信息的同时阻塞其他交易的执行;
接收方账户所在的分片节点监控发送方从分片节点发送的执行信息的同时阻塞本从分片节点的其他交易的执行。
进一步,从分片节点在本分片的账户数据以第一桶树bucketTree的形式存储,当该从分片节点执行完所有本从分片节点内的交易后,记录本从分片节点内本次执行的修改集日志,使用bucketTree计算出每个账户的默克尔树根hash,并持久化修改后的bucketTree数据和账户状态数据。
进一步,如果本从分片节点内没有相关交易,则修改集日志为空,持久化空的账户数据的修改集日志,bucketTree数据和账户状态数据不做修改。
第二方面,本发明提供一种联盟链数据的分片处理方法,将一区块链节点内部分为一主分片节点和若干从分片节点,每个账户对应唯一的从分片节点,所述方法适用于主分片节点,所述方法包括:
主分片节点接收若干共识后的定序交易,根据各定序交易中发送方账户和接收方账户将交易分配至对应的从分片节点以供各从分片节点执行其对应的交易并生成各对应的执行结果;所述执行结果包括修改后的状态数据;
接收各所述从分片节点返回的执行结果,根据所述执行结果生成一区块,并存储该区块对应的区块数据。
进一步,所述接收各所述从节点返回的执行结果,根据所述执行结果生成一区块,将一区块对应的区块数据存储以供并存储该区块对应的区块数据包括:
接收各从分片节点返回的执行结果;
根据各从分片节点的账户状态数据构建第二桶树bucketTree2,根据第二桶树计算出全账户状态数据的世界状态,即第二默克尔树的树根;持久化在计算全账户世界状态过程中的修改集日志,bucketTree2的信息和树根;将该树根入参构造区块头,并计算区块哈希后存储区块数据。
进一步,其特征在于,在根据第二桶树计算出全账户状态数据的世界状态的计算过程中生成的修改集日志持久化。
进一步,进一步,将第一交易的区块数据发送至区块链后删除分布式共享内存中关于第一交易的所有执行记录。
第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的联盟链数据的分片处理方法。
第四方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的联盟链数据的分片处理方法。
本发明诸多实施例提供的一种联盟链数据的分片处理方法、设备和存储介质通过设计分片架构,解决了单个节点执行的问题,从架构层面,为执行模块提供了横向拓展的可能;另一方面,对于整个交易batch,在交易分发步骤中,将交易按照from,to向各个分片分发的过程,实际上就是在保证整个交易batch的顺序的大前提下,实现了一定程度上的不相关交易并行,同时,通过bucketTree计算生成默克尔树根,保证了即使用户账户增加也不会叶子节点的数量和默克尔树的高度,从而保证了计算的效率;再者,通过设计共享分布式内存,实现了对于跨分片交易的事务性保证的完成解决方案,针对各种异常场景进行了分析和解释。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种联盟链数据的分片处理结构的示意图。
图2为本发明一实施例提供的一种联盟链数据的分片处理方法的流程图。
图3为本发明所提供方法的一优选实施方式的流程图。
图4为本发明所提供方法的一优选实施方式的数据存储的结构示意图。
图5为本发明提供的另一种联盟链数据的分片处理方法。
图6为图5所示方法中步骤S22的一种优选实施方式流程图。
图7为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例提供的一种联盟链数据的分片处理结构的示意图。
如图1所示,在本实施例中,区块链网络中有若干区块链节点1,节点2,节点3,节点4,……;在每个节点内部拓展为一个分布式集群,集群中存在多个分片,每个分片存储不同的账本数据,彼此间的执行和存储相互隔离,各分片包括一个主分片节点master,和若干从分片节点slave1,slave2,slave3,……,每个从分片都可以按照设定的映射规则,将每个账户映射到唯一的从分片节点,账户分为普通账户和合约账户,如从分片节点slave1中存储账户A,账户E,账户Y;从分片节点slave2中存储账户C,账户D,从分片节点slave3中存储账户B,账户F,……,各自账户在从分片节点中独立存储,每个从分片节点维护自己的账户空间。主分片节点负责参与共识,获取共识后的定序交易tx1,tx2,tx3,tx4,……等。
比如,上述映射过程中,将账户按照address哈希散列映射到分片节点的分片ID,只要满足“每个账户对应唯一的从分片节点”的规则,均可以。
图2为本发明一实施例提供的一种联盟链数据的分片处理方法的流程图。如图2所示,在本实施例中,一种联盟链数据的分片处理方法,该方法适用于从分片节点,包括:
S11、第一从分片节点接收主分片节点分配的若干交易,各所述交易的发送方账户和/或接收方账户在第一从分片节点内;
S12、在本分片内执行各所述交易,并将执行结果发送至主分片节点以供主分片节点接收后根据所述执行结果生成一区块,并存储该区块对应的区块数据;其中,所述执行结果包括各账户更新后的账户状态数据。
具体地,主分片节点获取共识后的定序交易tx1,tx2,tx3,tx4,……后,依次对根据各交易的发送方账户和接收方账户将各交易分配至对应的分片节点内,如图3所示场景,主分片节点根据各交易的接收方账户和发送方账户,将其分配到对应的从分片节点中:tx1的发送方为账户A,接收方账户为E,那么将tx1分配到从节点slave1中;tx2的发送方为账户A,接收方账户为B,那么主分片节点将交易tx2分别分配到从节点slave1和从节点slave4中;tx3的发送方为账户D,接收方账户为E,那么主分片节点将交易tx3分别分配到从节点slave2和从节点slave1中;tx4的发送方为账户B,接收方账户为F,那么主分片节点将交易tx4分配到从节点slave3中;其余的交易分配方式与上述分配原理一致;在本实施例中,对于发送方账户和接收方账户在同一个从分片节点的,只需要发送一次就可以。这里主分片节点分配交易的方法可以是通过一个全局统一的哈希映射方法,解析到各交易的from和to以后,映射到对应的从分片节点中。在分配映射的过程中,主分片节点master可以按照定序交易顺序一个一个的将交易信息进行分配至从分片节点,也可以是先将主分片节点中现有的定序交易分别依序映射分配,并形成各交易列表,然后将交易列表发送至对应的从分片节点,交易列表中包括各交易的交易信息。
各从分片节点收到主分片节点master分配的各交易后,执行这些交易,并将这些交易执行后生成的执行结果发送到主分片节点,主分片节点根据这些执行结果生成一区块。
值得注意的是,主分片节点分配交易的方式是比较灵活的,比如还可以是用户层面认为某些账户相关性很高,可以设定将这些账户分配到同一个分片,其他的账户随机散列;还可以是针对特定的业务场景,不同的合约账户可以分到不同的分片,这样各个分片理论上只会执行自己合约相关的交易;等等方案,我们认为这个策略是也可以由用户配置。
在更多实施例中,从分片节点在收到主分片节点分配的各交易后,都能识别该交易是一笔与自己分片相关交易。当各分片节点判断到交易(如交易tx1)的发送方账户与接收方账户均映射在本分片中,则直接执行该交易,并根据执行结果更新各账户(即账户A,账户E)的账户数据,即账户的状态数据。
若交易(如tx2)的发送方账户与接收方账户不在同一个从分片内,则需要将本分片的执行结果发送到分布式共享内存中,以供交易的另一方根据执行结果对其所在的分片交易进行处理。
其中,布式共享内存是一种独立于master节点和各slave节点的外部服务,master与各slave节点都可以访问该服务,通过分布式共享内存提供的协议,对于跨分片交易的事务性保证的完成解决方案,针对各种异常场景进行了分析和解释。各slave节点使用该分布式共享内存服务的方式,可以是消息订阅-发布形式:即分片一发布创建或修改执行消息,分片二、三等等通过订阅的形式,自动接收到推送;也可以是分片一创建或修改执行消息后,分片二、三等等通过自动的轮询,获得最终结果。
图3为本发明所提供方法的一优选实施方式的流程图。如图3所示,在本实施例中,对于从分片节点内的交易的发送方账户和接收方账户不在同一个从分片节点内时,该方法包括:
S121、第一从分片节点根据待执行的第一交易判断在本从分片节点内的账户是发送方账户还是接收方账户:
若为发送方账户,则在验证发送方账户余额足够后,执行本分片的第一交易,并将第一执行信息发送至分布式共享内存以供第一交易的接收方账户所在的第二从分片节点监控到以后执行其分片内的第一交易,更新接收方账户的账户状态数据,并将第二执行信息发送至分布式共享内存以供第一从分片节点监控到第二执行信息后更新发送方账户的账户状态数据并将分布式共享内存中的第二执行信息进行确认;
若为接收方账户,则监控分布式共享内存,等待第一交易的发送方所在的从分片节点发送的第一执行信息后,再根据该执行信息执行本分片的第一交易,更新本账户的账户状态数据,并发送执行本分片的第一交易的第二执行信息至分布式共享内存以供发送方所在的从分片节点监控到该第二执行信息后更新发送方账户的账户状态数据,并将分布式共享内存中的第二执行信息进行确认。
具体地,仍以图2所示场景为例:当从分片节点slave1在执行完tx1后,将要执行tx2,此时,slave1根据交易tx2的交易信息识别出本分片内的交易的发送方账户A在本分片交易中,接收方账户不在本分片中,slave3在执行本分片交易tx2时,识别出本分片的账户是接收方账户,则不会立刻执行本分片内的tx2。
slave1作为发送方账户所在的分片节点,判断扣款方账户A状态合法且余额是否充足,若不合法(如签名不正确等)或者余额不够,则在执行信息中表明;若足够,则发送交易tx2的执行信息m1;所述执行信息的结构体为:
-全局序列号
-交易体
-是否合法:是
-是否消费:否
-是否已确认:否
其中,全局序列号为在区块链节点将各交易定序后的batch附带的序列号;交易体中包含了交易信息,如发送方From,接收方To,转账金额balance,转账地址address等信息;是否合法为本分片节点在执行交易前对当前交易的合法性验证,比如签名是否正确,账户余额是否足够,发送方账户是否状态正常(可以发起交易)等,是否消费指接收方账户是否执行了增加账户余额或者扣除账户余额或者合约调用的操作,是否已确认是指发送方账户所在的从分片节点是否执行了对应的扣除账户余额或者增加账户余额的操作或者完成合约账户的合约调用,是,则已确认。
slave3监控分布式共享内存,发现了salve1发送的执行信息,则执行本分片内的tx2,增加在账户B的转账金额或者完成针对合约账户B的合约调用,并发送执行信息m2至分布式共享内存以更行新m1,此时结构体更新为-全局序列号
-交易体
-是否合法:是
-是否消费:是
-是否已确认:否
slave1监控分布式共享内存,发现了slave3更新的执行信息,解析到slave3已经消费,则扣除本分片内账户A的转账金额(如果是合约调用,则账户A不需要任何修改,直接更新执行信息)并发送执行信息m3以更新执行信息m2,此时结构体内容更新为:
-全局序列号
-交易体
-是否合法:是
-是否消费:是
-是否已确认:是
在更多优选实施例中,发送方账户所在的从分片节点监控接收方分片节点发送的执行信息的同时阻塞其他交易的执行;
接收方账户所在的分片节点监控发送方从分片节点发送的执行信息的同时阻塞本从分片节点的其他交易的执行。
具体地,仍以图2所示场景为例,由于各从分片是独立运行的,所以同一时间,各从分片都在各自按顺序执行本分片的交易,即slave1依次执行tx1,tx2,tx3,slave3依次执行tx2,tx4,然而slave3中的tx2所在的账户为接收方所,所以应该先等到tx2的发送方A所对应的分片slave1先发送执行信息,而这个时候slave1可能还在处理交易tx1,所以slave3只能随时监控着分布式共享内存,不能进行下一笔交易tx4的执行。同样的,在接收方在执行本分片交易的同时,发送方账户所在的从分片也必须阻塞其他交易,等待该交易确认commit后才可进行下一交易。
进一步地,为了保证共享内存中的数据量不会无限增长,在一个区块完成提交后,由master节点负责清空本区块执行过程中共享内存中所有跨分片交易记录。
进一步地,在执行交易的过程中,会产生存在非法交易(以tx3为例)的可能,即账户D或账户E在执行过程中发生了异常,该机制保证发现非法交易后,跨分片交易仍保证事务性完成回滚。这里分两种情况讨论非法的跨分片交易的处理方法。
情况1:当分片slave2发现账户D异常(冻结或者余额不足),同样会记录一条交易执行信息至分布式共享内存,但是会将其标记为不合法,slave1消费时,不会进行余额变动,之后slave2直接确认,双方都跳过此交易即可。
情况2:当slave1发现账户E异常,消费时不进行余额变动,将共享内存中该笔交易对应的记录改为不合法。之后slave2确认该记录,双方同样跳过此交易。
进一步地,在分布式集群环境下,网络抖动和宕机场景是不可避免的,该机制保证在出现该类问题时,跨分片交易仍保证事务性。以下同样以执行交易tx3所在的分片节点slave1节点宕机和slave2节点宕机两种情况论述其事务性保障机制。
情况1:当分片节点slave2宕机,区块链节点启动后尝试进行重新执行,执行到该跨分片交易时可能存在以下四种情况:
情况1.1:slave2宕机前还未将交易执行信息记录于共享内存中,此时分片节点slave1还在等待该交易执行消息记录,slave2从头开始执行正常执行流程。
情况1.2:该交易执行消息已经记录,但还未被slave1消费,slave2继续等待slave1消费。
情况1.3:该交易执行消息已经被slave1消费,slave2直接进行余额更新,并标记为已确认。
情况1.4:该交易执行消息已经被确认,直接进行余额更新。
情况2:当slave1宕机,该区块链节点启动后进行重新执行,执行到该跨分片交易时可能存在以下四种情况:
情况2.1:共享内存中不存在交易执行消息记录,等待slave2正常执行。
情况2.2:该交易执行消息已经记录,但还未被slave1消费,直接从正常执行流程中的消费步骤开始执行。
情况2.3:该交易执行消息已经被slave1消费,直接进行余额更新,等待确认。
情况2.4:该交易执行消息已经被确认,直接进行余额更新。
图4为本发明所提供方法的一优选实施方式的数据存储的结构示意图。在本实施例中,从分片节点在本分片的账户数据以第一桶树bucketTree的形式存储,当该从分片节点执行完所有本从分片节点内的交易后,记录本从分片节点内本次执行的修改集日志,使用第一bucketTree计算出每个账户的默克尔树根hash,并持久化修改集日志,以供后期可以查询。对于没有任何与本分片相关的交易,则修改集为空。而对于第一bucketTree数据和账户状态数据不做处理。
其中,图4(a)为bucketTree的数据存储示意图。如图4(a)所示,BucketTree是一种数据结构,最下层是一个hashMap,hashMap中的每一个slot槽可以视为一个bucket,在hashMap的上层,会构建一棵merkleTree,merkleTree的叶子层节点与hashMap中的各个slot槽一一对应(我们将hashMap中的slot槽称为bucket)。
bucketTree的插入方式为:首先利用hashMap的hash函数,计算出该字节数组应该插入到hashMap中的位置,然后合并该字节数组与该bucket中的原有值,作为bucket的新值,然后计算出新值的hash。这个hash值就是merkleTree中与该bucket对应的位置的叶子节点的值,然后接下来就可以按照merkleTree的计算方式,计算出新的merkleTree的根节点。至此,向bucketTree中插入数据的过程结束。
上述结构使bucketTree的高度和叶子节点数据,初始化时就固定;此外,利用其结构中的merkleTree结构,可以通过merkleTree的根节点的值反映出整棵树的一个当前状态指纹;
具体地,以如图4(b)所示,各从分片节点在处理本分片内的各交易过程中,会对本账户的状态数据进行修改,每一次交易的执行都会产生账户状态数据,对于普通账户的默克尔树根即为第一默克尔树(如图4(b)中1所述)的叶子节点A,E;对于合约账户的状态数据,在每一次交易后,合约内的某些参数都会返回新的状态,这些返回的新的状态数据以第一桶树(如图4(b)中2所述)的形式存储,逐层哈希生成默尔克树根作为第一默克尔树的叶子节点,最终根据第一默克尔树的叶子节点生成第一默克尔树的树根root,各分片节点持久化修改集日志,后期可以根据修改集日志查询第一桶树bucketTree以获取各状态数据。
下面对于合约账户数据存储进行介绍:如图4(c),假设用户部署了一份智能合约,其合约地址为0x123456。那么,在平台中的对应的合约账户结构包括但不限于:address、balance、storageRoot等。假设其storage字段中包括x、y两个int值,合约中包括一个函数f(),其逻辑为将x、y都自增1。
当用户发起一笔交易,这笔交易的from是合约调用发起者的账户地址,to是合约的账户地址(即例子中所述的0x123456),交易的payload是要求调用f()函数。在这笔交易执行时,平台通过to的值索引到该合约账户,并在执行f函数的逻辑时,修改x、y的值。等到该区块内所有所有交易执行完成,即区块提交时,使用修改后的storage数据,通过bucketTree计算出该合约账户的新的storageRoot,覆盖原Account数据中的storageRoot字段。至此,一笔调用合约的交易对合约账户的作用完整结束。
图5为本发明提供的另一种联盟链数据的分片处理方法。如图5所示,在本实施例中,一种联盟链数据的分片处理方法,所述方法适用于主分片节点,该方法包括:
S21、主分片节点接收若干共识后的定序交易,根据各定序交易中发送方账户和接收方账户将交易分配至对应的从分片节点以供各从分片节点执行其对应的交易并生成各对应的执行结果;所述执行结果包括修改后的账户状态数据;
S22、接收各所述从分片节点返回的执行结果,根据所述执行结果生成一区块,并存储该区块对应的区块数据。
图5所示方法的执行原理与图1所示方法的执行原理一致,此处不再赘述。
图6为图5所示方法中步骤S22的一种优选实施方式流程图。
S221、接收各从分片节点返回的执行结果;所述执行结果包括修改后的账户状态数据;
S222、根据各从分片节点的账户状态数据构建第二桶树bucketTree2,根据第二桶树计算出全账户状态数据的世界状态,即第二桶树的树根,将该树根入参构造区块头,并计算区块哈希后存储区块数据。
具体地,各从节点将各执行结果(即各账户状态数据)发送至主分片节点master,master节点收到各账户状态数据后,构造第二桶树,其中全量被修改过的账户状态数据作为该树的叶子节点,使用bucketTree2计算出整个世界状态,持久化计算过程中的修改集日志,bucketTree2信息及最终的全账户世界状态默克尔根哈希。然后使用全账户世界状态默克尔根哈希构造区块头,计算区块hash并存储区块数据。
在一优选实施方式中,在一个区块完成提交后,由master节点负责清空本区块执行过程中共享内存中所有跨分片交易记录,从而保证分布式共享内存中的数据量不会无限增长。
图7为本发明一实施例提供的一种设备的结构示意图。
如图7所示,作为另一方面,本申请还提供了一种设备700,包括一个或多个中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM703中,还存储有设备700操作所需的各种程序和数据。CPU701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上述任一实施例描述的分片处理方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行分片处理方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的分片处理方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (13)
1.一种联盟链数据的分片处理方法,其特征在于,将一区块链节点内部分为一主分片节点和若干从分片节点,每个账户对应唯一的从分片节点,所述方法适用于从分片节点,所述方法包括:
第一从分片节点接收主分片节点分配的若干交易,各所述交易的发送方账户和/或接收方账户对应第一从分片节点。
在本分片内执行各所述交易,并将执行结果发送至主分片节点以供主分片节点接收后根据所述执行结果生成一区块,并存储该区块对应的区块数据;其中,所述执行结果包括各账户更新后的账户状态数据。
2.根据权利要求1所述的方法,其特征在于,第一从分片节点在本分片内执行各所述交易时,若各所述交易的发送方账户和接收方账户均在本分片中,则本分片节点直接执行各交易并生成账户状态数据。
3.根据权利要求1所述的方法,其特征在于,第一从分片节点在本分片内执行各所述交易时,若发送方账户和接收方账户不在同一个分片节点内,则将交易的执行信息发送至分布式共享内存,以供在后执行的从分片节点根据所述执行信息对本从分片节点的对应交易进行处理;其中,所述执行信息包括交易状态信息和交易信息。
4.根据权利要求3所示的方法,其特征在于,第一从分片节点根据待执行的第一交易判断在本从分片节点内的账户是发送方账户还是接收方账户:
若为发送方账户,则在验证发送方验证发送方账户状态合法且余额充足后,执行本分片的第一交易,并将第一执行信息发送至分布式共享内存以供第一交易的接收方账户所在的第二从分片节点监控到以后执行其分片内的第一交易,更新接收方账户的账户状态数据,并将第二执行信息发送至分布式共享内存以供第一从分片节点监控到第二执行信息后更新发送方账户的账户状态数据并将分布式共享内存中的第二执行信息确认;
若为接收方账户,则监控分布式共享内存,等待第一交易的发送方所在的从分片节点发送的第一执行信息后,再根据该执行信息执行本分片的第一交易,更新本账户的账户状态数据,并发送执行本分片的第一交易的第二执行信息至分布式共享内存以供发送方所在的从分片节点监控到该第二执行信息后更新发送方账户的账户状态数据,并将分布式共享内存中的第二执行信息确认。
5.根据权利要求4所述的方法,其特征在于,
发送方账户所在的从分片节点监控接收方分片节点发送的执行信息的同时阻塞其他交易的执行。
接收方账户所在的分片节点监控发送方从分片节点发送的执行信息的同时阻塞本从分片节点的其他交易的执行。
6.根据权利要求1-5任意一项所述的方法,从分片节点在本分片的账户数据以第一桶树bucketTree的形式存储,当该从分片节点执行完所有本从分片节点内的交易后,记录本从分片节点内本次执行的修改集日志,使用bucketTree计算出每个账户的第一默克尔树根hash,并持久化修改后的bucketTree数据和账户状态数据。
7.根据权利要求6所述的方法,其特征在于:如果本从分片节点内没有相关交易,则修改集日志为空,持久化空的账户数据的修改集日志,bucketTree数据和账户状态数据不做修改。
8.一种联盟链数据的分片处理方法,其特征在于,将一区块链节点内部分为一主分片节点和若干从分片节点,每个账户对应唯一的从分片节点,所述方法适用于主分片节点,所述方法包括:
主分片节点接收若干共识后的定序交易,根据各定序交易中发送方账户和接收方账户将交易分配至对应的从分片节点以供各从分片节点执行其对应的交易并生成各对应的执行结果;所述执行结果包括修改后的状态数据。
接收各所述从分片节点返回的执行结果,根据所述执行结果生成一区块,并存储该区块对应的区块数据。
9.根据权利要求8所述的方法,其特征在于,所述接收各所述从节点返回的执行结果,根据所述执行结果生成一区块,并存储该区块对应的区块数据:
接收各从分片节点返回的执行结果。
根据各从分片节点的账户状态数据构建第二桶树bucketTree2,根据第二桶树计算出全账户状态数据的世界状态,即第二默克尔树的树根;持久化在计算全账户世界状态过程中的修改集日志,bucketTree2的信息和树根;将该树根入参构造区块头,并计算区块哈希后存储区块数据。
10.根据权利要求9所述的方法,其特征在于,在根据第二桶树计算出全账户状态数据的世界状态的计算过程中生成的修改集日志持久化。
11.根据权利要求8-10任意一项所述方法,其特征在于:
将第一交易的区块数据发送至区块链后删除分布式共享内存中关于第一交易的所有执行记录。
12.一种分片处理设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-11中任一项所述的方法。
13.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448849.0A CN111680050B (zh) | 2020-05-25 | 2020-05-25 | 一种联盟链数据的分片处理方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448849.0A CN111680050B (zh) | 2020-05-25 | 2020-05-25 | 一种联盟链数据的分片处理方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680050A true CN111680050A (zh) | 2020-09-18 |
CN111680050B CN111680050B (zh) | 2023-09-26 |
Family
ID=72453572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010448849.0A Active CN111680050B (zh) | 2020-05-25 | 2020-05-25 | 一种联盟链数据的分片处理方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680050B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559174A (zh) * | 2020-12-08 | 2021-03-26 | 上海物融智能科技有限公司 | 一种区块链并行交易处理方法及装置 |
CN112633882A (zh) * | 2020-12-28 | 2021-04-09 | 青岛海链数字科技有限公司 | 区块链网络及数据存储方法、装置、电子设备和存储介质 |
CN113034146A (zh) * | 2021-05-25 | 2021-06-25 | 杭州云链趣链数字科技有限公司 | 基于区块链的通信方法、系统、电子装置和存储介质 |
CN113064768A (zh) * | 2021-04-19 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法和装置 |
CN113064764A (zh) * | 2021-04-19 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113157450A (zh) * | 2021-04-19 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113268382A (zh) * | 2021-04-19 | 2021-08-17 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113592470A (zh) * | 2021-08-03 | 2021-11-02 | 北京百度网讯科技有限公司 | 业务处理方法、装置、电子设备以及存储介质 |
CN113807851A (zh) * | 2021-09-30 | 2021-12-17 | 中国人民解放军国防科技大学 | 一种基于分片的区块链可扩展性实现方法及系统 |
WO2022087837A1 (en) | 2020-10-27 | 2022-05-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain system having efficient world state data structures |
WO2022141711A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 区块链中交易异步执行方法、系统及相关设备 |
WO2022143242A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
CN116012164A (zh) * | 2023-03-17 | 2023-04-25 | 安徽中科晶格技术有限公司 | 基于虚拟账户的区块链跨分片交易方法 |
WO2023082992A1 (zh) * | 2021-11-12 | 2023-05-19 | 阿里巴巴(中国)有限公司 | 数据处理方法以及系统 |
WO2024014718A1 (ko) * | 2022-07-12 | 2024-01-18 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 검증 가능 인터샤드 트랜잭션 시스템 및 방법 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019014592A1 (en) * | 2017-07-14 | 2019-01-17 | Alibaba Group Holding Limited | METHOD AND DEVICE FOR PROCESSING DATA BASED ON BLOCK CHAIN |
CN109359992A (zh) * | 2018-10-09 | 2019-02-19 | 北京彩球世纪科技有限公司 | 一种新型的区块链分区分片方式和装置 |
US20190182313A1 (en) * | 2017-12-07 | 2019-06-13 | Electronics And Telecommunications Research Institute | Apparatus and method for processing blockchain transaction in distributed manner |
CN110012126A (zh) * | 2019-04-02 | 2019-07-12 | 哈尔滨工业大学(深圳) | 一种基于区块链技术的dns系统 |
CN110287205A (zh) * | 2019-06-21 | 2019-09-27 | 中国银联股份有限公司 | 一种区块链跨分片交易数据处理方法及装置 |
CN110310115A (zh) * | 2019-05-23 | 2019-10-08 | 杭州云象网络技术有限公司 | 一种基于分片机制实现分布式账本横向扩展的方法 |
CN110570202A (zh) * | 2019-09-02 | 2019-12-13 | 杭州趣链科技有限公司 | 一种基于分片技术的混合共识方法 |
CN110808838A (zh) * | 2019-10-24 | 2020-02-18 | 华东师范大学 | 一种面向联盟链的分片方法 |
WO2020056570A1 (zh) * | 2018-09-18 | 2020-03-26 | 柯宾汉数位金融科技有限公司 | 应用分片机制的区块网的区块产生方法及区块网系统 |
CN111080452A (zh) * | 2019-12-17 | 2020-04-28 | 电子科技大学 | 一种适用于能源区块链的分层交易方法 |
-
2020
- 2020-05-25 CN CN202010448849.0A patent/CN111680050B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019014592A1 (en) * | 2017-07-14 | 2019-01-17 | Alibaba Group Holding Limited | METHOD AND DEVICE FOR PROCESSING DATA BASED ON BLOCK CHAIN |
US20190182313A1 (en) * | 2017-12-07 | 2019-06-13 | Electronics And Telecommunications Research Institute | Apparatus and method for processing blockchain transaction in distributed manner |
WO2020056570A1 (zh) * | 2018-09-18 | 2020-03-26 | 柯宾汉数位金融科技有限公司 | 应用分片机制的区块网的区块产生方法及区块网系统 |
CN109359992A (zh) * | 2018-10-09 | 2019-02-19 | 北京彩球世纪科技有限公司 | 一种新型的区块链分区分片方式和装置 |
CN110012126A (zh) * | 2019-04-02 | 2019-07-12 | 哈尔滨工业大学(深圳) | 一种基于区块链技术的dns系统 |
CN110310115A (zh) * | 2019-05-23 | 2019-10-08 | 杭州云象网络技术有限公司 | 一种基于分片机制实现分布式账本横向扩展的方法 |
CN110287205A (zh) * | 2019-06-21 | 2019-09-27 | 中国银联股份有限公司 | 一种区块链跨分片交易数据处理方法及装置 |
CN110570202A (zh) * | 2019-09-02 | 2019-12-13 | 杭州趣链科技有限公司 | 一种基于分片技术的混合共识方法 |
CN110808838A (zh) * | 2019-10-24 | 2020-02-18 | 华东师范大学 | 一种面向联盟链的分片方法 |
CN111080452A (zh) * | 2019-12-17 | 2020-04-28 | 电子科技大学 | 一种适用于能源区块链的分层交易方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022087837A1 (en) | 2020-10-27 | 2022-05-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain system having efficient world state data structures |
EP4066438A4 (en) * | 2020-10-27 | 2022-11-30 | Alipay (Hangzhou) Information Technology Co., Ltd. | BLOCKCHAIN SYSTEM WITH EFFICIENT WORLD STATE DATA STRUCTURES |
CN112559174A (zh) * | 2020-12-08 | 2021-03-26 | 上海物融智能科技有限公司 | 一种区块链并行交易处理方法及装置 |
CN112633882A (zh) * | 2020-12-28 | 2021-04-09 | 青岛海链数字科技有限公司 | 区块链网络及数据存储方法、装置、电子设备和存储介质 |
WO2022143242A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
WO2022141711A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 区块链中交易异步执行方法、系统及相关设备 |
CN113157450A (zh) * | 2021-04-19 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113064768B (zh) * | 2021-04-19 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法和装置 |
CN113157450B (zh) * | 2021-04-19 | 2024-01-05 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113268382A (zh) * | 2021-04-19 | 2021-08-17 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113064764A (zh) * | 2021-04-19 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113064768A (zh) * | 2021-04-19 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法和装置 |
CN113268382B (zh) * | 2021-04-19 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113064764B (zh) * | 2021-04-19 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113034146A (zh) * | 2021-05-25 | 2021-06-25 | 杭州云链趣链数字科技有限公司 | 基于区块链的通信方法、系统、电子装置和存储介质 |
CN113592470A (zh) * | 2021-08-03 | 2021-11-02 | 北京百度网讯科技有限公司 | 业务处理方法、装置、电子设备以及存储介质 |
CN113807851B (zh) * | 2021-09-30 | 2023-11-21 | 中国人民解放军国防科技大学 | 一种基于分片的区块链可扩展性实现方法及系统 |
CN113807851A (zh) * | 2021-09-30 | 2021-12-17 | 中国人民解放军国防科技大学 | 一种基于分片的区块链可扩展性实现方法及系统 |
WO2023082992A1 (zh) * | 2021-11-12 | 2023-05-19 | 阿里巴巴(中国)有限公司 | 数据处理方法以及系统 |
WO2024014718A1 (ko) * | 2022-07-12 | 2024-01-18 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 검증 가능 인터샤드 트랜잭션 시스템 및 방법 |
CN116012164A (zh) * | 2023-03-17 | 2023-04-25 | 安徽中科晶格技术有限公司 | 基于虚拟账户的区块链跨分片交易方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111680050B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680050A (zh) | 一种联盟链数据的分片处理方法、设备和存储介质 | |
KR102548540B1 (ko) | 분산 원장 사이에서 교차 원장 전송을 위한 방법 및 장치와 교차 원장 전송을 사용하는 시스템 | |
CN109391645B (zh) | 区块链轻量化处理方法、区块链节点及存储介质 | |
CN109472572B (zh) | 基于区块链主链加并行多子链的合约系统 | |
CN112511590B (zh) | 一种区块链分片的高效存储重配置方法 | |
CN111445236A (zh) | 一种区块链交易验证方法、设备及存储介质 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
WO2021114025A1 (zh) | 增量数据确定方法、确定装置、服务器及终端设备 | |
CN111526208A (zh) | 一种基于微服务的高并发云平台文件传输优化方法 | |
CN113259478A (zh) | 在区块链系统中执行交易的方法、装置及区块链系统 | |
CN110490734B (zh) | 交易组构建、广播方法和系统、设备及存储介质 | |
CN117616411A (zh) | 用于处理分布式在线事务处理(oltp)数据库中数据库事务的方法和系统 | |
CN113708937B (zh) | 区块链交易的处理方法和系统 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN111523897B (zh) | 防攻击方法、设备和存储介质 | |
WO2023142605A1 (zh) | 一种基于区块链的数据处理方法和相关装置 | |
CN114140115B (zh) | 区块链交易池的分片方法、系统、存储介质和计算机系统 | |
CN113254538B (zh) | 在区块链中执行交易的方法和区块链节点 | |
CN113468200B (zh) | 对区块链系统中的分片进行扩容的方法及装置 | |
CN111524011B (zh) | 平行链共识确认方法、设备和存储介质 | |
CN112001800B (zh) | 在区块链系统中进行业务处理的方法和装置 | |
CN113592653A (zh) | 代理延时交易方法、计算机设备和存储介质 | |
CN113609130B (zh) | 获取网关接入数据的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |