CN111262921B - 基于区块链网络的应用请求处理方法、装置、设备和介质 - Google Patents

基于区块链网络的应用请求处理方法、装置、设备和介质 Download PDF

Info

Publication number
CN111262921B
CN111262921B CN202010033635.7A CN202010033635A CN111262921B CN 111262921 B CN111262921 B CN 111262921B CN 202010033635 A CN202010033635 A CN 202010033635A CN 111262921 B CN111262921 B CN 111262921B
Authority
CN
China
Prior art keywords
write request
request
hash value
block
uploading
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.)
Active
Application number
CN202010033635.7A
Other languages
English (en)
Other versions
CN111262921A (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010033635.7A priority Critical patent/CN111262921B/zh
Publication of CN111262921A publication Critical patent/CN111262921A/zh
Application granted granted Critical
Publication of CN111262921B publication Critical patent/CN111262921B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请实施例公开了一种基于区块链网络的应用请求处理方法、装置、设备和介质,涉及区块链技术,其中,该方法包括:监测到对应的区块链节点当前产生新区块时,从新区块中获取上传类型的事务数据,其中,区块链节点与执行节点一一对应关联;从上传事务数据中,获取写请求的哈希值,其中,写请求由任一发起方通过关联的执行节点发起并进行存储;基于写请求的哈希值,获取对应的写请求;执行写请求,以获取写请求的执行结果。本申请实施例通过部署包括区块链网络在内的双层去中心化网络,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦。

Description

基于区块链网络的应用请求处理方法、装置、设备和介质
技术领域
本申请实施例涉及计算机技术,具体涉及区块链技术,尤其涉及一种基于区块链网络的应用请求处理方法、装置、设备和介质。
背景技术
区块链技术给面向全网的去中心化服务提供了技术支撑,目前,很多区块链都提供了允许开发者开发部署应用服务到自身链上的机制,用户可以通过应用服务来发起实现某种功能的事务请求,也可称为交易。
虽然应用服务和用户的迅速增加,区块链网络需要处理的事务请求数量也大幅增长。然而,对于区块链网络本身而言,其每秒处理的总交易数(TPS,Transactions PerSecond)是有限的,随着区块链上应用服务的增加,所有应用服务将共同竞争有限的TPS,导致应用服务的吞吐量受到限制,影响服务的响应效率。
发明内容
本申请实施例公开一种基于区块链网络的应用请求处理方法、装置、设备和介质,以通过部署包括区块链网络在内的双层去中心化网络,在保证应用服务的各个执行节点中数据同步的基础上,实现应用服务的吞吐量与区块链的数据处理能力解耦。
第一方面,本申请实施例公开了一种基于区块链网络的应用请求处理方法,应用于执行节点,所述方法包括:
监测到对应的区块链节点当前产生新区块时,从所述新区块中获取上传类型的事务数据,其中,所述区块链节点与所述执行节点一一对应关联;
从上传事务数据中,获取写请求的哈希值,其中,所述写请求由任一发起方通过关联的执行节点发起并进行存储;
基于所述写请求的哈希值,获取对应的写请求;
执行所述写请求,以获取所述写请求的执行结果。
上述申请中的一个实施例具有如下优点或有益效果:通过部署包括区块链网络在内的双层去中心化网络,由执行节点执行应用服务的写请求,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦。
可选的,在所述监测到对应的区块链节点当前产生新区块之前,所述方法还包括:
获取发起方向本机节点发起的至少一个写请求,并确定所述至少一个写请求的哈希值;
将确定的哈希值,传输给所述区块链节点,以指示所述区块链节点将该哈希值,作为所述上传类型的事务数据,添加到当前区块中;
将所述获取的写请求发送至去中心化存储系统,其中,所述去中心化存储系统用于存储任一执行节点发送的写请求。
可选的,所述去中心化存储系统与区块链节点集成设置。
可选的,对所述区块链节点当前产生新区块的监测过程包括:
调用预设通信端口或者客户端,监测所述区块链节点当前产生的新区块。
可选的,在基于所述写请求的哈希值,获取对应的写请求之前,所述方法还包括:
从所述上传事务数据中,获取当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值;
如果基于所述当前上传事务请求的事件哈希值,和所述上一个上传事务请求的事件哈希值,确定当前上传事务数据和上一个上传事务数据在历史存储过程中均未被存储在本地,则回滚至所述新区块的前一个区块,以对所述前一个区块的上传事务数据进行检测,重新确定监测的区块起点。
上述申请中的一个实施例具有如下优点或有益效果:任一执行节点在对区块链节点中的新区块进行监测过程中,根据新区块中上传事务数据中的上一次事件哈希值和当前上传事务请求的事件哈希值,确定是否需要对当前的监测区块进行回滚式监测,保证了每个执行节点中与区块链网络中存储的写请求数据的一致性。
可选的,获取的写请求为压缩包形式,所述上传事务数据中还包括当前写请求压缩包的包索引;
相应的,在当前执行所述写请求压缩包之前,所述方法还包括:
确定目标上传事务请求的事件哈希值是否存储在本地,其中,所述目标上传事务请求是指上一次执行的写请求压缩包所对应的下一个上传事务请求;
如果是,则基于当前待执行写请求压缩包的包索引,确定待回滚的写请求压缩包。
上述申请中的一个实施例具有如下优点或有益效果:在执行写请求压缩包之前,基于上一次执行的写请求压缩包对应的上传事务请求的事件哈希值,确定是否需要对写请求压缩包进行回滚,保证了每个执行节点中与区块链网络中存储的写请求数据的一致性。
可选的,在所述确定待回滚的写请求压缩包的过程中,所述方法还包括:
按照包索引与上传事务请求的对应关系,确定待回滚的上传事件列表;
按照上传事务请求与写请求的对应的关系,确定与所述上传事件列表对应的待回滚写请求列表。
可选的,确定所述至少一个写请求的哈希值,包括:
将所述至少一个写请求进行压缩,并计算得到的写请求压缩包的哈希值;
相应的,将所述获取的写请求发送至所述去中心化存储系统,包括:将所述写请求压缩包发送至所述去中心化存储系统。
可选的,执行所述写请求压缩包,包括:
如果确定所述写请求压缩包合法,则解压所述写请求压缩包;
如果确定解压得到的写请求合法,则执行所述合法的写请求。
第二方面,本申请实施例还公开了一种基于区块链网络的应用请求处理方法,应用于区块链节点,所述方法包括:
获取上传事务请求,其中,所述上传事务请求由事务请求发起节点基于执行节点发送的写请求的哈希值而生成,所述写请求由发起方发起,并由所述执行节点执行,所述执行节点与所述区块链节点一一对应关联;
执行所述上传事务请求,以产生上传事务数据,并添加到新区块中。
可选的,所述方法还包括:
获取对应执行节点发送的至少一个写请求对应的哈希值;
基于获取的哈希值和预先部署的智能合约,生成所述上传事务请求;
将所述上传事务请求传输至区块链网络,以请求所述区块链网络中的其他节点执行所述上传事务请求。
可选的,所述基于获取的哈希值和预先部署的智能合约,生成所述上传事务请求,包括:
调用所述预先部署的智能合约获取当前区块数量、以及上一个上传事务请求的事件哈希值;
基于所述当前区块数量、所述上一个上传事务请求的事件哈希值、以及所述写请求的哈希值,计算得到当前上传事务请求的事件哈希值;
利用所述智能合约和所述当前上传事务请求的事件哈希值,生成所述上传事务请求。
可选的,所述获取对应执行节点发送的至少一个写请求对应的哈希值,包括:
获取所述对应执行节点发送的写请求压缩包的哈希值,其中,所述写请求压缩包由所述至少一个写请求压缩得到;
相应的,所述方法还包括:
利用所述智能合约,获取区块链网络中写请求压缩包的哈希值的数量;
基于所述写请求压缩包的哈希值的数量,确定当前写请求压缩包的包索引,以使所述当前写请求压缩包的包索引参与所述上传事务请求的生成。
第三方面,本申请实施例还公开了一种基于区块链网络的应用请求处理装置,配置于执行节点,所述装置包括:
监测模块,用于监测到对应的区块链节点当前产生新区块时,从所述新区块中获取上传类型的事务数据,其中,所述区块链节点与所述执行节点一一对应关联;
哈希值获取模块,用于从上传事务数据中,获取写请求的哈希值,其中,所述写请求由任一发起方通过关联的执行节点发起并进行存储;
写请求获取模块,用于基于所述写请求的哈希值,获取对应的写请求;
写请求执行模块,用于执行所述写请求,以获取所述写请求的执行结果。
第四方面,本申请实施例还公开了一种基于区块链网络的应用请求处理装置,配置于区块链节点,所述装置包括:
事务请求获取模块,用于获取上传事务请求,其中,所述上传事务请求由事务请求发起节点基于执行节点发送的写请求的哈希值而生成,所述写请求由发起方发起,并由所述执行节点执行,所述执行节点与所述区块链节点一一对应关联;
事务请求执行模块,用于执行所述上传事务请求,以产生上传事务数据,并添加到新区块中。
第五方面,本申请实施例还公开了一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请实施例任一所述的应用于执行节点的基于区块链网络的应用请求处理方法,或者执行如本申请实施例任一所述的应用于区块链节点的基于区块链网络的应用请求处理方法。
第六方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请实施例任一所述的应用于执行节点的基于区块链网络的应用请求处理方法,或者执行如本申请实施例任一所述的应用于区块链节点的基于区块链网络的应用请求处理方法。
根据本申请实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,任一执行节点获取到应用请求发起方发起的写请求后,计算写请求的哈希值,并通过对应的区块链节点将写请求哈希值上链存储,然后任一执行节点实时监控区块链节点中新区块的产生,从新区块的上传事务数据中获取写请求哈希值,进而获取写请求并执行,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率。上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例公开的一种基于区块链网络的应用请求处理方法的流程图;
图2是根据本申请实施例公开的双层去中心化网络的一种架构示意图;
图3是根据本申请实施例公开的另一种基于区块链网络的应用请求处理方法的流程图;
图4是根据本申请实施例公开的执行节点的一种架构示意图;
图5是根据本申请实施例公开的又一种基于区块链网络的应用请求处理方法的流程图;
图6是根据本申请实施例公开的执行节点对区块的一种监测流程的示意图;
图7是根据本申请实施例公开的关于确定待回滚的写请求压缩包以及待回滚的写请求列表的一种示意图;
图8是根据本申请实施例公开的又一种基于区块链网络的应用请求处理方法的流程图;
图9是根据本申请实施例公开的一种基于区块链网络的应用请求处理装置的结构示意图;
图10是根据本申请实施例公开的另一种基于区块链网络的应用请求处理装置的结构示意图;
图11是根据本申请实施例公开的一种电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请实施例公开的一种基于区块链网络的应用请求处理方法的流程图,本实施例方法可以适用于通过基于区块链网络,构建双层去中心化网络,利用该双层去中心化网络处理应用请求的情况,其中,该双层去中心化网络中的执行节点与区块链节点一一对应关联,执行节点用于接收并链下执行应用请求。本实施例公开的方法可以由基于区块链网络的应用请求处理装置来执行,该装置可采用硬件和/或硬件的方式实现,并可配置于执行节点。
图2作为示例,示出了本申请实施例中双层去中心化网络的一种架构示意图。如图2所示,本申请实施例中的双层去中心化网络包括:第一层去中心化网络L1,即区块链网络,和第二层去中心化网络L2,此处的第一、第二作为对双层去中心化网络中各层的区分,没有顺序上的限定。由多个区块链节点组成的区块链网络负责为各执行节点之间数据的一致性提供保证,L2层中的各执行节点负责执行上层应用服务的应用请求,请求类型包括写请求和读请求,即将应用服务的“计算”部分从区块链网络中抽离,区块链层只负责保障共识,也即一致性。上层应用服务通过应用请求发起方将应用请求发送至执行节点。L2层中各执行节点之间不直接相互连接或通信,从而避免各执行节点不经过区块链网络进行数据交互。执行节点与应用请求发起方也存在一一对应关系。对于读请求类型,由于执行节点可以直接读取本地缓存数据,不需要与区块链进行交互,因此,本申请实施例中主要考虑写请求的处理情况。
执行节点与区块链节点一一对应关联,两者可以部署在同一台硬件设备上,也可以部署在不同的硬件设备上,在保持两者相互通信的基础上,本申请实施例对此不作具体限定。
如图1所示,本申请实施例公开的基于区块链网络的应用请求处理方法可以包括:
S101、监测到对应的区块链节点当前产生新区块时,从新区块中获取上传类型的事务数据,其中,区块链节点与执行节点一一对应关联。
在本实施例中,任一执行节点在获取到对应的应用请求发起方发起的写请求后,计算写请求的哈希值,然后发送至与执行节点对应的区块链节点,由该区块链节点基于接收的哈希值,发起哈希值上传事务请求,实现写请求哈希值的上链存储。同时,任一执行节点实时监控对应的区块链节点,当监测或监听到区块链节点当前产生新区块时,则从新区块中获取上传类型的事务数据,该上传类型的事务数据(后续可以简称为上传事务数据)中包括了当前应用请求发起方发起的写请求的哈希值,即对任一执行节点而言,通过实时监测对应的区块链节点,从新区块中获取到的写请求哈希值包括自身从对应应用请求发起方获取的写请求而计算的哈希值,也包括其他执行节点从对应应用请求发起方获取的写请求而计算的哈希值。各执行节点获取的写请求哈希值一致,因此,可以确保各执行节点获取到的写请求一致,进而对各写请求的执行结果一致,即保证了各执行节点的数据同步。关于哈希算法的实现,可以采用任意可用的算法实现,本实施例不作具体限定。
可选的,执行节点对区块链节点当前产生新区块的监测过程包括:调用预设通信端口或者客户端,监测区块链节点当前产生的新区块。关于通信端口或者客户端的设置,可以由开发者在节点部署过程中,根据底层区块链技术的实现来进行设置,本实施例不作具体限定。
S102、从上传事务数据中,获取写请求的哈希值,其中,写请求由任一发起方通过关联的执行节点发起并进行存储。
其中,写请求由任一发起方通过关联的执行节点发起,指当前写请求可以是本机执行节点对应的应用请求发起方发送至本机执行节点的写请求,也可以是其他执行节点对应的应用请求发起方发送至其他执行节点的写请求。任一执行节点获取到写请求后,在将计算得到的写请求哈希值发送至对应的区块链节点的同时,将写请求发送至去中心化存储系统中进行存储。去中心化存储系统可以用于存储任一执行节点发送的写请求,任一执行节点获取到写请求哈希值之后,均可以通过该哈希值从去中心化存储系统中获取相应的写请求。
S103、基于写请求的哈希值,获取对应的写请求。
S104、执行写请求,以获取写请求的执行结果。
任一执行节点获取到应用请求发起方发起的写请求后,并不直接执行,而是将写请求的哈希值通过区块链节点上链存储后,从区块数据中获取该写请求的哈希值,基于哈希值再次获取到写请求后才执行,从而确保了各执行节点执行的写请求的一致性、以及执行结果的一致性。执行节点执行写请求后,可以将执行结果存储在本地,例如,首先将执行结果进行缓存,然后存储至本地数据库中。当执行节点获取到应用请求发起方发起的读请求后,可以从本地缓存或者本地数据中读取相应数据,并反馈给应用服务发起方。
根据本实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,任一执行节点获取到应用请求发起方发起的写请求后,计算写请求的哈希值,并通过对应的区块链节点将写请求哈希值上链存储,然后任一执行节点实时监控区块链节点中新区块的产生,从新区块的上传事务数据中获取写请求哈希值,进而获取写请求并执行,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率。
图3是根据本申请实施例公开的另一种基于区块链网络的应用请求处理方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。具体的,本实施例以执行节点为本机节点为例,对基于区块链网络的应用请求处理方法进行示例性说明,本机节点是指当前用于执行本实施例方法的执行节点。如图2所示,该方法可以包括:
S201、获取发起方向本机节点发起的至少一个写请求,并确定至少一个写请求的哈希值。
其中,发起方指与本机节点对应的应用请求发起方。本机节点当前获取到至少一个写请求后,可以将该至少一个写请求作为一个整体,计算该至少一个写请求的哈希值。
进一步的,本机节点确定至少一个写请求的哈希值,包括:将至少一个写请求进行压缩,并计算得到的写请求压缩包的哈希值;相应的,本机节点将写请求压缩包发送至去中心化存储系统,例如IPFS(interPlanstary File System)中,并将写请求压缩包的哈希值发送至对应的区块链节点。其中,去中心化存储系统可以与区块链节点集成设置。可选的,本机节点将至少一个写请求进行压缩,包括,如果本机节点确定当前满足压缩条件,则将获取的至少一个写请求进行压缩,压缩条件包括截至当前获取的写请求的数量满足预设数量阈值,或者截至当前,写请求的获取时间满足预设时间阈值,预设数量阈值与预设时间阈值可以根据实际处理需求进行适应性设置,本实施例不作具体限定。
S202、将确定的哈希值,传输给对应的区块链节点,以指示对应的区块链节点将该哈希值,作为上传类型的事务数据,添加到当前区块中。
区块链节点收到本机节点发送的至少一个写请求的哈希值或者写请求压缩包的哈希值之后,基于该哈希值触发哈希上传事务请求,以实现将该哈希值存储在新区块中。
S203、将获取的写请求发送至去中心化存储系统,其中,去中心化存储系统用于存储任一执行节点发送的写请求。
需要说明的是,操作S202与操作S202没有严格的执行顺序限定,不应当将图3中所示的执行逻辑顺序理解为对本实施例的具体限定。
S204、监测到对应的区块链节点当前产生新区块时,从新区块中获取上传类型的事务数据。
S205、从上传事务数据中,获取写请求的哈希值。
S206、基于写请求的哈希值,获取对应的写请求。
其中,如果区块链节点上传的是写请求压缩包的哈希值,则本机节点从上传事务数据中获取的写请求的哈希值即为写请求压缩包的哈希值,基于该哈希值从去中心化存储系统中获取对应的写请求压缩包。
S207、执行写请求,以获取写请求的执行结果。
在执行写请求压缩包中的写请求之前,需要对写请求压缩包进行解压。可选的,执行写请求压缩包,包括:如果确定写请求压缩包合法,则解压写请求压缩包;如果确定解压得到的写请求合法,则执行合法的写请求。关于写请求压缩包是否合法的确定,可以通过检测压缩包的格式是否符合预设格式、以及压缩包的数据大小是否符合预设数据大小等方式实现;关于写请求是否合法的确定,可以通过检测写请求的参数是否正确、以及写请求的来源是否可信等方式实现,当然,关于写请求压缩包和写请求的合法性检测并不限于前述方法,其他可用检测方式也属于本实施例的保护范畴。
图4作为示例,示出了执行节点的一种架构示意图,详细展示了执行节点对应用请求的处理流程,但不应理解为对本实施例的具体限定。如图4所示,本机节点可以通过上层应用服务提供的应用接口(RESTful API)获取写请求和读请求,由于读请求可以通过本机节点读取缓存数据来执行,不需要与区块链网络交互,因此,只需要将获取的写请求缓存在写请求队列(request queue)中。当写请求队列中缓存的写请求数量满足预设数量阈值,或者写请求的缓存时间满足预设时间阈值,则利用打包模块(package packer)将获取的写请求压缩处理,即将至少一个写请求打包成一个压缩包(package),并计算该写请求压缩包的哈希值;然后利用压缩包写模块(package writer)将该写请求压缩包的哈希值发送至对应的区块链节点,具体的,需要调用本机节点与区块链节点之间的通信端口或者通信客户端,将计算的哈希值发送至区块链节点,本机节点在发送哈希值的同时,将写请求压缩包发送至去中心化存储系统。去中心化存储系统与区块链节点可以对应的集成部署在同一硬件设备上。去中心化存储系统可以用于存储任一执行节点发送的写请求压缩包,任一执行节点获取到写请求压缩包的哈希值之后,均可以通过该哈希值从去中心化存储系统中获取相应的写请求压缩包。
区块链节点收到本机节点发送的写请求压缩包的哈希值后,将该哈希值,作为上传类型的事务数据,添加到当前区块中。本机节点可以利用压缩包读模块(packagereader)实时监测区块链节点中新区块的产生,当监测到新区块产生时,从新区块中获取上传事务数据,并从该上传事务数据中获取写请求压缩包的哈希值,然后,基于该哈希值从去中心化存储系统中获取相应的写请求压缩包;利用压缩包检测模块(package filter)检验压缩包的合法性,如果确定写请求压缩包合法,则将写请求压缩包发送至写请求执行模块(request executor),利用写请求执行模块解压压缩包并检验写请求的合法性,如果写请求合法,则执行各写请求。写请求的执行结果可以首先缓存在本地,然后存储至本地数据库中。
写请求执行模块还可以用于检测写请求压缩包的元信息,即对应的上传事务数据中包括的各数据,通过检测写请求压缩包的元信息,可以将写请求压缩包内的各个写请求与写请求压缩包进行关联,进而使得写请求与写请求压缩包对应的上传事务请求关联,当出现数据回滚的时候,通过写请求与上传事务请求的关联性,即使不解压写请求压缩包,也可以迅速确定出需要回滚的写请求列表。
根据本实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,本机节点获取到应用请求发起方发起的写请求后,计算写请求的哈希值,并通过对应的区块链节点将写请求哈希值上链存储,然后实时监控区块链节点中新区块的产生,从新区块的上传事务数据中获取写请求哈希值,进而获取写请求并执行,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率。
图5是根据本申请实施例公开的又一种基于区块链网络的应用请求处理方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。
本实施例以写请求压缩包的哈希值上链存储为例,对基于区块链网络的应用请求处理方法进行示例性说明。其中,写请求压缩包可以由任一执行节点对至少一个写请求进行压缩得到,并由相应的执行节点进行存储,例如将写请求压缩包发送至去中心化存储系统。任一执行节点得到写请求压缩包之后,计算写请求压缩包的哈希值,然后发送至对应的区块链节点,以指示该区块链节点触发哈希上传事务请求,将写请求压缩包的哈希值添加到当前新区块中。具体的,任一区块链节点发起的一次哈希上传事务请求,也可以称为一次哈希上传事件(hash event),哈希上传事件后续可以简称为上传事件。哈希上传事务数据中不仅包括区块链节点当前接收的写请求压缩包的哈希值(package hash),还可以包括当前的事件哈希值(event hash)、上一次事件哈希值(previous event hash)、区块数量(block number)以及压缩包的包索引(package index)等。需要说明的是,如果执行节点未将写请求进行压缩处理,则可以用写请求的哈希值替代写请求压缩包的哈希值。
其中,写请求压缩包的包索引,可以用于标识每个执行节点中基于从上传事务数据中获取的写请求压缩包的哈希值,而存储或者缓存在本地的压缩包数量,随着写请求压缩包的哈希值的增加,包索引的值递增,并且,在执行节点与对应区块链节点中存储的写请求压缩包哈希值一致时,两者存储的写请求压缩包的包索引也一致;区块数量,用于表示当前上链存储的数据要写入第几个区块中;上一次事件哈希值,是指区块链网络中区块链节点新产生一个事件哈希值之前,区块链网络中上一个哈希上传事件的哈希值。包索引、区块数量以及上一次事件哈希值这三个值可以通过任一区块链节点,调用智能合约的合约状态(指合约中变量的值)而获取到。当前哈希上传事件的事件哈希值,可以基于当前写请求压缩包的哈希值、包索引、区块数量以及上一次事件哈希值,进行计算得到。
如图5所示,该方法可以包括:
S301、监测到对应的区块链节点当前产生新区块时,从新区块中获取上传类型的事务数据,其中,区块链节点与执行节点一一对应关联。
S302、从上传事务数据中,获取写请求压缩包的哈希值。
S303、基于写请求压缩包的哈希值,获取对应的写请求压缩包。
S304、从上传事务数据中,获取当前写请求压缩包的包索引。
S305、确定目标上传事务请求的事件哈希值是否存储在本地,其中,目标上传事务请求是指上一次执行的写请求压缩包所对应的下一个上传事务请求。
S306如果是,则基于当前待执行写请求压缩包的包索引,确定待回滚的写请求压缩包。
S307、如果否,则执行当前写请求压缩包,以获取写请求压缩包的执行结果。
可选的,在基于写请求的哈希值,获取对应的写请求之前,或者基于写请求压缩包的哈希值,获取对应的写请求压缩包之前,本实施例方法还包括:
从上传事务数据中,获取当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值;
如果基于当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值,确定当前上传事务数据和上一个上传事务数据在历史存储过程中均未被存储在本地,此时说明了执行节点本地存储的哈希上传事件列表中出现了空洞,则回滚至新区块的前一个区块,以对前一个区块的上传事务数据进行检测,重新确定监测的区块起点。
如果基于当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值,确定当前上传事务数据在历史存储过程中未被存储在本地,以及确定上一个上传事务数据在历史存储过程中被存储在本地,此时说明了执行节点本地存储的哈希上传事件列表中,按照哈希上传事件的产生依次进行了存储,当前监测到的哈希上传事件属于按顺序正常产生的事件,则从上传事务数据中,获取写请求的哈希值,或者从上传事务数据中,获取写请求压缩包的哈希值。
任一执行节点通过与对应区块链节点的交互,从区块中获取的上传事务数据,按照区块的产生顺序或者按照哈希上传事件的产生顺序,依次存储在本地。任一执行节点获取的上传事务数据中可以包括当前的事件哈希值、上一次事件哈希值、当前写请求压缩包的哈希值、区块数量以及当前写请求压缩包的包索引等,上传事务数据中的该多个数据存在一一对应关系,并且,其中的上一次事件哈希值可以用于判断底层区块链是否发生的回滚,以确定执行节点当前监测的区块对象是否需要从当前新区块回滚至上一个区块或者更在前产生的区块。
图6作为示例,示出了本实施例中执行节点对区块的一种监测流程的示意图,具体的可以是压缩包读模块(package reader)的执行机制的流程图,不应理解为对本实施例的具体限定。如图6所示,执行节点当前将对应区块链节点中区块链的新区块作为监测对象,当监测到区块链节点当前产生新区块,并且新区块中存在上传类型的事务数据时,则从新区块的上传事务数据中获取当前上传事务请求的事件哈希值,与本地已经存储的事件哈希值进行比较。如果确定当前事件哈希值属于已知的、重复的事件哈希值,即对应的上传事务数据已经被存储在本地,则可以跳过,继续监测下一区块;如果通过与本地已存储的事件哈希值比较,确定当前事件哈希值未被存储在本地,即当前事件哈希值未知,对应的上传事务数据未被存储在本地,则继续将从新区块的上传事务数据中,获取的上一个上传事务请求的事件哈希值,与本地已经存储的事件哈希值进行比较。
如果确定上一个上传事务请求的事件哈希值已被存储,即属于已知的,上一个上传事务请求对应的上传事务数据已经被存储在本地,则说明当前监测正常,从新区块的上传事务数据中,获取写请求压缩包的哈希值,基于该哈希值从去中心化存储系统中获取相应的写请求压缩包,解包并进一步处理该压缩包。
如果确定上一个上传事务请求的事件哈希值未被存储,即同样属于未知的,上一个上传事务请求对应的上传事务数据同样未被存储在本地,说明执行节点本地存储的哈希上传事件列表中出现了空洞,意味着双层去中心化网络中存在异常,可能由于网络等原因导致区块链网络与执行节点所属去中心化网络中的上传事务数据未对齐,需要进行回滚监测,停止对当前新区块的监测,回滚至新区块的前一个区块,以对前一个区块的上传事务数据进行检测,重新确定监测的区块起点。通过至少一次循环的回滚监测,直至确定出执行节点本地存储的哈希上传事件列表中不连续的起点事件。底层区块链发生回滚的情况包括底层区块链产生暂时的侧链等。
具体的,每一个上传事情请求对应一个事件索引。执行节点可以将监测的事件索引由当前上传事务请求的索引变更为上一个上传事务请求的索引,并将该上一个上传事务请求作为当前的新监测事件对象,确定该新监测事件对象对应的上传事务数据中,上一个上传事务请求的事件哈希值是否被存储在本地,如果被存储,即属于已知,则可以将该新监测事件对象对应的区块作为新的监测区块,继续监测;如果未被存储,即属于未知,则继续将监测事件索引变更为该新监测事件的上一个上传事务请求的索引,开始新一轮的上一个上传事务请求的事件哈希值是否被存储在本地的检测,直至可以确定出监测的区块起点。
结合图7,在本实施例中,执行节点获取当前写请求压缩包之后,进一步的还可以在解压当前写请求压缩包之后,检测上一次执行的写请求压缩包所对应的下一个上传事务请求的事件哈希值是否存储在本地,如果存储在本地,即图7中所示的对应的下一个上传事务请求的事件哈希值非空,则说明当前待执行的写请求压缩包为重复获取的压缩包,进而说明底层区块链出现了回滚,对应的需要对执行节点本地存储的写请求压缩包进行回滚操作,即执行操作S306,以确保执行节点本地存储的写请求数据与区块链网络中存储的写请求数据的一致性;如果未存储在本地,即图7中所示的对应的下一个上传事务请求的事件哈希值为空,则说明当前待执行的写请求压缩包为预期的最新写请求压缩包,可以继续执行当前写请求压缩包,即执行操作S307。
可选的,在确定待回滚的写请求压缩包的过程中,本实施例公开的方法还包括:
按照包索引与上传事务请求的对应关系,确定待回滚的上传事件列表(eventlist);
按照上传事务请求与写请求的对应的关系,确定与上传事件列表对应的待回滚写请求列表。
当前获取的写请求压缩包为重复获取的压缩包时,对应写请求压缩包的包索引与本地存储的包索引也存在重复,因此,在将执行节点本地存储的与当前待执行写请求压缩包的包索引相同、以及大于当前待执行写请求压缩包的包索引的压缩包,确定为待回滚的写请求压缩包的同时,按照包索引与上传事务请求的对应关系,将执行节点本地存储的对应上传事务请求确定为待回滚的上传事件,进而还可以确定对应的待回滚写请求列表,进一步的,还可以对执行节点本地存储的写请求的执行结果进行回滚。回滚是指把写请求压缩包、对应的上传事件和写请求、以及写请求的执行结果从本地存储删除,回滚采用倒序执行的方式实现。
例如,执行节点当前新获取的上传事务数据对应的上传事件索引(event index)为10,查询执行节点本地缓存中的上传事件列表,其前一个事件索引为9的事件以及事件索引为10的事件,均已经存在记录,当前相当于重复收到了事件索引为10的事件,说明底层区块链中的上传事件列表发生了回滚,上传事件对应的写请求压缩包也需要对应回滚,则执行节点将事件索引为10的事件对应的写请求压缩包以及其后的写请求压缩包,确定需要回滚的写请求压缩包。
图7作为示例,示出了本实施例中关于确定待回滚的写请求压缩包以及待回滚的写请求的示意图,不应理解为对本实施例的具体限定。
可选的,执行写请求压缩包,包括:如果确定写请求压缩包合法,则解压写请求压缩包;如果确定解压得到的写请求合法,则执行合法的写请求,并将执行结果存储在本地。
根据本实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率;并且,任一执行节点在对区块链节点中的新区块进行监测过程中,根据新区块中上传事务数据中的上一次事件哈希值和当前上传事务请求的事件哈希值,确定是否需要对当前的监测区块进行回滚式监测,进一步的,在执行写请求压缩包之前,基于上一次执行的写请求压缩包对应的上传事务请求的事件哈希值,确定是否需要对写请求压缩包进行回滚,从而保证了每个执行节点中与区块链网络中存储的写请求数据的一致性。
图8是根据本申请实施例公开的又一种基于区块链网络的应用请求处理方法的流程图,本实施例方法可以适用于通过基于区块链网络,构建双层去中心化网络,利用该双层去中心化网络处理应用请求的情况,其中,该双层去中心化网络中的执行节点与区块链节点一一对应关联,执行节点用于接收并链下执行应用请求。本实施例公开的方法可以由基于区块链网络的应用请求处理装置来执行,该装置可采用硬件和/或硬件的方式实现,并可配置于区块链节点。应用于区块链节点的应用请求处理方法与前述任一应用于执行节点的应用请求处理方法配合执行,本实施方式中未详细描述的内容,可以参考上述任意实施方式中的描述。
S401、获取上传事务请求,其中,上传事务请求由事务请求发起节点基于执行节点发送的写请求的哈希值而生成,写请求由发起方发起,并由执行节点执行,执行节点与区块链节点一一对应关联;
S402、执行上传事务请求,以产生上传事务数据,并添加到新区块中。
可选的,本实施例公开的方法还包括:
获取对应执行节点发送的至少一个写请求对应的哈希值;
基于获取的哈希值和预先部署的智能合约,生成上传事务请求;
将上传事务请求传输至区块链网络,以请求区块链网络中的其他节点执行上传事务请求。
可选的,基于获取的哈希值和预先部署的智能合约,生成上传事务请求,包括:
调用预先部署的智能合约获取当前区块数量、以及上一个上传事务请求的事件哈希值;
基于当前区块数量、上一个上传事务请求的事件哈希值、以及写请求的哈希值,计算得到当前上传事务请求的事件哈希值;
利用智能合约和当前上传事务请求的事件哈希值,生成上传事务请求。
可选的,获取对应执行节点发送的至少一个写请求对应的哈希值,包括:
获取对应执行节点发送的写请求压缩包的哈希值,其中,写请求压缩包由至少一个写请求压缩得到;
相应的,本实施公开的方法还包括:
利用智能合约,获取区块链网络中写请求压缩包的哈希值的数量;
基于写请求压缩包的哈希值的数量,确定当前写请求压缩包的包索引,以使当前写请求压缩包的包索引参与上传事务请求的生成。
在本实施例中,任一区块链节点发起的一次哈希上传事务请求(即前述上传事务请求),也可以称为一次哈希上传事件(hash event)。哈希上传事务数据中,可以包括但不限于区块链节点当前接收的写请求压缩包的哈希值(package hash)、当前的事件哈希值(event hash)、上一次事件哈希值(previous event hash)、区块数量(block number)以及压缩包的包索引(package index)等。需要说明的是,如果执行节点未将写请求进行压缩处理,则可以用写请求的哈希值替代写请求压缩包的哈希值。
其中,写请求压缩包的包索引,可以用于标识每个执行节点中基于从上传事务数据中获取的写请求压缩包的哈希值,而存储或者缓存在本地的压缩包数量,随着写请求压缩包的哈希值的增加,包索引的值递增,并且,在执行节点与对应区块链节点中存储的写请求压缩包哈希值一致时,两者存储的写请求压缩包的包索引也一致;区块数量,用于表示当前上链存储的数据要写入第几个区块中;上一次事件哈希值,是指区块链网络中区块链节点新产生一个事件哈希值之前,区块链网络中上一个哈希上传事件的哈希值。
包索引、区块数量以及上一次事件哈希值这三个值可以通过任一上传事务请求发起节点,调用智能合约的合约状态(指合约中变量的值)而获取到,例如,可以进行程序设置,各变量的初始值为0,只要确定任意一个执行节点产生新的写请求压缩包,则将智能合约中包索引变量的值自动加1;区块链中每产生一个新的区块,则将区块数量变量的值自动加1。当前哈希上传事件的事件哈希值,可以基于当前写请求压缩包的哈希值、包索引、区块数量以及上一次事件哈希值,进行计算得到。
以以太坊(Ethereum)为例,哈希上链是通过智能合约来完成,上链时应用程序二进制接口(ABI,Application Binary Interface)接收当前写请求压缩包的哈希值作为参数,通过合约状态直接获取当前写请求压缩包的包索引、区块数量以及上一次事件哈希值,经计算得到当前的事件哈希值。
根据本实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,任一执行节点获取到应用请求发起方发起的写请求后,计算写请求的哈希值,发送至对应的区块链节点,使得该区块链节点将写请求哈希值上链存储,然后任一执行节点实时监控区块链节点中新区块的产生,从新区块的上传事务数据中获取写请求哈希值,进而获取写请求并执行,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率。
图9是根据本申请实施例公开的一种基于区块链网络的应用请求处理装置的结构示意图,配置于执行节点。本实施例可以适用于通过基于区块链网络,构建双层去中心化网络,利用该双层去中心化网络处理应用请求的情况。执行节点与区块链节点一一对应关联,用于执行应用请求。本实施例公开的装置可采用硬件和/或硬件的方式实现,并可集成在任意的具有计算能力的电子设备上。
如图9所示,本实施例公开的基于区块链网络的应用请求处理装置500,包括监测模块501、哈希值获取模块502、写请求获取模块503和写请求执行模块504,其中:
监测模块501,用于监测到对应的区块链节点当前产生新区块时,从新区块中获取上传类型的事务数据,其中,区块链节点与执行节点一一对应关联;
哈希值获取模块502,用于从上传事务数据中,获取写请求的哈希值,其中,写请求由任一发起方通过关联的执行节点发起并进行存储;
写请求获取模块503,用于基于写请求的哈希值,获取对应的写请求;
写请求执行模块504,用于执行写请求,以获取写请求的执行结果;
可选的,本实施例公开的装置还包括:
哈希值确定模块,用于在监测到对应的区块链节点当前产生新区块之前,获取发起方向本机节点发起的至少一个写请求,并确定至少一个写请求的哈希值;
哈希值传输模块,用于将确定的哈希值,传输给区块链节点,以指示区块链节点将该哈希值,作为上传类型的事务数据,添加到当前区块中;
写请求存储模块,用于将获取的写请求发送至去中心化存储系统,其中,去中心化存储系统用于存储任一执行节点发送的写请求。
可选的,去中心化存储系统与区块链节点集成设置。
可选的,监测模块501具体用于:
调用预设通信端口或者客户端,监测区块链节点当前产生的新区块。
可选的,本实施例公开的装置还包括:
事件哈希值获取模块502,用于在基于写请求的哈希值,获取对应的写请求之前,从上传事务数据中,获取当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值;
监测回滚模块,用于如果基于当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值,确定当前上传事务数据和上一个上传事务数据在历史存储过程中均未被存储在本地,则回滚至新区块的前一个区块,以对前一个区块的上传事务数据进行检测,重新确定监测的区块起点。
可选的,基于写请求的哈希值,获取的写请求为压缩包形式,上传事务数据中还包括当前写请求压缩包的包索引;
相应的,本实施例公开的装置还包括:
存储确定模块,用于在写请求执行模块504当前执行写请求压缩包之前,确定目标上传事务请求的事件哈希值是否存储在本地,其中,目标上传事务请求是指上一次执行的写请求压缩包所对应的下一个上传事务请求;
待回滚压缩包确定模块,用于如果目标上传事务请求的事件哈希值存储在本地,则基于当前待执行写请求压缩包的包索引,确定待回滚的写请求压缩包。
可选的,本实施例公开的装置还包括:
待回滚事件列表确定模块,用于按照包索引与上传事务请求的对应关系,确定待回滚的上传事件列表;
待回滚写请求列表确定模块,按照上传事务请求与写请求的对应的关系,确定与上传事件列表对应的待回滚写请求列表。
可选的,哈希值确定模块包括:
写请求获取单元,用于在监测到对应的区块链节点当前产生新区块之前,获取发起方向本机节点发起的至少一个写请求;
哈希值确定单元,用于将至少一个写请求进行压缩,并计算得到的写请求压缩包的哈希值;
相应的,写请求存储模块具体用于:将写请求压缩包发送至去中心化存储系统。
可选的,写请求执行模块504具体用于:
如果确定写请求压缩包合法,则解压写请求压缩包;
如果确定解压得到的写请求合法,则执行合法的写请求。
需要说明的是,前述公开的应用请求处理装置500包括的各个模块与方法实施例中描述的执行节点可以包括的各个模块,例如打包模块、压缩包写模块、压缩包读模块、压缩包检测模块、写请求执行模块等,并不冲突,如果实现的功能一致,即使模块名称存在差异,也属于实质相同的功能模块。
本申请实施例所公开的可配置于执行节点的、基于区块链网络的应用请求处理装置500可执行本申请实施例所公开的应用于执行节点的、基于区块链网络的应用请求处理方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本申请任意方法实施例中的描述。
图10是根据本申请实施例公开的另一种基于区块链网络的应用请求处理装置的结构示意图,配置于区块链节点。本实施例可以适用于通过基于区块链网络,构建双层去中心化网络,利用该双层去中心化网络处理应用请求的情况,其中,该双层去中心化网络中的区块链节点与执行节点一一对应关联。本实施例公开的装置可采用硬件和/或硬件的方式实现,并可集成在任意的具有计算能力的电子设备上。
如图10所示,本实施例公开的基于区块链网络的应用请求处理装置600包括事务请求获取模块601和事务请求执行模块602,其中:
事务请求获取模块601,用于获取上传事务请求,其中,上传事务请求由事务请求发起节点基于执行节点发送的写请求的哈希值而生成,写请求由发起方发起,并由执行节点执行,执行节点与区块链节点一一对应关联;
事务请求执行模块602,用于执行上传事务请求,以产生上传事务数据,并添加到新区块中。
可选的,本实施例公开的装置还包括:
哈希值获取模块,用于获取对应执行节点发送的至少一个写请求对应的哈希值;
上传事务请求生成模块,用于基于获取的哈希值和预先部署的智能合约,生成上传事务请求;
上传事务请求传输模块,用于将上传事务请求传输至区块链网络,以请求区块链网络中的其他节点执行上传事务请求。
可选的,上传事务请求生成模块包括:
智能合约调用单元,用于调用预先部署的智能合约获取当前区块数量、以及上一个上传事务请求的事件哈希值;
事件哈希值计算单元,用于基于当前区块数量、上一个上传事务请求的事件哈希值、以及写请求的哈希值,计算得到当前上传事务请求的事件哈希值;
上传事务请求生成单元,用于利用智能合约和当前上传事务请求的事件哈希值,生成上传事务请求。
可选的,哈希值获取模块具体用于:
获取对应执行节点发送的写请求压缩包的哈希值,其中,写请求压缩包由至少一个写请求压缩得到;
相应的,上传事务请求生成模块包括:
希值数量获取单元,用于利用智能合约,获取区块链网络中写请求压缩包的哈希值的数量;
包索引确定单元,用于基于写请求压缩包的哈希值的数量,确定当前写请求压缩包的包索引,以使当前写请求压缩包的包索引参与上传事务请求的生成。
本申请实施例所公开的可配置于区块链节点的、基于区块链网络的应用请求处理装置600可执行本申请实施例所公开的应用于区块链节点的、基于区块链网络的应用请求处理方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本申请任意方法实施例中的描述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。该电子设备用于对执行节点或者区块链节点所依赖的硬件设备进行示例性说明。
如图11所示,图11是用于实现本申请实施例中基于区块链网络的应用请求处理方法的电子设备的框图,其中,基于区块链网络的应用请求处理方法包括:应用于执行节点或者应用于区块链节点的应用请求处理方法。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请实施例的实现。
如图11所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作,例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统。图11中以一个处理器701为例。
存储器702即为本申请实施例所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请实施例所提供的基于区块链网络的应用请求处理方法。本申请实施例的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请实施例所提供的基于区块链网络的应用请求处理方法。
存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中基于区块链网络的应用请求处理方法对应的程序指令/模块,例如,附图9所示的监测模块501、哈希值获取模块502、写请求获取模块503和写请求执行模块504,或者例如附图10所示的事务请求获取模块601和事务请求执行模块602。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的基于区块链网络的应用请求处理方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于区块链网络的应用请求处理方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至用于实现本实施例中基于区块链网络的应用请求处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
用于实现本实施例中基于区块链网络的应用请求处理方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图11中以通过总线连接为例。
输入装置703可接收输入的数字或字符信息,以及产生与用于实现本实施例中基于区块链网络的应用请求处理方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置和触觉反馈装置等,其中,辅助照明装置例如发光二极管(Light Emitting Diode,LED);触觉反馈装置例如,振动电机等。该显示设备可以包括但不限于,液晶显示器(Liquid Crystal Display,LCD)、LED显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用集成电路(Application Specific Integrated Circuit,ASIC)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序,也称作程序、软件、软件应用、或者代码,包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置,例如,磁盘、光盘、存储器、可编程逻辑装置(Programmable Logic Device,PLD),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置,例如,阴极射线管(Cathode Ray Tube,CRT)或者LCD监视器;以及键盘和指向装置,例如,鼠标或者轨迹球,用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈、或者触觉反馈;并且可以用任何形式,包括声输入、语音输入或者、触觉输入,来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统,例如,作为数据服务器,或者实施在包括中间件部件的计算系统,例如,应用服务器,或者实施在包括前端部件的计算系统,例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互,或者实施在包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信,例如通信网络,来将系统的部件相互连接。通信网络的示例包括:局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过部署包括区块链网络在内的双层去中心化网络,任一执行节点获取到应用请求发起方发起的写请求后,计算写请求的哈希值,并通过对应的区块链节点将写请求哈希值上链存储,然后任一执行节点实时监控区块链节点中新区块的产生,从新区块的上传事务数据中获取写请求哈希值,进而获取写请求并执行,在保证应用服务的各个执行节点中数据同步的基础上,实现了应用服务的吞吐量与区块链的数据处理能力解耦,解决了依赖于区块链网络的应用服务增加时,应用服务的吞吐量受限于区块链网络本身的处理能力的问题,使得应用请求的执行不会受到区块链网络本身的处理能力的限制,优化了应用服务的处理效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (14)

1.一种基于区块链网络的应用请求处理方法,其特征在于,应用于执行节点,所述方法包括:
获取发起方向本机节点发起的至少一个写请求,并确定所述至少一个写请求的哈希值;
将确定的哈希值,传输给区块链节点,以指示所述区块链节点将该哈希值,作为上传类型的事务数据,添加到当前区块中;
将所述获取的写请求发送至去中心化存储系统,其中,所述去中心化存储系统用于存储任一执行节点发送的写请求;所述去中心化存储系统与区块链节点集成设置;
监测到对应的区块链节点当前产生新区块时,从所述新区块中获取上传类型的事务数据,其中,所述区块链节点与所述执行节点一一对应关联;
从上传事务数据中,获取写请求的哈希值,其中,所述写请求由任一发起方通过关联的执行节点发起并进行存储;
基于所述写请求的哈希值,获取对应的写请求;
执行所述写请求,以获取所述写请求的执行结果;
其中,所述区块链节点相互连接或通信;所述执行节点之间不直接相互连接或通信。
2.根据权利要求1所述的方法,其特征在于,对所述区块链节点当前产生新区块的监测过程包括:
调用预设通信端口或者客户端,监测所述区块链节点当前产生的新区块。
3.根据权利要求1所述的方法,其特征在于,在基于所述写请求的哈希值,获取对应的写请求之前,所述方法还包括:
从所述上传事务数据中,获取当前上传事务请求的事件哈希值,和上一个上传事务请求的事件哈希值;
如果基于所述当前上传事务请求的事件哈希值,和所述上一个上传事务请求的事件哈希值,确定当前上传事务数据和上一个上传事务数据在历史存储过程中均未被存储在本地,则回滚至所述新区块的前一个区块,以对所述前一个区块的上传事务数据进行检测,重新确定监测的区块起点。
4.根据权利要求1所述的方法,其特征在于,获取的写请求为压缩包形式,所述上传事务数据中还包括当前写请求压缩包的包索引;
相应的,在当前执行所述写请求压缩包之前,所述方法还包括:
确定目标上传事务请求的事件哈希值是否存储在本地,其中,所述目标上传事务请求是指上一次执行的写请求压缩包所对应的下一个上传事务请求;
如果是,则基于当前待执行写请求压缩包的包索引,确定待回滚的写请求压缩包。
5.根据权利要求4所述的方法,其特征在于,在所述确定待回滚的写请求压缩包的过程中,所述方法还包括:
按照包索引与上传事务请求的对应关系,确定待回滚的上传事件列表;
按照上传事务请求与写请求的对应的关系,确定与所述上传事件列表对应的待回滚写请求列表。
6.根据权利要求1所述的方法,其特征在于,确定所述至少一个写请求的哈希值,包括:
将所述至少一个写请求进行压缩,并计算得到的写请求压缩包的哈希值;
相应的,将所述获取的写请求发送至所述去中心化存储系统,包括:将所述写请求压缩包发送至所述去中心化存储系统。
7.根据权利要求4所述的方法,其特征在于,执行所述写请求压缩包,包括:
如果确定所述写请求压缩包合法,则解压所述写请求压缩包;
如果确定解压得到的写请求合法,则执行所述合法的写请求。
8.一种基于区块链网络的应用请求处理方法,其特征在于,应用于区块链节点,所述方法包括:
获取对应执行节点发送的至少一个写请求对应的哈希值;其中,所述写请求由发起方发起至所述执行节点;所述执行节点与所述区块链节点一一对应关联;所述写请求由所述执行节点发送至去中心化存储系统进行存储;所述去中心化存储系统与区块链节点集成设置;
基于获取的哈希值和预先部署的智能合约,生成上传事务请求,并将该哈希值,作为上传类型的事务数据,添加到当前区块中;将所述上传事务请求传输至区块链网络,以请求所述区块链网络中的其他节点执行所述上传事务请求;
产生新区块,所述新区块中包含上传类型的事务数据;以便对应执行节点检测到所述新区块时,从所述新区块中获取上传类型的事务数据,以获取写请求的哈希值,进而获取对应的写请求,执行所述写请求,获取所述写请求的执行结果;
其中,所述区块链节点相互连接或通信;所述执行节点之间不直接相互连接或通信。
9.根据权利要求8所述的方法,其特征在于,所述基于获取的哈希值和预先部署的智能合约,生成所述上传事务请求,包括:
调用所述预先部署的智能合约获取当前区块数量、以及上一个上传事务请求的事件哈希值;
基于所述当前区块数量、所述上一个上传事务请求的事件哈希值、以及所述写请求的哈希值,计算得到当前上传事务请求的事件哈希值;
利用所述智能合约和所述当前上传事务请求的事件哈希值,生成所述上传事务请求。
10.根据权利要求9所述的方法,其特征在于,所述获取对应执行节点发送的至少一个写请求对应的哈希值,包括:
获取所述对应执行节点发送的写请求压缩包的哈希值,其中,所述写请求压缩包由所述至少一个写请求压缩得到;
相应的,所述方法还包括:
利用所述智能合约,获取区块链网络中写请求压缩包的哈希值的数量;
基于所述写请求压缩包的哈希值的数量,确定当前写请求压缩包的包索引,以使所述当前写请求压缩包的包索引参与所述上传事务请求的生成。
11.一种基于区块链网络的应用请求处理装置,其特征在于,配置于执行节点,所述装置包括:
哈希值确定模块,获取发起方向本机节点发起的至少一个写请求,并确定所述至少一个写请求的哈希值;
哈希值传输模块,用于将确定的哈希值,传输给区块链节点,以指示所述区块链节点将该哈希值,作为上传类型的事务数据,添加到当前区块中;
写请求存储模块,用于将所述获取的写请求发送至去中心化存储系统,其中,所述去中心化存储系统用于存储任一执行节点发送的写请求;所述去中心化存储系统与区块链节点集成设置;
监测模块,用于监测到对应的区块链节点当前产生新区块时,从所述新区块中获取上传类型的事务数据,其中,所述区块链节点与所述执行节点一一对应关联;
哈希值获取模块,用于从上传事务数据中,获取写请求的哈希值,其中,所述写请求由任一发起方通过关联的执行节点发起并进行存储;
写请求获取模块,用于基于所述写请求的哈希值,获取对应的写请求;
写请求执行模块,用于执行所述写请求,以获取所述写请求的执行结果;
其中,所述区块链节点相互连接或通信;所述执行节点之间不直接相互连接或通信。
12.一种基于区块链网络的应用请求处理装置,其特征在于,配置于区块链节点,所述装置包括:
哈希值获取模块,用于获取对应执行节点发送的至少一个写请求对应的哈希值;其中,所述写请求由发起方发起至所述执行节点;所述执行节点与所述区块链节点一一对应关联;所述写请求由所述执行节点发送至去中心化存储系统进行存储;所述去中心化存储系统与区块链节点集成设置;
上传事务请求生成模块,基于获取的哈希值和预先部署的智能合约,生成上传事务请求,并将该哈希值,作为上传类型的事务数据,添加到当前区块中;
上传事务请求传输模块,用于将所述上传事务请求传输至区块链网络,以请求所述区块链网络中的其他节点执行所述上传事务请求;
其中,所述区块链节点产生新区块,所述新区块中包含上传类型的事务数据;以便对应执行节点检测到所述新区块时,从所述新区块中获取上传类型的事务数据,以获取写请求的哈希值,进而获取对应的写请求,执行所述写请求,获取所述写请求的执行结果;
其中,所述区块链节点相互连接或通信;所述执行节点之间不直接相互连接或通信。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的基于区块链网络的应用请求处理方法,或者执行权利要求8-10中任一项所述的基于区块链网络的应用请求处理方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的基于区块链网络的应用请求处理方法,或者执行权利要求8-10中任一项所述的基于区块链网络的应用请求处理方法。
CN202010033635.7A 2020-01-13 2020-01-13 基于区块链网络的应用请求处理方法、装置、设备和介质 Active CN111262921B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010033635.7A CN111262921B (zh) 2020-01-13 2020-01-13 基于区块链网络的应用请求处理方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010033635.7A CN111262921B (zh) 2020-01-13 2020-01-13 基于区块链网络的应用请求处理方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN111262921A CN111262921A (zh) 2020-06-09
CN111262921B true CN111262921B (zh) 2022-11-11

Family

ID=70948694

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010033635.7A Active CN111262921B (zh) 2020-01-13 2020-01-13 基于区块链网络的应用请求处理方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN111262921B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111866106A (zh) * 2020-07-09 2020-10-30 中汇信息技术(上海)有限公司 共识方法、装置、电子设备和可读存储介质
CN113051591A (zh) * 2021-03-25 2021-06-29 华中科技大学同济医学院附属协和医院 一种基于vr技术的健康教育及管理平台
CN113064898A (zh) * 2021-04-06 2021-07-02 北京瑞卓喜投科技发展有限公司 一种基于链上合约微型索引的检索方法、装置和电子设备
CN113064901A (zh) * 2021-04-06 2021-07-02 北京瑞卓喜投科技发展有限公司 在链上合约中形成数据微型索引的方法、装置和电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135661A (zh) * 2016-12-26 2017-09-05 深圳前海达闼云端智能科技有限公司 数据处理方法、装置、系统及信息采集设备
US11080246B2 (en) * 2017-12-11 2021-08-03 Celo Foundation Decentralized database associating public keys and communications addresses
CN107992356B (zh) * 2017-12-13 2021-09-14 深圳壹账通智能科技有限公司 区块链事务区块处理方法、电子装置及可读存储介质
US10701054B2 (en) * 2018-01-31 2020-06-30 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
CN108282539A (zh) * 2018-02-06 2018-07-13 北京奇虎科技有限公司 基于双层网络的去中心化存储系统
CN108347483B (zh) * 2018-02-06 2021-04-09 北京奇虎科技有限公司 基于双层网络的去中心化计算系统
CN109460405A (zh) * 2018-09-27 2019-03-12 上海点融信息科技有限责任公司 用于区块链网络的区块生成方法、同步方法、存储介质、计算设备
CN109558453B (zh) * 2018-11-27 2021-01-26 深圳市链联科技有限公司 一种区块链数据网络化存储和移存的方法
CN109711839A (zh) * 2018-12-13 2019-05-03 平安科技(深圳)有限公司 基于数据压缩的区块链存储方法、装置、设备和存储介质
CN109493061B (zh) * 2018-12-28 2021-03-23 合肥达朴汇联科技有限公司 一种区块链的数据的验证方法、装置、电子设备及存储介质
CN109784921A (zh) * 2018-12-29 2019-05-21 广州蓝石信息技术有限公司 基于去中心化网关的通用跨链通信机制
CN110012058A (zh) * 2019-01-29 2019-07-12 香港贝尔科技有限公司 一种面向区块链的计算资源调度与改进方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Proximity neighbor selection in blockchain net works;AOKI Y 等;《IEEE Press》;20191231;全文 *
区块链关键技术中的数据一致性研究;翟社平等;《计算机技术与发展》;20180428(第09期);全文 *
多区块链交易分发和事件处理的系统方案;刘雄文;《计算机科学》;20181115;全文 *

Also Published As

Publication number Publication date
CN111262921A (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN111262921B (zh) 基于区块链网络的应用请求处理方法、装置、设备和介质
CN109491968B (zh) 一种文件处理方法、装置、设备及计算机可读存储介质
US10078556B2 (en) Data replication between databases with heterogenious data platforms
EP3525352A1 (en) Delta compression
CN111277647A (zh) 区块链网络成员管理方法、装置、设备和介质
CN113961510B (zh) 一种文件处理方法、装置、设备及存储介质
CN112231108A (zh) 任务处理方法、装置、计算机可读存储介质及服务器
US20180039575A1 (en) Reducing Memory Usage For Long Standing Computations
CN111510480A (zh) 一种请求发送方法、装置以及第一服务器
CN113067860B (zh) 用于同步信息的方法、装置、设备、介质和产品
CN112559498B (zh) 时序时空数据库系统的分布式架构的构建方法、装置
US11394397B2 (en) System and method for selecting a lossless compression algorithm for a data object based on performance objectives and performance metrics of a set of compression algorithms
CN113641388A (zh) 云手机更新方法、相关装置及计算机程序产品
CN111737362B (zh) 区块链处理方法、装置、设备和存储介质
US10922202B2 (en) Application service-level configuration of dataloss failover
CN111355799A (zh) 基于区块链的投票方法、装置、设备和存储介质
CN113641640B (zh) 用于流式计算系统的数据处理方法、装置、设备和介质
CN113641688B (zh) 节点更新方法、相关装置及计算机程序产品
CN115587147A (zh) 一种数据处理方法及系统
CN111475572B (zh) 区块生成方法、装置、设备和介质
CN109766363B (zh) 流式数据处理方法、系统、电子设备及存储介质
CN113747423A (zh) 云手机状态同步方法、装置、设备、存储介质及程序产品
KR101909500B1 (ko) 로그 데이터 관리 디바이스 및 로그 관리 시스템
CN112383312B (zh) 一种数据处理方法、装置、电子设备以及存储介质
US20160173399A1 (en) Adaptive compression

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant