CN110417502A - 一种区块链节点时钟共识方法及装置 - Google Patents
一种区块链节点时钟共识方法及装置 Download PDFInfo
- Publication number
- CN110417502A CN110417502A CN201910702800.0A CN201910702800A CN110417502A CN 110417502 A CN110417502 A CN 110417502A CN 201910702800 A CN201910702800 A CN 201910702800A CN 110417502 A CN110417502 A CN 110417502A
- Authority
- CN
- China
- Prior art keywords
- block chain
- timestamp
- current time
- time stamp
- host node
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了区块链节点时钟共识方法及装置,方法包括:接收发送到区块链主节点的区块链交易请求;获取区块链主节点的当前时间戳;将当前时间戳作为预准备消息的一字段,根据区块链交易请求进行pbft算法共识处理;区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。本发明能实现为交易生成全局一致且递增的区块链时间戳,解决了区块链网络内不同节点无法生成统一时间戳的问题,解决了区块链节点无法自行生成并记录统一的时间戳,无法保证时间戳的准确性的问题。
Description
技术领域
本发明涉及区块链技术,特别涉及一种区块链节点时钟共识方法及装置。
背景技术
随着区块链技术的逐渐成熟,相关应用场景也逐渐延伸到各行各业,通过区块链产生电子合同、存证等电子凭证也已逐渐具备法律效力。在这类电子凭证中,时间戳作为其中一个关键信息,直接影响到一系列相关电子凭证的顺序性和有效性,成为在解决法律纠纷中的关键证据。
由于区块链去中心化的特点,以及节点之间由于网络传输及机器特性的差异,节点之间的时间往往难以同步,使得节点无法自行生成并记录统一的时间戳。
现有技术中,为了记录交易时间,一种方法是由外围应用上传交易时间戳,但这种方法会存在外部应用篡改时间的问题,并且当某个业务场景存在多个外围应用调用的情况时,这些外围应用互不相连,无法保时间戳的准确性。另一种方法是通过一个可信的中心化的时钟系统对所有节点进行时钟同步,该方法虽然可以保证节点间的时钟保持一定同步,但是中心化节点的引入会影响区块链网络的可信程度,存在中心化时钟系统被篡改的问题,同时也与区块链的去中心化理念相违背。
发明内容
为解决区块链网络内不同节点无法生存统一时间戳的问题,本发明实施例提供了区块链节点时钟共识方法,方法包括:
接收发送到区块链主节点的区块链交易请求;
获取区块链主节点的当前时间戳;
将所述当前时间戳作为预准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理;
区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。
本发明实施例中,所述的获取区块链主节点的当前时间戳包括:
获取当前交易所属交易块的摘要;
根据当前交易所属交易块的摘要获取区块链主节点的当前时间戳。
本发明实施例中,所述的预准备消息包括:区块链主节点的当前时间戳、前一笔共识交易的摘要。
本发明实施例中,所述的将所述当前时间戳作为预准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理包括:
根据所述前一笔共识交易的摘要确定已共识的区块链时间戳;
将节点的当前系统时间作为节点的预准备阶段的时间戳;
根据已共识的区块链时间戳、节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证;
将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,进行pbft算法共识处理。
本发明实施例中,所述的根据已共识的区块链时间戳、各节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证包括:
判断所述的已共识的区块链时间戳是否空;
确定所述的已共识的区块链时间戳为空时,且0≤Ti-Tp≤Δt,则区块链主节点的当前时间戳验证通过;
确定所述的已共识的区块链时间戳非空时,0≤Ti-Tp≤Δt,Ti、Tp均大于Tm,则区块链主节点的当前时间戳验证通过;
其中,Δt为预设时间戳误差,Tp为所述区块链主节点的当前时间戳,Ti节点i的预准备阶段的时间戳,Tm为已共识的区块链时间戳。
本发明实施例中,所述的将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,进行pbft算法共识处理包括:
将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段;
将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理。
本发明实施例中,所述的准备消息包括:区块链主节点的当前时间戳、节点的预准备阶段的时间戳、前一笔共识交易的摘要
本发明实施例中,所述的根据已共识的区块链时间戳、各节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证还包括:
存储验证通过的区块链主节点的当前时间戳。
本发明实施例中,所述的将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理包括:
获取接收到的其它节点的准备消息中的区块链主节点的当前时间戳;
确定其它节点的准备消息中的区块链主节点的当前时间戳与当前节点存储的区块链主节点的当前时间戳一致时,继续进行pbft算法共识处理。
本发明还提供一种区块链节点时钟共识装置,包括:
接收模块,用于接收发送到区块链主节点的区块链交易请求;
时间戳获取模块,用于获取区块链主节点的当前时间戳;
pbft算法共识处理模块,用于将所述当前时间戳作为预准备消息的一字段,进行pbft算法共识处理;
时间戳共识模块,区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。
本发明实施例中,所述的获取区块链主节点的当前时间戳包括:
摘要获取单元,用于获取当前交易所属交易块的摘要;
时间戳获取单元,用于根据当前交易所属交易块的摘要获取区块链主节点的当前时间戳。
本发明实施例中,所述的pbft算法共识处理模块包括:
已共识的区块链时间戳确定单元,用于根据所述前一笔共识交易的摘要确定已共识的区块链时间戳;
预准备阶段的时间戳获取单元,用于将节点的当前系统时间作为节点的预准备阶段的时间戳;
时间戳验证单元,用于根据已共识的区块链时间戳、节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证;
准备消息处理单元,用于将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,进行pbft算法共识处理。
本发明实施例中,所述的时间戳验证单元包括:
判断单元,用于判断所述的已共识的区块链时间戳是否空;
验证单元,用于确定所述的已共识的区块链时间戳为空时,且0≤Ti-Tp≤Δt,则区块链主节点的当前时间戳验证通过;确定所述的已共识的区块链时间戳非空时,0≤Ti-Tp≤Δt,Ti、Tp均大于Tm,则区块链主节点的当前时间戳验证通过;
其中,Δt为预设时间戳误差,Tp为所述区块链主节点的当前时间戳,Ti节点i的预准备阶段的时间戳,Tm为已共识的区块链时间戳。
本发明实施例中,所述的pbft算法共识处理模块包括:
字段处理单元,用于将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段;
广播单元,用于将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理。
本发明实施例中,所述的pbft算法共识处理模块还包括:
存储单元,用于存储验证通过的区块链主节点的当前时间戳。
本发明实施例中,所述的pbft算法共识处理模块还包括:
其它节点时间戳获取单元,用于获取接收到的其它节点的准备消息中的区块链主节点的当前时间戳;
时间戳一致性确定单元,用于确定其它节点的准备消息中的区块链主节点的当前时间戳与当前节点存储的区块链主节点的当前时间戳一致时,继续进行pbft算法共识处理。
同时,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法。
同时,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有执行上述方法的计算机程序。
本发明提出了一种基于pbft的区块链节点时钟共识方法及装置,通过在pbft算法中加入区块链节点系统时间的共识流程,能够为区块链交易生成全局一致且递增的区块链时间戳,解决了区块链网络内不同节点无法生成统一时间戳的问题。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的区块链节点时钟共识方法的流程图;
图2为本发明实施例中的区块链节点时钟共识的装置的框图;
图3为本实施例中pbft共识算法流程包含的五个阶段;
图4为本发明实施例中预准备模块的处理流程;
图5为本发明实施例中准备模块的处理流程;
图6为本实施例中确认模块的处理流程;
图7为本发明一实施例中区块链节点交易处理流程;
图8为本发明实施例的电子设备系统构成的示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示为本发明提供的区块链节点时钟共识方法,方法包括:
步骤S101,接收发送到区块链主节点的区块链交易请求;
步骤S102,获取区块链主节点的当前时间戳;本发明实施例中,通过获取当前交易所属交易块的摘要,根据当前交易所属交易块的摘要获取区块链主节点的当前时间戳。
步骤S103,将当前时间戳作为预准备消息的一字段,根据区块链交易请求进行pbft算法共识处理;
步骤S104,区块链共识交易成功时将区块链主节点的当前时间戳作为当前交易的区块链时间戳。
本发明实施例提出了一种基于pbft的区块链节点时钟共识方法及装置,通过在pbft算法中加入区块链节点系统时间的共识流程,为同一交易生成想通过的时间戳,为区块链交易生成全局一致且递增的区块链时间戳,解决了区块链网络内不同节点无法生成统一时间戳的问题。下面结合具体的实施例对本发明的技术方案作进一步详细说明如下:
为实现上述目的,提出如下技术方案,如图2所示,为本发明实施例提供的一种支持区块链节点时钟共识的装置的框图,包含:消息收发装置1、主控单元装置2、加解密装置3、批量处理装置4、交易执行装置5、数据存储装置6、系统时钟装置7、共识装置8。
本发明实施例中,消息收发装置1采用包括http、grpc等通讯协议与区块链网络中的其他节点以及客户端进行通讯,完成消息的发送与接收,同时将接收到的消息发送给主控单元装置2进行处理。
主控单元装置2用于消息的分发流转,将从消息收发装置1收到的请求分发到加解密装置3、批量处理装置4、交易执行装置5、系统时钟装置7以及共识装置8。
所述加解密装置3用于验证交易合法性以及消息数据加解密,采用椭圆曲线密码算法对交易数据进行公钥加密和私钥解密,对消息摘要进行私钥签名和公钥验签。
所述批量处理装置4用于将接收到的交易进行排序和打包操作。当主节点接收到指定数量的交易时,所述批量处理装置4将这些交易进行排序并打包,并向共识装置8发送请求消息(request消息)进行共识。若在指定超时时间内未接收到指定数量的交易,将已接收的交易进行排序和打包,并向共识装置8发送request消息进行共识。
所述交易执行装置5用于将通过共识装置8共识完成后的打包交易解包后依次执行,并将执行结果保存到区块链账本中。用户通过智能合约等方式可以实现自定义交易流程,其中就会涉及到交易时间戳的生成。
所述数据存储装置6用于实现区块链节点的数据存储功能,将区块链节点的配置信息、交易过程中产生的中间数据、区块链账本、密钥及证书文件以及日志信息以内存、数据库以及文件的形式进行存储和管理,并提供相关接口用于操作相关数据。
所述系统时钟装置7是节点时钟的控制单元,包括系统时钟更新模块71和区块链时间戳模块72。
所述系统时钟更新模块7用于更新节点系统时间,可通过与外部时钟系统进行同步来更新系统时间,也可以通过消息通知系统管理员手工更新系统时间。
所述区块链时间戳模块72用于获取区块链时间戳。当交易在交易执行装置5中执行时,智能合约调用区块链时间戳模块72并上送当前交易所属交易块的摘要获取区块链时间戳。在区块链时间戳模块72中以此摘要作为key从数据存储装置6中获取并返回当前交易块的区块链时间戳,同时将该时间戳加1后,写回数据存储装置6的相应key中。该操作具备原子性,在调用顺序一致的情况下,能够保证同一共识消息下所有交易在所有区块链节点得到的区块链时间戳一致且递增。
所述共识装置8用于执行pbft共识算法流程,打包后的交易在共识装置8中完成共识后将发送给交易执行装置5解包执行。pbft共识算法允许在一个有N个节点的区块链网络中最多存在f个拜占庭节点,其中N≥3f+1。
如图3所示,为本实施例中pbft共识算法流程包含的五个阶段:
请求(request)阶段:客户端向主节点发送请求(request)消息,主节点接收并校验request请求,校验通过后进入预准备(pre-prepare)阶段。
预准备(pre-prepare)阶段:主节点向所有副本节点广播预准备(pre-prepare)消息,副本节点接收并校验pre-prepare消息,校验通过后进入准备(prepare)阶段。
准备(prepare)阶段:副本节点向所有节点广播prepare消息,节点接收并校验校验通过2f条prepare消息后进入commit阶段。
确认(commit)阶段:节点向其他节点广播确认(commit)消息,节点收到并校验通过2f条commit消息后返回给客户端reply消息。
应答(reply)阶段:当客户端接收到f+1条相同的应答(reply)消息,则表示该消息在区块链网络已达成共识。
在pbft共识算法共识过程中,若主节点发生异常,需要执行视图切换操作,重新选举新的主节点,此时副本节点首先向其他节点广播视图切换(view-change)消息,其中包含新的主视图编号v+1,当节点v+1mod|N|收到2f个有效的view-change消息后,向所有节点广播new-view消息,其他节点收到并校验通过后完成视图切换操作。
共识装置8应至少包含请求模块81、预准备模块82、准备模块83、确认模块84、视图切换模块8以及时钟重置模块86。
本发明实施例中为了实现时钟共识,本发明需要对pbft算法在request阶段、pre-prepare阶段、prepare阶段、commit阶段以及view-change阶段的流程进行改进,改进后的相应阶段的处理逻辑对应共识装置8中的请求模块81、预准备模块82、准备模块83、确认模块84、视图切换模块86,并增加时钟重置模块86,其他pbft共识算法的相关功能(如检查点(checkpoint)过程等)由于本发明实施例不涉及修改,因此,本实施例中没有以模块的方式单独列出。
请求模块81用于处理pbft共识算法中request阶段的相关逻辑。当主节点接收到request消息时,执行请求模块81相关逻辑并向区块链网络内的其他节点广播pre-prepare消息,并保存该消息,pre-prepare消息中至少包含<Tp,dprev,Mpre-prepare>字段,其中Tp是主节点当前的时间戳,dprev为前一笔共识交易的摘要,Mpre-prepare为pbft算法中pre-prepare消息所需的其他字段,包含当前视图编号、交易序号、消息签名、消息摘要和消息原文等。
预准备模块82用于pbft共识算法中的pre-prepare阶段的相关逻辑。
图4为预准备模块82的处理流程,其操作步骤如下:
步骤S401:节点i接收主节点的pre-prepare消息
步骤S402:根据pbft算法对pre-prepare消息中的Mpre-prepare进行验证(通过主节点的公钥验证消息签名,验证消息中的视图编号是否与当前值一致,验证交易编号是否重复、是否在水线范围内等),验证通过则保存Tp并记为Tp’,验证未通过则丢弃消息。
步骤S403:从数据存储装置6中以dprev为key获取前一笔交易已共识的区块链时间戳Tm;
步骤S404:判断Tm是否为空;如果Tm为空则执行步骤S405A,否则执行步骤S405B。
步骤S405A:如果0≤Ti-Tp≤Δt(其中Δt为配置项参数,表示时间戳误差),则向其他节点广播prepare消息,该消息至少包含<Tp,Ti,dprev,Mprepare>字段,其中Tp是主节点在request阶段的时间戳,Ti是节点i在pre-prepare阶段的时间戳,Mprepare为pbft算法中prepare消息所需的其他字段,包含当前视图编号、交易序号、当前副本节点编号、消息签名和消息摘要等,并保存一条校验通过记录;否则丢弃消息,并保存一条校验失败记录。
步骤S405B:如果0≤Ti-Tp≤Δt,且Ti、Tp均大于Tm,则向其他节点广播prepare消息,并保存一条校验通过记录;否则丢弃消息,并保存一条校验失败记录。
prepare模块83用于处理pbft共识算法中的prepare阶段的相关逻辑。
图5为本发明实施例中的prepare模块83的处理流程,其操作步骤如下:
步骤S501:节点i接收到其他节点j的prepare消息
步骤S502:根据pbft算法对prepare消息中的Mprepare进行验证(通过副本节点的公钥验证消息签名,验证消息中的视图编号是否与当前值一致,验证交易编号是否重复、是否在水线范围内等),同时验证prepare消息中的Tp是否与已保存的Tp’一致,若验证未通过则丢弃消息。
步骤S503:从数据存储装置6中以dprev为key获取前一笔交易已共识的区块链时间戳Tm;
步骤S504,判断Tm是否为空;如果Tm为空则执行步骤S505A,否则执行步骤S505B。
步骤S505A:如果0≤Tj-Tp≤Δt,其中Tj是节点j在pre-prepare阶段的时间戳,则该消息校验通过,并保存一条校验通过记录,否则保存一条校验失败记录。
步骤S505B:如果0≤Tj-Tp≤Δt,且Tj、Tp均大于Tm,则该消息校验通过,并保存一条校验通过记录,否则保存一条校验失败记录。
步骤S506:判断校验通过或失败是否达到2f+1;循环执行步骤S501至S505,达到2f+1,执行步骤S507;
步骤S507,判断校验位通过或失败超时;当已保存的校验通过记录率先达到2f+1时(包含该节点在pre-prepare阶段保存的记录),步骤S508A。当已保存的校验失败记录率先达到2f+1时,执行步骤S508B,若在指定共识超时时间内未收集到2f+1个校验通过或者失败记录,则执行步骤S508B。
步骤S508A:节点i向区块链网络内其他所有节点广播commit消息,消息至少包含<Tp,Mcommit>,其中Tp是主节点在request阶段的时间戳,Mcommit为pbft算法中commit消息所需的其他字段,包含当前视图编号、交易序号、当前副本节点编号、消息签名和消息摘要等。
步骤S508B:节点i向当前视图的主节点发送clock-reset消息,该消息至少包含<Tp,signi>字段,其中Tp是主节点在request阶段的时间戳,signi为节点i的消息签名,同时向区块链网络内其他所有节点广播view-change消息。
确认模块84用于处理pbft共识算法中的commit阶段的相关逻辑。
图6为commit模块84的处理流程,其操作步骤如下:
步骤S601:节点i接收其他节点的commit消息
步骤S602:根据pbft算法对commit消息中的Mcommit进行验证(通过副本节点的公钥验证消息签名,验证消息中的视图编号是否与当前值一致,验证交易编号是否重复、是否在水线范围内等),同时验证commit消息中的Tp是否与已保存的Tp’一致,若验证未通过则丢弃消息。
步骤S603:当节点i接收到2f个验证通过的commit消息后,将Tp作为value,当前交易摘要作为key,保存到数据存储装置6中,作为当前交易已共识的区块链时间戳基线。若节点i在共识超时时间内未接收到2f个验证通过的commit消息,则结束当前步骤,执行步骤S604。
步骤S604:继续执行pbft共识算法后续流程。
视图切换模块85用于处理pbft共识算法中的视图切换相关逻辑。当编号为v+1mod|N|的节点接收到2f+1个验证通过的view-change消息时,该节点执行pbft共识算法中的视图切换流程,同时清理时钟共识过程中产生的中间数据,执行完成后向所有节点广播new-view消息,其余节点接收到new-view消息并验证通过后,完成视图切换操作,此时区块链网络的主节点切换为v+1mod|N|。
时钟重置模块86用于处理区块链节点系统时钟设置的相关逻辑。当前主节点接收clock-reset消息并验证,验证内容包括消息中的签名以及消息中的Tp是否与request阶段发出的Tp一致。若接收到2f+1条验证通过的消息,则调用时钟控制装置7中的时钟同步接口进行系统时钟设置。若在指定重置时钟的超时时间内未接收到2f+1条验证通过的clock-reset消息,则结束此轮共识的clock-reset,并清除相应已保存的request消息。
如图7所示,为本发明一实施例中,区块链节点交易处理流程,步骤如下:
步骤S701:主节点接收交易请求;交易通过客户端或者其他区块链节点将交易请求送给主节点,节点通过消息收发装置1不断接收交易请求并交给批量处理装置4。
步骤S702:判断交易数量是否达到指定数量;未达到指令数量,返回步骤S701;否则执行步骤S703;
步骤S703,通过批量处理装置排序和打包;当批量处理装置4中的交易请求数达到指定数量时,将交易排序和打包。若在指定超时时间内交易请求数量未达到指定数量且不为0时,也将这些交易进行排序和打包。
步骤S704:将打包后的交易发给共识装置8,在整个区块链网络中进行共识。
步骤S705:判断是否共识成功;如果共识成功,执行步骤706,更新共识后的区块链时间戳,该区块链时间戳表示此次共识的所有交易的时间戳基数。如果共识失败,返回步骤S703,则参与共识的所有交易要重新通过批量处理装置4进行排序和打包,并再次进行共识。
步骤S707:每个节点共识完成后,交易在交易执行装置5中进行解包并依次执行,并将执行结果写入区块链账本中。
本实施例中交易执行过程中如果涉及到时间戳的生成,则通过区块链时间戳模块72获取每个节点都一致且递增的区块链时间戳。
本发明通过在pbft算法中加入区块链节点系统时间的共识流程,为交易生成全局一致且递增的区块链时间戳,解决了区块链网络内不同节点无法生成统一时间戳的问题,解决了区块链节点无法自行生成并记录统一的时间戳,无法保证时间戳的准确性的问题。
本发明实施例还提供一种电子设备,该电子设备可以是台式计算机、平板电脑及移动终端等,该电子设备的实施可以参照前述实施例,其内容被合并于此,重复之处不再赘述。
图8为本发明实施例的电子设备80的系统构成的示意框图。如图8所示,该电子设备80可以包括处理器81和存储器82;存储器82通过总线83耦合到处理器81。值得注意的是,该图是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,区块链节点时钟共识功能可以被集成到处理器81中。其中,处理器81可以被配置为进行如下控制:接收发送到区块链主节点的区块链交易请求;获取区块链主节点的当前时间戳;将所述当前时间戳作为预准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理;区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。
本发明实施例还提供一种计算机可读程序,其中当在电子设备中执行所述程序时,程序使得计算机在所述电子设备中执行如上面所述的区块链节点时钟共识功能。
本发明实施例还提供一种存储有计算机可读程序的存储介质,其中计算机可读程序使得计算机在电子设备中执行上面实施例所述的区块链节点时钟共识功能。
以上参照附图描述了本发明的优选实施方式。这些实施方式的许多特征和优点根据该详细的说明书是清楚的,因此所附权利要求旨在覆盖这些实施方式的落入其真实精神和范围内的所有这些特征和优点。此外,由于本领域的技术人员容易想到很多修改和改变,因此不是要将本发明的实施方式限于所例示和描述的精确结构和操作,而是可以涵盖落入其范围内的所有合适修改和等同物。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (20)
1.一种区块链节点时钟共识方法,其特征在于,所述的方法包括:
接收发送到区块链主节点的区块链交易请求;
获取区块链主节点的当前时间戳;
将所述当前时间戳作为预准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理;
区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。
2.如权利要求1所述的区块链节点时钟共识方法,其特征在于,所述的获取区块链主节点的当前时间戳包括:
获取当前交易所属交易块的摘要;
根据当前交易所属交易块的摘要获取区块链主节点的当前时间戳。
3.如权利要求1所述的区块链节点时钟共识方法,其特征在于,所述的预准备消息包括:区块链主节点的当前时间戳、前一笔共识交易的摘要。
4.如权利要求3所述的区块链节点时钟共识方法,其特征在于,所述的将所述当前时间戳作为预准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理包括:
根据所述前一笔共识交易的摘要确定已共识的区块链时间戳;
将节点的当前系统时间作为节点的预准备阶段的时间戳;
根据已共识的区块链时间戳、节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证;
将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理。
5.如权利要求4所述的区块链节点时钟共识方法,其特征在于,所述的根据已共识的区块链时间戳、各节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证包括:
判断所述的已共识的区块链时间戳是否空;
确定所述的已共识的区块链时间戳为空时,且0≤Ti-Tp≤Δt,则区块链主节点的当前时间戳验证通过;
确定所述的已共识的区块链时间戳非空时,0≤Ti-Tp≤Δt,Ti、Tp均大于Tm,则区块链主节点的当前时间戳验证通过;
其中,Δt为预设时间戳误差,Tp为所述区块链主节点的当前时间戳,Ti节点i的预准备阶段的时间戳,Tm为已共识的区块链时间戳。
6.如权利要求4所述的区块链节点时钟共识方法,其特征在于,所述的将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,根据所述区块链交易请求进行pbft算法共识处理包括:
将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段;
将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理。
7.如权利要求6所述的区块链节点时钟共识方法,其特征在于,所述的准备消息包括:区块链主节点的当前时间戳、节点的预准备阶段的时间戳、前一笔共识交易的摘要。
8.如权利要求7所述的区块链节点时钟共识方法,其特征在于,所述的根据已共识的区块链时间戳、各节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证还包括:
存储验证通过的区块链主节点的当前时间戳。
9.如权利要求8所述的区块链节点时钟共识方法,其特征在于,所述的将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理包括:
获取接收到的其它节点的准备消息中的区块链主节点的当前时间戳;
确定其它节点的准备消息中的区块链主节点的当前时间戳与当前节点存储的区块链主节点的当前时间戳一致时,继续进行pbft算法共识处理。
10.一种区块链节点时钟共识装置,其特征在于,所述的装置包括:
接收模块,用于接收发送到区块链主节点的区块链交易请求;
时间戳获取模块,用于获取区块链主节点的当前时间戳;
pbft算法共识处理模块,用于将所述当前时间戳作为预准备消息的一字段,进行pbft算法共识处理;
时间戳共识模块,区块链共识交易成功时将所述区块链主节点的当前时间戳作为当前交易的区块链时间戳。
11.如权利要求10所述的区块链节点时钟共识装置,其特征在于,所述的获取区块链主节点的当前时间戳包括:
摘要获取单元,用于获取当前交易所属交易块的摘要;
时间戳获取单元,用于根据当前交易所属交易块的摘要获取区块链主节点的当前时间戳。
12.如权利要求10所述的区块链节点时钟共识装置,其特征在于,所述的预准备消息包括:区块链主节点的当前时间戳、前一笔共识交易的摘要。
13.如权利要求12所述的区块链节点时钟共识装置,其特征在于,所述的pbft算法共识处理模块包括:
已共识的区块链时间戳确定单元,用于根据所述前一笔共识交易的摘要确定已共识的区块链时间戳;
预准备阶段的时间戳获取单元,用于将节点的当前系统时间作为节点的预准备阶段的时间戳;
时间戳验证单元,用于根据已共识的区块链时间戳、节点的预准备阶段的时间戳及预设的时间误差对所述区块链主节点的当前时间戳进行验证;
准备消息处理单元,用于将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段,进行pbft算法共识处理。
14.如权利要求13所述的区块链节点时钟共识装置,其特征在于,所述的时间戳验证单元包括:
判断单元,用于判断所述的已共识的区块链时间戳是否空;
验证单元,用于确定所述的已共识的区块链时间戳为空时,且0≤Ti-Tp≤Δt,则区块链主节点的当前时间戳验证通过;确定所述的已共识的区块链时间戳非空时,0≤Ti-Tp≤Δt,Ti、Tp均大于Tm,则区块链主节点的当前时间戳验证通过;
其中,Δt为预设时间戳误差,Tp为所述区块链主节点的当前时间戳,Ti节点i的预准备阶段的时间戳,Tm为已共识的区块链时间戳。
15.如权利要求13所述的区块链节点时钟共识装置,其特征在于,所述的pbft算法共识处理模块包括:
字段处理单元,用于将验证通过的区块链主节点的当前时间戳作为pbft算法共识处理的准备消息的一字段;
广播单元,用于将包括所述区块链主节点的当前时间戳的准备消息进行广播,以进行pbft算法共识处理。
16.如权利要求15所述的区块链节点时钟共识装置,其特征在于,所述的准备消息包括:区块链主节点的当前时间戳、节点的预准备阶段的时间戳、前一笔共识交易的摘要。
17.如权利要求16所述的区块链节点时钟共识装置,其特征在于,所述的pbft算法共识处理模块还包括:
存储单元,用于存储验证通过的区块链主节点的当前时间戳。
18.如权利要求17所述的区块链节点时钟共识装置,其特征在于,所述的pbft算法共识处理模块还包括:
其它节点时间戳获取单元,用于获取接收到的其它节点的准备消息中的区块链主节点的当前时间戳;
时间戳一致性确定单元,用于确定其它节点的准备消息中的区块链主节点的当前时间戳与当前节点存储的区块链主节点的当前时间戳一致时,继续进行pbft算法共识处理。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9任一所述方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至9任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702800.0A CN110417502B (zh) | 2019-07-31 | 2019-07-31 | 一种区块链节点时钟共识方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702800.0A CN110417502B (zh) | 2019-07-31 | 2019-07-31 | 一种区块链节点时钟共识方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110417502A true CN110417502A (zh) | 2019-11-05 |
CN110417502B CN110417502B (zh) | 2021-01-15 |
Family
ID=68364794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910702800.0A Active CN110417502B (zh) | 2019-07-31 | 2019-07-31 | 一种区块链节点时钟共识方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110417502B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111523153A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块生成方法及共识节点 |
CN112507019A (zh) * | 2020-11-20 | 2021-03-16 | 南京航空航天大学 | 一种基于智能合约的pbft共识系统及方法 |
CN113067897A (zh) * | 2021-06-02 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113259460A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113810378A (zh) * | 2021-08-19 | 2021-12-17 | 广东中科智能区块链技术有限公司 | 一种基于共识排序的交易预处理方法 |
CN113810453A (zh) * | 2020-12-28 | 2021-12-17 | 京东科技控股股份有限公司 | 基于共识区块链的时间戳标记方法和装置 |
CN114449019A (zh) * | 2020-10-16 | 2022-05-06 | 中国移动通信集团辽宁有限公司 | 一种操作数据记录方法、节点、系统及设备 |
CN114924617A (zh) * | 2022-06-15 | 2022-08-19 | 深圳前海微众银行股份有限公司 | 一种去中心化系统中的时钟同步方法及装置 |
WO2023105384A1 (en) * | 2021-12-07 | 2023-06-15 | International Business Machines Corporation | Blockchain clock for storing event data |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881169A (zh) * | 2018-05-21 | 2018-11-23 | 西安电子科技大学 | 基于区块链的时间分发和同步方法及系统、数据处理系统 |
CN109766673A (zh) * | 2019-01-18 | 2019-05-17 | 四川大学 | 一种联盟式音视频版权区块链系统及音视频版权上链方法 |
CN109819022A (zh) * | 2019-01-11 | 2019-05-28 | 华侨大学 | 一种基于信用评价的区块链共识方法 |
CN109858909A (zh) * | 2019-01-11 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于区块链的知识产权交易方法、装置、设备和存储介质 |
CN109995536A (zh) * | 2019-03-15 | 2019-07-09 | 广州杰赛科技股份有限公司 | 一种区块链共识方法、装置及可读存储介质 |
US20190213048A1 (en) * | 2018-01-11 | 2019-07-11 | William Bohannon Mason | Device network for incentivized mining utilizing leveraged computing resources within a block chain architecture |
CN110035097A (zh) * | 2018-01-12 | 2019-07-19 | 广州中国科学院计算机网络信息中心 | 区块链与物联网标识相结合的异构标识解析方法及系统 |
-
2019
- 2019-07-31 CN CN201910702800.0A patent/CN110417502B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190213048A1 (en) * | 2018-01-11 | 2019-07-11 | William Bohannon Mason | Device network for incentivized mining utilizing leveraged computing resources within a block chain architecture |
CN110035097A (zh) * | 2018-01-12 | 2019-07-19 | 广州中国科学院计算机网络信息中心 | 区块链与物联网标识相结合的异构标识解析方法及系统 |
CN108881169A (zh) * | 2018-05-21 | 2018-11-23 | 西安电子科技大学 | 基于区块链的时间分发和同步方法及系统、数据处理系统 |
CN109819022A (zh) * | 2019-01-11 | 2019-05-28 | 华侨大学 | 一种基于信用评价的区块链共识方法 |
CN109858909A (zh) * | 2019-01-11 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于区块链的知识产权交易方法、装置、设备和存储介质 |
CN109766673A (zh) * | 2019-01-18 | 2019-05-17 | 四川大学 | 一种联盟式音视频版权区块链系统及音视频版权上链方法 |
CN109995536A (zh) * | 2019-03-15 | 2019-07-09 | 广州杰赛科技股份有限公司 | 一种区块链共识方法、装置及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
张健毅等: "基于区块链的可监管数字货币模型", 《计算机研究与发展》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339187B (zh) * | 2020-02-20 | 2023-05-09 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111523153A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块生成方法及共识节点 |
CN112818409A (zh) * | 2020-07-03 | 2021-05-18 | 支付宝(杭州)信息技术有限公司 | 一种区块生成方法及共识节点 |
CN112818409B (zh) * | 2020-07-03 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 一种区块生成方法及共识节点 |
CN114449019A (zh) * | 2020-10-16 | 2022-05-06 | 中国移动通信集团辽宁有限公司 | 一种操作数据记录方法、节点、系统及设备 |
CN112507019A (zh) * | 2020-11-20 | 2021-03-16 | 南京航空航天大学 | 一种基于智能合约的pbft共识系统及方法 |
CN113810453A (zh) * | 2020-12-28 | 2021-12-17 | 京东科技控股股份有限公司 | 基于共识区块链的时间戳标记方法和装置 |
CN113067897A (zh) * | 2021-06-02 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113259460A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113067897B (zh) * | 2021-06-02 | 2021-09-24 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113259460B (zh) * | 2021-06-02 | 2021-10-15 | 支付宝(杭州)信息技术有限公司 | 跨链交互方法及装置 |
CN113810378A (zh) * | 2021-08-19 | 2021-12-17 | 广东中科智能区块链技术有限公司 | 一种基于共识排序的交易预处理方法 |
CN113810378B (zh) * | 2021-08-19 | 2023-04-07 | 广东中科智能区块链技术有限公司 | 一种基于共识排序的交易预处理方法 |
WO2023105384A1 (en) * | 2021-12-07 | 2023-06-15 | International Business Machines Corporation | Blockchain clock for storing event data |
US12019653B2 (en) | 2021-12-07 | 2024-06-25 | International Business Machines Corporation | Blockchain clock for storing event data |
CN114924617A (zh) * | 2022-06-15 | 2022-08-19 | 深圳前海微众银行股份有限公司 | 一种去中心化系统中的时钟同步方法及装置 |
CN114924617B (zh) * | 2022-06-15 | 2024-04-26 | 深圳前海微众银行股份有限公司 | 一种去中心化系统中的时钟同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110417502B (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110417502A (zh) | 一种区块链节点时钟共识方法及装置 | |
CN110442652B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
CN111681003B (zh) | 资源跨链转移方法、装置、计算机设备以及存储介质 | |
TWI679874B (zh) | 跨區塊鏈的認證方法及裝置、電子設備 | |
US11522698B2 (en) | Method and system for byzantine fault-tolerance replicating of data | |
CN111445333B (zh) | 区块生成方法、装置、计算机设备以及存储介质 | |
EP3779760B1 (en) | Blockchain-based data processing method and apparatus, and electronic device | |
US11354199B2 (en) | Byzantine fault tolerance with verifiable secret sharing at constant overhead | |
CN107819749A (zh) | 基于以太坊的区块链系统和交易数据处理方法 | |
CN106600252A (zh) | 一种基于区块链的支付方法及系统 | |
EP4216077A1 (en) | Blockchain network-based method and apparatus for data processing, and computer device | |
CN106302544A (zh) | 一种安全验证方法和系统 | |
AU2019380381A1 (en) | Smart logistics management using blockchain | |
CN114092252B (zh) | 一种区块链交易执行方法、装置、设备及可读存储介质 | |
CN114039733B (zh) | 一种针对联盟链的存证业务转移方法、装置及设备 | |
CN110162523A (zh) | 数据存储方法、系统、装置及设备 | |
CN113837760B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN110932859A (zh) | 用户信息的处理方法、装置、设备及可读存储介质 | |
CN112989422B (zh) | 区块链系统装配方法、装置、电子设备和存储介质 | |
CN111669434B (zh) | 一种通信群组的建立方法、系统、装置及设备 | |
CN109586949A (zh) | 区块生成方法及计算机存储介质 | |
CN108833133A (zh) | 基于云计算网络的网络配置管理方法、装置和存储介质 | |
CN117251889B (zh) | 区块链共识方法、相关装置和介质 | |
CN115701078A (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN113064899B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |