CN117614611B - 一种区块链共识方法、系统和存储介质 - Google Patents
一种区块链共识方法、系统和存储介质 Download PDFInfo
- Publication number
- CN117614611B CN117614611B CN202410096357.8A CN202410096357A CN117614611B CN 117614611 B CN117614611 B CN 117614611B CN 202410096357 A CN202410096357 A CN 202410096357A CN 117614611 B CN117614611 B CN 117614611B
- Authority
- CN
- China
- Prior art keywords
- random number
- server
- verifiable random
- message
- parameter
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 22
- 238000013507 mapping Methods 0.000 claims description 22
- 238000010276 construction Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 15
- 230000006854 communication Effects 0.000 abstract description 8
- 238000004891 communication Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 71
- 238000012795 verification Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3226—Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种区块链共识方法、系统和存储介质,涉及区块链领域,包括:客户端向区块链中所有服务器节点发送请求;服务器节点运行在可信执行环境中;主服务器根据序列号利用可验证随机数构造准备消息,并将准备消息发送给其他所有从服务器;每个从服务器在收到准备消息并验证可验证随机数的合法性后,并利用可验证随机数构造提交消息,并向其他服务器多播提交消息;其中,当服务器节点接收一个请求,执行对应的请求操作,构造回复消息并向客户端返回一个回复消息;若客户端在设定时间间隔内接收到预设数量的匹配的回复消息,完成请求。本申请通过引入机密计算和可验证随机数有效的减少了共识算法的副本数量和通信步骤。
Description
技术领域
本申请涉及区块链领域,特别涉及区块链共识方法、系统和存储介质。
背景技术
区块链技术的核心是如何平衡一致性与可用性从而在分布式网络实现共识。共识机制是影响系统性能的重要因素。在没有中心化服务器的区块链中,每个节点必须要做的就是通过一定的规则让自己的账本与其他节点的账本保持一致,共识结果决定了谁来构造区块并维护区块链的统一。共识技术是区块链中的一个重要组成部分,共识算法的安全性决定了区块链整体的安全性。同时,共识算法的执行效率决定了区块链的吞吐量、确认时延。Paxos(一种基于消息传递且具有高度容错特性的一致性算法)、Raft 等经典的分布式一致性算法并不能解决拜占庭容错问题,而 PoW(Proof of WorK,工作量证明)、PoS(Proofof Stake,权益证明) 等公链系统的共识算法又因其巨大的能源成本或协议本身的设计缺陷而无法满足特定场景下的性能需求。
发明内容
本申请的目的是提供一种区块链共识方法、系统和计算机可读存储介质,能够解决当前共识节点多带来的速度慢、通信复杂度高和可扩展性差等问题,降低了所需要的服务器数量。
为解决上述技术问题,本申请提供一种区块链共识方法,具体技术方案如下:
客户端向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;
在可信执行环境中,所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;
其中,当所述服务器节点接收一个所述请求,执行对应的请求操作,并利用所述可验证随机数构造回复消息并向所述客户端返回一个回复消息;
若所述客户端在设定时间间隔内接收到预设数量的匹配的所述回复消息,完成所述请求。
可选的,所述客户端向区块链中所有服务器节点发送请求之前,还包括:
根据当前视图数和所述区块链的数量确定主服务器对应的编号;
将编号外的其余服务器作为从服务器。
可选的,将编号外的其余服务器作为从服务器之后,还包括:
每个所述服务器节点产生自身对应的公私钥对;其中,所述公私钥对中的私钥处于保密状态,所述公私钥对中的公钥允许被其他服务器查看。
可选的,每个所述服务器节点产生自身对应的公私钥对包括:
每个所述服务器节点基于椭圆曲线算法生成自身对应的公私钥对;
其中,所述椭圆曲线算法包括设定椭圆曲线上的公开参数,包括、/>、/>和/>,其中/>、/>是大素数,/>是定义在有限域/>上的椭圆曲线,/>是椭圆曲线/>上/>阶的第一基点,则私钥设为/>,公钥为/>。
可选的,客户端向区块链中所有服务器节点发送请求包括:
客户端生成请求,并利用自身私钥对所述请求进行签名;
向区块链中所有服务器节点发送所述请求;所述请求包括操作名称、请求标识符、客户端请求消息的签名和客户端名称。
可选的,在可信执行环境中,所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息包括:
所述主服务器获取所述请求中的摘要信息;
在视图中为每个所述请求分配序列号;
根据所述摘要信息和所述序列号利用可验证随机数构造准备消息构造准备消息。
可选的,根据所述摘要信息和所述序列号利用可验证随机数构造准备消息构造准备消息之前,还包括:
验证第一可验证随机数的状态是否为未使用状态;
若是,调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据。
可选的,调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据包括:
输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和主服务器的私钥,得到所述第二可验证随机数和相应的证据。
可选的,输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和所述主服务器的私钥,得到所述第二可验证随机数和相应的证据时,还包括:
变更所述第一可验证随机数的状态为使用状态。
可选的,输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和主服务器的私钥,得到所述第二可验证随机数和相应的证据时还包括:
输入消息和所述主服务器的私钥;
选择第一随机数,利用第一哈希函数将所述消息映射到椭圆曲线上的第二基点;
根据所述第一随机数和所述第一基点得到第一中间参数,根据所述第一随机数和所述第二基点得到第二中间参数;
根据所述第一中间参数和所述第二中间参数利用第二哈希函数将所述消息映射为第一参数;
根据所述第一随机数、所述第一参数、所述主服务器的私钥和所述第一基点的阶数确定第二参数;
根据所述主服务器的私钥和所述第二基点确定第三参数;
利用第三哈希函数将椭圆曲线上的第三参数映射为一个整数,得到所述第二可验证随机数;
根据所述第一参数、所述第二参数和所述第三参数得到所述第二可验证随机数相应的证据。
可选的,每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性时,还包括:
验证所述第一可验证随机数是否处于未使用状态;
若否,触发视图转换。
可选的,若所述第一可验证随机数处于未使用状态,还包括:
调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效;
若均有效,所有服务器节点调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据。
可选的,还包括:
将所述第一可验证随机数的使用状态由未使用状态变更为已使用状态,同时将第二可验证随机数的使用状态设为未使用状态。
可选的,所述所有服务器节点调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据包括:
调用所述可验证随机数构造函数根据当前视图数、所述序列号、所述摘要信息、主服务id号、各个从服务器对应的id号、所述第二可验证随机数和各所述服务器节点的私钥生成第三可验证随机数和相应的证据。
可选的,若所述从服务器未收到所述准备消息,还包括:
检测是否收到包含有效可验证随机数的有效提交信息;
若是,对所述有效提交信息重构造并发送。
可选的,调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效包括:
输入所述消息、所述第二可验证随机数和所述第二可验证随机数对应的证据;
利用所述第一哈希函数将所述消息映射至椭圆曲线上的第三基点;
根据所述第一基点、所述第一参数、所述第二参数和所述服务器的公钥得到第四参数;
根据所述第三基点、所述第一参数、所述第二参数和所述第三参数得到第五参数;
根据所述第四参数、所述第五参数和所述第二哈希函数得到第六参数;
验证所述第六参数是否等于所述第一参数;
若是,确认所述第二可验证随机数和所述第二可验证随机数对应的证据有效。
可选的,还包括:
当所述预设数量个从服务器反馈所述主服务器出现故障时,执行视图更改操作,并使用新服务器成为主服务器。
可选的,执行视图更改操作,并使用新服务器成为主服务器包括:
确定新视图号;
根据所述新视图号和服务器数量的取余绝对值确定主服务器。
可选的,若所述客户端在设定时间间隔内未接收到预设数量的匹配的所述回复消息,还包括:
向所述区块链中所有服务器节点发送第二请求;
其中,设所述服务器节点的总数为2f+1,则每个所述服务器节点收到f+1个提交信息后发送所述回复消息。
本申请还提供一种区块链共识系统,包括 :
客户端,用于向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;以及用于在设定时间间隔内接收到预设数量的匹配的回复消息时,完成所述请求;
所述主服务器,用于为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
所述从服务器,用于在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;
其中,所述服务器节点用于接收一个所述请求,执行对应的请求操作,构造回复消息并向所述客户端返回一个回复消息。
可选的,所述客户端还用于根据当前视图数和所述区块链的数量确定主服务器对应的编号,将编号外的其余服务器作为从服务器。
可选的,每个所述服务器节点还用于产生自身对应的公私钥对;其中,所述公私钥对中的私钥处于保密状态,所述公私钥对中的公钥允许被其他服务器查看。
可选的,每个所述服务器节点还用于根据可验证随机函数生成自身对应的公私钥对;
其中,所述椭圆曲线算法包括设定椭圆曲线上的公开参数,包括、/>、/>和/>,其中/>、/>是大素数,/>是定义在有限域/>上的椭圆曲线,/>是椭圆曲线/>上/>阶的第一基点,则私钥设为/>,公钥为/>。
可选的,客户端用于生成请求,并利用自身私钥对所述请求进行签名;向区块链中所有服务器节点发送所述请求;所述请求包括操作名称、请求标识符、客户端签名和客户端名称。
可选的,所述主服务器包括准备信息构造模块,所述准备信息构造模块用于执行如下步骤:
获取所述请求中的摘要信息;在视图中为每个所述请求分配序列号;根据所述摘要信息和所述序列号利用可验证随机数构造准备消息构造准备消息。
可选的,服务器节点还包括:
随机数验证模块,用于验证第一可验证随机数的状态是否为未使用状态;若是,调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据。
可选的,随机数验证模块为用于输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和主服务器的私钥,得到所述第二可验证随机数和相应的证据的模块。
可选的,服务器节点还包括:
随机数状态变更模块,用于变更所述第一可验证随机数的状态为使用状态。
可选的,服务器节点还包括:
证据生成模块,用于执行如下步骤:
输入消息和所述主服务器的私钥;
选择第一随机数,利用第一哈希函数将所述消息映射到椭圆曲线上的第二基点;
根据所述第一随机数和所述第一基点得到第一中间参数,根据所述第一随机数和所述第二基点得到第二中间参数;
根据所述第一中间参数和所述第二中间参数利用第二哈希函数将所述消息映射为第一参数;
根据所述第一随机数、所述第一参数、所述主服务器的私钥和所述第一基点的阶数确定第二参数;
根据所述主服务器的私钥和所述第二基点确定第三参数;
利用第三哈希函数将椭圆曲线上的第三参数映射为一个整数,得到所述第二可验证随机数;
根据所述第一参数、所述第二参数和所述第三参数得到所述第二可验证随机数相应的证据。
可选的,服务器节点还包括:
随机数状态验证模块,用于验证所述第一可验证随机数是否处于未使用状态;若否,触发视图转换。
可选的,随机数状态验证模块还用于若所述第一可验证随机数处于未使用状态,调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效;若均有效,所有服务器节点调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据。
可选的,服务器节点还用于将所述第一可验证随机数的使用状态由未使用状态变更为已使用状态,同时将第二可验证随机数的使用状态设为未使用状态。
可选的,所述所有服务器节点用于调用所述可验证随机数构造函数根据当前视图数、所述区块链的序列号、所述摘要信息、主服务id号、各个从服务器对应的id号、所述第二可验证随机数和各所述服务器节点的私钥生成第三可验证随机数和相应的证据。
可选的,随机数状态验证模块包括:
验证单元,用于执行如下步骤:
输入所述消息、所述第二可验证随机数和所述第二可验证随机数对应的证据;
利用所述第一哈希函数将所述消息映射至椭圆曲线上的第三基点;
根据所述第一基点、所述第一参数、所述第二参数和所述服务器的公钥得到第四参数;
根据所述第三基点、所述第一参数、所述第二参数和所述第三参数得到第五参数;
根据所述第四参数、所述第五参数和所述第二哈希函数得到第六参数;
验证所述第六参数是否等于所述第一参数;
若是,确认所述第二可验证随机数和所述第二可验证随机数对应的证据有效。
可选的,区块链还包括:
主服务重置模块,当所述预设数量个从服务器反馈所述主服务器出现故障时,执行视图更改操作,并使用新服务器成为主服务器。
可选的,主服务重置模块用于确定新视图号;根据所述新视图号和服务器数量的取余绝对值确定主服务器。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请提供一种区块链共识方法,包括:客户端向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;在可信执行环境中,所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;其中,当所述服务器节点接收一个所述请求,执行对应的请求操作,构造回复消息并向所述客户端返回一个回复消息;若所述客户端在设定时间间隔内接收到预设数量的匹配的所述回复消息,完成所述请求。
本申请通过引入机密计算和可验证随机数有效的减少了共识算法的副本数量和通信步骤。由于存在故障服务器向不同服务器发送不一致消息的可能性,故障服务器可能会向两个不同的服务器子集发送具有不同内容但具有相同标识符的两条消息,例如,n-f个服务器(因为f可能会崩溃)包含大多数正确的服务器,至少需要3f + 1个服务器。而本申请中的机密计算和可验证随机函数可以减少采用重复的服务器,只需要2f + 1个服务器,通过将可验证随机数可验证随机函数分配给消息,并且从不将相同的可验证随机数可验证随机函数分配给两个不同的消息,并且保证前一个可验证随机数可验证随机函数的后继可验证随机数可验证随机函数只有一个。当它可验证随机数可验证随机函数,它还提供一个可验证随机数的证据,可以代替签名使用,证据该可验证随机数可验证随机函数实际上服务器的机密计算环境产生的。
本申请还提供一种区块链共识系统和计算机可读存储介质,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种区块链共识方法的流程图;
图2为本申请实施例所提供的区块链系统结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,图1为本申请实施例所提供的一种区块链共识的流程图,该方法包括:
S101:客户端向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;
S102:在可信执行环境中,所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
S103:每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;
S104:其中,当所述服务器节点接收一个所述请求,执行对应的请求操作,构造回复消息并向所述客户端返回一个回复消息;若所述客户端在设定时间间隔内接收到预设数量的匹配的所述回复消息,完成所述请求。
可验证随机函数BFT的服务器在称为视图的连续配置中移动。每个视图都有一个主服务器,其余的都是从服务器。主服务器可以表示为,其中/>,/>表示被选中成为主服务器的编号,/>是当前视图数,/>为服务器数量,/>为/>个服务器中的第/>个服务器。客户端发出带有操作的请求。
客户端用于发送请求。每个客户端有自己的公私钥,其中私钥用来对请求进行签名。
主服务器用于接收来自客户端的请求并排好序,然后按序发送给从服务器,并返回结果给客户端。每个服务器(主服务器和从服务器都是备份服务器)在机密计算环境中产生一对公私钥,私钥永远处于机密计算环境,使用范围也一直在机密计算环境,外部任何实体均无法获得。其他备份服务器可以公开查看任何服务器的公钥。在系统初始化时调用generateKey()函数生成各服务器节点的公私钥。
从服务器用于接收主服务器的消息,验证通过后执行相应的操作,并返回结果给客户端。每个服务器(主服务器和从服务器都是备份服务器)在机密计算环境中产生一对公私钥,私钥永远处于机密计算环境,使用范围也一直在机密计算环境,外部任何实体均无法获得。其他备份服务器可以公开查看任何服务器的公钥。在系统初始化时调用generateKey()函数,generateKey()函数代码如下:
每个所述服务器节点基于椭圆曲线算法生成自身对应的公私钥对;
其中,所述椭圆曲线算法包括设定椭圆曲线上的公开参数,包括、/>、/>和/>,其中/>、/>是大素数,/>是定义在有限域/>上的椭圆曲线,/>是椭圆曲线/>上/>阶的第一基点,则私钥设为/>,公钥为/>。
首先客户端 通过发送消息/>请求执行操作到所有服务器,/>是请求标识符,用于确保一次语义。客户端用私钥对请求进行签名。具有无效签名/>的请求将被丢弃。生成/>消息的代码如下:
客户端生成请求的代码:GenerateREQUEST请求函数;
1:输入、/>、/>、客户端私钥/>;
2:输出;
3:对其 ,/>,/>,/>用私钥/> 进行签名得到/>;
4:返回 。
服务器执行算法的核心是准备消息和提交消息的处理。本申请实施例提供的可验证随机函数BFT只有两个通信步骤。
当主服务器接收到客户端请求时,它使用准备消息将请求多播到所有服务器。
其中,是每个请求/>的摘要。主服务器在视图/>中为每个请求分配一个序列号/>(sequence number)。调用/>函数生成准备消息,首先验证第一可验证随机数/>的状态/>是否等于0。然后调用可验证随机数构造函数/>函数为准备消息产生一个可验证随机数/>和相应的证据/>。第二可验证随机数/>的输入为/>和主服务器的私钥/>。可验证随机数/>包含上一个可验证随机数/>,同时第一可验证随机数的状态/>在机密计算环境中由0变为1,相当于被标记为已用,不能在供其他的请求产生可验证随机数。可验证随机数/>设置为0。通用的create可验证随机函数函数如下,当主服务器调用时变量/>。
在得到第二可验证随机数和相应的证据时可以包括如下步骤:
输入消息和所述主服务器的私钥;所述消息为当前视图数、区块链的序列号、主服务器id号、所述摘要信息、所述第一可验证随机数和相应的证据的集合;
选择第一随机数,利用第一哈希函数将所述消息映射到椭圆曲线上的第二基点;
根据所述第一随机数和所述第一基点得到第一中间参数,根据所述第一随机数和所述第二基点得到第二中间参数;
根据所述第一中间参数和所述第二中间参数利用第二哈希函数将所述消息映射为第一参数;
根据所述第一随机数、所述第一参数、所述主服务器的私钥和所述第一基点的阶数确定第二参数;
根据所述主服务器的私钥和所述第二基点确定第三参数;
利用第三哈希函数将椭圆曲线上的第三参数映射为一个整数,得到所述第二可验证随机数;
根据所述第一参数、所述第二参数和所述第三参数得到所述第二可验证随机数相应的证据。
对应可验证随机数和证据/>生成函数,createVRF函数的代码如下所示:
1:输入:消息,对应主服务器私钥/>;
2:输出:随机数和证据/>;
3:选择第一随机数;
4:使用第一哈希函数将消息/>映射到椭圆曲线上的第二基点/>,计算,此时/>也是椭圆曲线的一个基点;
5:计算,/>;
6:使用第二哈希函数将输入映射成一个整数/>,第一参数 ;
7:计算第二参数;
8:计算第三参数;
9:使用第三哈希函数将椭圆曲线上的第三参数映射成一个整数,获得随机数或者/>,证据为/>;
10:返回 和/>。
而主服务器生成准备消息的过程可以如下:
1:输入: 请求,视图/>,序列号/>,主服务器私钥/>;
2:输出:;
3:如果,进入步骤4,否则进入步骤10;
4:如果请求 签名合法,进入步骤5;否则进入步骤10;
5:;
6:调用函数 ;
7:设置 ;
8:设置 ;
9:返回 ;
10:切换视图,并结束流程。
每个从服务器在收到准备消息后,调用GenerateCommit函数验证准备消息,生成提交消息。每个从服务器首先验证/>是否等于0,如果等于0继续,否则怀疑主服务器异常触发视图转换:
。
然后验证请求是否合法,如果合法继续。然后调用证明可验证随机函数验证第二可验证随机数和相应的证据/>是否有效,如果有效继续。同时第一可验证随机数/>的状态/>在机密计算环境中由0变为1,相当于被标记为已用,不能在供其他的请求产生可验证随机数。可验证随机数/>设置为0。需要注意的是,上面验证准备消息的动作主服务器不执行,只执行生成提交消息动作。此后所有服务器(主服务器和从服务器)在机密计算环境调用可验证随机数构造函数为提交消息产生一个第三可验证随机数/>和相应的证据/>,第三可验证随机数/>由和各个服务器的私钥进行构造生成。生成提交消息:
。
再将提交消息发送给其他服务器。
如果服务器没有收到准备消息,但收到了发送方生成的带有有效可验证随机数的提交消息,则发送其提交消息。这个发生在如果发送方出现故障,没有将准备消息发送到服务器/>(而是将其发送到其他服务器),或者准备消息只是延迟了,并且在提交消息之后才接收到。
证明可验证随机函数函数函数过程可以包括如下步骤:
输入所述消息、所述第二可验证随机数和所述第二可验证随机数对应的证据;
利用所述第一哈希函数将所述消息映射至椭圆曲线上的第三基点;
根据所述第一基点、所述第一参数、所述第二参数和所述服务器的公钥得到第四参数;
根据所述第三基点、所述第一参数、所述第二参数和所述第三参数得到第五参数;
根据所述第四参数、所述第五参数和所述第二哈希函数得到第六参数;
验证所述第六参数是否等于所述第一参数;
若是,确认所述第二可验证随机数和所述第二可验证随机数对应的证据有效。
对应的代码过程如下所示:
1:输入:消息,证据/>;
2:输出:合法性;
3:使用哈希函数 将消息/>映射到椭圆曲线上的第三基点/>,计算;
4:计算 ;
5:计算;
6:计算;
7:如果是否等于/>,进入步骤8;否则进入步骤9;
8:返回随机数有效,验证通过;
9:返回随机数无效,验证不通过。
服务器接收准备消息,生成提交消息,可以采用GenerateCommit函数,具体过程如下:
1:输入:;
2:输出:;
3:如果,进入步骤4;否则进入步骤13;
4:如果验证请求 签名合法,进入步骤5;否则进入步骤12那么:
5:;
6:调用 返回结果是合法的继续,如果验证不通过,视图转换;
7:;/>
8:;
9:;
10:调用函数;
11:生成,并返回;
12:不执行请求 ;
13:转换视图
。
每个服务器在收到提交消息后,调用VerifyCommit函数验证提交消息。调用证明可验证随机函数函数验证可验证随机数和相应的证据/>是否有效,如果有效继续。如果服务器从不同的服务器接收到/> 个有效的提交消息,则服务器按照该算法接受REQUEST请求。并调用/>函数为REPLY消息产生一个第四可验证随机数和相应的证据/>,并生成REPLY消息/> 。
若服务器j收到服务器i的提交消息,生成回复消息,可以采用VerifyCommit函数,对应代码过程如下:
1:输入:;
2:输出:;
3:;
4:调用返回结果是合法的继续,如果验证不通过结束;
5:如果收到个匹配的提交消息,那么:
6:为执行请求/>的结果;
7:;
8:调用函数生成/> 并返回;
9:结束步骤5中的如果条件。
客户端发送请求后,客户端从不同的服务器等待/>个具有相同/>的REPLY消息,这确保至少有一个回复来自正确的服务器。如果客户端在其本地时钟读取的时间间隔内没有收到足够的应答,则重新发送请求。如果请求已经被处理,服务器将重新发送缓存的应答。
可验证随机函数BFT需要满足以下条件来保证正确的服务器广播提交消息以响应准备消息:
条件一:其为上的当前视图编号,并且准备消息的发送方是主服务器(只有主服务器可以发送准备消息);
条件二:从服务器可以通过比对请求摘要/>和具有客户端签名的是否一致(防止故障的主服务器伪造请求);
条件三:从服务器已经接受了可验证随机数为/>,且此时/>状态state在机密计算环境中为0,表示可用状态。通过可验证随机数保证了主服务器为相同的消息分配相同的可验证随机数,同时在第/>轮共识尚未达成一致时,因为无法预测/>,那么也无法产生第/>轮的可验证随机数/>(以防止故障主服务器在消息序列中创建“漏洞”),确保共识的正确性、安全性、活性。
本申请实施例通过引入机密计算,即在可信执行环境执行,以及可验证随机数有效的减少了共识算法的副本数量和通信步骤。由于存在故障服务器向不同服务器发送不一致消息的可能性,故障服务器可能会向两个不同的服务器子集发送具有不同内容但具有相同标识符的两条消息,例如,n+f个服务器(因为f可能会崩溃)包含大多数正确的服务器,至少需要3f + 1个服务器。而本申请中的机密计算和可验证随机函数可以减少采用重复的服务器,通过将可验证随机数可验证随机函数分配给消息,并且从不将相同的可验证随机数可验证随机函数分配给两个不同的消息,并且保证前一个可验证随机数可验证随机函数的后继可验证随机数可验证随机函数只有一个。当它可验证随机数可验证随机函数,它还提供一个可验证随机数的证据,可以代替签名使用,证据该可验证随机数可验证随机函数实际上服务器的机密计算环境产生的。
由上述实施例也可以看出,本申请实施例将机密计算技术和可验证随机函数技术引入到区块链共识算法中,解决传统PBFT算法的共识节点多、速度慢,通信复杂度高,可扩展性差的问题。机密计算和可验证随机函数让可验证随机函数BFT从副本数量和通信过程两方面得到了很大提升。
最主要的,将最小副本数量从 3f +1 降低到 2f +1;将共识过程的通信阶段从PBFT 的三阶段降低到两阶段。同时,摒弃了以前基于机密计算的硬件计数器方案。基于机密计算和可验证随机函数的可验证随机函数BFT共识算法在执行过程中具有如下特性:
永远不会将相同的可验证随机函数绑定到不同的消息。这样可以保证每个消息都会有一个独一无二的可验证随机数作为其标识,与其绑定。
永远不会对相同的消息绑定不同的可验证随机函数。这样可以保证每个相同的消息,不管任何时候产生的可验证随机数都是相同的,保证的系统的安全性。
永远都会按照序号产生区块。产生的区块是连续的,不会产生漏洞。只有上一个区块产生之后,才可以产生下一个区块,因为在上一个区块没有产生时,无法产生下一个区块的可验证随机数。
参见图2,图2为本申请实施例所提供的区块链系统结构示意图。
本申请还提供一种区块链共识系统,包括 :
客户端,用于向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;以及用于在设定时间间隔内接收到预设数量的匹配的所述回复消息时,完成所述请求;
所述主服务器,用于为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
所述从服务器,用于在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;
其中,所述服务器节点用于接收一个所述请求,执行对应的请求操作,构造回复消息并向所述客户端返回一个回复消息。
基于上述实施例,作为优选的实施例,所述客户端还用于根据当前视图数和所述区块链的数量确定主服务器对应的编号,将编号外的其余服务器作为从服务器。
基于上述实施例,作为优选的实施例,每个所述服务器节点还用于产生自身对应的公私钥对;其中,所述公私钥对中的私钥处于保密状态,所述公私钥对中的公钥允许被其他服务器查看。
基于上述实施例,作为优选的实施例,每个所述服务器节点还用于基于椭圆曲线算法生成自身对应的公私钥对;
其中,所述椭圆曲线算法包括设定椭圆曲线上的公开参数,包括、/>、/>和/>,其中/>、/>是大素数,/>是定义在有限域/>上的椭圆曲线,/>是椭圆曲线/>上/>阶的第一基点,则私钥设为/>,公钥为/>。
基于上述实施例,作为优选的实施例,客户端用于生成请求,并利用自身私钥对所述请求进行签名;向区块链中所有服务器节点发送所述请求;所述请求包括操作名称、请求标识符、客户端签名和客户端名称。
基于上述实施例,作为优选的实施例,所述主服务器包括准备信息构造模块,所述准备信息构造模块用于执行如下步骤:
获取所述请求中的摘要信息;在视图中为每个所述请求分配序列号;根据所述摘要信息和所述序列号利用可验证随机数构造准备消息构造准备消息。
基于上述实施例,作为优选的实施例,服务器节点还包括:
随机数验证模块,用于验证第一可验证随机数的状态是否为未使用状态;若是,调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据。
基于上述实施例,作为优选的实施例,随机数验证模块为用于输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和主服务器的私钥,得到所述第二可验证随机数和相应的证据的模块。
基于上述实施例,作为优选的实施例,服务器节点还包括:
随机数状态变更模块,用于变更所述第一可验证随机数的状态为使用状态。
基于上述实施例,作为优选的实施例,服务器节点还包括:
证据生成模块,用于执行如下步骤:
输入消息和所述主服务器的私钥;
选择第一随机数,利用第一哈希函数将所述消息映射到椭圆曲线上的第二基点;
根据所述第一随机数和所述第一基点得到第一中间参数,根据所述第一随机数和所述第二基点得到第二中间参数;
根据所述第一中间参数和所述第二中间参数利用第二哈希函数将所述消息映射为第一参数;
根据所述第一随机数、所述第一参数、所述主服务器的私钥和所述第一基点的阶数确定第二参数;
根据所述主服务器的私钥和所述第二基点确定第三参数;
利用第三哈希函数将椭圆曲线上的第三参数映射为一个整数,得到所述第二可验证随机数;
根据所述第一参数、所述第二参数和所述第三参数得到所述第二可验证随机数相应的证据。
基于上述实施例,作为优选的实施例,服务器节点还包括:
随机数状态验证模块,用于验证所述第一可验证随机数是否处于未使用状态;若否,触发视图转换。
基于上述实施例,作为优选的实施例,随机数状态验证模块还用于若所述第一可验证随机数处于未使用状态,调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效;若均有效,所有服务器节点调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据。
基于上述实施例,作为优选的实施例,服务器节点还用于将所述第一可验证随机数的使用状态由未使用状态变更为已使用状态,同时将第二可验证随机数的使用状态设为未使用状态。
基于上述实施例,作为优选的实施例,所述所有服务器节点用于调用所述可验证随机数构造函数根据当前视图数、所述序列号、所述摘要信息、主服务id号、各个从服务器对应的id号、所述第二可验证随机数和各所述服务器节点的私钥生成第三可验证随机数和相应的证据。
基于上述实施例,作为优选的实施例,随机数状态验证模块包括:
验证单元,用于执行如下步骤:
输入所述消息、所述第二可验证随机数和所述第二可验证随机数对应的证据;
利用所述第一哈希函数将所述消息映射至椭圆曲线上的第三基点;
根据所述第一基点、所述第一参数、所述第二参数和所述服务器的公钥得到第四参数;
根据所述第三基点、所述第一参数、所述第二参数和所述第三参数得到第五参数;
根据所述第四参数、所述第五参数和所述第二哈希函数得到第六参数;
验证所述第六参数是否等于所述第一参数;
若是,确认所述第二可验证随机数和所述第二可验证随机数对应的证据有效。
基于上述实施例,作为优选的实施例,区块链还包括:
主服务重置模块,当所述预设数量个从服务器反馈所述主服务器出现故障时,执行视图更改操作,并使用新服务器成为主服务器。
基于上述实施例,作为优选的实施例,主服务重置模块用于确定新视图号;根据所述新视图号和服务器数量的取余绝对值确定主服务器。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (21)
1.一种区块链共识方法,其特征在于,包括:
客户端向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;
所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;
其中,当所述服务器节点接收一个所述请求,执行对应的请求操作,构造回复消息并向所述客户端返回一个回复消息;
若所述客户端在设定时间间隔内接收到预设数量的匹配的所述回复消息,完成所述请求。
2.根据权利要求1所述的区块链共识方法,其特征在于,所述客户端向区块链中所有服务器节点发送请求之前,还包括:
根据当前视图数和所述区块链的数量确定主服务器对应的编号;
将编号外的其余服务器作为从服务器。
3.根据权利要求2所述的区块链共识方法,其特征在于,所述将编号外的其余服务器作为从服务器之后,还包括:
每个所述服务器节点产生自身对应的公私钥对;其中,所述公私钥对中的私钥处于保密状态,所述公私钥对中的公钥允许被其他服务器查看。
4.根据权利要求3所述的区块链共识方法,其特征在于,所述每个所述服务器节点产生自身对应的公私钥对包括:
每个所述服务器节点基于椭圆曲线算法生成自身对应的公私钥对;
其中,所述椭圆曲线算法包括设定椭圆曲线上的公开参数,包括、/>、/>和/>,其中/>、/>是大素数,/>是定义在有限域/>上的椭圆曲线,/>是椭圆曲线/>上/>阶的第一基点,则私钥设为/>,公钥为/>。
5.根据权利要求4所述的区块链共识方法,其特征在于,所述客户端向区块链中所有服务器节点发送请求包括:
客户端生成请求,并利用自身私钥对所述请求进行签名;
向区块链中所有服务器节点发送所述请求;所述请求包括操作名称、请求标识符、客户端请求消息的签名和客户端名称。
6.根据权利要求5所述的区块链共识方法,其特征在于,在可信执行环境中,所述主服务器为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息包括:
所述主服务器获取所述请求中的摘要信息;
在视图中为每个所述请求分配序列号;
根据所述摘要信息和所述序列号利用可验证随机数构造准备消息。
7.根据权利要求6所述的区块链共识方法,其特征在于,所述根据所述摘要信息和所述序列号利用可验证随机数构造准备消息之前,还包括:
验证第一可验证随机数的状态是否为未使用状态;
若是,调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据。
8.根据权利要求7所述的区块链共识方法,其特征在于,所述调用可验证随机数构造函数为所述准备消息产生第二可验证随机数和相应的证据包括:
输入当前视图数,服务器数量、所述摘要信息、所述第一可验证随机数和主服务器的私钥,得到所述第二可验证随机数和相应的证据。
9.根据权利要求8所述的区块链共识方法,其特征在于,所述输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和所述主服务器的私钥,得到所述第二可验证随机数和相应的证据时,还包括:
变更所述第一可验证随机数的状态为已使用状态。
10.根据权利要求9所述的区块链共识方法,其特征在于,所述输入当前视图数、区块链的序列号、所述摘要信息、所述第一可验证随机数和所述主服务器的私钥,得到所述第二可验证随机数和相应的证据包括:
输入消息和所述主服务器的私钥;所述消息为当前视图数、区块链的序列号、主服务器身份标识号、所述摘要信息、所述第一可验证随机数和相应的证据的集合;
选择第一随机数,利用第一哈希函数将所述消息映射到椭圆曲线上的第二基点;
根据所述第一随机数和所述第一基点得到第一中间参数,根据所述第一随机数和所述第二基点得到第二中间参数;
根据所述第一中间参数和所述第二中间参数利用第二哈希函数将所述消息映射为第一参数;
根据所述第一随机数、所述第一参数、所述主服务器的私钥和所述第一基点的阶数确定第二参数;
根据所述主服务器的私钥和所述第二基点确定第三参数;
利用第三哈希函数将椭圆曲线上的第三参数映射为一个整数,得到所述第二可验证随机数;
根据所述第一参数、所述第二参数和所述第三参数得到所述第二可验证随机数相应的证据。
11.根据权利要求10所述的区块链共识方法,其特征在于,每个所述从服务器在收到所述准备消息并验证所述可验证随机数的合法性时,还包括:
验证所述第一可验证随机数是否处于未使用状态;
若否,触发视图转换。
12.根据权利要求11所述的区块链共识方法,其特征在于,若所述第一可验证随机数处于未使用状态,还包括:
调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效;
若均有效,所有服务器节点调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据。
13.根据权利要求12所述的区块链共识方法,其特征在于,还包括:
将所述第一可验证随机数的使用状态由未使用状态变更为已使用状态,同时将第二可验证随机数的使用状态设为未使用状态。
14.根据权利要求13所述的区块链共识方法,其特征在于,所述所有服务器节点各自调用所述可验证随机数构造函数为所述提交消息产生第三可验证随机数和相应的证据包括:
调用所述可验证随机数构造函数根据当前视图数、所述区块链的序列号、所述摘要信息、主服务器的身份标识号、各个从服务器对应的身份标识号、所述第二可验证随机数和各所述服务器节点的私钥生成第三可验证随机数和相应的证据。
15.根据权利要求1所述的区块链共识方法,其特征在于,若所述从服务器未收到所述准备消息,还包括:
检测是否收到包含有效可验证随机数的有效提交信息;
若是,对所述有效提交信息重构造并发送。
16.根据权利要求12所述的区块链共识方法,其特征在于,调用证据可验证随机函数验证所述第二可验证随机数和所述第二可验证随机数对应的证据是否有效包括:
输入所述消息、所述第二可验证随机数和所述第二可验证随机数对应的证据;
利用所述第一哈希函数将所述消息映射至椭圆曲线上的第三基点;
根据所述第一基点、所述第一参数、所述第二参数和所述服务器的公钥得到第四参数;
根据所述第三基点、所述第一参数、所述第二参数和所述第三参数得到第五参数;
根据所述第四参数、所述第五参数和所述第二哈希函数得到第六参数;
验证所述第六参数是否等于所述第一参数;
若是,确认所述第二可验证随机数和所述第二可验证随机数对应的证据有效。
17.根据权利要求1所述的区块链共识方法,其特征在于,还包括:
当所述预设数量个从服务器反馈所述主服务器出现故障时,执行视图更改操作,并使用新服务器成为主服务器。
18.据权利要求17所述的区块链共识方法,其特征在于,执行视图更改操作,并使用新服务器成为主服务器包括:
确定新视图号;
根据所述新视图号和服务器数量的取余绝对值确定主服务器。
19.根据权利要求1所述的区块链共识方法,其特征在于,若所述客户端在设定时间间隔内未接收到预设数量的匹配的所述回复消息,还包括:
向所述区块链中所有服务器节点发送第二请求;
其中,设所述服务器节点的总数为2f+1,则每个所述服务器节点收到f+1个提交信息后发送所述回复消息。
20.一种区块链共识系统,其特征在于,包括 :
客户端,用于向区块链中所有服务器节点发送请求;所述服务器节点运行在可信执行环境中,包括主服务器和若干从服务器;以及用于在设定时间间隔内接收到预设数量的匹配的回复消息时,完成所述请求;
所述主服务器,用于为所述请求分配序列号,根据所述序列号利用可验证随机数构造准备消息,并将所述准备消息发送给其他所有从服务器;
所述从服务器,用于在收到所述准备消息并验证所述可验证随机数的合法性后,利用所述可验证随机数构造提交消息,并向其他服务器节点多播所述提交消息;其中,所述服务器节点用于接收一个所述请求,执行对应的请求操作,构造所述回复消息并向所述客户端返回一个回复消息。
21.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-19任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410096357.8A CN117614611B (zh) | 2024-01-24 | 2024-01-24 | 一种区块链共识方法、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410096357.8A CN117614611B (zh) | 2024-01-24 | 2024-01-24 | 一种区块链共识方法、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117614611A CN117614611A (zh) | 2024-02-27 |
CN117614611B true CN117614611B (zh) | 2024-04-12 |
Family
ID=89960216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410096357.8A Active CN117614611B (zh) | 2024-01-24 | 2024-01-24 | 一种区块链共识方法、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117614611B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093244A1 (zh) * | 2019-11-14 | 2021-05-20 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
US11062280B1 (en) * | 2020-01-14 | 2021-07-13 | Hiro Systems Pbc | Network consensus-based data processing |
CN113254526A (zh) * | 2021-03-02 | 2021-08-13 | 中国信息通信研究院 | 区块链共识方法、装置及系统 |
CN113301114A (zh) * | 2021-04-13 | 2021-08-24 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
CN113660125A (zh) * | 2021-08-18 | 2021-11-16 | 中国科学技术大学 | 一种基于随机可信委员会的共识方法及装置 |
CN114172659A (zh) * | 2021-11-30 | 2022-03-11 | 中国建设银行股份有限公司 | 区块链系统中的消息传输方法、装置、设备及存储介质 |
CN116633942A (zh) * | 2023-04-26 | 2023-08-22 | 浙江大学 | 一种高速响应客户端的拜占庭容错共识方法 |
-
2024
- 2024-01-24 CN CN202410096357.8A patent/CN117614611B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093244A1 (zh) * | 2019-11-14 | 2021-05-20 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
US11062280B1 (en) * | 2020-01-14 | 2021-07-13 | Hiro Systems Pbc | Network consensus-based data processing |
CN113254526A (zh) * | 2021-03-02 | 2021-08-13 | 中国信息通信研究院 | 区块链共识方法、装置及系统 |
CN113301114A (zh) * | 2021-04-13 | 2021-08-24 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
CN113660125A (zh) * | 2021-08-18 | 2021-11-16 | 中国科学技术大学 | 一种基于随机可信委员会的共识方法及装置 |
CN114172659A (zh) * | 2021-11-30 | 2022-03-11 | 中国建设银行股份有限公司 | 区块链系统中的消息传输方法、装置、设备及存储介质 |
CN116633942A (zh) * | 2023-04-26 | 2023-08-22 | 浙江大学 | 一种高速响应客户端的拜占庭容错共识方法 |
Non-Patent Citations (1)
Title |
---|
区块链物联网设备与无线访问点双向认证方案;唐呈俊等;网络空间安全;20191225(12);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117614611A (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10103893B2 (en) | Blockchain-supported, fail-safe synchronization in a data authentication infrastructure | |
US10049017B2 (en) | Method and system for byzantine fault-tolerance replicating of data on a plurality of servers | |
US11429967B2 (en) | Mechanism for efficient validation of finality proof in lightweight distributed ledger clients | |
US9876779B2 (en) | Document verification with distributed calendar infrastructure | |
US9911007B2 (en) | Redundant fail-safe synchronization in a data authentication infrastructure | |
Crain et al. | Evaluating the red belly blockchain | |
JP2019536108A (ja) | データをビザンチン障害耐性複製する方法及びシステム | |
CN111294379B (zh) | 区块链网络服务平台及其权限托管方法、存储介质 | |
JP7212172B2 (ja) | 投票集計を伴うトポロジードリブンビザンチンフォールトトレラント合意プロトコル | |
Buchnik et al. | Fireledger: A high throughput blockchain consensus protocol | |
CN113783697B (zh) | 一种基于委托的数据广播服务证明共识协议应用方法 | |
Cong et al. | A blockchain consensus protocol with horizontal scalability | |
WO2022256181A1 (en) | Method and apparatus for utilizing off-platform-resolved data as input to code execution on a decentralized platform | |
Zhao | A byzantine fault tolerant distributed commit protocol | |
CN117614611B (zh) | 一种区块链共识方法、系统和存储介质 | |
Beaver | Server-assisted cryptography | |
Wu et al. | Reinforced practical Byzantine fault tolerance consensus protocol for cyber physical systems | |
CN114499874B (zh) | 一种应用于工业互联网的拜占庭容错共识优化方法 | |
EP4252384B1 (en) | Methods, devices and system related to a distributed ledger and user identity attribute | |
CN113037864B (zh) | 一种数据存储系统及一种数据存储方法 | |
Peng et al. | Petrichor: An Efficient Consensus Protocol Leveraging DAG and Sharding for Asynchronous BFT | |
Ying et al. | LOPE: A Low‐Overhead Payment Verification Method for Blockchains | |
Ma | Blockchain Consensus Mechanism Based on Improved Distributed Consistency and Hash Entropy | |
Freitas et al. | Deterministic or probabilistic?-A survey on Byzantine fault tolerant state machine replication | |
Durov | Catchain Consensus: An Outline |
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 |