CN111416708B - 一种区块链拜占庭容错共识方法及*** - Google Patents

一种区块链拜占庭容错共识方法及*** Download PDF

Info

Publication number
CN111416708B
CN111416708B CN202010181812.6A CN202010181812A CN111416708B CN 111416708 B CN111416708 B CN 111416708B CN 202010181812 A CN202010181812 A CN 202010181812A CN 111416708 B CN111416708 B CN 111416708B
Authority
CN
China
Prior art keywords
round
block
node
voting
equal
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
CN202010181812.6A
Other languages
English (en)
Other versions
CN111416708A (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.)
Macy Technology Beijing Co ltd
Original Assignee
Macy Technology Beijing 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 Macy Technology Beijing Co ltd filed Critical Macy Technology Beijing Co ltd
Priority to CN202010181812.6A priority Critical patent/CN111416708B/zh
Publication of CN111416708A publication Critical patent/CN111416708A/zh
Application granted granted Critical
Publication of CN111416708B publication Critical patent/CN111416708B/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/03Credit; Loans; Processing thereof
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C13/00Voting apparatus
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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 Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种区块链拜占庭容错共识方法及***,方法包括:S1:节点进行密码抽签,被抽中的节点提议区块并广播;S2:对最高优先级的区块进行第一轮投票;S3:如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;S4:如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回S1,否则执行S5;S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回S2,否则返回S1,从而提高拜占庭容错共识算法效率且降低网络传输压力。

Description

一种区块链拜占庭容错共识方法及***
技术领域
本发明涉及信息安全技术领域,特别是涉及一种区块链拜占庭容错共识方法及***。
背景技术
当前,区块链***应用越来越广泛,如中国央行从2014年就开始研究基于区块链的数字货币,并已取得较好的研究成果;2019年3月,IBM(IBM.US)宣布跨境支付区块链World Wire;2019年6月,美国Facebook公司推出Libra数字货币,以期望为全球提供无国界的数字货币和金融服务的区块链平台;2019年6月,Visa宣布跨境支付区块链网络B2BConnect。除数字货币外,区块链技术在物联网、电子***、司法存证、食品安全等领域应用不断推广。
共识方法是区块链的核心协议。当前,工作量证明(Proof of Work)机制由于大量的资源消耗和长时间等待而受到越来越多的质疑。普林斯顿大学Arvind Narayanan教授指出目前比特币挖矿的电力消耗已经接近全球电力总消耗的1%,数值大约是5000兆瓦,几乎是整个伦敦人口(约800万)每天的用电量。权益证明(Proof of Stake)和委托权益证明(Delegated Proof of Stake)等机制由于中心化导致安全性较低。该类共识机制使得拥有大量代币的用户能够坐享其成。此外,用户抵押代币以期望获得利息,不利于代币的流动性,而且还会吸引黑客攻击大量币的钱包。
基于拜占庭容错的共识机制由于其不分叉特性和高效性得到越来越多的研究。例如,Micali等提出Algorand共识方法,该方法具有不分叉的优点。Pass和Shi提出混合共识机制,该机制中将经典共识机制与非授权共识机制相结合,利用工作量证明,实现非授权环境中的状态机复制。该机制具有交易快速响应特性(responsivenss),是指交易的确认时间与网络真实时延有关,而与网络时延上限无关。Maofan等提出HotStuff共识方法,该方法将PBFT网状通信拓扑变成了星形通信网络拓扑,使得每次通信都依靠主节点以降低***通信复杂度。随后Libra在HotStuff的基础上引入显示的活跃机制,并使用聚合签名的方式保留验证者的身份以提高验签效率。
上述拜占庭容错共识方法均涉及2轮投票,如果2轮投票大于或等于设定条件票数占比,则能够达成共识。但是如果仅第1轮大于或等于设定条件票数占比,而第2轮小于设定条件票数占比,则要求***重新选择区块提议节点,以完成区块提议。该过程使得区块链共识效率较低。因此,Jae Kwon等提出的Tendermint共识机制,该机制在使用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)方法的基础上添加了锁的概念。如果区块Block-A的第1轮大于或等于设定条件票数占比,则锁定该区块,且下一轮严格要求对上一轮已投票的区块继续投票。虽然对上一轮已投票的区块继续投票以期望达成共识,但是在该过程中,如果节点对上一轮的空块nil或者其他区块Block-B投票进行了投票,则要求该节点继续对空块nil或者其他区块Block-B进行投票,而仅当对区块Block-A投票的节点才能够继续对区块Block-A进行投票。因此,该过程不利于下一轮的共识,从而使得共识效率较低。
发明内容
基于此,本发明的目的是提供一种区块链拜占庭容错共识方法及***,以提高共识效率。
为实现上述目的,本发明提供了一种区块链拜占庭容错共识方法,所述方法包括:
步骤S1:节点进行密码抽签,被抽中的节点提议区块并广播;
步骤S2:对最高优先级的区块进行第一轮投票;
步骤S3:判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数;
步骤S4:判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回步骤S1,否则执行步骤S5;
步骤S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回步骤S2,对该区块开始新一轮的投票;否则进入步骤S1。
可选的,所述步骤S1包括:
步骤S11:根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值;
步骤S12:判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播。
3、根据权利要求1所述的区块链拜占庭容错共识方法,其特征在于,所述步骤S2包括:
步骤S21:根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性;
步骤S22:如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块;
步骤S23:根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值;
步骤S24:判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;
步骤S25:对最高优先级的区块进行第一轮投票,获得各节点的第一签名。
可选的,所述步骤S3包括:
步骤S31:根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性;
步骤S32:根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性;
步骤S33:当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一轮票数;
步骤S34:根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值;
步骤S35:判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行步骤S36;
步骤S36:对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名。
可选的,所述步骤S4包括:
步骤S41:根据各节点的公钥、各节点的抵押、第r个区块种子和第三验证值确定第四有效属性;
步骤S42:根据各节点的第二签名、各节点的公钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第五有效属性
步骤S43:当第四有效属性和第五有效属性均为有效值时,则统计各区块内第二轮票数;
步骤S44:当第一轮票数大于或等于设定条件且第二轮票数大于或等于设定条件时,则对该区块达成共识并返回步骤S1;否则,执行步骤S5。
可选的,所述步骤S5包括:
步骤S51:根据各节点的私钥、各节点的抵押和第r个区块种子确定第四随机值和第四验证值;
步骤S52:判断第四随机值是否在第三轮投票阈值范围内;如果第四随机值在第三轮投票阈值范围内,则执行步骤S53;
步骤S53:如果不存在第一轮票数大于或等于设定条件的区块,则执行步骤S54;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则执行步骤S55;
步骤S54:对空块进行第三轮投票,获得各节点的第三签名;
步骤S55:对该区块进行第三轮投票,获得各节点的第四签名;
步骤S56:如果第三轮票数大于或等于设定条件,则返回步骤S2;如果第三轮票数小于设定条件,返回步骤S1。
本发明还提供一种区块链拜占庭容错共识***,所述***包括:
广播模块,用于节点进行密码抽签,被抽中的节点提议区块并广播;
投票模块,用于对最高优先级的区块进行第一轮投票;
第一判断模块,用于判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数;
第二判断模块,用于判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识,并返回“广播模块”,否则执行“结果确定模块”;
结果确定模块,用于如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回“投票模块”,对该区块开始新一轮的投票;否则进入“广播模块”。
可选的,所述广播模块包括:
第一参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值;
第一判断单元,用于判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播。
可选的,所述投票模块包括:
第一有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性;
广播单元,用于如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块;
第二参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值;
第二判断单元,用于判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;
第一轮投票单元,用于对最高优先级的区块进行第一轮投票,获得各节点的第一签名。
可选的,所述第一判断模块包括:
第二有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性;
第三有效属性确定单元,用于根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性;
第一轮票数确定单元,用于当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一轮票数;
第三参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值;
第三判断单元,用于判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行“第二轮投票确定单元”;
第二轮投票确定单元,用于对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供了一种区块链拜占庭容错共识方法及***,方法包括:S1:节点进行密码抽签,被抽中的节点提议区块并广播;S2:对最高优先级的区块进行第一轮投票;S3:如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;S4:如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回S1,否则执行S5;S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回S2,否则返回S1,从而提高拜占庭容错共识算法效率且降低网络传输压力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例区块链拜占庭容错共识方法流程图;
图2为本发明实施例区块链拜占庭容错共识***结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种区块链拜占庭容错共识方法及***,以提高共识效率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例区块链拜占庭容错共识方法流程图,如图1所示,本发明提供了一种区块链拜占庭容错共识方法,所述方法包括:
步骤S1:节点进行密码抽签,被抽中的节点提议区块并广播。
步骤S2:对最高优先级的区块进行第一轮投票。
步骤S3:判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数。
步骤S4:判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回步骤S1,否则执行步骤S5。
步骤S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回步骤S2,对该区块开始新一轮的投票;否则进入步骤S1。
下面具体举例进行论述:
实施例一
步骤S1:节点进行密码抽签,被抽中的节点提议区块并广播,具体包括:
步骤S11:根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值,具体公式为:
Figure BDA0002412797440000081
其中,valuer,i为第一随机值,verr,i为第一验证值,Eval为随机函数VRF中的求值函数,Prove为随机函数VRF中的证明函数,ski为第i个节点的私钥,stakei为第i个节点的抵押,1≤i≤n,seedr为第r个区块种子。
步骤S12:判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播;所述区块提议阈值范围为[Thread1,Thread1'],其中,Thread1为区块提议阈值范围的下限,Thread1'为区块提议阈值范围的上限。
步骤S2:对最高优先级的区块进行第一轮投票,具体包括:
步骤S21:根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性,具体公式为:
Figure BDA0002412797440000082
其中,Valid1/Invalid1为第一有效属性,VRF.Verify为随机函数验证算法,pki为第i个节点的公钥,verr,i为第一验证值,stakei为第i个节点的抵押,1≤i≤n,seedr为第r个区块种子。
步骤S22:如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块。
步骤S23:根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值,具体公式为:
Figure BDA0002412797440000083
其中,valuer,j为第二随机值,verr,j为第二验证值,Eval为随机函数VRF中的求值函数,Prove为随机函数VRF中的证明函数,skj为第j个节点的私钥,stakej为第j个节点的抵押,1≤j≤n,seedr为第r个区块种子。
步骤S24:判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;所述第一轮投票阈值范围为[Thread2,Thread2'],其中,Thread2为第一轮投票阈值范围的下限,Thread2'为第一轮投票阈值范围的上限。
步骤S25:对最高优先级的区块进行第一轮投票,获得各节点的第一签名;具体的:根据各节点的私钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第一轮投票,获得各节点的第一签名,具体公式为:
Figure BDA0002412797440000091
其中,Prevotej为第j个节点的第一签名,1≤j≤n,Sig为签名算法,H()为哈希函数,skj为第j个节点的私钥,valuer,j为第二随机值,verr,j为第二验证值,stakej为第j个节点的抵押,seedr为第r个区块种子,BlockrHighest为最高优先级的区块。
步骤S3:判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票,具体包括:
步骤S31:根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性,具体公式为:
Figure BDA0002412797440000092
其中,Valid2/Invalid2为第二有效属性,VRF.Verify为随机函数验证算法,pkj为第j个的公钥,stakej为第j个的抵押,seedr为第r个区块种子,verr,j为第二验证值。
步骤S32:根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性,具体公式为:
Figure BDA0002412797440000093
其中,Valid3/Invalid3为第三有效属性,Ver为验证算法,H()为哈希函数,Prevotej为第j个节点的第一签名,pkj为第j个节点的公钥,valuer,j为第二随机值,verr,j为第二验证值,stakej为第j个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000101
为最高优先级的区块。
步骤S33:当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一签名的票数,即第一轮票数。
步骤S34:根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值,具体公式为:
Figure BDA0002412797440000102
其中,valuer,k为第三随机值,verr,k为第三验证值,Eval为随机函数VRF中的求值函数,Prove为随机函数VRF中的证明函数,skk为第k个节点的私钥,stakek为第k个节点的抵押,1≤k≤n,seedr为第r个区块种子。
步骤S35:判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行步骤S36;所述第二轮投票阈值范围为[Thread3,Thread3'],其中,Thread3为第二轮投票阈值范围的下限,Thread3'为第二轮投票阈值范围的上限。
步骤S36:对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名;具体的:根据各节点的私钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第二轮投票,获得各节点的第二签名,具体公式为:
Figure BDA0002412797440000103
其中,Precommitk为第k个节点的第二签名,Sig为签名算法,H()为哈希函数,skk为第k个节点的私钥,valuer,k为第三随机值,verr,k为第三验证值,stakek为第k个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000104
为最高优先级的区块。
步骤S4:判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回步骤S1,否则执行步骤S5,具体包括:
步骤S41:根据各节点的公钥、各节点的抵押、第r个区块种子和第三验证值确定第四有效属性,具体公式为:
Figure BDA0002412797440000111
其中,Valid4/Invalid4为第四有效属性,VRF.Verify为随机函数验证算法,pkk为第k个节点的公钥,stakek为第k个节点的抵押,seedr为第r个区块种子,verr,k为第三验证值。
步骤S42:根据各节点的第二签名、各节点的公钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第五有效属性,具体公式为:
Figure BDA0002412797440000112
其中,Valid5/Invalid5为第五有效属性,Ver为验证算法,H()为哈希函数,Precommitk为第k个节点的第二签名,pkk为第k个节点的公钥,valuer,k为第三随机值,verr,k为第三验证值,stakek为第k个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000113
为最高优先级的区块。
步骤S43:当第四有效属性和第五有效属性均为有效值时,则统计各区块内第二签名的票数,即第二轮票数;
步骤S44:当第一轮票数大于或等于设定条件且第二轮票数大于或等于设定条件时,则对该区块达成共识并返回步骤S1;否则,执行步骤S5。
步骤S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票。如果第三轮票数大于或等于设定条件,则返回步骤S2,对该区块开始新一轮的投票;否则进入步骤S1。
步骤S51:根据各节点的私钥、各节点的抵押和第r个区块种子确定第四随机值和第四验证值,具体公式为:
Figure BDA0002412797440000114
其中,valuer,l为第四随机值,verr,l为第四验证值,Eval为随机函数VRF中的求值函数,Prove为随机函数VRF中的证明函数,skl为第l个节点的私钥,stakel为第l个节点的抵押,1≤l≤n,seedr为第r个区块种子。
步骤S52:判断第四随机值是否在第三轮投票阈值范围内;如果第四随机值在第三轮投票阈值范围内,则执行步骤S53;所述第三轮投票阈值范围为[Thread4,Thread4'],其中,Thread4为第三轮投票阈值范围的下限,Thread4'为第三轮投票阈值范围的上限。
步骤S53:如果不存在第一轮票数大于或等于设定条件的区块,则执行步骤S54;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则执行步骤S55;所述设定条件为2/3总票数。
步骤S54:对空块进行第三轮投票,获得各节点的第三签名;所述空块为不包含交易单而仅包含区块链共识信息的区块;具体的:根据各节点的私钥、第四随机值、第四验证值、各节点的抵押、第r个区块种子和空块进行第三轮投票,获得各节点的第三签名,具体公式为:
Figure BDA0002412797440000121
其中,NextIndexl为第l个节点的第三签名,Sig为签名算法,H()为哈希函数,skl为第l个节点的私钥,valuer,l为第四随机值,verr,l为第四验证值,stakel为第l个节点的抵押,seedr为第r个区块种子,nil为空块。
步骤S55:对该区块进行第三轮投票,获得各节点的第四签名;具体的:根据各节点的私钥、第四随机值、第四验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第三轮投票,获得各节点的第四签名,具体公式为:
Figure BDA0002412797440000122
其中,NextIndexl为第l个节点的第四签名,Sig为签名算法,H()为哈希函数,skl为第l个节点的私钥,valuer,l为第四随机值,verr,l为第四验证值,stakel为第l个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000123
为最高优先级的区块。
步骤S56:如果第三轮票数大于或等于设定条件,则返回步骤S2;如果第三轮票数小于设定条件,返回步骤S1。
实施例二
步骤S1:节点进行密码抽签,被抽中的节点提议区块并广播,具体包括:
步骤S11:根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值,具体公式为:
Figure BDA0002412797440000131
其中,valuer,i为第一随机值,verr,i为第一验证值,H()为哈希函数,ski为第i个节点的私钥,stakei为第i个节点的抵押,1≤i≤n,seedr为第r个区块种子。
步骤S12:判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播;所述区块提议阈值范围为[Thread1,Thread1'],其中,Thread1为区块提议阈值范围的下限,Thread1'为区块提议阈值范围的上限。
步骤S2:对最高优先级的区块进行第一轮投票,具体包括:
步骤S21:根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性,具体公式为:
Valid1/Invalid1←{e(verr,i,g2)=e(H(stakei,seedr),pki)};
其中,Valid1/Invalid1为第一有效属性,pki为第i个节点的公钥,verr,i为第一验证值,stakei为第i个节点的抵押,1≤i≤n,seedr为第r个区块种子,e为对称双线性映射,H()为哈希函数,g2为群G2的生成元。
步骤S22:如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块。
步骤S23:根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值,具体公式为:
Figure BDA0002412797440000132
其中,valuer,j为第二随机值,verr,j为第二验证值,H()为哈希函数,skj为第j个节点的私钥,stakej为第j个节点的抵押,1≤j≤n,seedr为第r个区块种子。
步骤S24:判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;所述第一轮投票阈值范围为[Thread2,Thread2'],其中,Thread2为第一轮投票阈值范围的下限,Thread2'为第一轮投票阈值范围的上限。
步骤S25:对最高优先级的区块进行第一轮投票,获得各节点的第一签名;具体的:根据各节点的私钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第一轮投票,获得各节点的第一签名,具体公式为:
Figure BDA0002412797440000141
其中,Prevotej为第j个节点的第一签名,1≤j≤n,H()为哈希函数,skj为第j个节点的私钥,valuer,j为第二随机值,verr,j为第二验证值,stakej为第j个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000142
为最高优先级的区块。
步骤S3:判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票,具体包括:
步骤S31:根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性,具体公式为:
Valid2/Invalid2←{e(verr,j,g2)=e(H(stakej,seedr),pkj)};
其中,Valid2/Invalid2为第二有效属性,pkj为第j个的公钥,stakej为第j个的抵押,seedr为第r个区块种子,verr,j为第二验证值,e为对称双线性映射,H()为哈希函数,g2为群G2的生成元。
步骤S32:根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性,具体公式为:
Figure BDA0002412797440000151
其中,Valid3/Invalid3为第三有效属性,Prevotej为第j个节点的第一签名,g2为群G2的生成元,pkj为第j个节点的公钥,valuer,j为第二随机值,verr,j为第二验证值,stakej为第j个节点的抵押,
Figure BDA0002412797440000152
为最高优先级的区块,e为对称双线性映射,H()为哈希函数。
步骤S33:当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一签名的票数,即第一轮票数。
步骤S34:根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值,具体公式为:
Figure BDA0002412797440000153
其中,valuer,k为第三随机值,verr,k为第三验证值,H()为哈希函数,skk为第k个节点的私钥,stakek为第k个节点的抵押,1≤k≤n,seedr为第r个区块种子。
步骤S35:判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行步骤S36;所述第二轮投票阈值范围为[Thread3,Thread3'],其中,Thread3为第二轮投票阈值范围的下限,Thread3'为第二轮投票阈值范围的上限。
步骤S36:对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名;具体的:根据各节点的私钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第二轮投票,获得各节点的第二签名,具体公式为:
Figure BDA0002412797440000154
其中,Precommitk为第k个节点的第二签名,H()为哈希函数,skk为第k个节点的私钥,valuer,k为第三随机值,verr,k为第三验证值,stakek为第k个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000155
为最高优先级的区块。
步骤S4:判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回步骤S1,否则执行步骤S5,具体包括:
步骤S41:根据各节点的公钥、各节点的抵押、第r个区块种子和第三验证值确定第四有效属性,具体公式为:
Valid4/Invalid4←{e(verr,k,g2)=e(H(stakek,seedr),pkk)};
其中,Valid4/Invalid4为第四有效属性,e为对称双线性映射,H()为哈希函数,g2为群G2的生成元,pkk为第k个节点的公钥,stakek为第k个节点的抵押,seedr为第r个区块种子,verr,k为第三验证值。
步骤S42:根据各节点的第二签名、各节点的公钥、第三随机值、第三验证值、各节点的抵押第r个区块种子、和最高优先级的区块确定第五有效属性,具体公式为:
Figure BDA0002412797440000161
其中,Valid5/Invalid5为第五有效属性,e为对称双线性映射,H()为哈希函数,g2为群G2的生成元,Precommitk为第k个节点的第二签名,pkk为第k个节点的公钥,valuer,k为第三随机值,verr,k为第三验证值,stakek为第k个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000162
为最高优先级的区块。
步骤S43:当第四有效属性和第五有效属性均为有效值时,则统计各区块内第二签名的票数,即第二轮票数;
步骤S44:当第一轮票数大于或等于设定条件且第二轮票数大于或等于设定条件时,则对该区块达成共识并返回步骤S1;否则,执行步骤S5。
步骤S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票。如果第三轮票数大于或等于设定条件,则返回步骤S2,对该区块开始新一轮的投票;否则进入步骤S1。
步骤S51:根据各节点的私钥、各节点的抵押和第r个区块种子确定第四随机值和第四验证值,具体公式为:
Figure BDA0002412797440000171
其中,valuer,l为第四随机值,verr,l为第四验证值,H()为哈希函数,skl为第l个节点的私钥,stakel为第l个节点的抵押,1≤l≤n,seedr为第r个区块种子。
步骤S52:判断第四随机值是否在第三轮投票阈值范围内;如果第四随机值在第三轮投票阈值范围内,则执行步骤S53;所述第三轮投票阈值范围为[Thread4,Thread4'],其中,Thread4为第三轮投票阈值范围的下限,Thread4'为第三轮投票阈值范围的上限。
步骤S53:如果不存在第一轮票数大于或等于设定条件的区块,则执行步骤S54;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则执行步骤S55;所述设定条件为2/3总票数。
步骤S54:对空块进行第三轮投票,获得各节点的第三签名;所述空块为不包含交易单而仅包含区块链共识信息的区块;具体的:根据各节点的私钥、第四随机值、第四验证值、各节点的抵押、第r个区块种子和空块进行第三轮投票,获得各节点的第三签名,具体公式为:
Figure BDA0002412797440000172
其中,NextIndexl为第l个节点的第三签名,H()为哈希函数,skl为第l个节点的私钥,valuer,l为第四随机值,verr,l为第四验证值,stakel为第l个节点的抵押,seedr为第r个区块种子,nil为空块。
步骤S55:对该区块进行第三轮投票,获得各节点的第四签名;具体的:根据各节点的私钥、第四随机值、第四验证值、各节点的抵押、第r个区块种子和最高优先级的区块进行第三轮投票,获得各节点的第四签名,具体公式为:
Figure BDA0002412797440000173
其中,NextIndexl为第l个节点的第四签名,H()为哈希函数,skl为第l个节点的私钥,valuer,l为第四随机值,verr,l为第四验证值,stakel为第l个节点的抵押,seedr为第r个区块种子,
Figure BDA0002412797440000181
为最高优先级的区块。
步骤S56:如果第三轮票数大于或等于设定条件,则返回步骤S2;如果第三轮票数小于设定条件,返回步骤S1。
图2为本发明实施例区块链拜占庭容错共识***结构图,如图2所示,本发明公开一种区块链拜占庭容错共识***,其特征在于,所述***包括:
广播模块1,用于节点进行密码抽签,被抽中的节点提议区块并广播;
投票模块2,用于对最高优先级的区块进行第一轮投票;
第一判断模块3,用于判断各区块的第一轮投票是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数;
第二判断模块4,用于判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识,并返回“广播模块1”,否则执行“结果确定模块5”;
结果确定模块5,用于如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回“投票模块2”,对该区块开始新一轮的投票;否则进入“广播模块1”。
作为一种实施方式,本发明所述广播模块1包括:
第一参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值;
第一判断单元,用于判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播。
作为一种实施方式,本发明所述投票模块2包括:
第一有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性;
广播单元,用于如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块;
第二参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值;
第二判断单元,用于判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;
第一轮投票单元,用于对最高优先级的区块进行第一轮投票,获得各节点的第一签名。
作为一种实施方式,本发明所述第一判断模块3包括:
第二有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性;
第三有效属性确定单元,用于根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性;
第一轮票数确定单元,用于当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一轮票数;
第三参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值;
第三判断单元,用于判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行“第二轮投票确定单元”;
第二轮投票确定单元,用于对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名。
作为一种实施方式,本发明所述第二判断模块4包括:
第四有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第三验证值确定第四有效属性;
第五有效属性确定单元,用于根据各节点的第二签名、各节点的公钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第五有效属性;
第二轮票数确定单元,用于当第四有效属性和第五有效属性均为有效值时,则统计各区块内第二轮票数;
共识单元,用于当第一轮票数大于或等于设定条件且第二轮票数大于或等于设定条件时,则对该区块达成共识并返回“广播模块1”;否则,执行“结果确定模块5”。
作为一种实施方式,本发明所述结果确定模块5包括:
第四参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第四随机值和第四验证值;
第四判断单元,用于判断第四随机值是否在第三轮投票阈值范围内;如果第四随机值在第三轮投票阈值范围内,则执行“结果确定单元”;
结果确定单元,用于如果不存在第一轮票数大于或等于设定条件的区块,则执行“第三签名确定单元”;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则执行“第四签名确定单元”;
第三签名确定单元,用于对空块进行第三轮投票,获得各节点的第三签名;
第四签名确定单元,用于对该区块进行第三轮投票,获得各节点的第四签名;
返回单元,用于如果第三轮票数大于或等于设定条件,则返回“投票模块2”;如果第三轮票数小于设定条件,返回“广播模块1”。
密码工具定义:
可验证的随机函数(Verifiable Random Function,VRF):
令n,m,k为多项式有界函数。可验证的随机函数包括4个算法,即秘钥生成算法KeyGen,求值算法Eval、证明算法Prove、验证算法Verify,分别用于生成秘钥对、计算函数值、证明函数值和验证证明。对于一个固定的安全参数λ,这4个算法如下运行:
秘钥生成算法:输入安全参数λ,输出一个私钥sk和一个对应的公开验证秘钥pk∈{0,1}k(λ)
(sk,pk)←KeyGen(1λ).
求值算法:输入私钥sk和x∈{0,1}n(λ),输出随机值R∈{0,1}m(λ)
R←Evalsk(x).
注:x表达共识算法中的抵押stake和种子seed。
证明算法:输入x和私钥sk,输出一个证明π,证明随机值R与验证秘钥pk是一致的。
π←Provesk(x).
验证算法:输入验证秘钥pk、证明π、x和随机值R,输出有效性判断Valid/Invalid。
Valid/Invalid←Verifypk(π,x,R).
可验证的随机函数VRF能够由BLS数字签名和哈希函数H进行构造。
BLS数字签名:
g1为群G1的生成元,g2为群G2的生成元。(G1,G2)是co-GDH群对,且|G1|=|G2|=p。全域哈希函数H:{0,1}*→G1。BLS签名包括3个算法,分别为:密钥生成,签名和验证。
密钥生成:随机选择群
Figure BDA0002412797440000211
中的元素x,计算
Figure BDA0002412797440000212
则公钥属于群G2中的元素,私钥为x。
签名:给定私钥x和消息M,如下计算
σ=H(M)x
则签名为σ。
验证:给定公钥v,消息M,以及签名σ,如果以下等式成立:
e(H(M),v)=e(σ,g2)
则签名有效,否则无效。
哈希函数H:输入任意长的数据{0,1}*,输出固定长的随机值{0,1}n。本发明使用SHA256。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种区块链拜占庭容错共识方法,其特征在于,所述方法包括:
步骤S1:节点进行密码抽签,被抽中的节点提议区块并广播;
步骤S2:对最高优先级的区块进行第一轮投票,所述步骤S2包括:
步骤S21:根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性;
步骤S22:如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块;
步骤S23:根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值;
步骤S24:判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;
步骤S25:对最高优先级的区块进行第一轮投票,获得各节点的第一签名;
步骤S3:判断各区块的第一轮票数是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数;
步骤S4:判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识并返回步骤S1,否则执行步骤S5;
步骤S5:如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回步骤S2,对该区块开始新一轮的投票;否则进入步骤S1。
2.根据权利要求1所述的区块链拜占庭容错共识方法,其特征在于,所述步骤S1包括:
步骤S11:根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值;
步骤S12:判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播。
3.根据权利要求1所述的区块链拜占庭容错共识方法,其特征在于,所述步骤S3包括:
步骤S31:根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性;
步骤S32:根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性;
步骤S33:当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一轮票数;
步骤S34:根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值;
步骤S35:判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行步骤S36;
步骤S36:对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名。
4.根据权利要求1所述的区块链拜占庭容错共识方法,其特征在于,所述步骤S4包括:
步骤S41:根据各节点的公钥、各节点的抵押、第r个区块种子和第三验证值确定第四有效属性;
步骤S42:根据各节点的第二签名、各节点的公钥、第三随机值、第三验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第五有效属性;
步骤S43:当第四有效属性和第五有效属性均为有效值时,则统计各区块内第二轮票数;
步骤S44:当第一轮票数大于或等于设定条件且第二轮票数大于或等于设定条件时,则对该区块达成共识并返回步骤S1;否则,执行步骤S5。
5.根据权利要求1所述的区块链拜占庭容错共识方法,其特征在于,所述步骤S5包括:
步骤S51:根据各节点的私钥、各节点的抵押和第r个区块种子确定第四随机值和第四验证值;
步骤S52:判断第四随机值是否在第三轮投票阈值范围内;如果第四随机值在第三轮投票阈值范围内,则执行步骤S53;
步骤S53:如果不存在第一轮票数大于或等于设定条件的区块,则执行步骤S54;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则执行步骤S55;
步骤S54:对空块进行第三轮投票,获得各节点的第三签名;
步骤S55:对该区块进行第三轮投票,获得各节点的第四签名;
步骤S56:如果第三轮票数大于或等于设定条件,则返回步骤S2;如果第三轮票数小于设定条件,返回步骤S1。
6.一种区块链拜占庭容错共识***,其特征在于,所述***包括:
广播模块,用于节点进行密码抽签,被抽中的节点提议区块并广播;
投票模块,用于对最高优先级的区块进行第一轮投票,所述投票模块包括:
第一有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第一验证值确定第一有效属性;
广播单元,用于如果第一有效属性输出为有效,则接收被抽中节点广播的区块;如果第一有效属性输出为无效,则拒绝接收被抽中节点广播的区块;
第二参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第二随机值和第二验证值;
第二判断单元,用于判断第二随机值是否在第一轮投票阈值范围内;如果第二随机值在第一轮投票阈值范围内,则选取最高优先级的区块;
第一轮投票单元,用于对最高优先级的区块进行第一轮投票,获得各节点的第一签名;
第一判断模块,用于判断各区块的第一轮票数是否大于或等于设定条件;如果存在第一轮投票大于或等于设定条件的区块,则对该区块进行第二轮投票;所述设定条件为2/3总票数;
第二判断模块,用于判断第一轮票数和第二轮票数是否均大于或等于设定条件;如果第一轮票数和第二轮票数均大于或等于设定条件,则对该区块达成共识,并返回“广播模块”,否则执行“结果确定模块”;
结果确定模块,用于如果不存在第一轮票数大于或等于设定条件的区块,则对空块进行第三轮投票;如果存在第一轮票数大于或等于设定条件且第二轮票数小于设定条件的区块,则对该区块进行第三轮投票;如果第三轮票数大于或等于设定条件,则返回“投票模块”,对该区块开始新一轮的投票;否则进入“广播模块”。
7.根据权利要求6所述的区块链拜占庭容错共识***,其特征在于,所述广播模块包括:
第一参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第一随机值和第一验证值;
第一判断单元,用于判断第一随机值是否在区块提议阈值范围内;如果所述第一随机值在区块提议阈值范围内,则节点被抽中,被抽中的节点提议区块并广播;否则节点没被抽中,拒绝提议区块并广播。
8.根据权利要求6所述的区块链拜占庭容错共识***,其特征在于,所述第一判断模块包括:
第二有效属性确定单元,用于根据各节点的公钥、各节点的抵押、第r个区块种子和第二验证值确定第二有效属性;
第三有效属性确定单元,用于根据各节点的第一签名、各节点的公钥、第二随机值、第二验证值、各节点的抵押、第r个区块种子和最高优先级的区块确定第三有效属性;
第一轮票数确定单元,用于当第二有效属性和第三有效属性均为有效值时,则统计各区块的第一轮票数;
第三参数确定单元,用于根据各节点的私钥、各节点的抵押和第r个区块种子确定第三随机值和第三验证值;
第三判断单元,用于判断第三随机值是否在第二轮投票阈值范围内;如果第三随机值在第二轮投票阈值范围内,则执行“第二轮投票确定单元”;
第二轮投票确定单元,用于对第一轮投票满足设定条件的区块进行第二轮投票,获得各节点的第二签名。
CN202010181812.6A 2020-03-16 2020-03-16 一种区块链拜占庭容错共识方法及*** Active CN111416708B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010181812.6A CN111416708B (zh) 2020-03-16 2020-03-16 一种区块链拜占庭容错共识方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010181812.6A CN111416708B (zh) 2020-03-16 2020-03-16 一种区块链拜占庭容错共识方法及***

Publications (2)

Publication Number Publication Date
CN111416708A CN111416708A (zh) 2020-07-14
CN111416708B true CN111416708B (zh) 2023-01-31

Family

ID=71494430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010181812.6A Active CN111416708B (zh) 2020-03-16 2020-03-16 一种区块链拜占庭容错共识方法及***

Country Status (1)

Country Link
CN (1) CN111416708B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113114613B (zh) * 2020-12-29 2023-05-02 上海零数众合信息科技有限公司 一种区块链容错共识的流水线处理方法
CN113794576B (zh) * 2021-08-12 2022-07-19 山东区块链研究院 一种可再投票的二元共识方法及装置
CN113630257B (zh) * 2021-10-09 2022-01-04 支付宝(杭州)信息技术有限公司 一种共识方法、区块链***和共识节点
CN113645044B (zh) * 2021-10-09 2022-01-11 支付宝(杭州)信息技术有限公司 一种共识方法、区块链***和共识节点
CN114615281B (zh) * 2022-03-07 2023-02-28 中国科学院软件研究所 基于小规模委员会的区块链出块方法及PoS协议确认方法
CN117614610B (zh) * 2024-01-23 2024-04-02 北京航空航天大学 基于区块链和属性基加密的访问控制方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445711B (zh) * 2016-08-28 2019-04-30 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
CN109447795B (zh) * 2018-09-11 2021-06-04 中国人民解放军国防科技大学 一种支持快速达成最终确认性的拜占庭共识方法
CN110288479B (zh) * 2019-06-28 2023-07-14 深圳市迅雷网络技术有限公司 一种区块链数据的共识方法及相关设备

Also Published As

Publication number Publication date
CN111416708A (zh) 2020-07-14

Similar Documents

Publication Publication Date Title
CN111416708B (zh) 一种区块链拜占庭容错共识方法及***
CN111090892B (zh) 一种基于vrf和门限签名的区块链共识方法和装置
Zhuang et al. Proof of reputation: A reputation-based consensus protocol for blockchain based systems
CN109842606B (zh) 基于一致性哈希算法的区块链共识算法和***
Kogias et al. Enhancing bitcoin security and performance with strong consistency via collective signing
Sun et al. DT-DPoS: A delegated proof of stake consensus algorithm with dynamic trust
CN110855432B (zh) 基于可验证随机函数分配验证者奖励的异步bft&dpos共识机制
CN111694895B (zh) 区块链远程数据审计方法、***
Wang et al. Beh-Raft-Chain: a behavior-based fast blockchain protocol for complex networks
CN109194472A (zh) 基于双线性映射和集合签名算法的游戏区块链共识方法
Wang et al. Blockchain-based dynamic energy management mode for distributed energy system with high penetration of renewable energy
CN114362987A (zh) 一种基于区块链和智能合约的分布式投票***及方法
Zhu et al. New instant confirmation mechanism based on interactive incontestable signature in consortium blockchain
Hou et al. Privacy-preserving energy trading using blockchain and zero knowledge proof
CN114629660A (zh) 一种基于区块链的匿名可信投票方法、装置及相关设备
Chen et al. Tips: Transaction inclusion protocol with signaling in dag-based blockchain
CN114422146A (zh) 一种区块链主节点匿名排序方法
Wu et al. Privacy-preserving voluntary-tallying leader election for internet of things
Hsueh et al. EPoW: Solving blockchain problems economically
Blum et al. Superlight–A permissionless, light-client only blockchain with self-contained proofs and BLS signatures
CN115412263B (zh) 一种基于双重盲化的拜占庭容错共识方法
Lu et al. Self-tallying e-voting with public traceability based on blockchain
Wang et al. Consensus algorithm based on verifiable randomness
Rahmani Blockchain technology: principles and algorithms
US20220075668A1 (en) Distributed computing system and method of operation thereof

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201229

Address after: 100085 no.054, Room 201, north side, second floor, No.36 Haidian West Street, Haidian District, Beijing

Applicant after: Macy Technology (Beijing) Co.,Ltd.

Address before: 100085 Room 201, north side, 2nd floor, 36 Haidian West Street, Haidian District, Beijing

Applicant before: Beijing Chain Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant