CN116431312A - 区块链***中的交易执行方法和区块链节点 - Google Patents
区块链***中的交易执行方法和区块链节点 Download PDFInfo
- Publication number
- CN116431312A CN116431312A CN202310493508.9A CN202310493508A CN116431312A CN 116431312 A CN116431312 A CN 116431312A CN 202310493508 A CN202310493508 A CN 202310493508A CN 116431312 A CN116431312 A CN 116431312A
- Authority
- CN
- China
- Prior art keywords
- transaction
- management
- processes
- indication information
- analysis result
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 339
- 230000008569 process Effects 0.000 claims abstract description 282
- 238000004458 analytical method Methods 0.000 claims abstract description 104
- 238000007726 management method Methods 0.000 claims abstract description 91
- 238000004364 calculation method Methods 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种区块链***中的交易执行方法和区块链节点,区块链节点中包括控制进程、多个管理进程和多个计算进程。控制进程可以从多个管理进程获取多个第一交易的多个分析结果,分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;控制进程还可以根据多个分析结果各自包括的读写信息,将多个分析结果划分为多个数据分组,并将多个数据分组分发给多个计算进程;与之对应的,计算进程可以对其接收的数据分组中任意的第i个分析结果,根据第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据第i个分析结果包括的交易哈希,从第一管理进程获取第i个分析结果对应的第一交易,并执行第i个分析结果对应的第一交易。
Description
技术领域
本说明书实施例属于区块链领域,尤其涉及一种区块链***中的交易执行方法和区块链节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链***中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种区块链***中的交易执行方法和区块链节点。
第一方面,提供了一种区块链***中的交易执行方法,所述方法由所述区块链***中的区块链节点执行,所述区块链节点包括控制进程、多个管理进程和多个计算进程。所述方法包括:所述控制进程从所述多个管理进程获取多个第一交易的多个分析结果,所述分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;所述控制进程根据所述多个分析结果各自包括的读写信息,将所述多个分析结果划分为多个数据分组,并将所述多个数据分组分发给所述多个计算进程;所述计算进程对其接收的数据分组中任意的第i个分析结果,根据所述第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据所述第i个分析结果包括的交易哈希,从所述第一管理进程获取第i个分析结果对应的第一交易,并执行所述第i个分析结果对应的第一交易。
第二方面,提供了一种区块链***中的区块链节点,所述区块链节点包括控制进程、多个管理进程和多个计算进程。所述控制进程用于从所述多个管理进程获取多个第一交易的多个分析结果,所述分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;所述控制进程还用于根据所述多个分析结果各自包括的读写信息,将所述多个分析结果划分为多个数据分组,并将所述多个数据分组分发给所述多个计算进程;所述计算进程用于对其接收的数据分组中任意的第i个分析结果,根据所述第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据所述第i个分析结果包括的交易哈希,从所述第一管理进程获取第i个分析结果对应的第一交易,并执行所述第i个分析结果对应的第一交易。
在本说明书实施例的方案中,区块链节点中至少包括控制进程、多个管理进程和多个计算进程。控制进程可以从多个管理进程获取多个第一交易的多个分析结果,分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;控制进程还可以根据多个分析结果各自包括的读写信息,将多个分析结果划分为多个数据分组,并将多个数据分组分发给多个计算进程;与之对应的,计算进程可以对其接收的数据分组中任意的第i个分析结果,根据第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据第i个分析结果包括的交易哈希,从第一管理进程获取第i个分析结果对应的第一交易,并执行第i个分析结果对应的第一交易。如此,仅支持以单实例运行的控制进程并不执行与交易明文相关的事务,而是由并发运行的多个管理进程来负责管理交易明文并提供交易的分析结果,从而可以在更大程度上实现对控制进程进行控制流和数据流的解耦,减少控制进程所需实现的事务,有利于提高区块链***的性能。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中提供的一种区块链***的架构图;
图2为本说明书实施例中提供的一种区块链***中的区块链节点的结构示意图之一;
图3为本说明书实施例中提供的一种区块链***中的交易处理方法的流程图;
图4为本说明书实施例中提供的一种区块链***中的交易执行方法的流程图;
图5为本说明书实施例中提供的一种区块链***中的区块链节点的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1为本说明书实施例中示例性提供的一种区块链***的架构图。区块链***可以包括N个区块链节点,其中图1中示例性的示出了节点1-节点8等8个区块链节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接,前述连接例如可以为传输控制协议(transmission control trotocol,TCP)连接,前述连接用于支持在不同节点之间传输数据。
区块链***中需要持久化存储的***数据可以被划分为区块数据和状态数据两部分。
区块数据包括按照区块高度(或称为区块号)递增的一个或多个区块,单个区块可以包括区块头和区块体。区块头中可以包括前一区块的区块哈希previous_Hash(或者称为父hash)、时间戳Timestamp、区块号BlockNum、状态根哈希State_Root、交易根哈希Transaction_Root以及收据根哈希Receipt_Root等。区块体中可以包括交易集合和收据集合。
区块链***中的交易是指在区块链***中执行并记录在区块链***中的任务单元。单个交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data),其中From字段包括发起该交易的账户,To字段可能包括该交易涉及/指向的另一个账户。
对于任意第k个区块,可以根据区块高度(或版本version)为k-1的状态数据,执行属于第k个区块的交易集合中所包括的按顺序排列的多个交易,获得该多个交易的执行结果。进而根据该多个交易的执行结果更新区块高度为k-1的状态数据,获得区块高度为k的状态数据。
本说明书实施例中至少提供了一种区块链***中的交易执行方法和区块链***。区块链节点中至少包括控制进程、多个管理进程和多个计算进程。控制进程可以从多个管理进程获取多个第一交易的多个分析结果,分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;控制进程还可以根据多个分析结果各自包括的读写信息,将多个分析结果划分为多个数据分组,并将多个数据分组分发给多个计算进程;与之对应的,计算进程可以对其接收的数据分组中任意的第i个分析结果,根据第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据第i个分析结果包括的交易哈希,从第一管理进程获取第i个分析结果对应的第一交易,并执行第i个分析结果对应的第一交易。如此,仅支持以单实例运行的控制进程并不执行与交易明文相关的事务,而是由并发运行的多个管理进程来负责管理交易明文并提供交易的分析结果,从而可以在更大程度上实现对控制进程进行控制流和数据流的解耦,减少控制进程所需实现的事务,有利于提高区块链***的性能。
图2为本说明书实施例中提供的一种区块链***中的区块链节点的结构示意图之一。参见图2所示,区块链节点中至少包括控制进程(Controller Process)、多个管理进程(Txpool Process,也可以表述为交易缓存池进程)和多个计算进程(Compute Process)。该区块链节点还可以包括负载均衡器(Load Balancer)、一个或多个多个接入进程(PortalProcess)、负责节点间通信的节点网关进程(Domain Gateway Process)以及存储进程(storage Process)中的一项或多项。其中,节点网关进程对应区块链节点的P2P服务/模块;一个或多个接入进程主要负责与客户端进行信息交互,而节点网关进程主要负责与区块链***中的其余区块链节点进行信息交互。需要特别说明的是,进程指是计算机应用中具有一定独立功能的程序关于一个数据集合的一次运行活动,即进程是计算机中通过由处理器顺序执行应用程序中的指令而进行的一个过程,而每个进程在创建时被分配自己的内存地址空间。单个区块链节点中的多个进程可以为多个计算设备或虚拟计算节点中的多个进程。
图3为本说明书实施例中提供的一种区块链***中的交易处理方法的流程图。该方法可以由区块链***中的区块链节点执行,例如由前述图2中示例性提供的区块链节点执行。该方法示例性描述了客户端发出的第二交易被发送到区块链节点中的管理进程,由区块链节点实现基于第二交易发起对某个待生成的目标区块所对应的共识提议进行共识的过程。
参见图3所示,该方法可以包括但不限于如下步骤S301~步骤S317中的部分或全部。
当区块链节点配置有负载均衡器和多个接入进程的情况下,区块链节点可能从客户端接收到待执行的第二交易。此种情况下该区块链节点可能执行如下步骤S301~步骤S307。
步骤S301,负载均衡器接收来自客户端的第二交易。
步骤S303,负载均衡器从多个接入进程中选择第一接入进程。
负载均衡器可以基于多个接入进程的负载情况来调度其接收的第二交易,即负载均衡器在接收到第二交易后,可以将当前负载较低的接入进程选择为第一接入进程。
步骤S305,负载均衡器向第一接入进程发送第二交易。
步骤S307,第一接入进程基于第二交易获取第二交易的指示信息,根据第二交易的指示信息从多个管理进程中确定出用于管理第二交易的第二管理进程。
第二交易的指示信息可以包括发起该第二交易的账户。或者,第二交易的指示信息可以基于发起该第二交易的账户处理得到,例如是发起该第二交易的账户的首字节。
可以通过预先存储的配置信息维护多个管理进程各自对应的一个或多个指示信息。第一接入进程接收到某个第二交易后,可以提取该第二交易的From字段所包括账户的首字节(也可以表述为该交易的的sender首字节)作为该交易的指示信息;进而,根据该交易的指示信息查询预先存储的配置信息,实现从多个管理进程中确定出对应的第二管理进程。
步骤S309,第一接入进程向第二管理进程发送第二交易。
当区块链节点并未配置负载均衡器并且仅配置单个接入进程的情况下,区块链节点可以并不执行前述步骤S301~步骤S309,而是通过其配置的单个接入进程从客户端直接接收前述的第二交易,并执行前述步骤S307和步骤S309中由第一接入进程实现的功能。
第二管理进程接收到来自客户端的第二交易后,其可以对第二交易进行前置验证,包括验证第二交易的签名、交易格式等等,此外还可以验证发起第二交易的账户gas是否足够等等。第二交易通过验证后,第二管理进程即可接着执行步骤S311,向区块链***中的其余区块链节点发送第二交易。
第二管理进程可以通过调用节点网关进程向其余区块链节点广播第二交易。与步骤S311相对应的是,区块链节点中的其余区块链节点中的管理进程,则可能从当前区块链节点接收到由当前区块链节点从客户端接收的第二交易。换而言之,当前区块链节点也可能并不直接从客户端接收第二交易,而是从其余区块链节点接收由客户端发出的第二交易;此种情况下区块链节点例如可以通过节点网关进程接收来自其余区块链节点的第二交易,并由节点网关进程实现前述步骤S307和步骤S309中由第一接入进程实现的功能。
无论是来自客户端或者是其余区块链节点的第二交易,接收到第二交易的第二管理进程均可以对其执行步骤S313,基于第二交易获取第二交易的指示信息,计算第二交易的交易哈希;步骤S315,向控制进程发送第二交易的交易哈希和指示信息。
第二管理进程可以按照特定算来调用控制进程,以向控制进程发送其所接收第二交易的交易哈希和指示信息。例如第二管理进程在接收到第二交易后立即执行前述步骤S313和步骤S315,或者也可以按照预定时间间隔,周期性的对当前时间间隔接收的各个第二交易执行前述步骤S313和步骤S315。
交易哈希可以是第二交易的哈希值,也可以是基于第二交易的哈希值获取的短hash。
控制进程可以按照相应的策略,使用来自多个管理进程的第二交易的交易哈希和指示信息,发起与将要生成的目标区块相对应的共识提议。
具体地,在步骤S317,控制进程对共识提议进行共识,其中包括多个第一交易的交易哈希和指示信息,多个第一交易中包括第二交易。
更具体地说,控制进程可能从多个管理进程接收到多个第二交易的交易哈希和指示信息,然后从多个第二交易的交易哈希和指示信息,选择部分或全部第二交易的交易哈希和指示信息,对应的作为多个第一交易的交易哈希和指示信息,从而生成与目标区块对应的共识提议。
控制进程中的Consensus模块,可以使用PBFT或者MYPBFT等共识算法,生成与某个待生成的目标区块相对应的共识提议,并与区块链***中的其余区块链节点对共识提议进行共识。共识提议中具体可以包括由多个第一交易的交易哈希按顺序组成交易哈希列表txlist hash,以及包括由多个第一交易的指示信息按顺序组成指示信息列表。对共识提议共识的过程中,控制进程的Consensus模块,可以在收到preprepare消息后,对于单个第一交易的交易哈希和指示信息,可以按照该第一交易的指示信息和交易哈希,通知对应的管理进程检查该第一交易的存在性,如果存在则由对应的管理进程持久化相关第一交易,如果不存在则该区块链节点可以退出共识过程或提供表征其不赞同共识提议的信息。
前述图3所示的方法仅仅是示例性的,区块链节点中的管理进程也可能通过其它方式获得来自客户端的第二交易,通过其它方式获得基于多个第一交易的共识提议并对其进行共识。
对基于多个第一交易的共识提议达成共识的情况下,区块链节点则可以通过控制进程、多个管理进程和多个计算进程相协作的方式,完成对多个第一交易的执行。
图4为本说明书实施例中提供的一种区块链***中的交易执行方法的流程图。该方法示例性的描述了在区块链节点对基于多个第一交易的共识提议达成共识的情况下,通过控制进程、多个管理进程和多个计算进程相协作以完成执行多个第一交易的过程。
参见图4所示,该方法可以包括但不限于如下步骤S319~步骤S335中的部分或全部。
步骤S319,控制进程从多个管理进程获取多个第一交易的多个分析结果,分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息。
控制进程中的Consensus可以在对基于多个第一交易的共识提议达成共识后,对共识提议中的每个第一交易的交易哈希和指示信息,按照该第一交易的指示信息确定用于管理该第一交易的第三管理进程,将该第一交易的交易哈希和指示信息发送到该第三管理进程。第三管理进程接收到该第一交易的交易哈希和指示信息之后,可以根据该第一交易的交易哈希查询到其管理的该第一交易的明文,然后对该第一交易进行后置校验,例如验证该第一交易的签名、交易格式、防重放检测等等,其中验证该第一交易的签名和交易格式可以使用对该第一交易进行前置校验的校验结果。通过校验后,第三管理进程可以通过对该第一交易进行预执行或者其它分析方式,获得该第一交易的读写信息,进而利用该第一交易的交易哈希、读写信息和指示信息组成该第一交易的分析结果,并向控制进程返回该第一交易的分析结果。
单个第一交易的读写信息可以包括执行该第一交易时,需要从状态数据中读取和写入的参数的key。更具体地说,单个第一交易的读写信息例如包括预执行读集和预执行写集。
接着,在步骤S321,控制进程根据多个分析结果各自包括的读写信息,将多个分析结果划分为多个数据分组。
获得前述多个数据分组的过程中,需要确保位于任意两个数据分组中的任意两个分析结果所分别对应的第一交易互不冲突。任意两个第一交易互不冲突具体是指任意两个第一交易不存在如下情况之一:一个第一交易的预执行读集与另一个第一交易的预执行写集中包括相同的key、一个第一交易的预执行写集和另一个第一交易的预执行写集中包括相同的key。而对于存在冲突的任意两个第一交易,则其分析结果需要被划分到相同的数据分组中,换而言之即如果该任意两个第一交易各自的预执行写集中包含相同的key,即认为该任意两个第一交易访问了相同的参数而存在冲突,该任意两个第一交易的分析结果需要被划分到相同的数据分组;如果该任意两个第一交易中的一个第一交易的预执行读集与另一个第一交易的预执行写集中包含相同的key,即认为该任意两个第一交易访问了相同的参数而存在冲突,该任意两个第一交易的分析结果需要被划分到相同的数据分组。在另一种可能的实施方式中,为了高效的实现确定出前述多个第一交易的分组信息或者说高效的完成将前述多个第一交易的多个分析结果划分为多个数据分组,通常可以按照位于任意两个不同的数据分组中的任意两个分析结果所分别对应的第一交易不访问相同参数(即不包含相同的key)的要求,来对前述多个第一交易的多个分析结果进行分组。
接着,在步骤S323,控制进程将多个数据分组分发给多个计算进程。
不同的数据分组可以被分发到不同的计算进程。计算进程的数量较少的情况下,也可以将至少两个不同的数据分组分发到相同的计算进程。
步骤S325,计算进程对其接收的数据分组中任意的第i个分析结果,根据第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程。
步骤S327,计算进程根据第i个分析结果包括的交易哈希,从第一管理进程获取第i个分析结果对应的第一交易。
步骤S329,计算进程执行第i个分析结果对应的第一交易。
计算进程可以遍历其接收的数据分组,调用存储接口/存储进程批量读取读写信息中全部的key的value,进而使用读取的key-value对对其接收的数据分组所包括的各个分析结果所分别对应的第一交易进行执行,完成对各个第一交易的执行后即可获得各个第一交易分别对应的由key-value对构成的执行写集,进而通过调用存储接口提交执行写集中的key-value对。
计算进程完成对单个第一交易的执行后,还可以获得该第一交易的收据和交易回执。
下文中为了方便描述而将计算进程接收的数据分组中的若干分析结果所对应的若干第一交易表述为Tx group。计算进程还可以在完成对Tx group中的各个第一交易的执行后,通知控制进程当前计算进程的tx group已经执行完成,此外还可以执行如下步骤S331~步骤S335。
步骤S331,向第一管理进程发送第i个分析结果对应的第一交易的交易回执。
步骤S333,计算第i个分析结果对应的第一交易的收据的收据哈希。
步骤S335,向控制进程发送所述收据哈希。
收据哈希用于支持控制进程生成目标区块的区块头所包括的收据根哈希。
计算进程还可以调用存储接口存储block slice,block slice包括tx group中的若干第一交易以及其对应的若干收据,block slice是将要生成的目标区块的区块体的组成部分。
计算进程还可以在block slice存储完成后,通知控制进程当前计算进程对txgroup的block slice已经持久化完成。与此同时,控制进程等待目标区块的所有tx group均完成执行后,即可调用存储接口commit state,计算得到新的状态根哈希State_Root。控制进程在收到目标区块的所有tx group均存储block slice的通知后,还可以调用存储接口write state进行状态数据持久化,并且此时控制进程可以开始计算本区块的blockheader(tx root,receipt root),并写入block header。最后,控制进程更新metadb中最新生成的目标区块的write block number,通过controller validator模块对blockheaderhash提交确认、完成blockheader hash确认,并将stable block number通知到管理进程。管理进程收到stable block number通知后,对目标区块的第一交易对应的向相关客户端推送交易回执,即调用接入进程向客户端返回第一交易的receipt。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链***中的区块链节点500。参见图5所示,所述区块链节点500包括控制进程501、多个管理进程503和多个计算进程505,其中:所述控制进程501用于从所述多个管理进程503获取多个第一交易的多个分析结果,所述分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;所述控制进程501还用于根据所述多个分析结果各自包括的读写信息,将所述多个分析结果划分为多个数据分组,并将所述多个数据分组分发给所述多个计算进程505;所述计算进程505用于对其接收的数据分组中任意的第i个分析结果,根据所述第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据所述第i个分析结果包括的交易哈希,从所述第一管理进程获取第i个分析结果对应的第一交易,并执行所述第i个分析结果对应的第一交易。
在一种可能的实施方式中,所述控制进程501还用于从所述多个管理进程接收所述多个第一交易的交易哈希和指示信息;所述控制进程501还用于生成共识提议,其中包括所述多个第一交易的交易哈希和指示信息;所述控制进程501还用于对所述共识提议进行共识。
在一种可能的实施方式中,所述管理进程503还用于接收第二交易,所述第二交易属于所述多个第一交易;所述管理进程503还用于基于所述第二交易获取所述第二交易的指示信息,计算所述第二交易的交易哈希,并向所述控制进程501发送所述第二交易的交易哈希和指示信息。
在一种可能的实施方式中,所述区块链节点500还包括第一接入进程;其中,所述第一接入进程用于基于所述第二交易获取所述第二交易的指示信息,根据所述第二交易的指示信息,从所述多个管理进程503中确定出用于管理所述第二交易的第二管理进程,并向所述第二管理进程发送所述第二交易。
在一种可能的实施方式中,所述区块链节点500还包括负载均衡器507和多个接入进程509,所述多个接入进程509中包括所述第一接入进程;其中,所述负载均衡器507用于接收来自客户端的所述第二交易;所述负载均衡器507还用于从所述多个接入进程509中选择所述第一接入进程,并向所述第一接入进程发送所述第二交易。
在一种可能的实施方式中,所述第二管理进程用于向所述区块链***中的其余区块链节点发送所述第二交易。
在一种可能的实施方式中,所述计算进程505还用于向所述第一管理进程发送所述第i个分析结果对应的第一交易的交易回执;所述计算进程505还用于计算所述第i个分析结果对应的第一交易的收据的收据哈希,并向所述控制进程501发送所述收据哈希。
在一种可能的实施方式中,所述第一交易的指示信息包括发起所述第一交易的账户;或者所述第一交易的指示信息基于发起所述第一交易的账户处理得到。
本说明书实施例中还提供了一种计算机可读存储介质,存储有计算机程序/指令,当所述计算机程序/指令在计算机中执行时,令计算机执行前述任意方法实施例中由区块链***中的区块链节点所执行的各个方法步骤。
本说明书实施例中还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码/指令,所述处理器执行所述可执行代码/指令时,实现前述任意方法实施例中由区块链***中的区块链节点所执行的各个方法步骤。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器***。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、***或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (16)
1.一种区块链***中的交易执行方法,所述方法由所述区块链***中的区块链节点执行,所述区块链节点包括控制进程、多个管理进程和多个计算进程,所述方法包括:
所述控制进程从所述多个管理进程获取多个第一交易的多个分析结果,所述分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;
所述控制进程根据所述多个分析结果各自包括的读写信息,将所述多个分析结果划分为多个数据分组,并将所述多个数据分组分发给所述多个计算进程;
所述计算进程对其接收的数据分组中任意的第i个分析结果,根据所述第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据所述第i个分析结果包括的交易哈希,从所述第一管理进程获取第i个分析结果对应的第一交易,并执行所述第i个分析结果对应的第一交易。
2.根据权利要求1所述的方法,所述方法还包括:
所述控制进程从所述多个管理进程接收所述多个第一交易的交易哈希和指示信息;
所述控制进程生成共识提议,其中包括所述多个第一交易的交易哈希和指示信息;
所述控制进程对所述共识提议进行共识。
3.根据权利要求1所述的方法,所述方法还包括:
所述管理进程接收第二交易,所述第二交易属于所述多个第一交易;
所述管理进程基于所述第二交易获取所述第二交易的指示信息,计算所述第二交易的交易哈希,并向所述控制进程发送所述第二交易的交易哈希和指示信息。
4.根据权利要求3所述的方法,所述区块链节点还包括第一接入进程;
其中,所述方法还包括:所述第一接入进程基于所述第二交易获取所述第二交易的指示信息,根据所述第二交易的指示信息,从所述多个管理进程中确定出用于管理所述第二交易的第二管理进程,并向所述第二管理进程发送所述第二交易。
5.根据权利要求4所述的方法,所述区块链节点还包括负载均衡器和多个接入进程,所述多个接入进程中包括所述第一接入进程;其中,所述方法还包括:
所述负载均衡器接收来自客户端的所述第二交易;
所述负载均衡器从所述多个接入进程中选择所述第一接入进程,并向所述第一接入进程发送所述第二交易。
6.根据权利要求4所述的方法,所述方法还包括:所述第二管理进程向所述区块链***中的其余区块链节点发送所述第二交易。
7.根据权利要求1所述的方法,所述方法还包括:
所述计算进程向所述第一管理进程发送所述第i个分析结果对应的第一交易的交易回执;
所述计算进程计算所述第i个分析结果对应的第一交易的收据的收据哈希,并向所述控制进程发送所述收据哈希。
8.根据权利要求1-7中任一项所述的方法,所述第一交易的指示信息包括发起所述第一交易的账户;或者,所述第一交易的指示信息基于发起所述第一交易的账户处理得到。
9.一种区块链***中的区块链节点,所述区块链节点包括控制进程、多个管理进程和多个计算进程,其中:
所述控制进程用于从所述多个管理进程获取多个第一交易的多个分析结果,所述分析结果包括其对应的第一交易的交易哈希、读写信息和指示信息;
所述控制进程还用于根据所述多个分析结果各自包括的读写信息,将所述多个分析结果划分为多个数据分组,并将所述多个数据分组分发给所述多个计算进程;
所述计算进程用于对其接收的数据分组中任意的第i个分析结果,根据所述第i个分析结果包括的指示信息,确定用于管理其对应的第一交易的第一管理进程,根据所述第i个分析结果包括的交易哈希,从所述第一管理进程获取第i个分析结果对应的第一交易,并执行所述第i个分析结果对应的第一交易。
10.根据权利要求9所述的区块链节点,其中:
所述控制进程还用于从所述多个管理进程接收所述多个第一交易的交易哈希和指示信息;
所述控制进程还用于生成共识提议,其中包括所述多个第一交易的交易哈希和指示信息;
所述控制进程还用于对所述共识提议进行共识。
11.根据权利要求9所述的区块链节点,其中:
所述管理进程还用于接收第二交易,所述第二交易属于所述多个第一交易;
所述管理进程还用于基于所述第二交易获取所述第二交易的指示信息,计算所述第二交易的交易哈希,并向所述控制进程发送所述第二交易的交易哈希和指示信息。
12.根据权利要求11所述的区块链节点,所述区块链节点还包括第一接入进程;
其中,所述第一接入进程用于基于所述第二交易获取所述第二交易的指示信息,根据所述第二交易的指示信息,从所述多个管理进程中确定出用于管理所述第二交易的第二管理进程,并向所述第二管理进程发送所述第二交易。
13.根据权利要求12所述的区块链节点,所述区块链节点还包括负载均衡器和多个接入进程,所述多个接入进程中包括所述第一接入进程;其中,
所述负载均衡器用于接收来自客户端的所述第二交易;
所述负载均衡器还用于从所述多个接入进程中选择所述第一接入进程,并向所述第一接入进程发送所述第二交易。
14.根据权利要求12所述的方法,其中:所述第二管理进程用于向所述区块链***中的其余区块链节点发送所述第二交易。
15.根据权利要求9所述的区块链节点,其中:
所述计算进程还用于向所述第一管理进程发送所述第i个分析结果对应的第一交易的交易回执;
所述计算进程还用于计算所述第i个分析结果对应的第一交易的收据的收据哈希,并向所述控制进程发送所述收据哈希。
16.根据权利要求9-15中任一项所述的区块链节点,所述第一交易的指示信息包括发起所述第一交易的账户;或者所述第一交易的指示信息基于发起所述第一交易的账户处理得到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310493508.9A CN116431312A (zh) | 2023-04-28 | 2023-04-28 | 区块链***中的交易执行方法和区块链节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310493508.9A CN116431312A (zh) | 2023-04-28 | 2023-04-28 | 区块链***中的交易执行方法和区块链节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116431312A true CN116431312A (zh) | 2023-07-14 |
Family
ID=87094477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310493508.9A Pending CN116431312A (zh) | 2023-04-28 | 2023-04-28 | 区块链***中的交易执行方法和区块链节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116431312A (zh) |
-
2023
- 2023-04-28 CN CN202310493508.9A patent/CN116431312A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3547170B1 (en) | Blockchain-based consensus method and device | |
CN111756550B (zh) | 一种区块链共识方法及装置 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及*** | |
EP3565219B1 (en) | Service execution method and device | |
CA3054840A1 (en) | Method and apparatus for consensus verification | |
CN114827165B (zh) | 对多个交易进行分组的方法和区块链节点 | |
CN113743942B (zh) | 交易执行方法、区块链、主节点和主存储设备 | |
WO2022061878A1 (en) | Blockchain transaction processing systems and methods | |
CN108989072B (zh) | 一种部署、管理及调用组件的方法及装置 | |
CN115129728A (zh) | 一种文件校验的方法及装置 | |
CN116933886B (zh) | 一种量子计算执行方法、***、电子设备及存储介质 | |
CN116707891A (zh) | 重放攻击检查方法和区块链节点 | |
WO2024001025A1 (zh) | 一种预执行缓存数据清理方法和区块链节点 | |
CN116366666A (zh) | 区块链***中的链状态更新方法和区块链节点 | |
CN115150409B (zh) | 在区块链***中执行交易的方法、区块链***、节点及计算机可读存储介质 | |
CN116431312A (zh) | 区块链***中的交易执行方法和区块链节点 | |
EP3779691B1 (en) | Data processing method and apparatus | |
CN116126971A (zh) | 区块链***中的数据管理方法、装置和存储节点 | |
WO2024092932A1 (zh) | 交易执行方法和区块链节点 | |
CN114697344B (zh) | 区块链***中共识节点的确定方法、区块链***、节点、存储介质及计算设备 | |
CN117808476A (zh) | 区块链***中的交易处理方法和区块链节点 | |
CN117808587A (zh) | 交易去重方法及区块链***中的节点 | |
CN116049310A (zh) | 区块链***中的交易执行方法、存储服务和区块链节点 | |
CN118259954A (zh) | 应用配置信息获取方法、装置、设备及存储介质 | |
CN116244373A (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 |