CN117041254A - 区块链数据处理方法、装置、存储介质及设备 - Google Patents

区块链数据处理方法、装置、存储介质及设备 Download PDF

Info

Publication number
CN117041254A
CN117041254A CN202311144166.6A CN202311144166A CN117041254A CN 117041254 A CN117041254 A CN 117041254A CN 202311144166 A CN202311144166 A CN 202311144166A CN 117041254 A CN117041254 A CN 117041254A
Authority
CN
China
Prior art keywords
packaged
blockchain
record
transaction
data
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
Application number
CN202311144166.6A
Other languages
English (en)
Inventor
邵珠光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311144166.6A priority Critical patent/CN117041254A/zh
Publication of CN117041254A publication Critical patent/CN117041254A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种区块链数据处理方法、装置、存储介质及设备,通过接收客户端发送的交易请求,交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据数据从多个区块链节点选取预设数量的目标区块链节点;将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,提升区块链节点的设备运算效率,降低区块链的存储空间。

Description

区块链数据处理方法、装置、存储介质及设备
技术领域
本申请涉及区块链技术领域,具体涉及一种区块链数据处理方法、装置、存储介质及设备。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识协议和加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本。由于区块链系统具有去中心化和信息不可篡改等特性,使得区块链的应用越来越广泛。
在区块链系统中,区块链节点接收到客户端发送的交易数据后,可以将交易数据放入交易池中进行缓存,并将交易数据广播至其他区块链节点。因此,不同区块链节点的交易池中缓存的待打包交易数据的待打包数量在理论上是接近的。
但是,在实际应用中,由于不同的区块链节点的设备运算性能和网络传输性能不同,会导致不同的区块链节点的交易池中缓存的待打包交易数据的待打包数量存在一定差异,而在某个区块链节点的交易池中缓存的待打包交易数据的待打包数量较少的情况下,会导致这个区块链节点生成新的区块时,只能将待打包数量较少的待打包交易数据打包到新的区块上,不仅会浪费区块链节点的设备运算资源,还会造成区块链中的区块冗余,浪费区块链的存储空间。
发明内容
本申请实施例提供一种区块链数据处理方法、装置、存储介质及设备,可以提升区块链节点的设备运算效率,降低区块链的存储空间。
为解决上述技术问题,本申请实施例提供以下技术方案:
一种区块链数据处理方法,包括:
接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
将所述交易数据广播至预设数量的目标区块链节点上。
一种区块链数据处理装置,包括:
接收单元,用于接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取单元,用于获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
选取单元,用于根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
广播单元,用于将所述交易数据广播至预设数量的目标区块链节点上。
在一些实施方式中,所述装置,还包括第一关联单元,包括:
接收子单元,用于接收每个区块链节点定时广播的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
生成子单元,用于根据所述广播时间和待打包数量生成待打包记录;
关联子单元,用于将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施方式中,所述装置,还包括第二关联单元,包括:
接收子单元,用于接收每个区块链节点广播的目标交易数据,所述目标交易数据携带相应的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
生成子单元,用于根据所述广播时间和待打包数量生成待打包记录;
关联子单元,用于将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施方式中,所述获取单元,用于:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
统计每个区块链节点标识的历史待打包数量的平均值,将所述平均值确定为每个区块链节点标识相应的区块链节点的数据。
在一些实施方式中,所述获取单元,还用于:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
按照所述历史广播时间的时间顺序,选取出每个区块链节点标识下历史广播时间最晚的目标历史待打包记录;
根据所述目标历史待打包记录的目标历史待打包数量,确定每个区块链节点标识相应的区块链节点的数据。
在一些实施方式中,所述交易池消息中还包括目标签名信息,所述装置还包括验证单元,用于:
获取每个区块链节点标识对应的公钥数据;
根据所述公钥数据对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到待验证签名信息;
当所述待验证签名信息与相应的目标签名信息匹配时,执行生成子单元。
在一些实施例中,所述关联子单元,包括:
获取子模块,用于获取所述待打包记录中的广播时间;
关联子模块,用于当所述待打包记录中的广播时间大于预设记录时间时,将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施例中,所述关联子模块,用于:
当所述待打包记录中的广播时间大于预设记录时间时,获取所述待打包记录相应的区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述历史广播时间小于预设记录时间的历史待打包记录删除;
将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施例中,所述关联子单元,还包括:
第一删除子模块,用于当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于预设数量阈值时,按照历史广播时间的时间顺序,删除相应的历史待打包记录。
在一些实施例中,所述关联子单元,还包括计算子模块,用于:
获取当前时间和预设间隔时间;
根据所述当前时间和预设间隔时间的差值计算出相应的预设记录时间。
在一些实施例中,所述关联子单元,还包括第二删除子模块,用于:
当所述待打包记录中的广播时间不大于预设记录时间时,获取所述待打包记录相应的区块链节点标识的历史待打包记录;
其中,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述待打包记录删除,并将所述历史广播时间小于预设记录时间的历史待打包记录删除。
在一些实施例中,所述选取单元,用于:
统计多个区块链节点的区块链节点数量;
根据所述区块链节点数量计算出相应的容忍恶意区块链节点数量;
根据所述容忍恶意区块链节点数量确定相应的预设数量;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述区块链数据处理方法。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述区块链数据处理方法。
一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在存储介质中。计算机设备的处理器从存储介质读取所述计算机指令,处理器执行所述计算机指令,使得实现上述区块链数据处理方法。
本申请实施例通过接收客户端发送的交易请求,交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据数据从多个区块链节点选取预设数量的目标区块链节点;将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,相对于将交易数据广播至全部区块链节点的方案而言,本申请实施例实现了每个区块链节点中的交易池中的待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的分布式系统应用于区块链系统的一个可选的结构示意图。
图2是本申请实施例提供的区块结构一个可选的示意图。
图3是本申请实施例提供的区块链数据处理系统的场景示意图。
图4是本申请实施例提供的区块链数据处理方法的场景示意图。
图5为本申请实施例提供的区块链数据处理方法的流程示意图。
图6是本申请实施例提供的区块链数据处理方法的另一场景示意图。
图7是本申请实施例提供的区块链数据处理方法的另一场景示意图。
图8为本申请实施例提供的区块链数据处理方法的另一场景示意图。
图9是图5中步骤402的具体流程图;
图10是图5中步骤402的另一具体流程图;
图11为本申请实施例提供的区块链数据处理方法的另一流程示意图。
图12为本申请实施例提供的区块链数据处理方法的另一场景示意图。
图13为本申请实施例提供的区块链数据处理方法的另一场景示意图。
图14为本申请实施例提供的区块链数据处理方法的另一场景示意图。
图15是本申请实施例提供的区块链数据处理装置的结构示意图。
图16是本申请实施例提供的服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请的方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
可以理解的是,在本申请的具体实施方式中,涉及到交易数据等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关法律法规和标准。
此外,当本申请实施例需要获取交易数据等相关的数据时,会通过弹窗或者跳转到确认页面等方式获得交易数据等相关的数据的单独许可或者单独同意,在明确获得交易数据等相关的数据的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的交易数据等相关的数据。
需要说明的是,在说明书、权利要求书和上述附图所描述的一些流程中,包含了按照特定顺序出现的多个步骤,但应该清楚了解,这些步骤可以不按照其在本文中出现的顺序来执行或并行执行,步骤序号仅仅是用于区分开各个不同的步骤,序号本身不代表任何的执行顺序。此外,本文中的“第一”、“第二”或者“目标”等描述,是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图1,图1是本申请实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个区块链节点(接入网络中的任意形式的计算设备,如服务器、终端)和客户端形成,区块链节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各区块链节点的功能,涉及的功能包括:
1)路由,区块链节点具有的基本功能,用于支持区块链节点之间的通信。
区块链节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他区块链节点,供其他区块链节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行虚拟资源的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他区块链节点,其他区块链节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询虚拟资源地址中剩余的虚拟资源;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他区块链节点,其他区块链节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的区块链节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的虚拟资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中区块链节点提交的记录数据。
参见图2,图2是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
交易生成阶段:假设A转给B一笔虚拟资源,首先A广播告诉全网A从多少余额里面拿出一笔虚拟资源给B;接着全网判断A的余额是否够,如果够的话就把这笔交易给记上,最后由A的数字加密签名来证实这个交易单确定是A发出去的(确认AB之间的交易),这就是交易请求发出的过程。
交易请求的确认需要经过多个区块链节点的验证确保交易请求的真实性和安全性。
在一个完全去中心化的网络里面,在没有可信任的第三方之后,最大的问题是我们每一个人都无法互相信任,所以在区块链的交易请求就得发广播。目的是让所有人都得知道网络里每一个人每一笔虚拟资源的来源。
在相关技术中,区块链技术下的交易流程包括创建交易、广播交易和共识机制确认。区块链交易可以实现高效安全和可靠的交易过程。
1、创建交易,发送方需要使用自己的私钥对交易请求进行签名,确保交易的真实性。
2、广播交易,创建好交易请求后,需要将交易请求相应的交易数据广播到网络中的其他区块链节点。区块链节点会将交易数据添加到自己的交易池中等待处理。交易池(mempool)是区块链节点的RAM(Random Access Memory,随机存取存储器)内存,其中保存所有已经收到但还不能添加到区块链中的交易。它可以帮助改善交易的速度,可以更有效地利用区块链的账本空间,帮助交易流畅地完成处理,减少交易拥挤。
3、区块链共识机制,在区块链中,每个节点都有权参与到区块的生成和验证中,节点需要达到共识才能将区块添加到区块链中,常用的共识机制包括工作量证明(POW)和权益证明(POS)等。
广播交易,在区块链系统中,广播交易是指将交易数据通过网络广播给其他区块链节点。这样做的目的是让其他区块链节点知道有一个新的交易数据产生了,并且开始确认这个交易数据的有效性和合法性。如果这个交易数据被认为是有效的,其他区块链节点将会将它加入到自己的交易池中,并继续向其他区块链节点广播这个交易数据,直到整个网络中的区块链节点都收到了这个交易数据。这样,交易数据就被广泛地传播到整个网络中,从而实现了去中心化的交易数据确认和处理。
目前,区块链节点接收到客户端发送的交易数据后,可以将交易数据放入交易池中进行缓存,并将交易数据广播至其他区块链节点。因此,不同区块链节点的交易池中缓存的待打包交易数据的待打包数量在理论上是接近的。
但是,在实际应用中,由于不同的区块链节点的设备运算性能不同,也就意味着交易数据存入交易池的速度不同,设备运算性能高的区块链节点将交易数据反序列化存入交易池的速度更快,相应的,设备运算性能低的区块链节点将交易数据反序列化存入交易池的速度更慢,而且不同的区块链节点的网络传输性能不同,部分网络传输性差的区块链节点接收到交易数据的时间比较晚,因此,会导致交易数据还没完成接收,其他区块链节点就已经打包上区块了,该交易数据在验证之后就会马上删除。
综上所述,不同的区块链节点的交易池中缓存的待打包交易数据的待打包数量势必存在一定差异,而区块链节点间的交易池中待打包数量如果差别很大,会对整体的区块链性能造成很大的影响,一般而言,一个区块中交易的数量在一个合理的范围内,区块链节点的设备运算性能是比较高的,即设备可以开启合适的多线程将交易数据打包上区块,实现均衡处理,而待打包数量过多或过少都会导致交易的性能下降,对于待打包数量过多可以通过对一笔区块中交易数量的限制来操作,但是对于待打包数量较少则无法处理,因为交易池中如果没有交易数据则没有办法凭空创建交易数据。例如,有4个区块链节点A、B、C、D,其中区块链节点A的交易池中只有100笔交易数据,区块链节点B、C、D中都是有10000笔交易数据,当区块链节点A打包上区块时最多就只能打包100笔交易数据,会导致区块链节点A的计算机设备无法充分运算,浪费设备运算资源,且该打包的区块只有100笔交易数据,造成区块链中的区块冗余,每个区块除交易数据外还包括哈希值等其他存储数据,因此,区块冗余还会导致区块链的存储空间浪费。
本申请实施例为了解决上述问题,提出一种能够提升区块链节点的设备运算效率,降低区块链的存储空间的区块链数据处理方法。
请参阅图3,图3是本申请实施例提供的区块链数据处理系统的场景示意图。它包括终端140、互联网130、网关120、服务器110等。
终端140可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等。另外,它可以是单台设备,也可以是多台设备组成的集合。终端140可以以有线或无线的方式与互联网130进行通信,交换数据,终端140上可以安装用于交易的客户端。
服务器110是指能对终端140提供某些服务的计算机系统。相对于普通终端140来说,服务器110在稳定性、安全性、性能等方面都要求更高。服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
网关120又称网间连接器、协议转换器。网关在传输层上实现网络互连,是一种充当转换作用的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。同时,网关也可以提供过滤和安全功能。终端140向服务器110发送的消息要通过网关120发送到相应的服务器110。服务器110向终端140发送的消息也要通过网关120发送到相应的终端140。
终端140可以通过虚拟资源交易生成交易请求,并将该交易请求发送至服务器110,服务器110可以接收客户端发送的交易请求,所述交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据所述数据从多个区块链节点选取预设数量的目标区块链节点;将所述交易数据广播至预设数量的目标区块链节点上。
本公开实施例可以应用在多种场景下,如图4所示的虚拟资源转移系统的场景。
虚拟资源转移系统的场景:
虚拟资源转移系统是指能够根据对象输入的虚拟资源额度和接收人,自动进行虚拟资源转移的系统。
如图4所示,在终端10的虚拟资源转移系统的界面10上,对象可以选择虚拟资源额度和选择接收人,例如虚拟资源额度为100,接收人为“对象B”,以此,当对象点击确认按钮时,会自动生成一条交易请求,该交易请求携带“对象xx转移100的虚拟资源额度给B”的交易数据,并将该交易请求发送至服务器(即也可以理解为接收交易请求的区块链节点)。基于此,该区块链节点接收客户端发送的交易请求,所述交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据所述数据从多个区块链节点选取预设数量的目标区块链节点;将所述交易数据广播至预设数量的目标区块链节点上。
需要说明的是,图3所示的区块链数据处理系统的场景示意图仅仅是一个示例,本申请实施例描述的区块链数据处理系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着区块链数据处理系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本实施例中,将从区块链数据处理装置的角度进行描述,该区块链数据处理装置具体可以集成在具备储存单元并安装有微处理器而具有运算能力的计算机设备(即区块链节点)中,计算机设备可以为服务器、终端。
请参阅图5,图5是本申请实施例提供的区块链数据处理方法的流程示意图。该区块链数据处理方法400包括:
在步骤201中,接收客户端发送的交易请求。
本申请实施例的实施主体可以应用在区块链节点中,该区块链节点可以为区块链系统中的任意一个区块链节点,该区块链节点指的是区块链网络中的计算机设备,也就是说任何连接到区块链网络的计算机设备都称为区块链节点。
该区块链节点具有如下特征:
1、具有存储空间,可以将区块链存储在U盘或者移动硬盘中。
2、连接网络,所有的区块链节点必须连接网络。
3、参与区块链,需要在存储空间上运行区块链相应的应用程序。
基于此,可以接收可视化客户端因为交易行为生成的交易请求,例如对象A转给对象B一笔虚拟资源生成相应的交易请求,该交易请求中至少携带交易数据,该交易数据即具体的交易参数,例如“对象A转移100的虚拟资源额度给对象B”。
在一些实施方式中,请一并参阅图6所示,假设区块链系统中存在4个区块链节点,即区块链节点1、区块链节点2、区块链节点3和区块链节点4,客户端可以将交易请求发送至区块链节点1(即本申请实施例应用的区块链节点),在相关技术中,区块链节点1接收到客户端发送的交易请求后,会将交易请求携带的交易数据缓存至交易池中,并将该交易数据广播至其他区块链节点,即还会将该交易数据广播至区块链节点2、区块链节点3和区块链节点4。
因此,区块链节点1、区块链节点2、区块链节点3和区块链节点4的交易池中缓存的待打包交易数据的待打包数量在理论上是接近的。
但是,在实际应用中,由于不同的区块链节点的设备运算性能不同,也就意味着交易数据存入交易池的速度不同,设备运算性能高的区块链节点将交易数据反序列化存入交易池的速度更快,相应的,设备运算性能低的区块链节点将交易数据反序列化存入交易池的速度更慢,而且不同的区块链节点的网络传输性能不同,部分网络传输性差的区块链节点接收到交易数据的时间比较晚,因此,会导致交易数据还没完成接收,其他区块链节点就已经打包上区块了,该交易数据在验证之后就会马上删除。
综上所述,区块链节点1、区块链节点2、区块链节点3和区块链节点4的交易池中缓存的待打包交易数据的待打包数量会存在一定差异,而区块链节点间的交易池中待打包数量如果差别很大,会对整体的区块链性能造成很大的影响,一般而言,一个区块中交易的数量在一个合理的范围内,区块链节点的设备运算性能是比较高的,即设备可以开启合适的多线程并行将交易数据打包到区块,实现均衡处理,而待打包数量过多或过少都会导致区块打包交易的性能的下降,对于待打包数量过多可以通过对一笔区块中交易数量的限制来操作,但是对于待打包数量较少则无法处理,因为交易池中如果没有交易数据则没有办法凭空创建交易数据。例如,其中区块链节点1的交易池中只有100笔交易数据,区块链节点2、3、4中都是有1000笔交易数据,当区块链节点1将交易数据打包到区块时最多就只能打包100笔交易数据,由于区块链节点1可以同时多线程并行打包500笔交易数据,但是此处只有100笔交易数据,会导致区块链节点1的设备资源无法充分运算,浪费设备运算资源,且该打包的区块只有100笔交易数据,而正常区块可以容纳500笔交易数据,以此,还会造成区块链中的区块冗余,每个区块除交易数据外还包括哈希值等其他存储数据,因此,区块冗余还会导致区块链的存储空间浪费。
相应的,本申请实施例提出可以根据每个区块链节点的交易池中的存储状态,灵活选择交易池中缓存的待打包交易数据的待打包数量少的区块链节点来广播交易数据的方案,可以实现交易池中待打包数量的动态平衡,提高区块链系统整体的性能,还可以减少广播次数,降低网络消耗,具体请继续参阅以下实施例。
在步骤202中,获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据。
其中,不同的区块链节点之间是可以实时进行网络通信的,因此,本申请实施例可以通过网络通信获取当前每个区块链节点的交易池中缓存的待打包交易数据的待打包数量,来作为每个区块链节点的交易池的数据,该数据可以理解为对交易池中缓存的待打包交易数据的待打包数量进行统计之后得到数据,可以表征每个区块链节点的交易池中缓存的待打包交易数据的待打包数量的统计规律,该数据越大,说明相应的区块链节点的交易池中待打包数量越多,相反的,该数据越小,说明相应的区块链节点的交易池中待打包数量越少。
在一实施方式中,接收到客户端发送交易数据的区块链节点可以通过广播查询请求给每个区块链节点,以使得每个区块链节点根据该查询请求将交易池中缓存的待打包交易数据的待打包数量反馈至该接收到客户端发送交易数据的区块链节点。
为了更好的说明本申请实施例,请一并参阅图7所示,区块链节点1接收到客户端1发送的交易请求,该交易请求携带交易数据,该区块链节点1可以通过广播查询请求给区块链节点2、区块链节点3和区块链节点4,以使得区块链节点2根据查询请求将交易池中缓存的待打包交易数据的待打包数量反馈至区块链节点1,区块链节点3根据查询请求将交易池中缓存的待打包交易数据的待打包数量反馈至区块链节点1和区块链节点4根据查询请求将交易池中缓存的待打包交易数据的待打包数量反馈至区块链节点1,因此,该区块链节点1可以获取包括自身在内的每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据,该数据即可以反馈出每个区块链节点的交易池的存储状态。
在一些实施方式中,每个区块链节点可以定期广播自身交易池中缓存的待打包交易数据的待打包数量至其他区块链节点,即该区块链数据处理方法,还包括:
(1)接收每个区块链节点定时广播的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
(2)根据所述广播时间和待打包数量生成待打包记录;
(3)将所述待打包记录与相应的区块链节点标识进行关联。
其中,每个区块链节点可以定时,例如每隔10秒或者20秒广播自身的交易池消息至其他区块链节点,该交易池消息中至少包括区块链节点标识,广播时间和待打包数量。每个区块链节点可以关联一个独立的区块链节点标识,该区块链节点标识用于标识一个区块链节点,该广播时间为广播交易池消息的时间点,例如18点00分01秒(也可以表征为18:00:01),该待打包数量即为区块链节点广播该交易池消息时,交易池中缓存的待打包交易数据的待打包交易数量。可以通过如下表1理解交易池消息。
表1交易池消息格式
以此,可以将广播时间和待打包数量生成一条待打包记录,该待打包记录表征在广播时间下交易池中还存在多少待打包数量,为了实现统计,需要将每条待打包记录与相应的区块链节点标识进行关联,实现统计出每个区块链节点标识下多条历史待打包记录,使得后续可以通过区块链节点标识下的多条历史待打包记录可以分析得到区块链节点标识对应的区块链节点的交易池的存储状态。
可以通过如下表2理解待打包记录与相应的区块链节点标识进行关联的过程。
表2关联存储结果
其中,该Node1、Node2和Noden为不同的区块链节点标识,该Time1、Time2和Time…即为不同的广播时间,该TxSize1、TxSize2和TxSize…即为不同的待打包数量,同一个交易池消息的Time和TxSize生成一条待打包记录,例如Time1和TxSize1代表为Time1的广播时间下,以TxSize1的待打包数量的待打包记录1,为了实现统计,可以将每条待打包记录与相应的区块链节点标识进行关联,生成上述表2,表2可以存储不同的区块链节点标识下不同的历史待打包记录,可以反映出不同区块链节点标识对应的区块链节点的交易池中缓存的待打包交易数据的待打包数量在不同广播时间下的存储状态,以此,后续可以通过对表2进行分析,得到不同区块链节点标识对应的区块链节点的交易池的存储状态。
在一些实施方式中,每个区块链节点可以在广播交易数据的同时发送自身交易池中缓存的待打包交易数据的待打包数量,即该区块链数据处理方法,还包括:
(1.1)接收每个区块链节点广播的目标交易数据,所述目标交易数据携带相应的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
(1.2)根据所述广播时间和待打包数量生成待打包记录;
(1.3)将所述待打包记录与相应的区块链节点标识进行关联。
其中,每个区块链节点可以在广播目标交易数据给其他区块链节点的同时,将自身的交易池消息一并广播出去,该交易池消息中至少包括区块链节点标识,广播时间和待打包数量。每个区块链节点可以关联一个独立的区块链节点标识,该区块链节点标识用于标识一个区块链节点,该广播时间为广播目标交易数据的时间点,例如18点00分07秒(也可以表征为18:00:07),该待打包数量即为区块链节点广播该目标交易数据时,交易池中缓存的待打包交易数据的待打包交易数量。可以通过如下表3理解目标交易数据格式。
表3目标交易数据格式
以此,本申请实施例的区块链节点在接收系统中其他区块链节点广播的目标交易数据的同时,还可以获取相应的交易池消息进行统计,实现对其他区块链节点的待打包数量的收集,相应的,可以将广播时间和待打包数量生成一条待打包记录,该待打包记录表征在广播时间下交易池中还存在多少待打包数量,为了实现统计,需要将每条待打包记录与相应的区块链节点标识进行关联,实现统计出每个区块链节点标识下多条历史待打包记录,使得后续可以通过区块链节点标识下的多条历史待打包记录可以分析得到区块链节点标识对应的区块链节点的交易池的存储状态。
可以继续通过上述表2理解待打包记录与相应的区块链节点标识进行关联的过程。该Node1、Node2和Noden为不同的区块链节点标识,该Time1、Time2和Time…即为不同的广播时间,该TxSize1、TxSize2和TxSize…即为不同的待打包数量,同一个交易池消息的Time和TxSize生成一条待打包记录,例如Time1和TxSize1代表为Time1的广播时间下,以TxSize1的待打包数量的待打包记录1,为了实现统计,可以将每条待打包记录与相应的区块链节点标识进行关联,生成上述表2,表2可以存储不同的区块链节点标识下不同的历史待打包记录,可以反映出不同区块链节点标识对应的区块链节点的交易池中缓存的待打包交易数据的待打包数量在不同广播时间下的存储状态,以此,后续可以通过对表2进行分析,得到不同区块链节点标识对应的区块链节点的交易池的存储状态。
在一些实施例中,该交易池消息中还可以包括目标签名信息,该目标签名信息为数字签名(又称又称公钥数字签名、电子签章),是一种类似写在纸上的普通的物理签名,使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明,主要用于数据更改的签名者身份识别以及抗抵赖。为了保证交易池消息为相应的区块链节点发送的,在根据该广播时间和待打包数量生成待打包记录之前,还包括:
(2.1)获取每个区块链节点标识对应的公钥数据;
(2.2)根据所述公钥数据对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到待验证签名信息;
(2.3)当所述待验证签名信息与相应的目标签名信息匹配时,执行根据所述广播时间和待打包数量生成待打包记录。
其中,请继续参阅表1和表3所示,交易池消息中还可以包括目标签名信息(Sign),该目标签名信息为产生交易池消息的区块链节点通过自身的公钥对区块链节点标识、广播时间和待打包数量进行公钥加密得到,以此,接收该交易池消息的区块链节点(即本申请实施例中的本地区块链节点)为了验证该交易池消息是真实有效的,可以获取产生交易池消息的区块链节点的公钥数据,并且通过该公钥数据模拟对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到相应的待验证签名信息。
进一步的,可以将该待验证签名信息与该目标签名信息进行比对,当该待验证签名信息与相应的目标签名信息比对一致时,说明两者匹配,即该交易池消息为真实有效的,继续执行根据该广播时间和待打包数量生成待打包记录的步骤。相应的,当该待验证签名信息与相应的目标签名信息比对不一致时,说明两者不匹配,即该交易池消息为伪造的,不执行根据该广播时间和待打包数量生成待打包记录的步骤,直接将该交易池消息删除。
在一些实施方式中,为了保证每个区块链节点标识中关联的历史待打包记录为实时的,确保该历史待打包记录中的历史待打包数量的实时性,会设定预设记录时间,该预设记录时间为最低的记录时间阈值,假设目前时间为18:00:25,可以设定该预设记录时间为18:00:05,即只记录广播时间大于等于18:00:05之后待打包记录,基于此,该将所述待打包记录与相应的区块链节点标识进行关联,包括:
(3.1)获取所述待打包记录中的广播时间;
(3.2)当所述待打包记录中的广播时间大于预设记录时间时,将所述待打包记录与相应的区块链节点标识进行关联。
其中,可以获取该待打包记录中的广播时间,假设为18:00:07,目前时间为18:00:25,可以设定该预设记录时间为18:00:05,以此,可以理解的是,该广播时间大于该预设记录时间,因此,可以将该待打包记录与相应的区块链节点标识进行关联。
在一些实施例中,为了防止每个区块链节点标识关联的历史待打包记录过多,造成信息冗余,浪费区块链节点的存储空间,可以自动将一些过期的历史待打包记录清除,基于此,该将所述待打包记录与相应的区块链节点标识进行关联,还可以包括:
(4.1)获取所述待打包记录相应的区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
(4.2)将所述历史广播时间小于预设记录时间的历史待打包记录删除;
(4.3)将所述待打包记录与相应的区块链节点标识进行关联。
其中,可以获取该打包记录相应的区块链节点标识关联的历史待打包记录,该历史待打包记录中至少包括历史广播时间和相应的历史待打包数量。
由于本申请实施例需要实时的交易池中的历史待打包数量,因此,可以将每条历史待打包记录的历史广播时间与该预设记录时间进行比对,将所述历史广播时间小于预设记录时间的历史待打包记录删除,例如,当某条历史待打包记录的历史广播时间为18:00:01,而该预设记录时间为18:00:05时,可以看出的是,该历史广播时间18:00:01小于该预设记录时间18:00:05,而该历史广播时间18:00:01不具备实时性,因此,可以将该历史广播时间18:00:01相应的历史待打包记录进行删除操作。
进一步的,可以将广播时间大于预设记录时间的待打包记录与相应的区块链节点标识进行关联,由于时间是延续的,因此该待打包记录与相应的区块链节点标识关联之后,也称为历史待打包记录,以此,随着时间的推移,本申请实施例可以不断的生成每个区块链节点标识下关联的历史待打包记录,该历史待打包记录中的历史广播时间是与当前时间实时同步的,因此,相应的历史待打包数量也是交易池的实时状态,使得后续可以通过区块链节点标识下的多条历史待打包记录可以分析得到区块链节点标识对应的区块链节点的交易池的实时存储状态。
在一些实施方式中,该预设记录时间也是随着时间的延续而不断更迭的,即将所述待打包记录与相应的区块链节点标识进行关联之前,还包括:
(5.1)获取当前时间和预设间隔时间;
(5.2)根据所述当前时间和预设间隔时间的差值计算出相应的预设记录时间。
其中,该预设间隔时间可以灵活设置,例如10秒或者20秒,在本申请实施例中,以20秒为例进行说明,以此,可以实时获取当前时间,假设为18:00:25,根据当前时间和预设间隔时间的差值计算出相应的预设记录时间为18:00:05,相应的,在当前时间变化为18:00:26时,相应的预设记录时间也会变化为18:00:06,以此,保证该预设记录时间随着当前时间的延续而不断更迭,进而保证每个区块链节点标识关联历史待打包记录的实时性。
在一些实施方式中,为了防止每个区块链节点标识关联的历史待打包记录过多,造成信息冗余,浪费区块链节点的存储空间,还可以设置每个区块链节点中最多维护的历史待打包记录的数量,基于此,该将所述待打包记录与相应的区块链节点标识进行关联之后,还可以包括:当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于预设数量阈值时,按照历史广播时间的时间顺序,删除相应的历史待打包记录。
其中,可以设定每个区块链节点最多维护的历史待打包记录的预设数量阈值,该预设数量阈值可以灵活设置,例如5或者10条,在本申请实施例中,以该预设数量阈值为5条进行说明,基于此,在将该待打包记录与相应的区块链节点标识进行关联之后,可以实时检测关联之后的区块链节点标识关联的历史待打包记录的数量是否大于该预设数量阈值,当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于该预设数量阈值时,假设关联之后的区块链节点标识关联的历史待打包记录的数量为6条,而改预设数量阈值为5条,那么需要按照历史广播时间的时间顺序,将历史广播时间最早的一条历史待打包记录删除,使得删除后的历史待打包记录为5条,满足预设数量阈值。
以此,可以在保证历史待打包记录实时性的前提下,动态控制每个区块链节点关联的历史待打包记录的数量,避免造成信息冗余,浪费区块链节点的存储空间。
在一些实施方式中,该区块链数据处理方法,还包括:
(6.1)当所述待打包记录中的广播时间不大于预设记录时间时,获取所述待打包记录相应的区块链节点标识的历史待打包记录;其中,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
(6.2)将所述待打包记录删除,并将所述历史广播时间小于预设记录时间的历史待打包记录删除。
其中,可以获取该待打包记录中的广播时间,假设为18:00:03,目前时间为18:00:25,可以设定该预设记录时间为18:00:05,以此,可以理解的是,该广播时间不大于该预设记录时间,即说明该广播时间为18:00:03的待打包记录不具有实时性,不能将该待打包记录关联到相应的区块链节点标识中。
进一步的,即使该广播时间为18:00:03的待打包记录无法关联相应的区块链节点标识,但是可以触发该区块链节点标识将一些过期的历史待打包记录清除,即可以获取该广播时间为18:00:03的待打包记录相应的区块链节点标识的历史待打包记录,该历史待打包记录中至少包括历史广播时间和相应的历史待打包数量。
相应的,可以直接将该待打包记录删除,并触发将每条历史待打包记录的历史广播时间与该预设记录时间进行比对,将所述历史广播时间小于预设记录时间的历史待打包记录删除,例如,当某条历史待打包记录的历史广播时间为18:00:03,而该预设记录时间为18:00:05时,可以看出的是,该历史广播时间18:00:03小于该预设记录时间18:00:05,而该历史广播时间18:00:03不具备实时性,因此,可以将该历史广播时间18:00:03相应的历史待打包记录进行删除操作。
为了更好的说明每个区块链节点如何关联待打包记录,可以一并参阅图8进行参考,图8为本申请实施例提供的区块链数据处理的场景示意图,用于表述待打包记录如何关联区块链节点的关联过程。
其中,每个区块链节点可以有两个规则:
1、该区块链节点最小的预设间隔时间,例如20秒。
2、每个区块链节点最多维护的预设数量阈值,例如5个。
当前的对象(即待打包记录)加入时,会触发两个操作:
1、将不满足预设间隔时间的对象删除;
2、新的对象加入到合适的位置(也可能不加入,取决于数量限制和时间规则)。
请继续参阅图8中,假设当前时间为18:00:25,那么相应的预设记录时间即为18:00:05,已经存储的数据块即为一条历史待打包记录,新加入的数据块即为相应的待打包记录,历史待打包记录中包括历史广播时间和历史待打包数量,例如历史广播时间为18:00:01,相应的历史待打包数量为TxSize1,历史广播时间为18:00:07,相应的历史待打包数量为TxSize7。以此,该维护的区块链节点在初始阶段,具有4个历史待打包记录,该4个历史待打包记录的历史广播时间分别为18:00:01、18:00:07、18:00:15和18:00:21。
当新的待打包记录(广播时间为18:00:03的待打包记录)加入时,由于该新的待打包记录中的广播时间18:00:03不大于预设记录时间18:00:05,因此,该新的待打包记录无法加入,即无法关联该维护的区块链节点,且4个历史待打包记录中,由于历史广播时间18:00:01的历史待打包记录小于预设记录时间,还会将该历史广播时间18:00:01的历史待打包记录删除,此时,剩余3个历史待打包记录,3个历史待打包记录的历史广播时间分别为18:00:07、18:00:15和18:00:21。
当新的待打包记录(广播时间为18:00:13的待打包记录)加入时,由于该新的待打包记录中的广播时间18:00:13不大于预设记录时间18:00:05,因此,该新的待打包记录可以加入,成为历史待打包记录,此时,有4个历史待打包记录,且每个历史待打包记录的历史广播时间均大于预设记录时间,因此,保留4个历史待打包记录,4个历史待打包记录的历史广播时间分别为18:00:07、18:00:13、18:00:15和18:00:21。
当新的待打包记录(广播时间为18:00:23的待打包记录)加入时,由于该新的待打包记录中的广播时间18:00:23不大于预设记录时间18:00:05,因此,该新的待打包记录可以加入,成为历史待打包记录,此时,有5个历史待打包记录,且每个历史待打包记录的历史广播时间均大于预设记录时间,因此,保留5个历史待打包记录,5个历史待打包记录的历史广播时间分别为18:00:07、18:00:13、18:00:15、18:00:21和18:00:23。
当新的待打包记录(广播时间为18:00:24的待打包记录)加入时,由于该新的待打包记录中的广播时间18:00:24不大于预设记录时间18:00:05,因此,该新的待打包记录可以加入,成为历史待打包记录,此时,有6个历史待打包记录,且每个历史待打包记录的历史广播时间均大于预设记录时间,因此,保留6个历史待打包记录,但是,由于每个区块链节点最多维护待打包记录的预设数量阈值为5条,因此,需要按照历史广播时间的时间顺序,将历史广播时间最早的18:00:07相应的待打包记录删除,剩余5个历史待打包记录,5个历史待打包记录历史广播时间分别为18:00:13、18:00:15、18:00:21、18:00:23和18:00:24。
基于此,保留每个区块链节点标识下相应的5条历史待打包记录,使得后续可以通过区块链节点标识下的多条历史待打包记录可以分析得到区块链节点标识对应的区块链节点的交易池的实时存储状态。
在一些实施方式中,如图9所示,步骤402可以包括:
在步骤501中,获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
在步骤502中,统计每个区块链节点标识的历史待打包数量的平均值,将所述平均值确定为每个区块链节点标识相应的区块链节点的数据。
其中,基于上述对每个区块链节点标识关联多条历史待打包记录的实现基础上,本申请实施例可以直接获取每个区块链节点标识关联的历史待打包记录,该历史待打包记录至少包括历史广播时间和历史打包数量,该历史待打包记录的数量可以为多条,例如该历史打包记录的数量可以为5条。
由于区块链节点的交易池中缓存的待打包交易数据的待打包数量是实时变化的,因此,需要对多条历史打包记录的历史待打包数量一并进行分析,来确认相应的区块链节点的交易池的存储状态,基于此思想,可以统计每个区块链节点标识的历史待打包数量的平均值,即将区块链节点标识关联的历史待打包记录的历史待打包数量求和,并除以相应的历史待打包记录的数量,得到相应的平均值,该平均值可以反映出该区块链节点标识相应的交易池中的待打包数量的集中趋势,可以更好的反映出区块链节点标识相应的交易池的存储状态。因此,可以将平均值确定为每个区块链节点标识相应的区块链节点的交易池的数据。
在一些实施方式中,如图10所示,步骤402还可以包括:
在步骤601中,获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
在步骤602中,按照所述历史广播时间的时间顺序,选取出每个区块链节点标识下历史广播时间最晚的目标历史待打包记录;
在步骤603中,根据所述目标历史待打包记录的目标历史待打包数量,确定每个区块链节点标识相应的区块链节点的数据。
其中,基于上述对每个区块链节点标识关联多条历史待打包记录的实现基础上,本申请实施例可以直接获取每个区块链节点标识关联的历史待打包记录,该历史待打包记录至少包括历史广播时间和历史打包数量,该历史待打包记录的数量可以为多条,例如该历史打包记录的数量可以为5条。
每条历史待打包记录对应不同的历史广播时间,容易理解的是,历史广播时间越接近当前时间的历史待打包记录,其相应区块链节点的交易池的历史待打包数量越接近当前的真实存储情况。
以此,可以按照历史广播时间顺序,选取出每个区块链节点标识下历史广播时间最晚目标历史待打包记录,该目标历史待打包记录的历史广播时间与当前时间最接近,例如,某个区块链节点包含5个历史待打包记录,5个历史待打包记录历史广播时间分别为18:00:13、18:00:15、18:00:21、18:00:23和18:00:24,而当前时间为18:00:25,以此,可以将历史广播时间18:00:24对应的历史待打包记录确定为该区块链节点的目标历史待打包记录。
进而,可以根据目标历史待打包记录包含的目标历史待打包数量,作为每个区块链节点标识相应的区块链节点的交易池的数据,由于该目标历史待打包数量为区块链节点交易池最接近当前时间的待打包数量,因此,可以反映出区块链节点当前的交易池的存储状态。
在步骤203中,根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
其中,由于该数据可以反馈出每个区块链节点的交易池的存储状态,该统计数越大,说明相应的区块链节点的交易池中待打包数量越多,该数据越小,说明相应的区块链节点的交易池中待打包数量越少,本申请实施例为了实现交易池中待打包数量的动态平衡,可以根据数据选取出当前交易池中待打包数量较少的预设数量的目标区块节点,该预设数量可以灵活设置,例如设置为2个或者5个等等。
具体的选取过程,可以为将数据由小到大进行排序,并按照排序,从最小的数据开始,选取出预设数量的数据,将预设数量的数据相对应的区块链节点确定为目标区块链节点。
为了更好的说明上述实施例,请继续参阅图7所示,该交易池中的相对交易数量即为本申请实施例中的数据,以此,按照数据由小到大进行排序,可以得到排序结果,即区块链节点2的数据、区块链节点4的数据、区块链节点1的数据和区块链节点4的数据,以此,在预设数量为2个的情况下,可以将区块链节点2和区块链节点4确定为目标区块链节点。
在一些实施方式中,该根据所述数据从多个区块链节点选取预设数量的目标区块链节点的步骤,包括:
(1)统计多个区块链节点的区块链节点数量;
(2)根据所述区块链节点数量计算出相应的容忍恶意区块链节点数量;
(3)根据所述容忍恶意区块链节点数量确定相应的预设数量;
(4)根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
其中,本申请实施例由于后续只将交易数据广播至预设数量的目标区块链节点上,而非如相关技术中将交易数据发送至全部的区块链节点上,相应的,如果预设数量的目标区块链节点全部为恶意节点,那么可能会导致交易数据丢失,导致虚拟资源丢失,给对象带来损失,而本申请实施例为了避免上述问题,引入拜占庭共识算法来进行解决,为了更好的描述本申请实施例,先对拜占庭将军问题进行描述。
拜占庭将军问题:拜占庭帝国有N个将军,每个将军统领一支部队并驻扎在不同位置,部队之间只能通过信使传递信息,因为将军中可能存在背叛者,为了攻打地方城镇,忠诚的将领们希望商量出一致的攻击计划。问题在于:N个将军中最多容忍几个叛徒不会影响忠诚将军的进攻决策呢?
相应的,拜占庭共识算法即为用来解决拜占庭将军问题的算法,该算法需要遵守一个容忍攻击者数量的限制(这个限制是与某个具体的算法实现无关的)。该限制描述如下:结点总数量为N时,最多只能容纳f个拜占庭故障(叛徒)节点,令N>=3f+1。对应到本申请实施例,该N即为区块链节点数量,该f即为容忍恶意区块链节点数量,因此,在统计得到多个区块链节点的区块链节点数量N下,可以计算出相应的容忍恶意区块链节点数量f,相应的,为了保证交易数据的安全性,可以将f+1设置为预设数量,以此,根据数据从多个区块链节点选取f+1的目标区块链节点,可以保证至少有一个诚实区块链节点收到了交易数据,保证了交易数据的安全。
在步骤204中,将所述交易数据广播至预设数量的目标区块链节点上。
其中,由于该预设数量的目标区块链节点的交易池中缓存的待打包交易数据的待打包数量为较少的,为了实现交易池中的待打包数量的动态平衡,可以将该交易数据广播至预设数量的目标区块链节点上,动态增加目标区块链节点的交易池中的待打包交易数据的待打包数量,例如,请继续参阅图7所示,在区块链节点2和区块链节点4确定为目标区块链节点时,在区块链节点1接收到客户端1的交易请求的交易数据后,区块链节点1不会将交易数据放入交易池,而是将该交易数据广播至区块链节点2和区块链节点4上。相应的,在区块链节点4接收到客户端2的交易请求的交易数据后,区块链节点4会将交易数据放置到自身的交易池中,还会将交易数据广播至发送至区块链节点4。需要说明的是,区块链节点接收到另一区块链节点发送的交易数据时,不需要执行上述的验证过程,可以直接将交易数据存储至交易池中。以此,可以实现交易池中待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
由上述可知,本申请实施例通过接收客户端发送的交易请求,交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据数据从多个区块链节点选取预设数量的目标区块链节点;将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,相对于将交易数据广播至全部区块链节点的方案而言,本申请实施例实现了每个区块链节点中的交易池中的待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
结合上述实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该区块链数据处理装置具体集成在区块链节点(计算机设备)中为例进行说明。
为了更好的说明本申请实施例,请一并参阅图11,图11为本申请实施例提供的区块链数据处理方法的另一流程示意图。可以包括:
在步骤701中,接收客户端发送的交易请求。
本申请实施例的实施主体可以应用在区块链节点中,该区块链节点可以为区块链系统中的任意一个区块链节点,该区块链节点指的是区块链网络中的计算机设备,也就是说任何连接到区块链网络的计算机设备都称为区块链节点。
基于此,区块链节点可以接收可视化客户端因为交易行为生成的交易请求,例如对象A转给对象B一笔虚拟资源生成相应的交易请求,该交易请求中至少携带交易数据,该交易数据即具体的交易参数,例如“对象A转移100的虚拟资源额度给对象B”。
在步骤702中,接收每个区块链节点定时广播的交易池消息,获取每个区块链节点标识对应的公钥数据,根据公钥数据对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到待验证签名信息。
其中,每个区块链节点可以定时,例如每隔10秒广播自身的交易池消息,该交易池消息中至少包括区块链节点标识、广播时间、待打包数量和目标签名信息。每个区块链节点可以关联一个独立的区块链节点标识,该区块链节点标识用于标识一个区块链节点,该广播时间为广播交易池消息的时间点,例如18:00:01,该待打包数量即为区块链节点广播该交易池消息时,交易池中缓存的待打包交易数据的待打包交易数量。可以继续通过上述表1理解交易池消息。
其中,该目标签名信息为产生交易池消息的区块链节点通过自身的公钥对区块链节点标识、广播时间和待打包数量进行公钥加密得到,以此,接收该交易池消息的区块链节点(即本申请实施例中的本地区块链节点)为了验证该交易池消息是真实有效的,可以获取产生交易池消息的区块链节点的公钥数据,并且通过该公钥数据模拟对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到相应的待验证签名信息。
在步骤703中,当待验证签名信息与相应的目标签名信息匹配时,根据广播时间和待打包数量生成待打包记录,获取待打包记录中的广播时间。
其中,可以将该待验证签名信息与该目标签名信息进行比对,当该待验证签名信息与相应的目标签名信息比对一致时,说明两者匹配,即该交易池消息为真实有效的,继续执行根据该广播时间和待打包数量生成待打包记录的步骤,并获取待打包记录中的广播时间,例如18:00:07。相应的,当该待验证签名信息与相应的目标签名信息比对不一致时,说明两者不匹配,即该交易池消息为伪造的,不执行根据该广播时间和待打包数量生成待打包记录的步骤,直接将该交易池消息删除。
在步骤704中,当待打包记录中的广播时间大于预设记录时间时,获取待打包记录相应的区块链节点标识关联的历史待打包记录。
其中,为了保证每个区块链节点标识中关联的历史待打包记录为实时的,确保该历史待打包记录中的历史待打包数量的实时性,会设定预设记录时间,该预设记录时间为最低的记录时间阈值,假设目前时间为18:00:25,可以设定该预设记录时间为18:00:05,即只记录广播时间大于等于18:00:05之后待打包记录,以此,可以看出的是,待打包记录中的广播时间18:00:07大于预设记录时间18:00:05,可以将该待打包记录关联至相应的区块链节点标识,在此之前,为了防止每个区块链节点标识关联的历史待打包记录过多,造成信息冗余,浪费区块链节点的存储空间,可以自动将一些过期的历史待打包记录清除。
相应的,可以获取待打包记录相应的区块链节点标识关联的历史待打包记录,该历史待打包记录至少包括历史广播时间和历史待打包数量。
在步骤705中,将历史广播时间小于预设记录时间的历史待打包记录删除,将待打包记录与相应的区块链节点标识进行关联。
其中,可以将每条历史待打包记录的历史广播时间与该预设记录时间进行比对,将所述历史广播时间小于预设记录时间的历史待打包记录删除,例如,当某条历史待打包记录的历史广播时间为18:00:01,而该预设记录时间为18:00:05时,可以看出的是,该历史广播时间18:00:01小于该预设记录时间18:00:05,而该历史广播时间18:00:01不具备实时性,因此,可以将该历史广播时间18:00:01相应的历史待打包记录进行删除操作。在删除之后,可以将广播时间大于预设记录时间的待打包记录与相应的区块链节点标识进行关联,可以继续通过上述表2理解待打包记录与相应的区块链节点标识进行关联的过程,最后,实现统计出每个区块链节点标识下多条历史待打包记录,使得后续可以通过区块链节点标识下的多条历史待打包记录可以分析得到区块链节点标识对应的区块链节点的交易池的存储状态。
由于时间是延续的,因此该待打包记录与相应的区块链节点标识关联之后,也称为历史待打包记录,以此,随着时间的推移,本申请实施例可以不断的生成每个区块链节点标识下关联的历史待打包记录,该历史待打包记录中的历史广播时间是与当前时间实时同步的。
为了更好的说明上述实施例,请一并参阅图12所示,区块链节点接收到交易池消息之后,可以获取交易池消息中的节点交易状态信息s,该节点交易状态信息s即为区块链节点标识、广播时间、待打包数量和目标签名信息,以此,可以通过s.NodeID(区块链节点标识)对应的公钥数据对该s进行验证,假设验证不通过,则丢弃该节点交易状态信息s,相反的,假设验证通过,可以进一步的获取s.CurrentTime(广播时间)以及维护该节点的MinTime(预设记录时间),在检测到s.CurrentTime<MinTime,将该s丢弃,相反的,当s.CurrentTime>MinTime,将s加入到区块链节点的值集合,以实现根据s生成待打包记录,并将待打包记录和区块链节点标识实现关联。
在步骤706中,当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于预设数量阈值时,按照历史广播时间的时间顺序,删除相应的历史待打包记录。
其中,可以设定每个区块链节点最多维护的历史待打包记录的预设数量阈值,该预设数量阈值可以灵活设置,例如5,基于此,在将该待打包记录与相应的区块链节点标识进行关联之后,可以实时检测关联之后的区块链节点标识关联的历史待打包记录的数量是否大于该预设数量阈值,当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于该预设数量阈值时,假设关联之后的区块链节点标识关联的历史待打包记录的数量为6条,而改预设数量阈值为5条,那么需要按照历史广播时间的时间顺序,将历史广播时间最早的一条历史待打包记录删除,使得删除后的历史待打包记录为5条,满足预设数量阈值。
以此,可以在保证历史待打包记录实时性的前提下,动态控制每个区块链节点关联的历史待打包记录的数量,避免造成信息冗余,浪费区块链节点的存储空间。
在步骤707中,获取每个区块链节点标识关联的历史待打包记录,统计每个区块链节点标识的历史待打包数量的平均值,将平均值确定为每个区块链节点标识相应的区块链节点的数据。
其中,基于上述对每个区块链节点标识关联多条历史待打包记录的实现基础上,本申请实施例可以直接获取每个区块链节点标识关联的历史待打包记录,该历史待打包记录至少包括历史广播时间和历史打包数量,该历史待打包记录的数量可以为多条,例如该历史打包记录的数量可以为5条。
由于区块链节点的交易池中缓存的待打包交易数据的待打包数量是实时变化的,因此,需要对多条历史打包记录的历史待打包数量一并进行分析,来确认相应的区块链节点的交易池的存储状态,基于此思想,可以统计每个区块链节点标识的历史待打包数量的平均值,即将区块链节点标识关联的历史待打包记录的历史待打包数量求和,并除以相应的历史待打包记录的数量,得到相应的平均值,该平均值可以反映出该区块链节点标识相应的交易池中的待打包数量的集中趋势,可以更好的反映出区块链节点标识相应的交易池的存储状态。因此,可以将平均值确定为每个区块链节点标识相应的区块链节点的数据。
为了更好的说明上述实施例,可以一并参阅图13所示,在图13中,可以先初始化内存中维护的节点列表:ns,i=0,新建结果集合:nrs,该结果集合nrs中包括每个节点和相应关联的待打包记录,i代表为第i+1个区块链节点,例如0代表第一个区块链节点,1代表为第2个区块链节点,以此类推。
继续获取区块链节点i对应的历史待打包记录集合ts=ns【i】,初始化j=0,c=0,m=0,该j、c和m为计数单元,j为计量历史待打包记录的顺序,j=0时,代表区块链节点i中的第1个历史待打包记录,c可以为历史待打包记录数量,m为历史待打包数量总值。以此,可以开启循环,获取第j个历史待打包记录的历史广播时间t=ts【j】,进而判断t中的时间是否在有效范围,假设t中的时间在有效范围,则执行c++,m+=t.TxSize,将t的TxSize加入到m中,在执行j++实现循环,直至j>=len(ts),即区块链节点i的全部历史待打包记录遍历完成,计算计算平均值:avg=m/c,将均值写入到结果集合nrs中,再执行i++,更换下一个区块链节点i进行遍历,直至全部区块链节点i遍历完成(即i>=len(ns)时),结束,得到最后的nrs表,例如,请参阅如下表4:
区块链节点标识 平均值(数据)
Node1 1000
Node2 1500
表4,结果集合
在步骤708中,统计多个区块链节点的区块链节点数量,根据区块链节点数量计算出相应的容忍恶意区块链节点数量,根据容忍恶意区块链节点数量确定相应的预设数量,根据数据从多个区块链节点选取预设数量的目标区块链节点,将交易数据广播至预设数量的目标区块链节点上。
其中,可以统计得到多个区块链节点的区块链节点数量N,假设该N为4,根据计算公式令N>=3f+1,可以计算出相应的容忍恶意区块链节点数量f为1,相应的,为了保证交易数据的安全性,可以将f+1,即2设置为预设数量,以此,根据数据从多个区块链节点选取f+1的目标区块链节点,可以保证至少有一个诚实区块链节点收到了交易数据,保证了交易数据的安全。
进一步的,可以将该交易数据广播至预设数量的目标区块链节点上,动态增加目标区块链节点的交易池中的待打包交易数据的待打包数量。请继续参阅图7所示,在区块链节点2和区块链节点4确定为目标区块链节点时,在区块链节点1接收到客户端1的交易请求的交易数据后,区块链节点1不会将交易数据放入交易池,而是将该交易数据广播至区块链节点2和区块链节点4上。相应的,在区块链节点4接收到客户端2的交易请求的交易数据后,区块链节点4会将交易数据放置到自身的交易池中,还会将交易数据广播至发送至区块链节点4。以此,可以实现交易池中待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
为了更好的说明本申请实施例,请一并参阅图14进行参考,在图14中,当区块链节点接收到交易请求时,可以进行反序列交易,生成交易数据,并且判断交易来源是否来自客户端,当不是来自客户端,即由其他区块链节点发送过来的交易数据时,可以直接将该交易数据加入到本地交易池中,相反的,当来自客户端时,可以判断是否需要对数据重新统计,即是否应用之前统计得到的每个区块链节点标识相应的区块链节点的数据,可以设定周期,即数据可以在例如10秒内重复使用。
即数据生成的10秒内,区块链节点又接收到客户端发送的交易数据,那么可以判定为不需要对数据重新统计,即可以直接使用数据获取节点中满足条件的交易量最少的M(预设数量)个区块链节点,并判断M个区块链节点中是否有自身,在M个区块链节点中有自身时,将交易加入到本地交易池,否则将交易广播至其他区块链节点。
假设在数据生成的10秒外,区块链节点又接收到客户端发送的交易数据,那么可以判定为需要对数据重新统计,即可以统计、汇聚各个区块链节点关联的历史待打包记录,重新确定出每个区块链节点的数据,进而使用新的数据获取节点中满足条件的交易量最少的M(预设数量)个区块链节点,并判断M个区块链节点中是否有自身,在M个区块链节点中有自身时,将交易加入到本地交易池,否则将交易广播至其他区块链节点。
由上述可知,本申请实施例本申请实施例通过接收客户端发送的交易请求,交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据数据从多个区块链节点选取预设数量的目标区块链节点;将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,相对于将交易数据广播至全部区块链节点的方案而言,本申请实施例实现了每个区块链节点中的交易池中的待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
进一步的,本申请实施例不需要将交易数据广播至每个区块链节点,而只需要广播至预设数量目标区块链节点上,还可以减少网络的消耗,且该预设数量的目标区块链节点中至少会包含一个诚实区块链节点,可以更好的保证交易数据的安全。
为便于更好的实施本申请实施例提供的区块链数据处理方法,本申请实施例还提供一种基于上述区块链数据处理方法的装置。其中名词的含义与上述区块链数据处理方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图15,图15为本申请实施例提供的区块链数据处理装置的结构示意图,该区块链数据处理装置应用于发送设备,其中该区块链数据处理装置可以包括接收单元801、获取单元802、选取单元803、及广播单元804等。
接收单元801,用于接收客户端发送的交易请求,所述交易请求中至少携带交易数据。
获取单元802,用于获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据。
在一些实施方式中,所述装置,还包括第一关联单元(未标识),包括:
接收子单元(未标识),用于接收每个区块链节点定时广播的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
生成子单元(未标识),用于根据所述广播时间和待打包数量生成待打包记录;
关联子单元(未标识),用于将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施方式中,所述装置,还包括第二关联单元(未标识),包括:
接收子单元(未标识),用于接收每个区块链节点广播的目标交易数据,所述目标交易数据携带相应的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
生成子单元(未标识),用于根据所述广播时间和待打包数量生成待打包记录;
关联子单元(未标识),用于将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施方式中,所述交易池消息中还包括目标签名信息,所述装置还包括验证单元(未标识),用于:
获取每个区块链节点标识对应的公钥数据;
根据所述公钥数据对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到待验证签名信息;
当所述待验证签名信息与相应的目标签名信息匹配时,执行生成子单元。
在一些实施例中,所述关联子模块(未标识),用于:
当所述待打包记录中的广播时间大于预设记录时间时,获取所述待打包记录相应的区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述历史广播时间小于预设记录时间的历史待打包记录删除;
将所述待打包记录与相应的区块链节点标识进行关联。
在一些实施例中,所述关联子单元(未标识),还包括:
第一删除子模块(未标识),用于当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于预设数量阈值时,按照历史广播时间的时间顺序,删除相应的历史待打包记录。
在一些实施例中,所述关联子单元,还包括计算子模块(未标识),用于:
获取当前时间和预设间隔时间;
根据所述当前时间和预设间隔时间的差值计算出相应的预设记录时间。
在一些实施例中,所述关联子单元,还包括第二删除子模块(未标识),用于:
当所述待打包记录中的广播时间不大于预设记录时间时,获取所述待打包记录相应的区块链节点标识的历史待打包记录;
其中,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述待打包记录删除,并将所述历史广播时间小于预设记录时间的历史待打包记录删除。
在一些实施方式中,所述获取单元802,用于:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
统计每个区块链节点标识的历史待打包数量的平均值,将所述平均值确定为每个区块链节点标识相应的区块链节点的数据。
在一些实施方式中,所述获取单元802,还用于:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
按照所述历史广播时间的时间顺序,选取出每个区块链节点标识下历史广播时间最晚的目标历史待打包记录;
根据所述目标历史待打包记录的目标历史待打包数量,确定每个区块链节点标识相应的区块链节点的数据。
选取单元803,用于根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
在一些实施例中,所述选取单元803,用于:
统计多个区块链节点的区块链节点数量;
根据所述区块链节点数量计算出相应的容忍恶意区块链节点数量;
根据所述容忍恶意区块链节点数量确定相应的预设数量;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
广播单元804,用于将所述交易数据广播至预设数量的目标区块链节点上。
以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
由上述可知,本申请实施例通过接收单元801接收客户端发送的交易请求,交易请求中至少携带交易数据;获取单元802获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;选取单元803根据数据从多个区块链节点选取预设数量的目标区块链节点;广播单元804将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,相对于将交易数据广播至全部区块链节点的方案而言,本申请实施例实现了每个区块链节点中的交易池中的待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
本申请实施例还提供一种计算机设备,如图16所示,其示出了本申请实施例所涉及的服务器的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、电源903和输入单元904等部件。本领域技术人员可以理解,图16中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监测。可选的,处理器901可包括一个或多个处理核心;可选的,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、对象界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
计算机设备还包括给各个部件供电的电源903,可选的,电源903可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
计算机设备还可包括输入单元904,该输入单元904可用于接收输入的数字或字符信息,以及产生与对象设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现前述实施例提供的各种方法步骤,如下:
接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
将所述交易数据广播至预设数量的目标区块链节点上。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对队列处理方法的详细描述,此处不再赘述。
由上述可知,本申请实施例的计算机设备可以通过接收客户端发送的交易请求,交易请求中至少携带交易数据;获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;根据数据从多个区块链节点选取预设数量的目标区块链节点;将交易数据广播至预设数量的目标区块链节点上。以此,在接收到客户端发送的交易数据时,通过获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据进行分析,以对每个区块链节点的交易池的状态进行综合评估,进而根据数据选取出预设数量的目标区块链节点进行广播,相对于将交易数据广播至全部区块链节点的方案而言,本申请实施例实现了每个区块链节点中的交易池中的待打包数量的动态平衡,提升区块链节点的设备运算效率,降低区块链的存储空间。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种区块链数据处理方法中的步骤。例如,该指令可以执行如下步骤:
接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
将所述交易数据广播至预设数量的目标区块链节点上。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种区块链数据处理方法的步骤,因此,可以实现本申请实施例所提供的任一种区块链数据处理方法中所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种区块链数据处理方法、装置、存储介质及设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (16)

1.一种区块链数据处理方法,其特征在于,包括:
接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
将所述交易数据广播至预设数量的目标区块链节点上。
2.根据权利要求1所述的区块链数据处理方法,其特征在于,所述方法,还包括:
接收每个区块链节点定时广播的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
根据所述广播时间和待打包数量生成待打包记录;
将所述待打包记录与相应的区块链节点标识进行关联。
3.根据权利要求1所述的区块链数据处理方法,其特征在于,所述方法,还包括:
接收每个区块链节点广播的目标交易数据,所述目标交易数据携带相应的交易池消息,所述交易池消息中至少包括区块链节点标识、广播时间和待打包数量;
根据所述广播时间和待打包数量生成待打包记录;
将所述待打包记录与相应的区块链节点标识进行关联。
4.根据权利要求2或3所述的区块链数据处理方法,其特征在于,所述获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据,包括:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
统计每个区块链节点标识的历史待打包数量的平均值,将所述平均值确定为每个区块链节点标识相应的区块链节点的数据。
5.根据权利要求2或3所述的区块链数据处理方法,其特征在于,所述获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据,包括:
获取每个区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
按照所述历史广播时间的时间顺序,选取出每个区块链节点标识下历史广播时间最晚的目标历史待打包记录;
根据所述目标历史待打包记录的目标历史待打包数量,确定每个区块链节点标识相应的区块链节点的数据。
6.根据权利要求2或3所述的区块链数据处理方法,其特征在于,所述交易池消息中还包括目标签名信息,所述根据所述广播时间和待打包数量生成待打包记录之前,还包括:
获取每个区块链节点标识对应的公钥数据;
根据所述公钥数据对相应的区块链节点标识、广播时间和待打包数量进行签名处理,得到待验证签名信息;
当所述待验证签名信息与相应的目标签名信息匹配时,执行根据所述广播时间和待打包数量生成待打包记录。
7.根据权利要求2或3所述的区块链数据处理方法,其特征在于,所述将所述待打包记录与相应的区块链节点标识进行关联,包括:
获取所述待打包记录中的广播时间;
当所述待打包记录中的广播时间大于预设记录时间时,将所述待打包记录与相应的区块链节点标识进行关联。
8.根据权利要求7所述的区块链数据处理方法,其特征在于,所述将所述待打包记录与相应的区块链节点标识进行关联,包括:
获取所述待打包记录相应的区块链节点标识关联的历史待打包记录,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述历史广播时间小于预设记录时间的历史待打包记录删除;
将所述待打包记录与相应的区块链节点标识进行关联。
9.根据权利要求7所述的区块链数据处理方法,其特征在于,所述将所述待打包记录与相应的区块链节点标识进行关联之后,还包括:
当检测到关联之后的区块链节点标识关联的历史待打包记录的数量大于预设数量阈值时,按照历史广播时间的时间顺序,删除相应的历史待打包记录。
10.根据权利要求7所述的区块链数据处理方法,其特征在于,所述将所述待打包记录与相应的区块链节点标识进行关联之前,还包括:
获取当前时间和预设间隔时间;
根据所述当前时间和预设间隔时间的差值计算出相应的预设记录时间。
11.根据权利要求7所述的区块链数据处理方法,其特征在于,所述方法,还包括:
当所述待打包记录中的广播时间不大于预设记录时间时,获取所述待打包记录相应的区块链节点标识的历史待打包记录;
其中,所述历史待打包记录至少包括历史广播时间和历史待打包数量;
将所述待打包记录删除,并将所述历史广播时间小于预设记录时间的历史待打包记录删除。
12.根据权利要求1所述的区块链数据处理方法,其特征在于,所述根据所述数据从多个区块链节点选取预设数量的目标区块链节点,包括:
统计多个区块链节点的区块链节点数量;
根据所述区块链节点数量计算出相应的容忍恶意区块链节点数量;
根据所述容忍恶意区块链节点数量确定相应的预设数量;
根据所述数据从多个区块链节点选取预设数量的目标区块链节点。
13.一种区块链数据处理装置,其特征在于,包括:
接收单元,用于接收客户端发送的交易请求,所述交易请求中至少携带交易数据;
获取单元,用于获取每个区块链节点的交易池中缓存的待打包交易数据的待打包数量对应的数据;
选取单元,用于根据所述数据从多个区块链节点选取预设数量的目标区块链节点;
广播单元,用于将所述交易数据广播至预设数量的目标区块链节点上。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至12任一项所述的区块链数据处理方法。
15.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任一项所述的区块链数据处理方法。
16.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至12任一项所述的区块链数据处理方法。
CN202311144166.6A 2023-09-05 2023-09-05 区块链数据处理方法、装置、存储介质及设备 Pending CN117041254A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311144166.6A CN117041254A (zh) 2023-09-05 2023-09-05 区块链数据处理方法、装置、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311144166.6A CN117041254A (zh) 2023-09-05 2023-09-05 区块链数据处理方法、装置、存储介质及设备

Publications (1)

Publication Number Publication Date
CN117041254A true CN117041254A (zh) 2023-11-10

Family

ID=88641201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311144166.6A Pending CN117041254A (zh) 2023-09-05 2023-09-05 区块链数据处理方法、装置、存储介质及设备

Country Status (1)

Country Link
CN (1) CN117041254A (zh)

Similar Documents

Publication Publication Date Title
US20240214460A1 (en) Locality based content distribution
CN108681965B (zh) 离线节点的区块链网络交易处理方法和装置
KR102566892B1 (ko) 블록체인 합의 방법, 디바이스 및 시스템
CN109246211B (zh) 一种区块链中的资源上传和资源请求方法
Conner et al. A trust management framework for service-oriented environments
CN113409047B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN110597922B (zh) 数据处理方法、装置、终端及存储介质
CN112053271B (zh) 基于区块链的公益平台数据存证管理方法及系统
CN108768672B (zh) 数据处理方法、装置及存储介质
CN110910000A (zh) 一种区块链资产管理方法和装置
US11922526B2 (en) Net settlement of subrogation claims using a distributed ledger
CN110910143A (zh) 身份标识生成方法、装置、相关节点及介质
CN110660466A (zh) 结合区块链的物联网的个人健康数据上链方法及系统
CN113706313A (zh) 基于区块链的融资方法、系统及计算机可读存储介质
Lin et al. A proof-of-majority consensus protocol for blockchain-enabled collaboration infrastructure of 5G network slice brokers
CN113259384B (zh) 基于区块链的机理模型调用信息处理方法、服务器及系统
CN112200680B (zh) 区块链节点管理方法、装置、计算机以及可读存储介质
Nwebonyi et al. Reputation-based security system for edge computing
CN110633326A (zh) 物联网的天气数据在区块链上的上链方法及系统
CN116055403A (zh) 报文数据的传输方法、装置和服务器
CN117041254A (zh) 区块链数据处理方法、装置、存储介质及设备
US20230004955A1 (en) Peer-to-peer selectable digital money system
CN110035130B (zh) 一种数据处理方法及装置
CN117997909A (zh) 一种信息处理方法、装置及计算机可读存储介质
Salah et al. Towards collaborative trust management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication