1.本技术涉及计算机技术领域,尤其涉及一种区块链交易处理方法、装置、电子设备和可读介质。
背景技术:2.在一个区块链系统中,交易的转发是整个系统区块链系统耗时最高的处理过程之一,原因在于网络传输的性能,尤其是随着区块链节点数量的增加,主节点将提案广播至其他节点时,提案的大小是整个网络通信耗时的基准。
3.目前,区块链节点在广播交易提案时,通常会将提案所涉及的交易打包形成交易提案进行广播,以供接收到交易提案的各个节点进行交易的验证和执行。
4.然而,包含交易的交易提案通常占用空间较大,交易提案在区块链节点中被广播的过程中占用通信资源较多,影响区块链节点的交易响应速度,降低区块链系统的整体运行效率。
技术实现要素:5.基于上述技术问题,本技术提供一种区块链交易处理方法、装置、电子设备和可读介质,以减少交易提案消息在通信过程中占用的通信资源,提升区块链节点的交易响应速度以及区块链系统的整体运行效率。
6.本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。
7.根据本技术实施例的一个方面,提供一种区块链交易处理方法,包括:
8.根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息;
9.接收提案节点发送的交易提案消息,交易提案消息中包括指定批次识别信息;
10.根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次;
11.根据指定交易批次中所包含的区块链交易生成交易区块。
12.根据本技术实施例的一个方面,提供一种区块链交易处理装置,包括:
13.交易批次生成模块,用于根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息;
14.提案消息接收模块,用于接收提案节点发送的交易提案消息,交易提案消息中包括指定批次识别信息;
15.交易批次获取模块,用于根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次;
16.交易区块生成模块,用于根据指定交易批次中所包含的区块链交易生成交易区块。
17.在本技术的一些实施例中,基于以上技术方案,交易批次生成模块包括:
18.创建消息接收子模块,用于接收批次创建消息,批次创建消息中包含批次识别信息和相关联的至少两个区块链交易的区块链交易标识;
19.交易获取子模块,用于根据批次创建消息中的区块链交易标识,从交易池中获取与批次识别信息相关联的至少两个区块链交易;
20.交易批次生成子模块,用于根据批次识别信息和所获得的至少两个区块链交易,生成对应于批次识别信息的交易批次。
21.在本技术的一些实施例中,基于以上技术方案,批次识别信息中包含批次标识,批次标识是根据相关联的区块链交易标识生成的;交易获取子模块包括:
22.标识验证单元,用于根据批次创建消息中的区块链交易标识,对批次标识进行验证;
23.交易获取单元,用于若验证通过,则根据区块链交易标识,从交易池中获取区块链交易标识对应的区块链交易;
24.第一消息丢弃单元,用于若验证失败,则停止处理并丢弃批次创建消息。
25.在本技术的一些实施例中,基于以上技术方案,批次识别信息中还包含节点标识,节点标识用于标识生成批次创建消息的批次创建节点;交易获取子模块还包括:
26.其他批次获取单元,用于根据批次创建消息中的节点标识,获取含有节点标识的其他交易批次;
27.第二消息丢弃单元,用于若其他交易批次中包含所获取的区块链交易,则停止处理并丢弃批次创建消息。
28.在本技术的一些实施例中,基于以上技术方案,交易批次获取模块包括:
29.交易批次检索子模块,用于根据交易提案消息,从交易池中检索对应于批次识别信息的指定交易批次;
30.批次获取消息发送子模块,用于交易批次获取单元,用于若交易池中不包含对应于批次识别信息的指定交易批次,则根据指定批次识别信息中的节点标识,向节点标识对应的批次创建节点发送交易批次获取消息,以使批次创建节点响应于交易批次获取消息反馈指定交易批次。
31.在本技术的一些实施例中,基于以上技术方案,交易区块生成模块包括:
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.图1是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图;
68.图2是本发明实施例提供的区块结构一个可选的示意图;
69.图3为本技术实施例中一种区块链交易处理方法的示意流程图;
70.图4为本技术实施例中一种区块链交易处理方法的示意流程图;
71.图5为本技术实施例中一种区块链交易处理方法的示意流程图;
72.图6为本技术实施例中一种区块链交易处理方法的示意流程图;
73.图7为本技术实施例中一种区块链交易处理方法的示意流程图;
74.图8为本技术实施例中批次创建消息处理整体过程的示意性流程图;
75.图9为本技术实施例中交易池的结构示意图;
76.图10为本技术实施例中一种区块链交易处理方法的示意流程图;
77.图11为本技术实施例中一种区块链交易处理方法的示意流程图;
78.图12为本技术实施例中一种区块链交易处理方法的示意流程图;
79.图13为本技术实施例中一种区块链交易处理方法的示意流程图;
80.图14为本技术实施例中一种区块链交易处理方法的示意流程图;
81.图15为本技术实施例中交易提案消息的示意图;
82.图16为本技术实施例中交易提案消息处理过程的示意性流程图;
83.图17为本技术实施例中一种区块链交易处理方法的示意流程图;
84.图18为本技术实施例中交易广播和批次广播的模式示意图;
85.图19为本技术实施例中对于区块链交易消息进行转发的具体流程的示意性流程图;
86.图20为本技术实施例中一种区块链交易处理方法的示意流程图;
87.图21为本技术实施例中批次创建消息的结构的示意图;
88.图22示意性地示出了本技术实施例中区块链交易处理装置的组成框图;
89.图23示出了适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。
具体实施方式
90.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本技术将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
91.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
92.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
93.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
94.应理解,本技术可以应用于区块链系统中,并且具体可以应用于区块链系统中进行交易处理上链的场景中,在区块链系统中,用户想要进行交易时,需要通过客户端发起交易。客户端会向区块链中的节点发送交易消息,区块链节点则在验证所接收到的交易之后,广播给其他节点。区块链系统对交易进行上链的操作通常由主节点执行,主节点会周期性地判断当前的交易状态是否满足生成新区块的条件,当满足条件时,就会发起提案消息,将各个区块链节点进行的交易在区块链中上链。在应用本技术方案的场景中国,区块链的各个节点都会按照一定的规则将其所接收到的交易打包成交易批次,并且将打包的结果发送给区块链中的其他节点。其他节点在接收到交易批次时,会将本地交易池中的区块链交易打包成对应的交易批次。主节点在进行交易提案时,会根据交易池中的交易批次来生成提案消息并且广播,区块链节点在接收到提案消息之后也会根据提案消息中的交易批次来处理各个批次中的区块链交易。
95.本发明实施例涉及的区块链系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。具体
地,请参阅图1,图1是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(p2p,peer to peer)网络,p2p协议是一个运行在传输控制协议(tcp,transmission control protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
96.参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
97.1)路由,节点具有的基本功能,用于支持节点之间的通信。
98.节点除具有路由功能外,还可以具有以下功能:
99.2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
100.例如,应用实现的业务包括:
101.2.1)钱包,用于提供进行虚拟资源的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询虚拟资源地址中剩余的虚拟资源;
102.2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
103.2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的虚拟资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
104.3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
105.参见图2,图2是本发明实施例提供的区块结构(block structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
106.各个区块链节点具体可以是终端设备或者服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器,本处不对此进行限制。终端设备包括但不限于手机、电脑、智能语音交互设
备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。终端设备以及服务器的数量也不做限制。
107.本技术中各个区块链节点对区块链的交易处理过程可以通过人工智能的方式进行智能控制或者通过人工智能来实现。例如,通过人工智能来判断节点当前的交易状态是否需要打包成批次,或者主节点通过人工智能判断区块链系统当前是否需要进行交易提案来生成新的区块等。区块链交易本身也可以由人工智能根据实际条件的情况来发起。人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。
108.本技术中所介绍的区块链系统的各个节点可以通过云计算的方式来实现。云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
109.作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为iaas(infrastructure as a service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
110.可以理解的是,本技术的方案可以在上述的区块链系统中可以用于客户端提出交易以及各个区块链节点进行交易的过程。下面结合具体实施方式对本技术提供的技术方案做出详细说明。
111.为了便于介绍,请参阅图3,图3为本技术实施例中一种区块链交易处理方法的示意流程图。该方法可以应用于上述的区块链节点中。在本技术实施例中,以区块链节点的计算机设备作为执行主体来对区块链交易处理方法进行介绍,该区块链交易处理方法可以包括如下的步骤s310至s340:
112.步骤s310,根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息。
113.在本实施例中,区块链节点根据自身的情况自动生成交易批次,或者从其他区块链节点接收到批次创建消息,应其他区块链节点的要求来生成交易批次。在自动生成交易批次的情况中,区块链节点会周期性地检查节点当前的状态是否满足生成交易批次的条件,如果满足,则会生成交易批次和批次识别消息并且通过批次识别消息通知其他节点生成同样的交易批次。在根据其他节点的要求生成交易批次的情况中,批次创建消息是其他区块链节点将其交易池中待处理的区块链交易打包成交易批次后,根据交易批次生成的消
息。批次创建消息用于消息接收到该消息的节点按照批次创建消息中所提供的批次识别信息,在区块链节点本地的交易池中创建对应的交易批次。可以理解的是,按照批次创建消息所创建的交易批次与发送该消息的节点所创建的交易批次应该是相同的。批次创建消息中包含批次识别信息,批次识别信息是用于标识交易批次的标识信息,其通常会包括批次的标识batchid以及其他相关信息,例如需要打包进批次的区块链交易的信息。每个批次识别标识通常与至少两个区块链交易相关联,即每个交易批次中通常会包括至少两个区块链交易,该相关联的区块链交易是当前在区块链系统中已经提出交易但还未处理的交易。通常,批次创建消息中的交易会存在于接收消息的节点的交易池中。交易批次中区块链交易的具体数量取决于创建交易批次的规则而定,可以理解,每个交易批次中所包括的区块链交易的数量可以不同。
114.区块链节点在接收到批次创建消息之后,根据批次创建消息来创建对应的交易批次。具体地,根据批次创建消息中的批次识别信息可以从本地的交易池中得到相关联的各个区块链交易,随后,将批次识别信息和所得到的区块链交易一起打包生成对应的交易批次。交易批次被会被放回到交易池中。从而将交易池中的待处理交易按照交易批次的形式组织起来。
115.步骤s320,接收提案节点发送的交易提案消息,交易提案消息中包括指定批次识别信息。
116.区块链系统中的主节点会周期性地检查区块链系统的当前状态是否满足执行交易提案的条件。当满足执行交易提案的条件时,会根据其交易池中的交易批次创建并且广播交易提案消息。在交易提案消息中,会指定在本地提案中需要处理的交易批次。因此,区块链节点会从主节点接收到交易提案消息。交易提案消息用于指示接收到该消息的区块链节点根据其中提供的信息来处理交易池中的交易批次。交易提案消息中会包括要处理的交易批次的批次识别信息。交易提案消息中批次识别信息所关联的区块链交易即本次交易提案消息中所需要执行和打包的区块链交易。可以理解的是,一个交易提案消息中通常会包括多个指定批次识别信息,并且各个指定批次识别信息所对应的指定交易批次可以是由不同的区块链节点要求创建的。对于主节点之外的各个节点,交易提案消息中所指定的交易批次可能是由节点自己生成的交易批次,也可能是由其他节点指示生成的交易批次,或者二者都有。
117.步骤s330,根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次。
118.区块链节点在接收到交易提案消息后,会根据交易提案消息,获取对应于指定批次识别信息的指定交易批次。交易批次通常存储在区块链节点的本地交易池中。区块链节点可以根据交易提案消息中的指定批次识别信息,从本地交易池中检索到对应的指定交易批次。在一些情况下,某些区块链交易可能会由于通信延时或者通信故障等原因,导致交易池中并不存在指定批次识别信息对应的指定交易批次,此时,区块链节点可以从主节点或者从要求生成指定交易批次的区块链节点处申请获得对应的指定交易批次。可以理解的是,指定交易批次不一定是当前交易池中所存在的所有交易批次,也可以是交易池中所有交易批次中的一部分。
119.步骤s340,根据指定交易批次中所包含的区块链交易生成交易区块。
120.交易池中的每个交易批次中都会包含至少两个区块链交易。区块链节点会依次对每个指定交易批次中所包含的区块链交易进行交易执行,并且对于每个指定交易批次,还会进行批次验证来确定交易批次中所包含的交易不存在冲突或者重复的情况。在指定交易批次中所包含的区块链交易都执行完毕并且结果验证无误后,区块链节点会将指定交易批次中的区块链交易打包生成交易区块并且在区块链中上链。
121.在本技术的实施例中,区块链节点根据相关联的至少两个区块链交易生成交易批次,再提案消息中指定的交易批次中的区块链交易生成交易区块,由于交易提案消息中仅包括批次识别信息而不需要包括完整的区块链交易,因此能够降低提案消息中所包含的数据量,从而减少交易提案消息在通信过程中占用的通信资源,提升区块链节点的交易响应速度以及区块链系统的整体运行效率。
122.在本技术的一个实施例中,基于以上技术方案,请参阅图4,图4为本技术实施例中一种区块链交易处理方法的示意流程图。如图4所示,上述步骤s310,根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息,具体包括如下步骤:
123.步骤s410,接收批次创建消息,批次创建消息中包含批次识别信息和相关联的至少两个区块链交易的区块链交易标识;
124.步骤s420,根据批次创建消息中的区块链交易标识,从交易池中获取与批次识别信息相关联的至少两个区块链交易;
125.步骤s430,根据批次识别信息和所获得的至少两个区块链交易,生成对应于批次识别信息的交易批次。
126.在本实施例中,区块链节点会根据其他节点发送的批次创建消息来在本地创建交易批次。具体地,区块链节点会从其他节点处接收到其广播的批次创建消息。批次创建消息中会包含批次识别标识和相关的至少两个区块链交易的区块链交易标识。随后,区块链节点会根据批次创建消息中的区块链交易标识,从本地的交易池中获取与批次识别信息相关联的至少两个区块链交易。在一些实施例中,在本地的交易池中并不存在批次创建消息中的区块链交易标识,则区块链节点则可以向主节点或者根据批次创建消息中的信息向生成该区块链交易的节点要求获取该区块链交易。在得到所需要的区块链交易后,区块链节点会将所获得的至少两个区块链交易打包并且与批次识别信息相关联,从而得到对应于批次识别信息的交易批次。交易批次会被放回到交易池中,以供后续在根据交易提案进行交易上链时使用。
127.在本实施例中,区块链节点可以根据其他区块链节点的要求创建交易批次,从而避免创建交易批次的计算工作集中在单个节点上而导致节点计算压力过大而成为运行效率瓶颈,有利于提升方案的稳定性。
128.在本技术的一个实施例中,基于以上技术方案,批次识别信息中包含批次标识,批次标识是根据相关联的区块链交易标识生成的。请参阅图5,图5为本技术实施例中一种区块链交易处理方法的示意流程图。如图5所示,上述步骤s420,根据批次创建消息中的区块链交易标识,从交易池中获取与批次识别信息相关联的至少两个区块链交易,具体包括如下步骤:
129.步骤s510,根据批次创建消息中的区块链交易标识,对批次标识进行验证;
130.步骤s520,若验证通过,则根据区块链交易标识,从交易池中获取区块链交易标识对应的区块链交易;
131.步骤s530,若验证失败,则停止处理并丢弃批次创建消息。
132.在本实施例中,批次识别信息中包含批次标识,并且批次标识是根据相关联的区块链交易标识生成的。最初要求创建交易批次的区块链节点在生成交易批次时,会根据要加入到交易批次中的所有区块链交易的交易标识进行加密或者转换运算,将结算结果作为批次标识,该批次标识与交易批次中的所有区块链交易的交易标识之间存在固定且唯一的映射关系,即只能根据特定的交易标识来的得到该批次标识,任何修改都会导致无法根据映射关系得到批次标识,从而能够确保批次创建消息中所指定的区块链交易与最初要求打包到交易批次中的区块链交易是相符合的。因此,接收到批次创建消息的区块链节点,则会根据批次创建消息中的区块链交易标识对该批次标识进行验证。具体地,可以根据交易批次中各个区块链交易的交易标识的默克尔根,来生成批次标识。如果区块链节点对批次标识验证通过,则会根据批次创建消息中的区块链交易标识,从交易池中获取区块链交易标识对应的区块链交易。这些区块链交易是通常是从其他区块链节点的广播消息中接收到的区块链交易,并且这些区块链交易未被打包成交易批次,而是单独存在于交易池中。如果区块链节点对批次标识验证失败,则表示该批次创建消息中所指定的区块链交易标识与一开始生成交易批次是要打包的交易不同,即批次创建消息中指定了不应该加入到该交易批次中的区块链交易。此时,区块链节点会将该批次创建消息丢弃,并且结束该处理过程。
133.在本实施例中,通过批次创建消息中的区块链交易标识来对批次标识进行验证,能够防止在交易批次中加入不属于该批次的区块链交易,避免区块链节点作恶,从而能够提升方案的安全性。
134.在本技术的一个实施例中,基于以上技术方案,批次识别信息中还包含节点标识,节点标识用于标识生成批次创建消息的批次创建节点。请参阅图6,图6为本技术实施例中一种区块链交易处理方法的示意流程图。如图6所示,上述步骤s520,根据区块链交易标识,从交易池中获取区块链交易标识对应的区块链交易,具体包括如下步骤:
135.步骤s610,根据批次创建消息中的节点标识,获取含有节点标识的其他交易批次;
136.步骤s620,若其他交易批次中包含所获取的区块链交易,则停止处理并丢弃批次创建消息。
137.在本实施例中,区块链节点在处理批次创建消息时,会验证同一个节点要求创建的交易批次之间是否存在相同交易,如果存在,则认为该节点存在作恶现象,而将正在处理的批次创建消息丢弃。具体地,对于同一个节点,其所要求打包进交易批次中的区块链交易应该是不同的,即,同一个节点的不同交易批次之间不允许存在重复交易。如果任何一笔区块链交易在同一个节点的不同批次之间存在重复,则会被认为是作恶行为,节点会将正在处理的交易批次丢弃掉。具体地,区块链节点会根据批次创建消息中批次识别信息包含的节点标识,从交易池中获取含有该节点标识的其他交易批次。批次识别信息中的节点标识用于标识生成批次创建消息的批次创建节点,因此,所获得到的这些其他交易批次与当前正要创建交易批次是由同一个批次创建节点创建的。区块链节点会根据批次创建消息中的区块链交易标识,检查要打包到交易批次中的区块链交易在所得到的其他交易批次中是否存在。如果其他交易批次中包含所获取的区块链交易,则区块链节点会停止处理并丢弃当
前的批次创建消息。如果其他交易批次中不包含所获取的区块链交易,则会继续检查下一个区块链交易,直至确认所有区块链节点在其他交易批次中都不重复,则可以继续生成交易批次。
138.在本实施例中,区块链节点会检查同一个节点所要求创建的交易批次中不存在重复的交易,从而能够避免节点作恶而在区块链中加入相互冲突或者重复的数据,提升方案运行的安全性。
139.在本技术的一个实施例中,基于以上技术方案,请参阅图7,图7为本技术实施例中一种区块链交易处理方法的示意流程图。如图7所示,上述步骤s330,根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次,具体包括如下步骤:
140.步骤s710,根据交易提案消息,从交易池中检索对应于批次识别信息的指定交易批次;
141.步骤s720,若交易池中不包含对应于批次识别信息的指定交易批次,则根据指定批次识别信息中的节点标识,向节点标识对应的批次创建节点发送交易批次获取消息,以使批次创建节点响应于交易批次获取消息反馈指定交易批次。
142.在本技术的实施例中,如果区块链节点发现其本地交易池中不存在交易提案消息中所指定的交易批次,则会向要求创建该交易批次的批次创建节点请求获取对应的交易批次。具体地,区块链节点会根据交易提案消息,从交易池中检索对应于批次识别信息的指定交易批次。如果能够从交易池中获取到对应于批次识别信息的指定交易批次,则直接继续进行后续的处理过程。如果交易池中不包含对应于批次识别信息的指定交易批次,则区块链节点会从批次识别信息中获取批次创建节点的节点标识,然后根据该节点标识向批次创建节点发送交易批次获取消息,该交易批次获取消息中通常会包括交易批次的批次识别信息。批次创建节点则会根据交易批次获取消息向区块链节点反馈对应的交易批次,从而继续进行后续处理。
143.在本实施例中,区块链节点在不能从本地交易池中获取到交易提案消息中指定的交易批次时,会从原始创建该交易批次的区块链节点获得该交易批次,而不从主节点获取,从而降低主节点的处理压力和计算压力,提升方案的运行效率。
144.下面对本技术实施例中对于批次创建消息的整体处理过程进行整体介绍。请参阅图8,图8为本技术实施例中批次创建消息处理整体过程的示意性流程图。如图8所示,节点在开始进行处理后,在步骤810中,会从其他节点接收到要求创建批次batch的批次创建消息,并且通过unmarshal函数从消息中解码出batch对象实例。随后,在步骤820中,会检查批次标识batchid是否合法。具体的检查内容是检查batchid是否满足特定的生成规则。如果不满足,直接丢弃批次创建消息并结束该过程。如果满足,则在步骤830中,会初始化交易集合a,最后,在步骤840中,初始化遍历计数器i=0,并且开始遍历batch中的各个区块链交易tx。在遍历过程中,在步骤850中会获取区块链交易tx=a[i],随后,在步骤860中判断该区块链交易tx与已经接收到的该节点的批次中的区块链交易是否重复。如果出现重复,则丢弃该批次创建消息并且结束处理过程。如果并未重复,则在步骤870中判断区块链交易tx的内容是否合法。如果合法,则在步骤880中,通过将计数器i递增来继续进行遍历过程,并且在步骤890中判断计数器i是否大于交易集合a的长度,如果计数器i不大于交易集合a的长度,则会到步骤850继续执行。如果计数器i大于交易集合a的长度,则过程结束。所得到的交
易集合a则可以打包成为交易批次。
[0145]
打包的交易批次会被存储在交易池中。具体地,请参阅图9,图9为本技术实施例中交易池的结构示意图。如图9所示,交易池中的区块链交易通过批次的形式组织,其中交易批次batch1_0和交易批次batch1_1来自于相同的节点,其他节点均来自不同的节点。其中,不同节点的交易批次之间交易是可以重复的,而相同节点的不同交易批次之间交易不能重复。此外,交易池的交易批次中的交易与区块链的账本中的交易也可以重复,重复的交易在打包上链的过程中会被排除。
[0146]
在本技术的一个实施例中,基于以上技术方案,请参阅图10,图10为本技术实施例中一种区块链交易处理方法的示意流程图。如图10所示,上述步骤s340,根据指定交易批次中所包含的区块链交易生成交易区块,具体包括如下步骤:
[0147]
步骤s1010,根据指定交易批次中的至少两个区块链交易,生成待处理交易集合,待处理交易集合中包括至少一个区块链交易;
[0148]
步骤s1020,根据待处理交易集合中的各个区块链交易以及交易提案消息进行提案验证,得到提案验证结果;
[0149]
步骤s1030,根据提案验证结果,将待处理交易集合中的各个区块链交易打包生成交易区块。
[0150]
在本实施例中,在进行交易提案处理的过程中,区块链节点会根据指定交易批次中的区块链交易以及交易提案消息进行提案验证,以确定区块链节点所获取到的要打包的区块链交易与交易提案中所指定的区块链交易是否相同。如果相同,则会继续进行区块链交易的执行和打包过程,如果不同,则会不会将交易打包上链,并且向其他节点指示不同意该交易提案消息所提出的上链内容。区块链节点首先根据指定交易批次中的至少两个区块链交易进行去重操作,生成待处理交易集合,待处理交易集合中包括至少一个区块链交易。其中,指定交易批次可能是由不同的节点要求创建的交易批次,因此,不同节点创建交易批次之间可能会存在重复区块链交易。并且,不同节点创建交易批次之间可能会存在重复区块链交易,当存在重复区块链交易的批次在先后的两个交易提案消息中被指定上链时,交易批次与区块链的账本之间也可能存在重复的交易。在生成待处理交易集合的过程中,这些重复的交易会在生成待处理交易集合的过程中被排除点。因此,可以理解的是待处理交易集合中所包括的区块链交易的数量可以等于或者小于交易提案消息中的指定交易批次中所包含的区块链交易的总量。随后,区块链节点会根据待处理交易集合中的各个区块链交易以及交易提案消息进行提案验证,得到提案验证结果。具体的验证内容主要为对待处理交易集合中的各个区块链交易以及交易提案消息所指定的交易批次中的区块链交易之间的匹配性进行检查。由于待处理交易集合中所包含的区块链交易是从本地交易池中获取的,因此可能会由于传输问题或者作恶行为而导致与生成交易提案消息时所指定的区块链交易的实际内容不符,因此区块链节点会根据节点中记录的账本内容来模拟执行区块链交易的内容来确认其交易是否能够进行以及结果是否匹配,也可以进行默克尔根计算来验证交易中的交易签名是否准确等验证,从而得到提案验证结果。根据提案验证结果,区块链节点会将待处理交易集合中的各个区块链交易打包生成交易区块。
[0151]
在本技术的实施例中,介绍了对于交易提案消息的具体处理方式,有利于提升方案的可操作性。
[0152]
在本技术的一个实施例中,基于以上技术方案,请参阅图11,图11为本技术实施例中一种区块链交易处理方法的示意流程图。如图11所示,上述步骤s1010,根据指定交易批次中的至少两个区块链交易,生成待处理交易集合,具体包括如下步骤:
[0153]
步骤s1110,获取指定交易批次中的至少两个区块链交易,得到待处理交易集合;
[0154]
步骤s1120,确认交易集合中的各个区块链交易在区块链中是否存在;
[0155]
步骤s1130,若待处理交易集合中的任意区块链交易在区块链中存在,则将区块链交易从待处理交易集合中删除。
[0156]
在本实施例中,对于指定交易批次中的区块链交易,区块链节点会将区块链交易与区块链账本中上链的区块链交易进行相比较,如果指定交易批次中的区块链交易已经存在于区块链中,则会跳过该区块链交易。具体地,区块链节点首先会获取指定交易批次中的至少两个区块链交易,得到待处理交易集合,随后确认交易集合中的各个区块链交易在区块链中是否存在。具体地的确认过程可以通过根据区块链交易的区块链交易标识来进行比对的方式进行。如果待处理交易集合中的任意区块链交易在区块链中存在,则直接将该区块链交易从待处理交易集合中删除,从而确保待处理交易集合中不存在与区块链中的区块链交易重复的交易。具体的处理过程可以通过循环或者递归的方式进行,依次查询每个区块链交易在区块链中是否存在。
[0157]
在本技术的实施例中,在获取待处理的区块链交易时,要确认区块链交易是否在区块链中已经存在,如果已经存在,则跳过处理该区块链交易,从而能够确保区块链中交易数据的一致性,从而提升本技术方案数据的准确性和一致性。
[0158]
在本技术的一个实施例中,基于以上技术方案,交易提案消息中包括多个指定批次识别信息,请参阅图12,图12为本技术实施例中一种区块链交易处理方法的示意流程图。如图12所示,上述步骤s1010,根据指定交易批次中的至少两个区块链交易,生成待处理交易集合,具体包括如下步骤:
[0159]
步骤s1210,获取对应于多个指定批次识别信息的多个指定交易批次中任意指定交易批次的区块链交易,得到待处理交易集合;
[0160]
步骤s1210,对于多个指定交易批次中剩余交易批次的区块链交易,若剩余交易批次的区块链交易在待处理交易集合中不存在,则将剩余交易批次的区块链交易加入到待处理交易集合中;
[0161]
步骤s1210,若剩余交易批次的区块链交易在交易集合中存在,则跳过剩余交易批次的区块链交易。
[0162]
在本实施例中,区块链节点在获取待处理的区块链交易时,会确认多个指定交易批次中的区块链交易是否存在重复。如果出现重复,则会跳过重复的区块链交易。具体地,区块链节点首先会获取对应于多个指定批次识别信息的多个指定交易批次中任意指定交易批次的区块链交易,得到待处理交易集合。随后,对于剩余的交易批次的区块链交易,检查其在待处理交易集合中是否存在。如果剩余交易批次的区块链交易在待处理交易集合中不存在,则可以将该区块链交易加入到待处理交易集合中。如果剩余交易批次的区块链交易在待处理交易集合中存在,则表示该区块链交易时重复的交易,区块链节点会跳过该交易来继续处理下一个区块链交易。直到多个指定交易批次中所有的区块链交易被处理后,则得到最后的待处理交易集合。
[0163]
在本技术的实施例中,通过检查要处理的多个指定交易批次之间的是否存在重复交易,并且将重复交易跳过,从而确保所生成的交易区块中不存在,提升方案数据准确性。
[0164]
在本技术的一个实施例中,基于以上技术方案,交易提案消息中包括区块校验信息;请参阅图13,图13为本技术实施例中一种区块链交易处理方法的示意流程图。如图13所示,上述步骤s1020,根据待处理交易集合中的各个区块链交易以及交易提案消息进行提案验证,具体包括如下步骤:
[0165]
步骤s1310,根据待处理交易集合中各个区块链交易的执行结果和区块链交易标识,生成区块验证信息;
[0166]
步骤s1320,若区块验证信息与区块校验信息相匹配,则生成通过结果,以指示提案验证通过;
[0167]
步骤s1330,若区块验证信息与区块校验信息不匹配,则生成失败结果,以指示提案验证失败。
[0168]
在本实施例中,主节点在生成交易提案消息时,会根据指定交易批次中的交易生成对应的区块校验信息blockhash,而区块链节点在根据交易提案消息确定要打包的区块链交易后,也会采用相同的方式生成区块验证信息,通过区块校验信息与区块验证信息是否匹配来进行提案校验。具体地,区块链节点会执行待处理交易集合中各个区块链交易,得到执行结果,将执行结果与区块链交易标识一起,按照预定的算法进行哈希运算或者其他类型的加密运算,从而得到区块验证信息。如果区块验证信息与区块校验信息相匹配,则表示验证通过,则会生成通过结果。如果区块验证信息与区块校验信息不匹配,表示待处理交易集合中区块链交易中存在问题,与根据交易提案消息应打包的区块链交易不符,则会生成验证失败结果。
[0169]
在本技术的一个实施例中,基于以上技术方案,请参阅图14,图14为本技术实施例中一种区块链交易处理方法的示意流程图。如图14所示,上述步骤s320,接收提案节点发送的交易提案消息之前,本技术的方案还包括如下步骤:
[0170]
步骤s1410,当满足预设的提案生成条件时,获取交易池中的指定交易批次;
[0171]
步骤s1420,根据各个交易批次中各个区块链交易的执行结果和区块链交易标识,生成区块校验信息;
[0172]
步骤s1430,根据区块校验信息以及各个交易批次中的批次识别信息,生成交易提案消息。
[0173]
在本实施例中,区块链节点为主节点。区块链节点会周期性地检查其当前状态是否满足预设的提案生成条件,例如交易池中的交易数量是否满足条件或者距离上一次进行提案的时间间隔是否满足条件等。当满足预设的提案生成条件时,区块链节点会获取交易池中的指定交易批次,指定交易批次通常按照预定的规则指定,例如,根据一次提案中所包含的最大批次数量或者最大交易数量,按照交易批次创建的时间顺序来指定。然后,区块链节点根据各个交易批次中各个区块链交易的执行结果和区块链交易标识,生成区块校验信息。具体地,区块链节点会模拟执行各个区块链交易,从而获得执行接结果,再与区块链交易标识一起经过预设的算法来计算的得到区块校验信息。最后,区块链节点根据区块校验信息以及各个交易批次中的批次识别信息,生成交易提案消息。具体地,请参阅图15,图15为本技术实施例中交易提案消息的示意图。如图15所示,在交易提案消息中,会包含交易区
块的区块头blockheader,以及交易提案中所指定的交易批次的批次识别信息。
[0174]
在本技术的实施例中,仅根据区块校验信息和交易批次的批次识别信息生成交易提案消息,从而有利于降低交易提案消息的数据量,从而加快交易提案消息的传输效率。
[0175]
下面在一个具体的实施例中,介绍本技术中对于交易提案消息的具体处理过程。请参阅图16,图16为本技术实施例中交易提案消息处理过程的示意性流程图。如图16所示,区块链节点会从其他节点获取到用于提议将区块block上链的消息,并且在步骤1610中获取到block对象实例。随后,在步骤1620中,判断区块高度是否合规,并且此处主要判断生成该区块的节点是否按照规则要求的节点。如果不合规,则直接丢弃该交易提案消息并且结束流程。如果合规,则在步骤1630中,区块链节点获取区块中所有的批次集合bs,并随后在步骤1640中初始化交易集合txsmap[txid]tx。在步骤1641中,会创建遍历索引i=0并开始遍历批次集合。在步骤1650中,区块链节点获取批次b=bs[i],随后,在步骤1660中,从本地交易池中获取批次b对应的所有交易tsi。区块链节点在步骤1670中会判断tsi是否为空,如果为空,则进入步骤1671中,设置超时时间,并从对应节点获取对应批次。之后,在步骤1672中,检查指定时间内是否获取到批次,并且在为未获取到的情况下,为该交易提案投票为不同意。如果tsi不为空或者在指定时间内获取到了批次,则进入步骤1680,初始化交易集txarray[i]。之后,区块链节点会在步骤1681中初始化遍历索引j=0,并且开始遍历交易集。具体地,在步骤1682中,获取交易tx=txarray[i][j],然后在步骤1683中判断交易tx在账本中是否存在以及在步骤1684中判断交易tx在txs中是否存在。如果在二者中都不存在,则在步骤1685中,将交易tx加入到交易集合txs中。随后,区块链在步骤1686中将遍历索引j递增,并且在步骤1687中判断索引j是否大于交易集txarray[i]的长度。如果索引j不大于交易集txarray[i]的长度,则回到步骤1682来继续遍历交易集txarray[i]。如果索引j大于交易集txarray[i]的长度,则在步骤1688中,会将遍历索引i递增,并且在步骤1689中判断索引i是否大于批次集合bs的长度。如果索引i不大于批次集合bs的长度,则回到步骤1650继续进行遍历批次集合bs。如果索引i大于批次集合bs的长度,则会进入步骤1690,根据交易集合txs生成对应的区块哈希值blockhash,其中包括但不限于执行交易以及计算默克尔根。随后,在步骤1691中,区块链节点会判断生成的区块哈希值blockhash与节点发送的区块中携带的区块哈希值blockhash是否相同,如果不相同,则会对交易提案消息投票不同意,如果相同,则会投票同意。
[0176]
在本技术的一个实施例中,基于以上技术方案,请参阅图17,图17为本技术实施例中一种区块链交易处理方法的示意流程图。如图17所示,上述步骤s310,根据相关联的至少两个区块链交易生成交易批次之前,本技术的方案还包括如下步骤:
[0177]
步骤s1710,接收交易节点发送的区块链交易消息并将区块链交易消息保存到交易池中,区块链交易消息中携带区块链交易标识;
[0178]
步骤s1720,根据区块链交易标识以及交易标识映射关系,确定消息接收节点的节点标识;
[0179]
步骤s1730,根据消息接收节点的节点标识,向消息接收节点转发区块链交易消息。
[0180]
在本技术的实施例中,区块链节点在接收到区块链交易之后,会按照一定的规则将区块链交易在区块链节点中广播。具体地,区块链节点会接收交易节点发送的区块链交
易消息并将区块链交易消息保存到交易池中,其中,交易节点是提出该区块链交易的区块链节点,其会生成区块链交易标识并且在区块链交易消息中会携带区块链交易标识。随后,区块链节点根据区块链交易标识以及交易标识映射关系,确定消息接收节点的节点标识。交易标识映射关系可以采用取模的方式来进行计算。随后,区块链节点根据消息接收节点的节点标识,向消息接收节点转发区块链交易消息。可以理解的是,上述的转发过程也可以应用于批次创建消息的转发过程。在一个实施例中,区块链节点也可以不转发区块链交易消息,即由交易节点向区块链系统中的所有节点广播区块链交易消息。为了便于介绍,请参阅图18,图18为本技术实施例中交易广播和批次广播的模式示意图。如图18所示,在模式一中,节点node0在生成批次batch后,向所有的其他节点node1至node3发送该批次。而在模式二中,各个节点之间则会相互转发批次。例如,节点node0交易tx1相关的批次batch发送给节点node1,在再由节点node1转发给其他节点。图18中还示出了将两种模式结合的方案,即通过模式一来广播区块链交易消息,而通过模式二来广播批次创建消息。图19为本技术实施例中对于区块链交易消息进行转发的具体流程的示意性流程图。如图19所示,区块链节点在接收到交易tx后,在步骤1910中会通过unmarshal函数或到交易对象实例,随后,在步骤1920中,判断交易是否合法。具体地,包括检查交易是否重复、交易发送事件是否合法以及交易时间戳是否符合等校验内容。如果校验失败,则会将该交易tx丢弃,如果校验通过,则在步骤1930中,会根据交易转发策略将交易转发至对应节点。
[0181]
在本技术的一个实施例中,基于以上技术方案,请参阅图20,图20为本技术实施例中一种区块链交易处理方法的示意流程图。如图20所示,上述步骤s310,根据相关联的至少两个区块链交易生成交易批次之前,本技术的方案还包括如下步骤:
[0182]
步骤s2010,获取区块链节点的节点标识以及交易池中未打包成交易批次的未打包交易;
[0183]
步骤s2020,若未打包交易满足预设的批次生成条件,则根据节点标识和未打包交易的交易标识生成交易批次的批次识别信息;
[0184]
步骤s2030,根据批次标识和未打包交易,生成交易批次和批次创建消息;
[0185]
步骤s2040,向区块链中的各个区块链节点发送批次创建消息。
[0186]
在本实施例中,区块链节点在判断需要创建交易批次时,会获取区块链节点的节点标识以及交易池中未打包成交易批次的未打包交易。如果未打包交易满足预设的批次生成条件,则根据节点标识和未打包交易的交易标识生成交易批次的批次识别信息。随后,根据批次标识和未打包交易,生成交易批次和批次创建消息,并且向区块链中的各个区块链节点发送批次创建消息。请参阅图21,图21为本技术实施例中批次创建消息的结构的示意图。如图21所示,在批次创建消息中,会包括未打包的交易tx以及批次识别信息nodeid+batchid,其中nodeid为节点标识,batchid为批次标识。其中,批次标识batchid是根据各个区块链交易的交易标识构建默克尔树来生成的。在批次创建消息中还会包括对批次标识batchid生成的签名,以便于对批次标识batchid进行校验。
[0187]
应当注意,尽管在附图中以特定顺序描述了本技术中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0188]
以下介绍本技术的装置实施,可以用于执行本技术上述实施例中的区块链交易处理方法。图22示意性地示出了本技术实施例中区块链交易处理装置的组成框图。如图22所示,区块链交易处理装置2200主要可以包括:
[0189]
交易批次生成模块2210,用于根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息;
[0190]
提案消息接收模块2220,用于接收提案节点发送的交易提案消息,交易提案消息中包括指定批次识别信息;
[0191]
交易批次获取模块2230,用于根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次;
[0192]
交易区块生成模块2240,用于根据指定交易批次中所包含的区块链交易生成交易区块。
[0193]
在本技术的一些实施例中,基于以上技术方案,交易批次生成模块2210包括:
[0194]
创建消息接收子模块,用于接收批次创建消息,批次创建消息中包含批次识别信息和相关联的至少两个区块链交易的区块链交易标识;
[0195]
交易获取子模块,用于根据批次创建消息中的区块链交易标识,从交易池中获取与批次识别信息相关联的至少两个区块链交易;
[0196]
交易批次生成子模块,用于根据批次识别信息和所获得的至少两个区块链交易,生成对应于批次识别信息的交易批次。
[0197]
在本技术的一些实施例中,基于以上技术方案,批次识别信息中包含批次标识,批次标识是根据相关联的区块链交易标识生成的;交易获取子模块包括:
[0198]
标识验证单元,用于根据批次创建消息中的区块链交易标识,对批次标识进行验证;
[0199]
交易获取单元,用于若验证通过,则根据区块链交易标识,从交易池中获取区块链交易标识对应的区块链交易;
[0200]
第一消息丢弃单元,用于若验证失败,则停止处理并丢弃批次创建消息。
[0201]
在本技术的一些实施例中,基于以上技术方案,批次识别信息中还包含节点标识,节点标识用于标识生成批次创建消息的批次创建节点;交易获取子模块还包括:
[0202]
其他批次获取单元,用于根据批次创建消息中的节点标识,获取含有节点标识的其他交易批次;
[0203]
第二消息丢弃单元,用于若其他交易批次中包含所获取的区块链交易,则停止处理并丢弃批次创建消息。
[0204]
在本技术的一些实施例中,基于以上技术方案,交易批次获取模块2230包括:
[0205]
交易批次检索子模块,用于根据交易提案消息,从交易池中检索对应于批次识别信息的指定交易批次;
[0206]
批次获取消息发送子模块,用于交易批次获取单元,用于若交易池中不包含对应于批次识别信息的指定交易批次,则根据指定批次识别信息中的节点标识,向节点标识对应的批次创建节点发送交易批次获取消息,以使批次创建节点响应于交易批次获取消息反馈指定交易批次。
[0207]
在本技术的一些实施例中,基于以上技术方案,交易区块生成模块2240包括:
[0208]
交易集合生成子模块,用于根据指定交易批次中的至少两个区块链交易,生成待处理交易集合,待处理交易集合中包括至少一个区块链交易;
[0209]
提案验子模块,用于根据待处理交易集合中的各个区块链交易以及交易提案消息进行提案验证,得到提案验证结果;
[0210]
交易打包子模块,用于根据提案验证结果,将待处理交易集合中的各个区块链交易打包生成交易区块。
[0211]
在本技术的一些实施例中,基于以上技术方案,交易集合生成子模块包括:
[0212]
第一交易集合获取单元,用于获取指定交易批次中的至少两个区块链交易,得到待处理交易集合;
[0213]
交易确认单元,用于确认交易集合中的各个区块链交易在区块链中是否存在;
[0214]
交易删除单元,用于若待处理交易集合中的任意区块链交易在区块链中存在,则将区块链交易从待处理交易集合中删除。
[0215]
在本技术的一些实施例中,基于以上技术方案,交易提案消息中包括多个指定批次识别信息,交易集合生成子模块,包括:
[0216]
第二交易集合获取单元,用于获取对应于多个指定批次识别信息的多个指定交易批次中任意指定交易批次的区块链交易,得到待处理交易集合;
[0217]
交易添加单元,用于对于多个指定交易批次中剩余交易批次的区块链交易,若剩余交易批次的区块链交易在待处理交易集合中不存在,则将剩余交易批次的区块链交易加入到待处理交易集合中;
[0218]
交易跳过单元,用于若剩余交易批次的区块链交易在交易集合中存在,则跳过剩余交易批次的区块链交易。
[0219]
在本技术的一些实施例中,基于以上技术方案,交易提案消息中包括区块校验信息,提案验子模块包括:
[0220]
验证信息生成单元,用于根据待处理交易集合中各个区块链交易的执行结果和区块链交易标识,生成区块验证信息;
[0221]
第一结果生成单元,用于若区块验证信息与区块校验信息相匹配,则生成通过结果,以指示提案验证通过;
[0222]
第二结果生成单元,用于若区块验证信息与区块校验信息不匹配,则生成失败结果,以指示提案验证失败。
[0223]
在本技术的一些实施例中,基于以上技术方案,区块链交易处理装置还包括:
[0224]
指定批次获取模块,用于当满足预设的提案生成条件时,获取交易池中的指定交易批次;
[0225]
校验信息生成模块,用于根据各个交易批次中各个区块链交易的执行结果和区块链交易标识,生成区块校验信息;
[0226]
提案消息模块,用于根据区块校验信息以及各个交易批次中的批次识别信息,生成交易提案消息。
[0227]
在本技术的一些实施例中,基于以上技术方案,区块链交易处理装置还包括:
[0228]
交易消息接收模块,用于接收交易节点发送的区块链交易消息并将区块链交易消息保存到交易池中,区块链交易消息中携带区块链交易标识;
[0229]
节点标识确认模块,用于根据区块链交易标识以及交易标识映射关系,确定消息接收节点的节点标识;
[0230]
交易消息转发模块,用于根据消息接收节点的节点标识,向消息接收节点转发区块链交易消息。
[0231]
在本技术的一些实施例中,基于以上技术方案,交易批次生成模块2210包括:
[0232]
未打包交易获取子模块,用于获取区块链节点的节点标识以及交易池中未打包成交易批次的未打包交易;
[0233]
识别信息生成子模块,用于若未打包交易满足预设的批次生成条件,则根据节点标识和未打包交易的交易标识生成交易批次的批次识别信息;
[0234]
创建消息生成子模块,用于根据批次标识和未打包交易,生成交易批次和批次创建消息;
[0235]
创建消息发送子模块,用于向区块链中的各个区块链节点发送批次创建消息。
[0236]
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
[0237]
图23示出了适于用来实现本技术实施例的电子设备的计算机系统的结构示意图。
[0238]
需要说明的是,图23示出的电子设备的计算机系统2300仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0239]
如图23所示,计算机系统2300包括中央处理单元(central processing unit,cpu)2301,其可以根据存储在只读存储器(read-only memory,rom)2302中的程序或者从储存部分2308加载到随机访问存储器(random access memory,ram)2303中的程序而执行各种适当的动作和处理。在ram 2303中,还存储有系统操作所需的各种程序和数据。cpu 2301、rom2302以及ram 2303通过总线2304彼此相连。输入/输出(input/output,i/o)接口2305也连接至总线2304。
[0240]
以下部件连接至i/o接口2305:包括键盘、鼠标等的输入部分2306;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分2307;包括硬盘等的储存部分2308;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分2309。通信部分2309经由诸如因特网的网络执行通信处理。驱动器2310也根据需要连接至i/o接口2305。可拆卸介质2311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2310上,以便于从其上读出的计算机程序根据需要被安装入储存部分2308。
[0241]
特别地,根据本技术的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2309从网络上被下载和安装,和/或从可拆卸介质2311被安装。在该计算机程序被中央处理单元(cpu)2301执行时,执行本技术的系统中限定的各种功能。
[0242]
需要说明的是,本技术实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以
是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0243]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0244]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0245]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本技术实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本技术实施方式的方法。
[0246]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
[0247]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
技术特征:1.一种区块链交易处理方法,其特征在于,包括:根据相关联的至少两个区块链交易生成交易批次,所述交易批次中包含有所述交易批次对应的批次识别信息;接收提案节点发送的交易提案消息,所述交易提案消息中包括指定批次识别信息;根据所述交易提案消息,从所生成的交易批次中获取对应于所述指定批次识别信息的指定交易批次;根据所述指定交易批次中所包含的区块链交易生成交易区块。2.根据权利要求1所述的方法,其特征在于,所述根据相关联的至少两个区块链交易生成交易批次,所述交易批次中包含有所述交易批次对应的批次识别信息,包括:接收批次创建消息,所述批次创建消息中包含批次识别信息和相关联的至少两个区块链交易的区块链交易标识;根据所述批次创建消息中的区块链交易标识,从交易池中获取与所述批次识别信息相关联的至少两个区块链交易;根据所述批次识别信息和所获得的至少两个区块链交易,生成所述对应于所述批次识别信息的交易批次。3.根据权利要求2所述的方法,其特征在于,所述批次识别信息中包含批次标识,所述批次标识是根据相关联的区块链交易标识生成的;所述根据所述批次创建消息中的区块链交易标识,从交易池中获取与所述批次识别信息相关联的至少两个区块链交易,包括:根据所述批次创建消息中的区块链交易标识,对所述批次标识进行验证;若验证通过,则根据所述区块链交易标识,从交易池中获取所述区块链交易标识对应的区块链交易;若验证失败,则停止处理并丢弃所述批次创建消息。4.根据权利要求3所述的方法,其特征在于,所述批次识别信息中还包含节点标识,所述节点标识用于标识生成批次创建消息的批次创建节点;所述根据所述区块链交易标识,从交易池中获取所述区块链交易标识对应的区块链交易之后,所述方法还包括:根据所述批次创建消息中的节点标识,获取含有所述节点标识的其他交易批次;若所述其他交易批次中包含所获取的区块链交易,则停止处理并丢弃所述批次创建消息。5.根据权利要求3所述的方法,其特征在于,所述根据所述交易提案消息,从所生成的交易批次中获取对应于所述指定批次识别信息的指定交易批次,包括:根据所述交易提案消息,从交易池中检索对应于所述批次识别信息的指定交易批次;若所述交易池中不包含对应于所述批次识别信息的指定交易批次,则根据所述指定批次识别信息中的节点标识,向所述节点标识对应的批次创建节点发送交易批次获取消息,以使所述批次创建节点响应于所述交易批次获取消息反馈所述指定交易批次。6.根据权利要求1所述的方法,其特征在于,所述根据所述指定交易批次中所包含的区块链交易生成交易区块,包括:根据所述指定交易批次中的所述至少两个区块链交易,生成待处理交易集合,所述待处理交易集合中包括至少一个区块链交易;根据所述待处理交易集合中的各个区块链交易以及所述交易提案消息进行提案验证,
得到提案验证结果;根据所述提案验证结果,将所述待处理交易集合中的各个区块链交易打包生成交易区块。7.根据权利要求6所述的方法,其特征在于,所述根据所述指定交易批次中的所述至少两个区块链交易,生成待处理交易集合,包括:获取所述指定交易批次中的所述至少两个区块链交易,得到待处理交易集合;确认所述交易集合中的各个区块链交易在区块链中是否存在;若所述待处理交易集合中的任意区块链交易在区块链中存在,则将所述区块链交易从所述待处理交易集合中删除。8.根据权利要求6所述的方法,其特征在于,所述交易提案消息中包括多个指定批次识别信息;所述根据所述指定交易批次中的所述至少两个区块链交易,生成待处理交易集合,包括:获取对应于所述多个指定批次识别信息的多个指定交易批次中任意指定交易批次的区块链交易,得到待处理交易集合;对于多个指定交易批次中剩余交易批次的区块链交易,若所述剩余交易批次的区块链交易在所述待处理交易集合中不存在,则将所述剩余交易批次的区块链交易加入到所述待处理交易集合中;若所述剩余交易批次的区块链交易在所述交易集合中存在,则跳过所述剩余交易批次的区块链交易。9.根据权利要求6所述的方法,其特征在于,所述交易提案消息中包括区块校验信息;所述根据所述待处理交易集合中的各个区块链交易以及所述交易提案消息进行提案验证,得到提案验证结果,包括:根据所述待处理交易集合中各个区块链交易的执行结果和区块链交易标识,生成区块验证信息;若所述区块验证信息与所述区块校验信息相匹配,则生成通过结果,以指示提案验证通过;若所述区块验证信息与所述区块校验信息不匹配,则生成失败结果,以指示提案验证失败。10.根据权利要求6所述的方法,其特征在于,所述接收提案节点发送的交易提案消息之前,所述方法还包括:当满足预设的提案生成条件时,获取交易池中的指定交易批次;根据所述各个交易批次中各个区块链交易的执行结果和区块链交易标识,生成区块校验信息;根据所述区块校验信息以及所述各个交易批次中的批次识别信息,生成所述交易提案消息。11.根据权利要求1至10中任一项所述的方法,其特征在于,所述根据相关联的至少两个区块链交易生成交易批次之前,所述方法还包括:接收交易节点发送的区块链交易消息并将所述区块链交易消息保存到交易池中,所述区块链交易消息中携带区块链交易标识;
根据所述区块链交易标识以及交易标识映射关系,确定消息接收节点的节点标识;根据所述消息接收节点的节点标识,向所述消息接收节点转发所述区块链交易消息。12.根据权利要求11所述的方法,其特征在于,所述根据相关联的至少两个区块链交易生成交易批次之前,所述方法还包括,包括:获取区块链节点的节点标识以及所述交易池中未打包成交易批次的未打包交易;若所述未打包交易满足预设的批次生成条件,则根据所述节点标识和所述未打包交易的交易标识生成交易批次的批次识别信息;根据所述批次标识和所述未打包交易,生成交易批次和批次创建消息;向区块链中的各个区块链节点发送所述批次创建消息。13.一种区块链交易处理装置,其特征在于,包括:交易批次生成模块,用于根据相关联的至少两个区块链交易生成交易批次,所述交易批次中包含有所述交易批次对应的批次识别信息;提案消息接收模块,用于接收提案节点发送的交易提案消息,所述交易提案消息中包括指定批次识别信息;交易批次获取模块,用于根据所述交易提案消息,从所生成的交易批次中获取对应于所述指定批次识别信息的指定交易批次;交易区块生成模块,用于根据所述指定交易批次中所包含的区块链交易生成交易区块。14.一种电子设备,其特征在于,包括:处理器;存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至12中任意一项所述的区块链交易处理方法。15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的区块链交易处理方法。
技术总结本申请提供一种区块链交易处理方法、装置、电子设备和可读介质。该方法包括:根据相关联的至少两个区块链交易生成交易批次,交易批次中包含有交易批次对应的批次识别信息;接收提案节点发送的交易提案消息,交易提案消息中包括指定批次识别信息;根据交易提案消息,从所生成的交易批次中获取对应于指定批次识别信息的指定交易批次;根据指定交易批次中所包含的区块链交易生成交易区块。该方法能够减少交易提案消息在通信过程中占用的通信资源,提升区块链节点的交易响应速度以及区块链系统的整体运行效率。的整体运行效率。的整体运行效率。
技术研发人员:邵珠光 李力 张建俊 邵兵 苏蹦蹦
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.06.28
技术公布日:2022/11/1