CN112437049B - 一种基于bft的区块链共识方法及装置 - Google Patents
一种基于bft的区块链共识方法及装置 Download PDFInfo
- Publication number
- CN112437049B CN112437049B CN202011231756.9A CN202011231756A CN112437049B CN 112437049 B CN112437049 B CN 112437049B CN 202011231756 A CN202011231756 A CN 202011231756A CN 112437049 B CN112437049 B CN 112437049B
- Authority
- CN
- China
- Prior art keywords
- anonymous
- node
- block
- consensus
- value
- 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
Images
Classifications
-
- 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/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
- H04L63/0421—Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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/3218—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- 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
Abstract
本发明公开了一种基于BFT的区块链共识方法及装置,其中方法为:在进入区块链的第i时期后,若所述第一匿名节点为领导节点,所述第一匿名节点至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;所述第一匿名节点生成第一共识零知识证明,并生成第一区块;所述第一匿名节点获取所述各第二匿名节点中领导节点发送的各第二区块;所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块。上述方法应用于金融科技(Fintech)时,实现了在匿名状态下,匿名节点的身份信息以及实际属性值的合法性确认。
Description
技术领域
本发明涉及金融科技(Fintech)领域中的区块链(blockchain)领域,尤其涉及一种基于BFT的区块链共识方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。目前金融科技领域和区块链(blockchain)领域联系较为紧密。在基于拜占庭容错(Byzantine Fault Tolerance,BFT)共识算法的区块链中,一些区块链节点为领导节点,领导节点负责将交易池中的若干交易打包成区块,是区块共识的发起者。
然而,在BFT共识算法的区块链中,一个区块链节点能否成为领导节点取决于区块链节点的信誉值。BFT共识算法的区块链中,区块链节点的信誉值与交易认证的投票行为相关,投票即验证区块中的交易是否正确,正确投票结果越多的区块链节点信誉值越高,也更容易选为领导节点。然而,目前区块链节点的投票结果是公开的,这存在这较大的隐患,攻击者可以在区块链运行过程中观察区块链节点的投票结果,分析信誉值高的区块链节点,并攻击,从而拖慢系统性能。因此,BFT共识算法的区块链中,信誉值高的区块链节点容易受到恶意攻击,是一个亟待解决的问题。
发明内容
本发明提供一种基于BFT的区块链共识方法及装置,解决了现有技术中BFT共识算法的区块链中,信誉值高的区块链节点容易受到恶意攻击的问题。
第一方面,本发明提供一种基于BFT的区块链共识方法,包括:在进入区块链的第i时期后,第一匿名节点若确定在第i时期的第一实际信誉值满足预设条件,则确定所述第一匿名节点为领导节点;所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的;若所述第一匿名节点为领导节点,所述第一匿名节点至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;所述第一匿名节点生成第一共识零知识证明;所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的;所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;所述第一匿名节点将所述第一区块发送至各第二匿名节点;所述第一匿名节点获取所述各第二匿名节点中领导节点发送的各第二区块;其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺;所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块。
上述方式下,所述第一匿名节能根据匿名的信誉值承诺得到第一信誉值默克尔树,以及根据匿名身份信息得到第一匿名身份默克尔树,进而生成第一区块,从而在不泄露动态实际信誉值和实际身份信息的情况下,所述各第二匿名节点收到第一区块后可以一同验证在第一匿名节点处各匿名节点的动态属性值承诺及匿名身份信息,从而验证所述各匿名节点的合法性,从而实现了在匿名状态下,匿名节点的身份信息以及实际属性值的合法性确认。
可选的,所述第一匿名节点按照以下方式确定所述第一实际信誉值满足所述预设条件:所述第一匿名节点确定所述第一实际信誉值大于或等于所述第一匿名节点及所述各第二匿名节点的平均实际信誉值;所述第一匿名节点至少根据所述第一实际信誉值、第i时期的时期信息和所述待出块区块内容,按照预设哈希函数,生成第一哈希值;所述第一匿名节点若确定所述第一哈希值、所述预设哈希函数的最大哈希值、所述第一实际信誉值和所述区块链的信誉值总和满足预设关系,则确定所述第一实际信誉值满足所述预设条件。
上述方法中,从而在遵循BFT共识算法基础上设置所述预设条件,自适应地在区块链中选择出块的节点,提升了选择出块节点的效率。
可选的,所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块,包括:所述第一匿名节点验证所述各第二区块,将通过验证的第二区块作为各候选第二区块;所述第一匿名节点将所述第一区块和所述各候选第二区块中共识候选值最大的区块,作为所述共识区块。
上述方法中,通过在每个区块中设置共识候选值,且通过候选值自适应地选择出共识区块,提升了选出共识区块的效率。
可选的,针对所述区块链的第i时期内每个共识完毕的共识区块,所述第一匿名节点根据所述各匿名节点在第i时期内对于所述共识区块的行为统计结果,确定所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量;其中,任一匿名节点在第i时期内对于所述共识区块的行为统计结果表征了该匿名节点在第i时期内对于所述共识区块的贡献;所述第一匿名节点根据所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量和各匿名节点的信誉值承诺,按照预设同态加密函数,更新所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和。
上述方式下,所述第一匿名节点确定所述各匿名节点在第i时期内对于每个共识完毕的共识区块的信誉值变化量,所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和,从而每次出块完毕都进行同步校准。
可选的,所述第一匿名节点根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树;第一匿名节点根据所述各匿名节点的匿名身份信息生成第一匿名身份默克尔树;其中,所述各匿名节点包括所述第一匿名节点和各第二匿名节点;所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块,生成第一区块,包括:所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点的合法性。
上述方式下,所述第一匿名节点根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树和所述第一匿名身份默克尔树,且将第一信誉值承诺默克尔树和所述第一匿名身份默克尔树包含在第一区块中,从而进一步增加了各匿名节点的可信性。
可选的,在所述区块链的第i时期内,所述第一匿名节点获取各新增匿名节点的信誉值承诺和所述各新增匿名节点的匿名身份信息;所述各新增匿名节点为在所述区块链的第i+1时期内待加入的匿名节点;所述第一匿名节点根据所述各新增匿名节点的信誉值承诺生成第三信誉值承诺默克尔树;第一匿名节点根据所述各新增匿名节点的匿名身份信息生成第三匿名身份默克尔树;所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树,生成第三区块;所述第三区块为所述第一匿名节点在所述区块链的第i时期内生成的最后一个待共识区块;所述第一匿名节点将所述第三区块发送至所述各第二匿名节点;所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点以及所述各新增匿名节点在所述区块链的第i+1时期的合法性。
上述方式下,通过所述第三信誉值默克尔树和所述第三匿名身份默克尔树,通过能够各新增匿名节点合法加入第i+1时期的方法。
可选的,在所述区块链的第i时期内,所述第一匿名节点建立n个匿名身份默克尔树;所述n个匿名身份默克尔树为所述第一匿名节点在第i个时期之前n个时期内的匿名身份默克尔树;所述n个匿名身份默克尔树中任一时期对应的匿名身份默克尔树是根据所述各匿名节点在该时期的匿名身份信息得到的;n为正整数;在所述区块链的第i时期内,所述第一匿名节点建立n个信誉值承诺默克尔树;所述n个信誉值承诺默克尔树为所述第一匿名节点在第i个时期之前n个时期内的信誉值承诺默克尔树;所述n个信誉值承诺默克尔树中任一时期对应的信誉值承诺默克尔树是根据所述各匿名节点在该时期的信誉值承诺得到的。
上述方式下,通过增加n个时期内的n个匿名身份默克尔树和n个信誉值承诺默克尔树,记录了各个时期匿名身份信息和信誉值承诺信息,进一步增加各匿名节点的可信性。
可选的,所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块,包括:所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点在所述区块链的第i时期及所述n个时期的合法性。
上述方式下,通过在所述第一区块中增加n个时期内的n个匿名身份默克尔树和n个信誉值承诺默克尔树,进一步验证了各匿名节点。
第二方面,本发明提供一种基于BFT的区块链共识装置,包括:处理模块,用于在进入区块链的第i时期后,若确定在第i时期的第一实际信誉值满足预设条件,则确定第一匿名节点为领导节点;所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的;以及用于在所述第一匿名节点为领导节点时,至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;生成第一共识零知识证明;所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的;至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;将所述第一区块发送至各第二匿名节点;获取模块,用于获取所述各第二匿名节点中领导节点发送的各第二区块;其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺;所述处理模块,用于从所述第一区块和所述各第二区块中确定共识区块。
可选的,所述处理模块具体用于:按照以下方式确定所述第一实际信誉值满足所述预设条件:确定所述第一实际信誉值大于或等于所述第一匿名节点及所述各第二匿名节点的平均实际信誉值;至少根据所述第一实际信誉值、第i时期的时期信息和所述待出块区块内容,按照预设哈希函数,生成第一哈希值;若确定所述第一哈希值、所述预设哈希函数的最大哈希值、所述第一实际信誉值和所述区块链的信誉值总和满足预设关系,则确定所述第一实际信誉值满足所述预设条件。
可选的,所述处理模块具体用于:验证所述各第二区块,将通过验证的第二区块作为各候选第二区块;将所述第一区块和所述各候选第二区块中共识候选值最大的区块,作为所述共识区块。
可选的,所述处理模块还用于:针对所述区块链的第i时期内每个共识完毕的共识区块,根据所述各匿名节点在第i时期内对于所述共识区块的行为统计结果,确定所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量;其中,任一匿名节点在第i时期内对于所述共识区块的行为统计结果表征了该匿名节点在第i时期内对于所述共识区块的贡献;根据所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量和各匿名节点的信誉值承诺,按照预设同态加密函数,更新所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和。
可选的,所述处理模块还用于:根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树;根据所述各匿名节点的匿名身份信息生成第一匿名身份默克尔树;其中,所述各匿名节点包括所述第一匿名节点和各第二匿名节点;所述处理模块具体用于:根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点的合法性。
可选的,所述处理模块还用于:在所述区块链的第i时期内,获取各新增匿名节点的信誉值承诺和所述各新增匿名节点的匿名身份信息;所述各新增匿名节点为在所述区块链的第i+1时期内待加入的匿名节点;根据所述各新增匿名节点的信誉值承诺生成第三信誉值承诺默克尔树;根据所述各新增匿名节点的匿名身份信息生成第三匿名身份默克尔树;至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树,生成第三区块;所述第三区块为所述第一匿名节点在所述区块链的第i时期内生成的最后一个待共识区块;将所述第三区块发送至所述各第二匿名节点;所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点以及所述各新增匿名节点在所述区块链的第i+1时期的合法性。
可选的,所述处理模块还用于:在所述区块链的第i时期内,建立n个匿名身份默克尔树;所述n个匿名身份默克尔树为所述第一匿名节点在第i个时期之前n个时期内的匿名身份默克尔树;所述n个匿名身份默克尔树中任一时期对应的匿名身份默克尔树是根据所述各匿名节点在该时期的匿名身份信息得到的;n为正整数;在所述区块链的第i时期内,建立n个信誉值承诺默克尔树;所述n个信誉值承诺默克尔树为所述第一匿名节点在第i个时期之前n个时期内的信誉值承诺默克尔树;所述n个信誉值承诺默克尔树中任一时期对应的信誉值承诺默克尔树是根据所述各匿名节点在该时期的信誉值承诺得到的。
可选的,所述处理模块具体用于:根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点在所述区块链的第i时期及所述n个时期的合法性。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于BFT的区块链共识方法对应的流程示意图;
图2为本发明实施例提供的一种基于BFT的区块链共识系统的系统架构示意图;
图3为本发明实施例提供的一种基于BFT的区块链共识的具体流程示意图;
图4为本发明实施例提供的一种基于BFT的区块链共识方法对应的区块结构示意图;
图5为本发明实施例提供的一种基于BFT的区块链共识装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面首先给出本申请中出现的名词及释义。
ZKP(Zero-Knowledge Proof,零知识证明):证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
zk-SNARK(zero-knowledge succinct non-interactive argument ofknowledge,简洁化的非交互式计算可靠的零知识证明):是零知识证明的一种实现方式,它允许用户以非交互式的方式提供证明,且该证明可以用很短的时间验证。应用于Zcash等匿名电子货币。
(佩德森)Pedersen承诺:一种密码学承诺。包含两个阶段:在承诺阶段,它允许承诺方通过承诺函数COMM(m,r)将消息正整数m通过密文的形式发送r为随机正整数,它可以保证承诺方不会修改消息的同时对他人隐藏消息本身;在打开阶段,承诺方可以公开消息,接收端以此来验证消息是否和承诺阶段一致。Pedersen承诺满足隐藏性(Hiding),绑定性(Binding)和同态性(homomorphic)。我们主要会利用其中的同态性即COMM(a,b)+COMM(c,d)=COMM(a+c,b+d)。
客户:使用区块链进行记账的用户。
验证者:进行交易验证,将认证后的交易打包进区块链的节点。
ID(Identity,身份证标识号):代表验证者的标识号。
BFT(Byzantine Fault Tolerance,拜占庭容错):在分布式计算中,系统中的成员计算机可能出错而发送错误的信息而导致不同成员得出不同的结论。该算法用于解决此种破坏一致性的行为,常用于区块链中的私有链和联盟链。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,和区块链(blockchain)领域联系较为紧密。在BFT共识算法的区块链中,一个区块链节点能否成为领导节点取决于区块链节点的信誉值。目前区块链节点的投票结果是公开的,这存在这较大的隐患,攻击者可以在区块链运行过程中观察区块链节点的投票结果,分析信誉值高的区块链节点。因此,BFT共识算法的区块链中,信誉值高的区块链节点容易受到恶意攻击。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。为此,如图1所示,本申请提供一种基于BFT的区块链共识方法。
步骤101:在进入区块链的第i时期后,第一匿名节点若确定在第i时期的第一实际信誉值满足预设条件,则确定所述第一匿名节点为领导节点。
所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的。
步骤102:若所述第一匿名节点为领导节点,所述第一匿名节点至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值。
所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息。
步骤103:所述第一匿名节点生成第一共识零知识证明。
所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的。
步骤104:所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;所述第一匿名节点将所述第一区块发送至各第二匿名节点。
步骤105:所述第一匿名节点获取所述各第二匿名节点中领导节点发送的各第二区块。
其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺。
步骤106:所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块。
需要说明的是,图1示出的方法,可以通过图2示出的系统架构具体实现。图2示出的系统架构包含三个模块:隐私保护的信誉值承诺和数值操作模块,隐私保护的基于信誉的共识模块,隐私保护的身份和信誉值承诺更换模块。具体工作流程如图2所示。
步骤101~步骤106的方法中,将时间分为不同的时期,每个时期(如第i时期,是某一个时期)仅允许经过认证的匿名节点(本申请中,也可以称为验证者)加入区块链。在每个时期开始前,当验证者加入区块链后,它将会通过隐私保护的身份和信誉值承诺更换模块拥有匿名身份信息和信誉值承诺(如信誉值承诺为Pedersen承诺)。
匿名节点(验证者)之间会互相确认在这个时期参与的所有验证者的匿名身份信息和信誉值承诺。在时期开始后,每个验证者都会观察其他验证者的行为并通过隐私保护的信誉值承诺和数值操作模块来对每一个验证者进行信誉值承诺的更新。
每经过一段时间(如每次新增的共识区块后),验证者若为领导节点,便将交易和所有验证者更新的信誉值承诺打包进入区块中并发布,所有验证者通过隐私保护的共识模块来验证并确认正确的区块并将达成共识的区块加入最终的区块链中。
当到了该时期的结束时,验证者可以选择通过隐私保护的身份和信誉值承诺更换模块来更换自己的匿名身份信息和信誉值承诺,此后验证者可以进入到下一个时期进行区块链的验证和维护;验证者也可以选择退出区块链。
步骤101~步骤106的方法中,具体来说,当匿名节点(验证者)参与到该区块链后,验证者需要生成一个匿名身份信息和信誉值承诺,若为新的验证者,则信誉值为初始的默认值。具体来说,验证者有一个自己的实际身份信息(即隐藏的身份HID)和实际信誉值(如为正整数R),验证者可以先生成一对私钥sk和公钥pk用于本时期的所有消息的签名。之后验证者通过Pedersen承诺生成新的匿名身份信息,即ID=COMM(H(R||pk||HID||e),r)和新的信誉值承诺来参与到新的一个时期的交易认证中,这里COMM(·,·)是Pedersen承诺函数,H(·)是哈希函数,e是时期编号(正整数,例如第1时期,第2时期等),r是验证者选的一个每个时期都不同的随机正整数。
验证者需要通过隐私保护的身份和信誉更换模块来让其他所有参与者确认自己的身份是合法的。在经过确认合法后,验证者便可以加入到新时期的为用户交易认证和维护区块链的工作中。
步骤101中的一种可选实施方式中,所述第一匿名节点按照以下方式确定所述第一实际信誉值满足所述预设条件:
所述第一匿名节点确定所述第一实际信誉值大于或等于所述第一匿名节点及所述各第二匿名节点的平均实际信誉值;所述第一匿名节点至少根据所述第一实际信誉值、第i时期的时期信息和所述待出块区块内容,按照预设哈希函数,生成第一哈希值;所述第一匿名节点若确定所述第一哈希值、所述预设哈希函数的最大哈希值、所述第一实际信誉值和所述区块链的信誉值总和满足预设关系,则确定所述第一实际信誉值满足所述预设条件。
一种可选实施方式中,步骤106具体可以如下:
所述第一匿名节点验证所述各第二区块,将通过验证的第二区块作为各候选第二区块;所述第一匿名节点将所述第一区块和所述各候选第二区块中共识候选值最大的区块,作为所述共识区块。
具体来说,上述确定是否满足所述预设条件以及确定共识区块的实施方式可以通过图2示出的隐私保护的共识模块来具体实现:
隐私保护的共识模块可以让匿名节点(验证者)在区块共识中被选举成为领导的概率和实际信誉值正相关。验证者可以通过zk-SNARK证明验证者的合法性,同时不需要透露验证者的实际信誉值给其他验证者,其他验证者可以快速地验证这一证明而不需要知道该验证者的实际信誉值。
隐私保护的共识模块的工作流程可以如图3所示。
(1)在开始打包出块前,验证者首先确认自己的实际信誉值大于区块链中所有匿名节点平均信誉值,R≥TR/n,这里TR是该时期的总信誉值,n是该时期的总匿名节点数。
(2)当验证者自己的信誉值低于平均信誉值则等待接受其他验证者的区块,否则产生一个随机数其中R为验证者自己的信誉值承诺,e为当前的时期编号,B是除了公式证明域的当前区块内容,i是初始为0的整数计数器。当产生的随机数满足条件时,验证者就认为自己成为了领导节点,这里l是正整数,2l是可能的最大的随机数。
(3)当验证者成为领导节点后,验证者会生成另一个正整数随机数其中rn为步骤(2)中生成的正整数随机数,为验证者自己的信誉值承诺,B是除了公式证明域的当前区块内容并通过zk-SNARK产生π1,并将π1和rnc,放入区块的共识证明域。π1包含了以下信息的证明:1)ID、rn、rnc是按照正确的计算公式生成。2)R>TR/n。3)之后验证者会将区块发送给其他验证者。
(4)当验证者会在收到区块后验证π1,若正确则将该区块作为候选区块。
(5)当时间超过设定的时限T(例如10秒)后,此时会有两种情况:1)有一个或多个区块,验证者会选择候选区块中具有最大rnc的区块,作为共识区块,加入最终的区块链。2)没有任何一个区块产生,则验证者会将i加1,之后回到步骤(1)重新开始产生候选区块。
一种可选实施方式还可以如下:
针对所述区块链的第i时期内每个共识完毕的共识区块,所述第一匿名节点根据所述各匿名节点在第i时期内对于所述共识区块的行为统计结果,确定所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量;其中,任一匿名节点在第i时期内对于所述共识区块的行为统计结果表征了该匿名节点在第i时期内对于所述共识区块的贡献;
所述第一匿名节点根据所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量和各匿名节点的信誉值承诺,按照预设同态加密函数,更新所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和。
该实施方式具体可以由图2示出的隐私保护的信誉值承诺和数值操作模块实现。
具体来说,在验证者工作过程中,它会观察验证者的行为并依此为其他验证者打分,其他验证者亦会对该验证者的行为进行监督并进行打分。在基于信誉的BFT共识中,验证者的行为可以定义为对于交易认证的投票,它从每一笔交易认证中获得的信誉值为S*V其中V是交易金额(正整数),S是奖励系数(整数)。
当验证者和最终区块上的该笔交易认证结果交易一致则奖励系数为1。而当认证结果不一致则为负数-10,意味着验证者没有正确履行自己的责任或对系统作恶,因此扣除一定分数。本方案主要着重在隐私保护,并不是在如何通过行为进行信誉值计算,因此不会限定信誉值计算的方法且可以适用于保护各种不同的信誉值方案的隐私。
举例来说,在两个区块中该验证者获得的分数为整数ΔR,其他验证者可以通过将COMM(ΔR,0)加到上来得到正确的信誉值承诺。由Pedersen承诺的同态性可得因此对承诺的加法操作可以将获得的分数正确的加到未被揭示的信誉值R上。
一种可选实施方式(以下称为默克尔树的实施方式)还可以如下:
所述第一匿名节点根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树;所述第一匿名节点根据所述各匿名节点的匿名身份信息生成第一匿名身份默克尔树。
其中,所述各匿名节点包括所述第一匿名节点和各第二匿名节点。
上述实施方式可以通过图2示出的隐私保护的身份和信誉值承诺更换模块实现。
具体来说,该模块用于更换验证者的匿名身份信息和信誉值承诺,以此达到让攻击者不能在短时间内收集到验证者的行为模式从而判断其信誉值高低,由于更换的步骤是通过zk-SNARK完成,攻击者无法得到更换后的值和更换前的值的联系。流程如下:
(1)在时期开始的时候,(匿名节点)验证者建立包含所有本时期参与的验证者的匿名身份信息的Merkle树rtID和包含所有验证者信誉值承诺的Merkle树rtR。验证者可以将这两棵树放在本时期的第一个区块中以达到共识。
(2)当时期结束时,所有验证者会停止工作并根据本时期验证者的信誉值增量ΔR更新rtR。同时验证者会为想要新加入的验证者(即下一时期参与进来的新的验证者)建立包含它们身份ID的Merkle树rt′ID和包含所有验证者信誉值承诺的Merkle树rt′R。
(3)所有想要在下一回合参与的验证者(即ID在rtID和在rt′ID里面的验证者)会按照隐私保护的信誉值承诺和数值操作模块中的方式,先生成一对私钥sk和公钥pk。
之后生成新的ID和信誉值承诺,即NewID=COMM(H(R||pk||HID||e),r)和这里COMM(·,·)是Pedersen承诺函数,H(·)是哈希函数,R是信誉值,e是时期编号(正整数,例如第1时期,第2时期等),r是验证者选的一个每个时期都不同的随机正整数。
同时验证者会通过zk-SNARK生成π2,π2包含了一下的信息证明:1)NewID、ID是按照正确的公式生成。其中,更新的匿名身份信息为NewID和更新的信誉值承诺为2)NewID对应的HID和旧的ID中的HID是一致的。3)和有相同的信誉值R。3)ID和分别出现在rtID和rtR中,或者两者分别出现在rt′ID和rt′R中。
基于默克尔树的实施方式,步骤104中生成第一区块的具体过程可以如下:
所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点的合法性。具体来说,第一区块的结构可以如图4所示,在上述过程下,图4中交易的Merkle树域包括所述第一信誉值默克尔树和所述第一匿名身份默克尔树。
基于默克尔树的实施方式,一种可选实施方式还可以如下:
在所述区块链的第i时期内,所述第一匿名节点获取各新增匿名节点的信誉值承诺和所述各新增匿名节点的匿名身份信息;所述各新增匿名节点为在所述区块链的第i+1时期内待加入的匿名节点;
所述第一匿名节点根据所述各新增匿名节点的信誉值承诺生成第三信誉值承诺默克尔树;第一匿名节点根据所述各新增匿名节点的匿名身份信息生成第三匿名身份默克尔树;
所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树,生成第三区块;所述第三区块为所述第一匿名节点在所述区块链的第i时期内生成的最后一个待共识区块;
所述第一匿名节点将所述第三区块发送至所述各第二匿名节点;所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点以及所述各新增匿名节点在所述区块链的第i+1时期的合法性。
也就是说,上述实施方式为各新增匿名节点在所述区块链的第i+1时期合法注册的过程,具体通过默克尔树来实现。
基于默克尔树的实施方式,一种可选实施方式还可以如下:
在所述区块链的第i时期内,所述第一匿名节点建立n个匿名身份默克尔树;所述n个匿名身份默克尔树为所述第一匿名节点在第i个时期之前n个时期内的匿名身份默克尔树;所述n个匿名身份默克尔树中任一时期对应的匿名身份默克尔树是根据所述各匿名节点在该时期的匿名身份信息得到的;n为正整数;
在所述区块链的第i时期内,所述第一匿名节点建立n个信誉值承诺默克尔树;所述n个信誉值承诺默克尔树为所述第一匿名节点在第i个时期之前n个时期内的信誉值承诺默克尔树;所述n个信誉值承诺默克尔树中任一时期对应的信誉值承诺默克尔树是根据所述各匿名节点在该时期的信誉值承诺得到的。
具体来说,上述实施方式可以通过图2示出的隐私保护的身份和信誉值承诺更换模块实现,通过本时期内w个时期(n=w-1)的信誉值承诺和匿名身份信息,从而增加了验证的可信性。具体流程如下:
(1)在每个时期的开始阶段,验证者除了建立一个包含本时期的信誉值承诺的默克尔树rtR外,还建立了w-1棵Merkle树rti R(1≤i<w),用来表示除本时期外最近的n个时期验证者的信誉值承诺。对于一个验证者,它在这w-1棵树上的信誉值承诺具有同一个r,这样可以通过Pedersen承诺的同态性将各验证者的实际信誉值累加起来,作为该时期所有验证者的总的信誉值。
(2)在本时期结束时,验证者可以得到本时期的默克尔树rt0 R。
(3)验证者产生新的信誉值承诺并通过zk-SNARK产生π3,π3包含以下信息的验证:1)NewID、ID是按照正确的公式生成。2)NewID对应的HID和旧的ID是一致的。3)对于每一个i(1≤i≤w),都满足和有相同的实际信誉值。3)ID和分别出现在rtID和rti R中,或者两者分别出现在各新增匿名节点的所述第三匿名身份默克尔树rt′ID和所述第三信誉值承诺默克尔树rt′R中,即同时出现在新增的默克尔树中,或者同时出现在本时期的默克尔树中。验证者将自己的NewID、pk和π3发送给其他所有其他验证者。
(4)所有验证者通过验证π3可以证明发送者的合法性,并开始新一个时期的流程。
基于上述n个匿名身份默克尔树和n个信誉值承诺默克尔树的实施方式。步骤104中生成第一区块的可选实施方式还可以如下:
所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点在所述区块链的第i时期及所述n个时期的合法性。
具体来说,第一区块的结构可以如图4所示,在上述实施方式下,图4中交易的Merkle树域包括述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树。
验证者计算出所有其他验证者的分数后且到了出新的区块的时候,需要将认证的交易和验证者的分数放入到区块中。其中共识证明为让其他验证者可以认证该区块是否合法的证明,签名可以通过自己的私钥签名并用公钥pk认证。放入区块意味着每位验证者的分数将会达成共识。
如图5所示,本发明提供一种基于BFT的区块链共识装置,包括:处理模块501,用于在进入区块链的第i时期后,若确定在第i时期的第一实际信誉值满足预设条件,则确定第一匿名节点为领导节点;所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的;以及用于在所述第一匿名节点为领导节点时,至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;生成第一共识零知识证明;所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的;至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;将所述第一区块发送至各第二匿名节点;获取模块502,用于获取所述各第二匿名节点中领导节点发送的各第二区块;其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺;所述处理模块501,用于从所述第一区块和所述各第二区块中确定共识区块。
可选的,所述处理模块501具体用于:按照以下方式确定所述第一实际信誉值满足所述预设条件:确定所述第一实际信誉值大于或等于所述第一匿名节点及所述各第二匿名节点的平均实际信誉值;至少根据所述第一实际信誉值、第i时期的时期信息和所述待出块区块内容,按照预设哈希函数,生成第一哈希值;若确定所述第一哈希值、所述预设哈希函数的最大哈希值、所述第一实际信誉值和所述区块链的信誉值总和满足预设关系,则确定所述第一实际信誉值满足所述预设条件。
可选的,所述处理模块501具体用于:验证所述各第二区块,将通过验证的第二区块作为各候选第二区块;将所述第一区块和所述各候选第二区块中共识候选值最大的区块,作为所述共识区块。
可选的,所述处理模块501还用于:针对所述区块链的第i时期内每个共识完毕的共识区块,根据所述各匿名节点在第i时期内对于所述共识区块的行为统计结果,确定所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量;其中,任一匿名节点在第i时期内对于所述共识区块的行为统计结果表征了该匿名节点在第i时期内对于所述共识区块的贡献;根据所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量和各匿名节点的信誉值承诺,按照预设同态加密函数,更新所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和。
可选的,所述处理模块501还用于:根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树;根据所述各匿名节点的匿名身份信息生成第一匿名身份默克尔树;其中,所述各匿名节点包括所述第一匿名节点和各第二匿名节点;所述处理模块501具体用于:根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点的合法性。
可选的,所述处理模块501还用于:在所述区块链的第i时期内,获取各新增匿名节点的信誉值承诺和所述各新增匿名节点的匿名身份信息;所述各新增匿名节点为在所述区块链的第i+1时期内待加入的匿名节点;根据所述各新增匿名节点的信誉值承诺生成第三信誉值承诺默克尔树;根据所述各新增匿名节点的匿名身份信息生成第三匿名身份默克尔树;至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树,生成第三区块;所述第三区块为所述第一匿名节点在所述区块链的第i时期内生成的最后一个待共识区块;将所述第三区块发送至所述各第二匿名节点;所述第一信誉值默克尔树和所述第一匿名身份默克尔树、所述第三信誉值默克尔树和所述第三匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点以及所述各新增匿名节点在所述区块链的第i+1时期的合法性。
可选的,所述处理模块501还用于:在所述区块链的第i时期内,建立n个匿名身份默克尔树;所述n个匿名身份默克尔树为所述第一匿名节点在第i个时期之前n个时期内的匿名身份默克尔树;所述n个匿名身份默克尔树中任一时期对应的匿名身份默克尔树是根据所述各匿名节点在该时期的匿名身份信息得到的;n为正整数;在所述区块链的第i时期内,建立n个信誉值承诺默克尔树;所述n个信誉值承诺默克尔树为所述第一匿名节点在第i个时期之前n个时期内的信誉值承诺默克尔树;所述n个信誉值承诺默克尔树中任一时期对应的信誉值承诺默克尔树是根据所述各匿名节点在该时期的信誉值承诺得到的。
可选的,所述处理模块501具体用于:根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述n个匿名身份默克尔树、所述n个属性值承诺默克尔树、所述第一信誉值默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点在所述区块链的第i时期及所述n个时期的合法性。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的基于BFT的区块链共识方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的基于BFT的区块链共识方法及任一可选方法被执行。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于BFT的区块链共识方法,其特征在于,包括:
在进入区块链的第i时期后,i为时期编号,第一匿名节点若确定在第i时期的第一实际信誉值满足预设条件,则确定所述第一匿名节点为领导节点;所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的;
若所述第一匿名节点为领导节点,所述第一匿名节点至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;
所述第一匿名节点生成第一共识零知识证明;所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的;
所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;所述第一匿名节点将所述第一区块发送至各第二匿名节点;
所述第一匿名节点获取所述各第二匿名节点中领导节点发送的各第二区块;其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺;
所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块。
2.如权利要求1所述的方法,其特征在于,所述第一匿名节点按照以下方式确定所述第一实际信誉值满足所述预设条件:
所述第一匿名节点确定所述第一实际信誉值大于或等于所述第一匿名节点及所述各第二匿名节点的平均实际信誉值;
所述第一匿名节点至少根据所述第一实际信誉值、第i时期的时期信息和所述待出块区块内容,按照预设哈希函数,生成第一哈希值;
所述第一匿名节点若确定所述第一哈希值、所述预设哈希函数的最大哈希值、所述第一实际信誉值和所述区块链的信誉值总和满足预设关系,则确定所述第一实际信誉值满足所述预设条件。
3.如权利要求1所述的方法,其特征在于,所述第一匿名节点从所述第一区块和所述各第二区块中确定共识区块,包括:
所述第一匿名节点验证所述各第二区块,将通过验证的第二区块作为各候选第二区块;
所述第一匿名节点将所述第一区块和所述各候选第二区块中共识候选值最大的区块,作为所述共识区块。
4.如权利要求1至3任一项所述的方法,其特征在于,还包括:
针对所述区块链的第i时期内每个共识完毕的共识区块,所述第一匿名节点根据各匿名节点在第i时期内对于所述共识区块的行为统计结果,确定所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量;其中,任一匿名节点在第i时期内对于所述共识区块的行为统计结果表征了该匿名节点在第i时期内对于所述共识区块的贡献;所述各匿名节点包括所述第一匿名节点和各第二匿名节点;
所述第一匿名节点根据所述各匿名节点在第i时期内对于所述共识区块的信誉值变化量和各匿名节点的信誉值承诺,按照预设同态加密函数,更新所述各匿名节点在第i时期的信誉值承诺以及所述各匿名节点在第i时期的实际信誉值总和。
5.如权利要求1至3任一项所述的方法,其特征在于,还包括:
所述第一匿名节点根据所述区块链的各匿名节点的信誉值承诺生成第一信誉值承诺默克尔树;所述第一匿名节点根据所述各匿名节点的匿名身份信息生成第一匿名身份默克尔树;
其中,所述各匿名节点包括所述第一匿名节点和各第二匿名节点;
所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块,包括:
所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;
所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点的合法性。
6.如权利要求5所述的方法,其特征在于,还包括:
在所述区块链的第i时期内,所述第一匿名节点获取各新增匿名节点的信誉值承诺和所述各新增匿名节点的匿名身份信息;所述各新增匿名节点为在所述区块链的第i+1时期内待加入的匿名节点;
所述第一匿名节点根据所述各新增匿名节点的信誉值承诺生成第三信誉值承诺默克尔树;第一匿名节点根据所述各新增匿名节点的匿名身份信息生成第三匿名身份默克尔树;
所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树、所述第三信誉值承诺默克尔树和所述第三匿名身份默克尔树,生成第三区块;所述第三区块为所述第一匿名节点在所述区块链的第i时期内生成的最后一个待共识区块;
所述第一匿名节点将所述第三区块发送至所述各第二匿名节点;所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树、所述第三信誉值承诺默克尔树和所述第三匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点以及所述各新增匿名节点在所述区块链的第i+1时期的合法性。
7.如权利要求5所述的方法,其特征在于,还包括:
在所述区块链的第i时期内,所述第一匿名节点建立n个匿名身份默克尔树;所述n个匿名身份默克尔树为所述第一匿名节点在第i个时期之前n个时期内的匿名身份默克尔树;所述n个匿名身份默克尔树中任一时期对应的匿名身份默克尔树是根据所述各匿名节点在该时期的匿名身份信息得到的;n为正整数;
在所述区块链的第i时期内,所述第一匿名节点建立n个信誉值承诺默克尔树;所述n个信誉值承诺默克尔树为所述第一匿名节点在第i个时期之前n个时期内的信誉值承诺默克尔树;所述n个信誉值承诺默克尔树中任一时期对应的信誉值承诺默克尔树是根据所述各匿名节点在该时期的信誉值承诺得到的。
8.如权利要求7所述的方法,其特征在于,所述第一匿名节点至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块,包括:
所述第一匿名节点根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容、所述第一信誉值承诺、所述n个匿名身份默克尔树、所述n个信誉值承诺默克尔树、所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树,生成所述第一区块;所述n个匿名身份默克尔树、所述n个信誉值承诺默克尔树、所述第一信誉值承诺默克尔树和所述第一匿名身份默克尔树共同指示了所述第一匿名节点认同了所述各匿名节点在所述区块链的第i时期及所述n个时期的合法性。
9.一种基于BFT的区块链共识装置,其特征在于,包括:
处理模块,用于在进入区块链的第i时期后,i为时期编号,若确定在第i时期的第一实际信誉值满足预设条件,则确定第一匿名节点为领导节点;所述第一实际信誉值满足所述预设条件的概率和所述第一实际信誉值呈正相关;所述预设条件是根据BFT共识算法的特性设定的;以及用于在所述第一匿名节点为领导节点时,至少根据第一信誉值承诺、待出块区块内容,生成第一共识候选值;所述第一信誉值承诺是至少根据第一实际信誉值得到的隐匿信息;生成第一共识零知识证明;所述第一共识零知识证明至少用于验证以下信息的正确性:所述第一信誉值承诺、所述第一共识候选值和所述第一匿名节点在第i时期的第一匿名身份信息;所述第一匿名身份信息是至少根据所述第一匿名节点的第一实际身份信息得到的;至少根据所述第一共识候选值、所述第一共识零知识证明、所述第一匿名身份信息、所述待出块区块内容和所述第一信誉值承诺,生成第一区块;将所述第一区块发送至各第二匿名节点;
获取模块,用于获取所述各第二匿名节点中领导节点发送的各第二区块;其中,任一第二区块包括:所述第二区块的第二共识候选值、所述第二区块的第二共识零知识证明、所述第二区块的第二匿名身份信息和所述第二区块的第二信誉值承诺;
所述处理模块,用于从所述第一区块和所述各第二区块中确定共识区块。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括程序或指令,当所述程序或指令被执行时,如权利要求1至8中任一项所述的方法被执行。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011231756.9A CN112437049B (zh) | 2020-11-06 | 2020-11-06 | 一种基于bft的区块链共识方法及装置 |
PCT/CN2021/126992 WO2022095780A1 (zh) | 2020-11-06 | 2021-10-28 | 一种基于bft的区块链共识方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011231756.9A CN112437049B (zh) | 2020-11-06 | 2020-11-06 | 一种基于bft的区块链共识方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112437049A CN112437049A (zh) | 2021-03-02 |
CN112437049B true CN112437049B (zh) | 2022-04-26 |
Family
ID=74695614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011231756.9A Active CN112437049B (zh) | 2020-11-06 | 2020-11-06 | 一种基于bft的区块链共识方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112437049B (zh) |
WO (1) | WO2022095780A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437049B (zh) * | 2020-11-06 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 一种基于bft的区块链共识方法及装置 |
CN114422146B (zh) * | 2022-01-25 | 2023-07-04 | 北京航空航天大学 | 一种区块链主节点匿名排序方法 |
CN115665170B (zh) * | 2022-10-17 | 2024-03-22 | 重庆邮电大学 | 基于信誉和节点压缩机制的区块链共识方法 |
CN115633035B (zh) * | 2022-12-07 | 2023-03-17 | 长春大学 | 一种基于改进的pbft物联网区块链共识算法 |
CN116707759B (zh) * | 2023-06-20 | 2024-02-20 | 南京理工大学 | 一种面向数据流通高并发场景的轻量级联盟链共识方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503614B2 (en) * | 2017-04-21 | 2019-12-10 | Vmware, Inc. | Byzantine agreement using communications having linear complexity |
CN109767199B (zh) * | 2018-12-10 | 2023-06-16 | 西安电子科技大学 | 基于信誉的pbft共识系统及方法、区块链数据处理系统 |
CN109714404B (zh) * | 2018-12-12 | 2021-04-06 | 中国联合网络通信集团有限公司 | 基于Raft算法的区块链共识方法及装置 |
CN109871279B (zh) * | 2019-03-11 | 2021-10-01 | 京东方科技集团股份有限公司 | 共识任务协调方法及装置、区块链系统、存储介质 |
CN110289966B (zh) * | 2019-06-19 | 2021-08-03 | 西南交通大学 | 基于拜占庭容错的抗自适应攻击联盟链共识方法 |
US10944624B2 (en) * | 2019-06-28 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
CN110933045A (zh) * | 2019-11-08 | 2020-03-27 | 中国电子科技网络信息安全有限公司 | 一种基于承诺的区块链数字资产隐私保护方法 |
CN111711526B (zh) * | 2020-06-16 | 2024-03-26 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及系统 |
CN112437049B (zh) * | 2020-11-06 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 一种基于bft的区块链共识方法及装置 |
-
2020
- 2020-11-06 CN CN202011231756.9A patent/CN112437049B/zh active Active
-
2021
- 2021-10-28 WO PCT/CN2021/126992 patent/WO2022095780A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022095780A1 (zh) | 2022-05-12 |
CN112437049A (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112437049B (zh) | 一种基于bft的区块链共识方法及装置 | |
EP3563553B1 (en) | Method for signing a new block in a decentralized blockchain consensus network | |
Zhou et al. | Efficient certificateless multi-copy integrity auditing scheme supporting data dynamics | |
CN112367174B (zh) | 一种基于属性值的区块链共识方法及装置 | |
Au et al. | PERM: Practical reputation-based blacklisting without TTPs | |
CN112380584B (zh) | 区块链数据更新方法、装置、电子设备和存储介质 | |
CN109104410B (zh) | 一种信息的匹配方法及装置 | |
Kim et al. | Practical dynamic group signature with efficient concurrent joins and batch verifications | |
Luong et al. | Privacy-preserving identity management system on blockchain using Zk-SNARK | |
CN112436944B (zh) | 一种基于pow的区块链共识方法及装置 | |
Longo et al. | On the security of the blockchain BIX protocol and certificates | |
Huang et al. | A blockchain-based self-tallying voting protocol with maximum voter privacy | |
Chu et al. | Manta: Privacy preserving decentralized exchange | |
Li et al. | Cryptoeconomics: Economic Mechanisms Behind Blockchains | |
Gupta et al. | Towards computationally sound symbolic analysis of key exchange protocols | |
US6978372B1 (en) | Verification of correct exponentiation or other operations in cryptographic applications | |
Li et al. | A regulatable data privacy protection scheme for energy transactions based on consortium blockchain | |
Hasan | A Survey of privacy preserving reputation systems | |
CN113486368A (zh) | 一种基于区块链技术的输入数据可信性验证方法及装置 | |
Fajiang et al. | An efficient anonymous remote attestation scheme for trusted computing based on improved CPK | |
Wüller | Privacy-preserving electronic bartering | |
CN111539719A (zh) | 基于盲签名的可审计混币服务方法及系统模型 | |
Xiao et al. | Provably secure multi-signature scheme based on the standard SM2 signature scheme | |
CN116094797B (zh) | 一种基于安全多方计算的分布式身份信任管理方法 | |
Catalano et al. | Double-authentication-preventing signatures in the standard model |
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 |