CN111339181A - 区块存储方法、装置、节点设备及存储介质 - Google Patents
区块存储方法、装置、节点设备及存储介质 Download PDFInfo
- Publication number
- CN111339181A CN111339181A CN202010085023.2A CN202010085023A CN111339181A CN 111339181 A CN111339181 A CN 111339181A CN 202010085023 A CN202010085023 A CN 202010085023A CN 111339181 A CN111339181 A CN 111339181A
- Authority
- CN
- China
- Prior art keywords
- block
- duration
- consensus
- height
- node device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请公开了一种区块存储方法、装置、节点设备及存储介质,属于区块链技术领域。本申请基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,该休眠时长为暂停对区块进行共识的时长,按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识,将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上,由于该目标批次内区块的休眠时长与区块高度呈负相关,从而可以保证区块高度越高的区块休眠时长越长,能够精准控制目标批次内的区块按照高度逆序的执行情况进行区块存储,克服了压力测试工具在验证区块存储一致性时的局限性,从而提升了对区块链系统中区块存储一致性的验证准确率。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种区块存储方法、装置、节点设备及存储介质。
背景技术
区块链系统是一种分布式的系统,随着业务高性能的要求,区块链系统在交易接收、打包、验证、提交以及存储等流程上都会承载并发的各种优化处理任务,由于并发区块的交易集合之间可能会存在上下依赖关系(也即:某一区块的交易集合依赖于另一个并发区块的交易集合),通常会在区块链系统中引入分批处理机制,保证每个批次内并发区块的交易集合之间不存在上下依赖关系(也即保证每个批次内不存在并发冲突)。
目前,区块链系统可以通过压力测试工具进行持续的压力测试,从而模拟高并发场景下的交易情况,检测出模拟场景下是否在各个批次内存在并发冲突,从而验证区块链系统中区块存储的一致性,然而由于压力测试工具无法精准控制到并发区块按照高度逆序(指区块高度较小的区块反而依赖于区块高度较大的区块)的执行情况,也即是说压力测试工具针对区块存储的一致性进行验证时局限性较大、验证准确率较差。
发明内容
本申请实施例提供了一种区块存储方法、装置、节点设备及存储介质,能够克服压力测试工具在验证区块存储一致性时的局限性、提升针对区块存储一致性的验证准确率。该技术方案如下:
一方面,提供了一种区块存储方法,应用于区块链系统的节点设备,所述方法包括:
基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长,所述休眠时长为暂停对区块进行共识的时长,所述目标批次内区块的休眠时长与区块高度呈负相关;
按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识;
将所述至少一个区块中共识通过的区块存储至所述区块链系统的区块链上。
在一种可能实施方式中,所述基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长包括:
对所述目标批次内任一区块,将所述区块的区块高度相对于滑动阈值进行取模运算,得到所述区块的区块高度相对于所述滑动阈值的模;
基于所述区块的区块高度相对于所述滑动阈值的模,确定所述区块的休眠时长。
在一种可能实施方式中,所述基于所述区块的区块高度相对于所述滑动阈值的模,确定所述区块的休眠时长包括:
将所述滑动阈值与所述模之间的差值与基准休眠时长相乘所得的数值确定为所述区块的休眠时长。
在一种可能实施方式中,所述方法还包括:
从所述节点设备的共享内存或者缓存中,获取所述滑动阈值或者所述基准休眠时长中至少一项。
在一种可能实施方式中,所述基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长之前,所述方法还包括:
对所述目标批次内任一区块,基于区块链系统的注入代码生成所述区块的高度逆序执行注入器,通过所述高度逆序执行注入器执行确定休眠时长的步骤。
在一种可能实施方式中,所述注入代码为编译期注入的静态代码或者运行期注入的动态代码中至少一项。
在一种可能实施方式中,所述按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识包括:
响应于任一个区块的暂停共识时长到达所述任一个区块的休眠时长,对所述任一个区块进行共识。
在一种可能实施方式中,所述分别对所述至少一个区块进行共识之前,所述方法还包括:
对所述目标批次内任一区块,对所述区块进行冲突验证,响应于冲突验证通过,执行对所述区块进行共识的步骤。
一方面,提供了一种区块存储装置,应用于区块链系统的节点设备,所述装置包括:
确定模块,用于基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长,所述休眠时长为暂停对区块进行共识的时长,所述目标批次内区块的休眠时长与区块高度呈负相关;
共识模块,用于按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识;
存储模块,用于将所述至少一个区块中共识通过的区块存储至所述区块链系统的区块链上。
在一种可能实施方式中,所述确定模块包括:
取模单元,用于对所述目标批次内任一区块,将所述区块的区块高度相对于滑动阈值进行取模运算,得到所述区块的区块高度相对于所述滑动阈值的模;
确定单元,用于基于所述区块的区块高度相对于所述滑动阈值的模,确定所述区块的休眠时长。
在一种可能实施方式中,所述确定单元用于:
将所述滑动阈值与所述模之间的差值与基准休眠时长相乘所得的数值确定为所述区块的休眠时长。
在一种可能实施方式中,所述装置还包括:
获取模块,用于从所述节点设备的共享内存或者缓存中,获取所述滑动阈值或者所述基准休眠时长中至少一项。
在一种可能实施方式中,所述装置还包括:
生成模块,用于对所述目标批次内任一区块,基于区块链系统的注入代码生成所述区块的高度逆序执行注入器,通过所述高度逆序执行注入器执行所述确定模块所执行的操作。
在一种可能实施方式中,所述注入代码为编译期注入的静态代码或者运行期注入的动态代码中至少一项。
在一种可能实施方式中,所述共识模块用于:
响应于任一个区块的暂停共识时长到达所述任一个区块的休眠时长,对所述任一个区块进行共识。
在一种可能实施方式中,所述装置还包括:
验证模块,用于对所述目标批次内任一区块,对所述区块进行冲突验证,响应于冲突验证通过,执行所述共识模块所执行的操作。
一方面,提供了一种节点设备,该节点设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的区块存储方法所执行的操作。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的区块存储方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,其中,该休眠时长为暂停对区块进行共识的时长,按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识,将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上,由于该目标批次内区块的休眠时长与区块高度呈负相关,从而可以保证区块高度越高的区块休眠时长越长,能够精准控制目标批次内的区块按照高度逆序的执行情况进行区块存储,克服了压力测试工具在验证区块存储一致性时的局限性,从而提升了对区块链系统中区块存储一致性的验证准确率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块存储方法的实施环境示意图;
图2是本申请实施例提供的一种分批处理机制的原理图;
图3是根据本申请实施例提供的一种区块链的结构示意图;
图4是根据本申请实施例提供的一种新区块产生的流程图;
图5是根据本申请实施例提供的一种区块链系统中节点设备的功能架构图;
图6是本申请实施例提供的一种区块存储方法的流程图;
图7是本申请实施例提供的一种确定休眠时长的流程图;
图8是本申请实施例提供的一种注入代码的原理性示意图;
图9是本申请实施例提供的一种注入高度逆序执行注入器的示意图;
图10是本申请实施例提供的一种区块存储方法的原理性示意图;
图11是本申请实施例提供的一种区块存储装置的结构示意图;
图12是本申请实施例提供的一种节点设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
以下,对本申请涉及的术语进行解释。
一、区块链(blockchain)
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,采用共识算法保持区块链上不同节点设备所记载的账本数据一致,通过密码算法保证不同节点设备之间账本数据的加密传送以及不可篡改,通过脚本系统来拓展账本功能,通过网络路由来进行不同节点设备之间的相互连接。
在一个区块链系统中可以包括一条或多条区块链,区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后,记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
二、共识机制(consensus mechanism)
共识机制是区块链系统中实现不同节点设备之间建立信任、获取权益的数学算法。在区块链系统中,通过节点设备之间的投票机制(也即共识机制),可以在很短的时间内完成对交易的验证和确认,对一笔交易,如果利益不相干的若干个节点设备能够达成共识,就可以认为系统中的全部节点设备对此也能够达成共识。
三、分批处理机制
为了满足业务高性能的要求,区块链服务(也即区块链系统)在交易接收、打包、验证、提交及存储等流程上常常会承载并发的各种优化处理任务,而在区块链系统中,不同区块的交易集合之间可能存在上下依赖关系,比如,某一区块的交易集合依赖于另一区块的交易集合,为此在区块链系统中引入基于分批的并发处理机制,按照批次来存储并发的、高性能的区块,仅需要保证批次内的各个区块交易集合之间不存在上下依赖关系,即可规避不同区块的交易集合之间的冲突,从而在确保无冲突的情况下提供高性能的区块链服务。
在上述过程中,由于批次内可能会存在高度逆序的小概率执行情况,高度逆序是指区块高度较小的区块反而依赖于区块高度较大的区块,这种小概率执行情况是传统的压力测试工具无法精准控制和检测的,也即是说,压力测试工具在针对区块链系统内区块存储的一致性进行验证时,局限性较大、准确率较差。
有鉴于此,本申请实施例提供一种区块存储方法,通过向区块链系统中各个节点设备注入代码,分别对并发任务中各个处理步骤注入各自的高度逆序执行注入器,能够精准控制批次内的并发区块按照高度逆序进行共识,从而模拟出批次内并发区块的高度逆序执行情况,能够提升区块存储一致性的验证准确率,下面进行详述。
图1是本申请实施例提供的一种区块存储方法的实施环境示意图。参见图1,本实施例提供的区块存储方法应用于区块链系统100,以下对该区块链系统100的系统架构进行介绍。
在区块链系统100中,包括多个节点设备101,此外,区块链系统还可以包括客户端。区块链系统100可以引入分批处理机制,将新生成的区块存储到区块链上(俗称为上链)的过程可以称为一个批次,在一次批次的上链过程中,通常会涉及到新生成的至少一个区块。具体地,区块链系统100中任一节点设备101在接收到该批次的任一区块时,基于本申请实施例提供的区块存储方法,将该批次的区块存储到区块链中。
图2是本申请实施例提供的一种分批处理机制的原理图,请参考图2,在一些高并发的业务场景中,节点设备通常会接收到大量的区块(如201所示),节点设备可以对接收到的区块进行判断分批(如202所示),将这些区块划分为至少一个批次,从而对各个批次内的区块进行并发处理(如203所示)。对本次上链过程所对应的目标批次而言,假设包括区块高度分别为h(h≥0)、h+1、h+2的三个区块,节点设备可以对每个区块执行区块验证步骤1~n(n≥1),区块验证步骤用于验证区块是否在目标批次内存在并发冲突,可以基于交易时间戳、哈希值等进行多维度的验证,本申请实施例不对区块冲突验证的方式进行具体限定,在冲突验证通过之后,节点设备计算区块的哈希值(Hash),对区块进行共识,在共识通过之后将该区块存储在区块链上,向其他节点设备同步结果。
上述节点设备101可以是网络中任意形式的电子设备,如服务器、主机、用户终端等,节点设备101与节点设备101之间能够共享数据。其中,节点设备101之间可以基于点对点协议(Peer To Peer,P2P)协议,建立P2P网络。该P2P协议是一个运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议。
在一些实施例中,对任一个批次的上链过程而言,区块链系统100可以从多个节点设备101选举出一个节点设备作为代表节点,在选举出代表节点之后,由代表节点创建本批次待存储的至少一个区块,代表节点将创建的至少一个区块在区块链系统中进行广播,区块链系统中任一节点设备接收到广播的至少一个区块之后,可以基于本申请实施例提供的区块存储方法,分别确定该至少一个区块的休眠时长,按照该至少一个区块的休眠时长分别对该至少一个区块进行共识,从而将共识通过的区块存储在区块链上。可选地,上述代表节点的选举方式包括工作量证明(Proof-of-Work,PoW)、权益证明(Proof-of-Stake,PoS)等,本申请实施例不对代表节点的选举方式进行具体限定。需要说明的是,区块链系统100中任一个节点设备101都可能会被选举为代表节点,不同的批次可以具有相同的代表节点,也可以具有不同的代表节点,因此,对于区块链系统100中的任一节点设备101均可以注入代码,以实现上述区块存储方法。
每个节点设备101在进行正常工作的过程中,可以接收到输入信息,并基于接收到的输入信息维护该区块链系统内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个节点设备101之间可以存在信息连接,节点设备101之间可以通过上述信息连接进行信息传输。例如,当区块链系统100中的任意节点设备100接收到输入信息时,区块链系统100中的其他节点设备便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统100中全部节点设备101上存储的数据均一致。
对于区块链系统100中的每个节点设备101,均具有与其对应的节点设备标识,而且区块链系统100中的每个节点设备101均可以存储有区块链系统100中其他节点设备的节点设备标识,以便后续根据其他节点设备的节点设备标识,与其他节点设备建立通信连接。每个节点设备中可维护一个如下表1所示的节点设备标识列表,将节点设备名称和节点设备标识对应存储至该节点设备标识列表中。其中,节点设备标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点设备的信息,表1中仅以IP地址为例进行说明。
表1
节点设备名称 | 节点设备标识 |
节点设备1 | 117.114.151.174 |
节点设备2 | 117.116.189.145 |
… | … |
节点设备N(N≥1) | 119.123.789.258 |
区块链系统100中的每个节点设备101均存储一条或多条相同的区块链。区块链由多个区块组成,参见图3,区块链由多个区块组成,创始块中包括区块头300和区块主体301,区块头300中存储有输入信息特征值、版本号、时间戳和难度值,区块主体301中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头300和区块主体301,区块头300中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图4,区块链所在的节点设备在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块所在的节点设备根据区块链系统100中其他节点设备的节点设备标识,将新生成的区块分别发送给区块链系统100中的其他节点设备,由其他节点设备对新生成的区块进行共识校验,并在共识通过后将新生成的区块添加至其存储的区块链中。
以下,对节点设备101的功能架构进行介绍。
参见图5,节点设备101从功能上可以划分为硬件层、中间层、操作系统层和应用层,涉及的具体功能可以如下:
1)路由,节点设备具有的基本功能,用于支持节点设备之间的通信。
节点设备除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点设备,供其他节点设备在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点设备,其他节点设备验证成功后,作为承认交易有效的响应,将交易的记录数据写入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点设备,其他节点设备验证有效后,作为承认账目数据有效的响应,将记录数据写入临时区块中,还可以向发起操作的节点设备发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点设备提交的记录数据。
图6是本申请实施例提供的一种区块存储方法的流程图。参见图6,本申请实施例可以应用于上述区块链系统100中任一个节点设备101,该实施例包括下述步骤:
601、节点设备基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,该休眠时长为暂停对区块进行共识的时长,该目标批次内区块的休眠时长与区块高度呈负相关。
上述节点设备可以为区块链系统中任一个节点设备,在上一批次的上链过程结束之后,节点设备可以对交易池中的交易数据进行打包,得到一个或多个区块,同时节点设备还可以接收其他节点设备发送的一个或多个区块,将上述打包得到的区块以及接收到的区块获取为目标批次的至少一个区块,这里的目标批次是指节点设备在本次上链过程所对应的批次。
图7是本申请实施例提供的一种确定休眠时长的流程图,请参考图7,对目标批次内任一区块(也即是该至少一个区块中任一区块),节点设备可以通过下述子步骤确定该区块的休眠时长:
6011、对目标批次内任一区块,节点设备基于区块链系统的注入代码生成该区块的高度逆序执行注入器。
在上述过程中,技术人员可以对区块链服务进行代码增强注入(向区块链系统中添加注入代码),能够与区块链系统自身的源代码隔离,避免污染区块链系统的源代码。在一些实施例中,技术人员可以选择在编译期或者运行期进行状态切换注入,也即是说,该注入代码可以为编译期注入的静态代码或者运行期注入的动态代码中至少一项,例如,在编译期实现静态注入时,可以利用AspectJ(提供AOP的框架,AOP英文全称:Aspect OrientedProgramming,中文全称:面向切面编程)、ASM(Java字节码操控框架)或者AspectC++(一种AOP注入技术)等代码增强技术实现编译注入,又比如,在运行期实现动态注入时,可以利用Instrumentation(一种虚拟机级别的AOP注入技术)+ASM或Hooking(钩子函数)等技术实现运行期注入。
图8是本申请实施例提供的一种注入代码的原理性示意图,请参考图8,源代码801与注入代码802之间的相互隔离的,能够避免注入代码污染源代码,保证区块链服务的安全性,且拓展了区块链服务的功能性,其中,注入代码即可以在编译期注入,也可以在运行期注入,节点设备的编译器(compller)对源代码和注入代码均进行编译之后,得到可执行文件803(文件后缀为.exe)。
在上述过程中,节点设备在获取目标批次内任一区块之后,调用注入代码生成该区块对应的高度逆序执行注入器,重复多次执行上述步骤,直到对目标批次内所有区块都生成对应的高度逆序执行注入器,进而通过各个区块的高度逆序执行注入器执行下述步骤6012-6013中确定各个区块的休眠时长的操作。
6012、节点设备通过该高度逆序执行注入器,将该区块的区块高度相对于滑动阈值进行取模运算,得到该区块的区块高度相对于该滑动阈值的模。
在上述过程中,节点设备可以通过高度逆序执行注入器从该节点设备的共享内存或者缓存中获取到上述滑动阈值,滑动阈值可以是与目标批次的并发量所对应的参数,目标批次的并发量是指在目标批次内处理的区块数量,可选地,节点设备可以仅缓存当前最新的滑动阈值,一旦目标批次的下一批次的并发量发生变化时,区块链系统可以在各个节点设备上更新滑动阈值,可选地,节点设备还可以将各个目标批次的并发量与各个滑动阈值进行对应存储,从而能够以目标批次的并发量为索引,在共享内存或缓存中查询与该目标批次的并发量所对应的滑动阈值,在将目标批次的并发量与滑动阈值进行对应存储时,可以以磁盘形式进行文件存储,也可以以键值对的形式进行存储,本申请实施例不对对应存储的方式进行具体限定。
在上述过程中,节点设备可以将区块的区块高度和滑动阈值输入高度逆序执行注入器,由该高度逆序执行注入器执行取模运算,得到区块高度相对于滑动阈值的模,例如,假设区块高度为H、滑动阈值为W,则区块高度相对于滑动阈值的模可以表示为H mod W,其中,H为正整数,W为实数。
6013、节点设备通过该高度逆序执行注入器,基于该区块的区块高度相对于该滑动阈值的模,确定该区块的休眠时长。
在一些实施例中,节点设备在基于模确定休眠时长时,可以将滑动阈值与该模之间的差值与基准休眠时长相乘所得的数值确定为该区块的休眠时长。基于上述示例,假设基准休眠时长为BT、休眠时长为ST,那么休眠时长ST可以表示为:
ST=BT*[W-(H mod W)]
其中,BT和ST均为非负数。
在上述过程中,节点设备可以通过高度逆序执行注入器从该节点设备的共享内存或者缓存中获取到上述基准休眠时长,基准休眠时长也可以是与目标批次的并发量所对应的参数,目标批次的并发量是指在目标批次内处理的区块数量,可选地,节点设备可以仅缓存当前最新的基准休眠时长,一旦目标批次的下一批次的并发量发生变化时,区块链系统可以在各个节点设备上更新基准休眠时长,可选地,节点设备还可以将各个目标批次的并发量与各个基准休眠时长进行对应存储,从而能够以目标批次的并发量为索引,在共享内存或缓存中查询与该目标批次的并发量所对应的基准休眠时长,在将目标批次的并发量与基准休眠时长进行对应存储时,可以以磁盘形式进行文件存储,也可以以键值对的形式进行存储,本申请实施例不对对应存储的方式进行具体限定。当然,基准休眠时长还可以根据区块链系统的业务需求来决定,当区块链系统负载较大时,为了保证响应时间不会太长,可以设置较小的基准休眠时长,当区块链系统负载较小时,则可以设置较大的基准休眠时长,本申请实施例不对基准休眠时长的获取方式进行具体限定。
在上述步骤6012-6013中,节点设备能够通过高度逆序执行注入器从该节点设备的共享内存或者缓存中,获取该滑动阈值或者该基准休眠时长中至少一项,其中,缓存可以是redis存储器、cache高速缓存、flash闪存等,本申请实施例不对缓存的存储器类型进行具体限定。
在上述过程中,通过对取滑动阈值与区块高度相对于滑动阈值的模之间差值之后,再将该差值与基准休眠时长相乘,将相乘所得的数值作为休眠时长,能够保证区块的休眠时长与区块高度呈负相关,也即是说,在同一个批次内,区块高度越高时,休眠时长越短,那么将会被越早被唤醒,反之,区块高度越低时,休眠时长越长,那么将会被越晚被唤醒,从而能够保证批次内按照高度逆序的执行情况进行区块存储,当然,休眠时长并不会随着区块高度无限减小,在不同批次内休眠时长与区块高度通常不是单调递减的关系,但在同一个批次内休眠时长与区块高度呈单调递减的关系,休眠时长的变化趋势类似于在不同批次内往复循环。
在一些实施例中,也可以采取其他的负相关函数来确定休眠时长,例如,将上述模的倒数与基准休眠时长相乘所得的数值确定为休眠时长,本申请实施例不对休眠时长的确定方式进行限定。
602、节点设备按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识。
在上述过程中,节点设备在确定出休眠时长之后,可以从确定时刻开始计时,将当前时刻与确定时刻之间的时间差获取为暂停共识时长,响应于任一个区块的暂停共识时长到达该任一个区块的休眠时长,对该任一个区块进行共识,也即是可以视为对各个区块的共识步骤进行暂停休眠与定时唤醒的过程。
可选地,共识机制可以基于业务需求来确定,例如包括工作量证明、权益证明、股份授权证明、拜占庭容错等,本申请实施例不对区块的共识机制进行具体限定。
在一些实施例中,对该目标批次内任一区块,节点设备在对该区块进行共识之前,还可以先对该区块进行冲突验证,响应于冲突验证通过,再执行对该区块进行共识的步骤。
图9是本申请实施例提供的一种注入高度逆序执行注入器的示意图,请参考图9,在区块链系统中引入分批处理机制:节点设备接收区块(如201所示),节点设备可以对接收到的区块进行判断分批(如202所示),对各个批次内的区块进行并发处理(如203所示)。对本次上链过程所对应的目标批次而言,假设包括区块高度分别为h(h≥0)、h+1、h+2的三个区块,以区块高度为h+2的区块为例进行说明,节点设备可以对区块高度为h+2的区块执行区块验证步骤1~n(n≥1),区块验证步骤用于验证区块是否在目标批次内存在并发冲突,可以基于交易时间戳、哈希值等进行多维度的验证,本申请实施例不对区块冲突验证的方式进行具体限定,在冲突验证通过之后,节点设备可以计算该区块的哈希值(Hash),对区块进行共识,在共识通过之后将该区块存储在区块链上,向其他节点设备同步结果,在本申请实施例中,在获取到批次内的并发区块之后,依据上述步骤6011生成各个并发区块的高度逆序执行注入器,高度逆序执行注入器可以获取区块高度、滑动阈值、基准休眠时长,从而确定区块的休眠时长,进一步地,节点设备需要对上述区块验证步骤1~n、计算哈希值以及同步结果中每一步操作均注入该区块的高度逆序执行注入器,这样才能够保证该区块的所有相关处理步骤均被休眠,在达到休眠时长后才会被唤醒,从而模拟出高度逆序的执行情况。此处仅以区块高度为h+2的区块为例进行说明,对批次内的所有并发区块的每个处理步骤均需要注入高度逆序执行器,才能够精准控制并发任务按照高度逆序进行冲突碰撞检测。
为了更加直观的说明各个区块分别通过各自的高度逆序执行注入器进行休眠与唤醒,在唤醒后才会进行区块共识,请参考图10,图10是本申请实施例提供的一种区块存储方法的原理性示意图,区块链系统中引入分批处理机制,假设目标批次内包括区块高度分别为h(h≥0)、h+1、h+2的三个区块,节点设备基于AOP注入代码分别生成各自的高度逆序执行注入器1、高度逆序执行注入器2以及高度逆序执行注入器3,将高度逆序执行注入器1注入区块1(区块高度为h)的各个处理步骤,将高度逆序执行注入器2注入区块2(区块高度为h+1)的各个处理步骤,将高度逆序执行注入器3注入区块3(区块高度为h+2)的各个处理步骤。
如图10所示,在步骤1001中,高度逆序执行注入器1获取区块1的区块高度,在步骤1002中,高度逆序执行注入器1获取滑动阈值,对区块1的各个处理步骤进行相应休眠,在步骤1003中,高度逆序执行注入器2获取区块2的区块高度,在步骤1004中,高度逆序执行注入器2获取滑动阈值,对区块2的各个处理步骤进行相应休眠,在步骤1005中,高度逆序执行注入器3获取区块3的区块高度,在步骤1006中,高度逆序执行注入器3获取滑动阈值,对区块3的各个处理步骤进行相应休眠,在步骤1007中,响应于区块3的暂停共识时长到达区块3的休眠时长,高度逆序执行注入器3执行区块3的各个处理步骤,对区块3进行冲突验证和共识,在步骤1008中,响应于区块2的暂停共识时长到达区块2的休眠时长,高度逆序执行注入器2执行区块2的各个处理步骤,对区块2进行冲突验证和共识,在步骤1009中,响应于区块1的暂停共识时长到达区块1的休眠时长,高度逆序执行注入器1执行区块1的各个处理步骤,对区块1进行冲突验证和共识。
在上述示例中,通过对区块链系统进行AOP注入,可以在无需改动区块链源代码的情况下,保证业务的高性能需求,克服了压力测试工具在验证区块存储一致性时的局限性,提升了针对区块链系统中区块存储一致性的验证准确率,并且由于休眠时长与区块高度呈负相关,使得区块高度越高的区块越早结束休眠,能够精准模拟出压力测试工具无法模拟的高度逆序执行情况,大大增加了对区块链系统进行性能检测的覆盖面,在区块链系统分批并未出现异常的情况下,能够通过这种高度逆序的执行情况验证出区块链系统中区块存储的一致性。
603、节点设备将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上。
在上述过程中,对目标批次内任一区块的共识过程中,节点设备可以在区块链系统中广播该区块,其他节点设备通过广播接收到该区块之后,对该区块进行共识验证,向该节点设备返回共识结果,响应于超过目标比例的共识结果为共识通过,节点设备确定对该区块共识通过,将该区块存储至区块链上,其他节点设备也会将最新的区块链同步到本地,保持各个节点设备中区块存储的一致性。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,区块链系统的节点设备基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,其中,该休眠时长为暂停对区块进行共识的时长,按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识,将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上,由于该目标批次内区块的休眠时长与区块高度呈负相关,从而可以保证区块高度越高的区块休眠时长越长,能够精准控制目标批次内的区块按照高度逆序的执行情况进行区块存储,克服了压力测试工具在验证区块存储一致性时的局限性,从而提升了对区块链系统中区块存储一致性的验证准确率。
图11是本申请实施例提供的一种区块存储装置的结构示意图,请参考图11,该装置应用于区块链系统的节点设备,该装置包括:
确定模块1101,用于基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,该休眠时长为暂停对区块进行共识的时长,该目标批次内区块的休眠时长与区块高度呈负相关;
共识模块1102,用于按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识;
存储模块1103,用于将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上。
本申请实施例提供的装置,通过基于目标批次内至少一个区块的区块高度,确定该至少一个区块的休眠时长,其中,该休眠时长为暂停对区块进行共识的时长,按照该至少一个区块的休眠时长,分别对该至少一个区块进行共识,将该至少一个区块中共识通过的区块存储至该区块链系统的区块链上,由于该目标批次内区块的休眠时长与区块高度呈负相关,从而可以保证区块高度越高的区块休眠时长越长,能够精准控制目标批次内的区块按照高度逆序的执行情况进行区块存储,克服了压力测试工具在验证区块存储一致性时的局限性,从而提升了对区块链系统中区块存储一致性的验证准确率。
在一种可能实施方式中,基于图11的装置组成,该确定模块1101包括:
取模单元,用于对该目标批次内任一区块,将该区块的区块高度相对于滑动阈值进行取模运算,得到该区块的区块高度相对于该滑动阈值的模;
确定单元,用于基于该区块的区块高度相对于该滑动阈值的模,确定该区块的休眠时长。
在一种可能实施方式中,该确定单元用于:
将该滑动阈值与该模之间的差值与基准休眠时长相乘所得的数值确定为该区块的休眠时长。
在一种可能实施方式中,基于图11的装置组成,该装置还包括:
获取模块,用于从该节点设备的共享内存或者缓存中,获取该滑动阈值或者该基准休眠时长中至少一项。
在一种可能实施方式中,基于图11的装置组成,该装置还包括:
生成模块,用于对该目标批次内任一区块,基于区块链系统的注入代码生成该区块的高度逆序执行注入器,通过该高度逆序执行注入器执行该确定模块1101所执行的操作。
在一种可能实施方式中,该注入代码为编译期注入的静态代码或者运行期注入的动态代码中至少一项。
在一种可能实施方式中,该共识模块1102用于:
响应于任一个区块的暂停共识时长到达该任一个区块的休眠时长,对该任一个区块进行共识。
在一种可能实施方式中,基于图11的装置组成,该装置还包括:
验证模块,用于对该目标批次内任一区块,对该区块进行冲突验证,响应于冲突验证通过,执行该共识模块1102所执行的操作。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的区块存储装置在存储区块时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将节点设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的区块存储装置与区块存储方法实施例属于同一构思,其具体实现过程详见区块存储方法实施例,这里不再赘述。
图12是本申请实施例提供的一种节点设备的结构示意图。该节点设备1200可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。节点设备1200还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,节点设备1200包括有:处理器1201和存储器1202。
处理器1201可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1201可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1201也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1201可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1201还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1202可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1202还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1202中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1201所执行以实现本申请中各个实施例提供的区块存储方法。
在一些实施例中,节点设备1200还可选包括有:外围设备接口1203和至少一个外围设备。处理器1201、存储器1202和外围设备接口1203之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1203相连。具体地,外围设备包括:射频电路1204、触摸显示屏1205、摄像头组件1206、音频电路1207、定位组件1208和电源1209中的至少一种。
外围设备接口1203可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1201和存储器1202。在一些实施例中,处理器1201、存储器1202和外围设备接口1203被集成在同一芯片或电路板上;在一些其他实施例中,处理器1201、存储器1202和外围设备接口1203中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1204用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1204通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1204将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1204包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1204可以通过至少一种无线通信协议来与其它节点设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1204还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1205用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1205是触摸显示屏时,显示屏1205还具有采集在显示屏1205的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1201进行处理。此时,显示屏1205还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1205可以为一个,设置节点设备1200的前面板;在另一些实施例中,显示屏1205可以为至少两个,分别设置在节点设备1200的不同表面或呈折叠设计;在再一些实施例中,显示屏1205可以是柔性显示屏,设置在节点设备1200的弯曲表面上或折叠面上。甚至,显示屏1205还可以设置成非矩形的不规则图形,也即异形屏。显示屏1205可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1206用于采集图像或视频。可选地,摄像头组件1206包括前置摄像头和后置摄像头。通常,前置摄像头设置在节点设备的前面板,后置摄像头设置在节点设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1206还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1207可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1201进行处理,或者输入至射频电路1204以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在节点设备1200的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1201或射频电路1204的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1207还可以包括耳机插孔。
定位组件1208用于定位节点设备1200的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件1208可以是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1209用于为节点设备1200中的各个组件进行供电。电源1209可以是交流电、直流电、一次性电池或可充电电池。当电源1209包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,节点设备1200还包括有一个或多个传感器1210。该一个或多个传感器1210包括但不限于:加速度传感器1211、陀螺仪传感器1212、压力传感器1213、指纹传感器1214、光学传感器1215以及接近传感器1216。
加速度传感器1211可以检测以节点设备1200建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1211可以用于检测重力加速度在三个坐标轴上的分量。处理器1201可以根据加速度传感器1211采集的重力加速度信号,控制触摸显示屏1205以横向视图或纵向视图进行用户界面的显示。加速度传感器1211还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1212可以检测节点设备1200的机体方向及转动角度,陀螺仪传感器1212可以与加速度传感器1211协同采集用户对节点设备1200的3D动作。处理器1201根据陀螺仪传感器1212采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1213可以设置在节点设备1200的侧边框和/或触摸显示屏1205的下层。当压力传感器1213设置在节点设备1200的侧边框时,可以检测用户对节点设备1200的握持信号,由处理器1201根据压力传感器1213采集的握持信号进行左右手识别或快捷操作。当压力传感器1213设置在触摸显示屏1205的下层时,由处理器1201根据用户对触摸显示屏1205的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1214用于采集用户的指纹,由处理器1201根据指纹传感器1214采集到的指纹识别用户的身份,或者,由指纹传感器1214根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1201授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1214可以被设置节点设备1200的正面、背面或侧面。当节点设备1200上设置有物理按键或厂商Logo时,指纹传感器1214可以与物理按键或厂商Logo集成在一起。
光学传感器1215用于采集环境光强度。在一个实施例中,处理器1201可以根据光学传感器1215采集的环境光强度,控制触摸显示屏1205的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1205的显示亮度;当环境光强度较低时,调低触摸显示屏1205的显示亮度。在另一个实施例中,处理器1201还可以根据光学传感器1215采集的环境光强度,动态调整摄像头组件1206的拍摄参数。
接近传感器1216,也称距离传感器,通常设置在节点设备1200的前面板。接近传感器1216用于采集用户与节点设备1200的正面之间的距离。在一个实施例中,当接近传感器1216检测到用户与节点设备1200的正面之间的距离逐渐变小时,由处理器1201控制触摸显示屏1205从亮屏状态切换为息屏状态;当接近传感器1216检测到用户与节点设备1200的正面之间的距离逐渐变大时,由处理器1201控制触摸显示屏1205从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图12中示出的结构并不构成对节点设备1200的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由终端(节点设备)中的处理器执行以完成上述实施例中区块存储方法。例如,该计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种区块存储方法,其特征在于,应用于区块链系统的节点设备,所述方法包括:
基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长,所述休眠时长为暂停对区块进行共识的时长,所述目标批次内区块的休眠时长与区块高度呈负相关;
按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识;
将所述至少一个区块中共识通过的区块存储至所述区块链系统的区块链上。
2.根据权利要求1所述的方法,其特征在于,所述基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长包括:
对所述目标批次内任一区块,将所述区块的区块高度相对于滑动阈值进行取模运算,得到所述区块的区块高度相对于所述滑动阈值的模;
基于所述区块的区块高度相对于所述滑动阈值的模,确定所述区块的休眠时长。
3.根据权利要求2所述的方法,其特征在于,所述基于所述区块的区块高度相对于所述滑动阈值的模,确定所述区块的休眠时长包括:
将所述滑动阈值与所述模之间的差值与基准休眠时长相乘所得的数值确定为所述区块的休眠时长。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
从所述节点设备的共享内存或者缓存中,获取所述滑动阈值或者所述基准休眠时长中至少一项。
5.根据权利要求1至4任一项所述的方法,其特性在于,所述基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长之前,所述方法还包括:
对所述目标批次内任一区块,基于区块链系统的注入代码生成所述区块的高度逆序执行注入器,通过所述高度逆序执行注入器执行确定休眠时长的步骤。
6.根据权利要求5所述的方法,其特征在于,所述注入代码为编译期注入的静态代码或者运行期注入的动态代码中至少一项。
7.根据权利要求1所述的方法,其特征在于,所述按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识包括:
响应于任一个区块的暂停共识时长到达所述任一个区块的休眠时长,对所述任一个区块进行共识。
8.一种区块存储装置,其特征在于,应用于区块链系统的节点设备,所述装置包括:
确定模块,用于基于目标批次内至少一个区块的区块高度,确定所述至少一个区块的休眠时长,所述休眠时长为暂停对区块进行共识的时长,所述目标批次内区块的休眠时长与区块高度呈负相关;
共识模块,用于按照所述至少一个区块的休眠时长,分别对所述至少一个区块进行共识;
存储模块,用于将所述至少一个区块中共识通过的区块存储至所述区块链系统的区块链上。
9.一种节点设备,其特征在于,所述节点设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求7任一项所述的区块存储方法所执行的操作。
10.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的区块存储方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010085023.2A CN111339181B (zh) | 2020-02-10 | 2020-02-10 | 区块存储方法、装置、节点设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010085023.2A CN111339181B (zh) | 2020-02-10 | 2020-02-10 | 区块存储方法、装置、节点设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111339181A true CN111339181A (zh) | 2020-06-26 |
CN111339181B CN111339181B (zh) | 2021-08-06 |
Family
ID=71185259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010085023.2A Active CN111339181B (zh) | 2020-02-10 | 2020-02-10 | 区块存储方法、装置、节点设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111339181B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590638A (zh) * | 2021-07-20 | 2021-11-02 | 南京国准数据有限责任公司 | 一种基于区块链的分布式数据存储系统 |
CN114338714A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114422527A (zh) * | 2021-12-31 | 2022-04-29 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN115037813A (zh) * | 2022-06-08 | 2022-09-09 | 北京知帆科技有限公司 | 一种区块链数据解析方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080063646A1 (en) * | 2003-12-04 | 2008-03-13 | Balaji Balasa | Treatment Of Inflammatory Bowel Diseases With Anti-Ip-10 Antibodies |
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
-
2020
- 2020-02-10 CN CN202010085023.2A patent/CN111339181B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080063646A1 (en) * | 2003-12-04 | 2008-03-13 | Balaji Balasa | Treatment Of Inflammatory Bowel Diseases With Anti-Ip-10 Antibodies |
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
Non-Patent Citations (1)
Title |
---|
区块链: "区块链相关的一些共识算法介绍", 《HTTP://M.ELECFANS.COM/ARTICLE/921498.HTML》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590638A (zh) * | 2021-07-20 | 2021-11-02 | 南京国准数据有限责任公司 | 一种基于区块链的分布式数据存储系统 |
CN114338714A (zh) * | 2021-12-31 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114422527A (zh) * | 2021-12-31 | 2022-04-29 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114338714B (zh) * | 2021-12-31 | 2024-04-02 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114422527B (zh) * | 2021-12-31 | 2024-05-28 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN115037813A (zh) * | 2022-06-08 | 2022-09-09 | 北京知帆科技有限公司 | 一种区块链数据解析方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111339181B (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102350462B1 (ko) | 서명 생성 방법, 전자 장치 및 저장 매체 | |
CN110401715B (zh) | 资源收集任务管理方法、装置、存储介质及系统 | |
CN110687821B (zh) | 基于区块链的智能家居控制系统及方法 | |
CN111245745B (zh) | 消息发送方法、装置、节点设备及存储介质 | |
CN111339181B (zh) | 区块存储方法、装置、节点设备及存储介质 | |
CN111340482B (zh) | 冲突检测方法、装置、节点设备及存储介质 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN111444092B (zh) | 智能合约的测试方法、装置、电子设备及存储介质 | |
CN111339086B (zh) | 区块处理方法、基于区块链的数据查询方法及装置 | |
CN110826103B (zh) | 基于区块链的文档权限处理方法、装置、设备及存储介质 | |
CN111045568B (zh) | 基于区块链的虚拟物品处理方法、装置、设备及存储介质 | |
CN111241115B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN110597924B (zh) | 基于区块链的用户标识处理方法、装置、设备及存储介质 | |
CN110555780B (zh) | 基于区块链的保险数据处理方法、装置、设备及存储介质 | |
CN110598386B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN110933113A (zh) | 基于区块链的互动行为检测方法、装置、设备及存储介质 | |
CN110543502A (zh) | 基于区块链的信用数据处理方法、装置、设备及存储介质 | |
CN111667371B (zh) | 基于区块链的资源聚合方法、系统、设备及存储介质 | |
CN110581891A (zh) | 基于区块链的游戏数据处理方法、装置、设备及存储介质 | |
CN111212074B (zh) | 基于区块链的资格认定方法、装置、设备及存储介质 | |
CN111327427B (zh) | 提交备选区块的方法、装置、节点设备、系统及存储介质 | |
CN110597840B (zh) | 基于区块链的伴侣关系建立方法、装置、设备及存储介质 | |
CN110597868A (zh) | 基于区块链的信息查询方法、装置、终端及存储介质 | |
CN110825465A (zh) | 日志数据处理方法、装置、电子设备及存储介质 | |
CN110971692B (zh) | 开通服务的方法、装置及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024810 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |