CN113612614B - 基于区块链网络的共识容灾方法、装置、设备和存储介质 - Google Patents

基于区块链网络的共识容灾方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113612614B
CN113612614B CN202110811170.8A CN202110811170A CN113612614B CN 113612614 B CN113612614 B CN 113612614B CN 202110811170 A CN202110811170 A CN 202110811170A CN 113612614 B CN113612614 B CN 113612614B
Authority
CN
China
Prior art keywords
signature
block
digital signature
node
threshold
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
CN202110811170.8A
Other languages
English (en)
Other versions
CN113612614A (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.)
Shanghai Pudong Development Bank Co Ltd
Original Assignee
Shanghai Pudong Development Bank 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 Shanghai Pudong Development Bank Co Ltd filed Critical Shanghai Pudong Development Bank Co Ltd
Priority to CN202110811170.8A priority Critical patent/CN113612614B/zh
Publication of CN113612614A publication Critical patent/CN113612614A/zh
Application granted granted Critical
Publication of CN113612614B publication Critical patent/CN113612614B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/30Decision processes by autonomous network management units using voting and bidding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/3236Cryptographic 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 cryptographic hash functions
    • 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

Abstract

本申请涉及一种上述基于区块链网络的共识容灾方法、装置、设备和存储介质,计算机技术领域,可以提高区块链网络的容灾能力,该方法中,当出块节点发生故障时,各个候选节点获取自身的第一数字签名以及其他候选节点发送的第二数字签名,利用第一数字签名和第二数字签名生成门限签名,并采用区块链的门限公钥对门限签名进行验证,若验证通过,说明该门限签名可以代表区块链的签名,在此基础上,根据门限签名确定新的出块节点。由此可见,本申请实施例中,该方法在区块链中参与投票的候选节点的数量较少的情况下,依然能够选举出新的出块节点,提高区块链网络的容灾能力。

Description

基于区块链网络的共识容灾方法、装置、设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于区块链网络的共识容灾方法、装置、设备和存储介质。
背景技术
区块链网络包括出块节点和候选节点,其中,出块节点是指用于将候选节点接收到的交易打包成区块并上链的节点。出块节点是由区块链网络中的候选节点通过投票的方式选举出来的,出块节点被选举出来之后,在一定时间内,当需要上链时,由选举出来的该出块节点打包出块。
在实际应用中,当出块节点发生故障时,需要选举出新的出块节点。而在选举新的出块节点时,需要超过区块链网络中三分之二的候选节点投票达成一致。若达成一致的候选节点的数量少于三分之二,则该投票结果无效,导致区块链网络中无法选举出新的出块节点,因此,区块链网络的容灾性能较差。
发明内容
基于此,有必要针对上述技术问题,提供一种基于区块链网络的共识容灾方法、装置、设备和存储介质。
一种基于区块链网络的共识容灾方法,应用于区块链网络中的多个候选节点,方法包括:
在确定出块节点发生故障时,根据候选节点的私钥份额生成第一数字签名,并将第一数字签名发送给区块链网络中的其他候选节点;私钥份额是根据区块链网络的门限私钥确定的;出块节点为基于区块链网络中的数据生成区块的节点;
接收其他候选节点发送的第二数字签名,第二数字签名为其他候选节点在确定出块节点发生故障时,根据其他候选节点各自的私钥份额分别生成的;
利用第一数字签名和第二数字签名生成门限签名,并根据门限私钥对应的门限公钥对门限签名进行验证;在验证通过的情况下根据门限签名生成可验证随机数,并基于可验证随机数确定新的出块节点。在其中一个实施例中,利用第一数字签名和第二数字签名生成门限签名,包括:
若第一数字签名和第二数字签名满足门限签名条件,则根据第一数字签名和第二数字签名生成门限签名。
在其中一个实施例中,门限签名条件为第一数字签名和第二数字签名的数量大于等于预设阈值的条件。
在其中一个实施例中,根据候选节点的私钥份额生成第一数字签名,包括:
在确定出块节点发生故障时,对区块链网络的最后一个区块进行哈希运算,得到第一哈希结果;
通过候选节点的私钥份额对第一哈希结果进行加密运算,得到第一数字签名。
在其中一个实施例中,利用第一数字签名和第二数字签名生成门限签名之前,该方法还包括:
根据其他候选节点的公钥对其他候选节点发送的第二数字签名进行验签,得到验签结果;
检测验签结果是否为对区块链网络的最后一个区块的哈希结果的签名;
若是,则确定第二数字签名验证通过;
若不是,则确定第二数字签名验证失败,剔除验证失败的第二数字签名。
在其中一个实施例中,根据门限签名生成可验证随机数,包括:
对门限签名进行哈希运算,得到目标哈希结果;
对目标哈希结果进行取模运算,将取模运算的余数作为可验证随机数。
在其中一个实施例中,基于可验证随机数确定新的出块节点,包括:
在确定出块节点发生故障时,确定区块链网络中的未发生故障的各个候选节点在区块链网络中的编号;
将编号与取模运算的余数相同的候选节点确定为新的出块节点。
一种基于区块链网络的共识容灾装置,其特征在于,应用于区块链网络中的多个候选节点,该装置包括:
签名模块,用于在确定出块节点发生故障时,根据候选节点的私钥份额生成第一数字签名,并将第一数字签名发送给区块链网络中的其他候选节点;私钥份额是根据区块链网络的门限私钥确定的;出块节点为基于区块链网络中的数据生成区块的节点;
接收模块,用于接收其他候选节点发送的第二数字签名,第二数字签名为其他候选节点在确定出块节点发生故障时,根据其他候选节点各自的私钥份额分别生成的;
出块节点确定模块,用于利用第一数字签名和第二数字签名生成门限签名,并根据门限私钥对应的门限公钥对门限签名进行验证;在验证通过的情况下根据门限签名生成可验证随机数,并基于可验证随机数确定新的出块节点。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所提供的基于区块链网络的共识容灾方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所提供的基于区块链网络的共识容灾方法。
上述基于区块链网络的共识容灾方法、装置、设备和存储介质,可以提高区块链网络的容灾能力,该方法中,当出块节点发生故障时,各个候选节点获取自身的第一数字签名以及其他候选节点发送的第二数字签名,利用第一数字签名和第二数字签名生成门限签名,并采用区块链网络的门限公钥对门限签名进行验证,若验证通过,说明该门限签名可以代表区块链网络的签名,在此基础上,根据门限签名确定新的出块节点。由此可见,本申请实施例中确定出块节点的过程不受到区块链网络中候选节点的数量的限制,而是以能够生成门限签名为条件,这样能够保证选举出新的出块节点,从而提高区块链网络的容灾能力。
附图说明
图1为一种区块链网络的结构示意图;
图2为一种基于区块链网络的共识容灾方法的流程图;
图3为一种基于区块链网络的共识容灾方法的流程示意图;
图4为一种对接收到的第二数字签名进行验证的方法的流程图;
图5为一种根据门限签名确定新的出块节点的方法的流程图;
图6为一种基于区块链的容灾系统的整体模块图;
图7为一种基于区块链的容灾系统的数据同步的示意图;
图8为一种基于区块链的容灾系统的监控和流量切换流程图;
图9为一种基于区块链网络的共识容灾装置的模块图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。在本发明的描述中,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
区块链技术,又称为“分布式账本技术”,是一种去中心、集体维护分布式账本的技术方案,其本质是由多个节点共同参与维护一个分布式数据库系统。由于区块链共识网络(以下简称为区块链网络)包括的多个节点呈分布式,因此区块链网络具有容灾特性,也就是说,当多个节点中的部分节点发生故障时,区块链网络仍可以正常运行。
在实际应用中,区块链网络的容灾能力是基于区块链网络包括的节点总数确定的,例如,区块链网络包括的节点总数为3F+1个,那么该区块链网络中最多可以接受F个节点发生故障,若发生故障的节点的数量大于F,则区块链网络将不可用。
而这样设定的原因是:区块链网络包括出块节点和候选节点,其中,出块节点用于产生区块,候选节点用于同步区块。当出块节点发生故障时,区块链网络中的候选节点需要重新选举出新的出块节点,而选举新的出块节点需要区块链网络中超过总节点数量的三分之二的候选节点进行投票,只有超过区块链网络的总节点数量的三分之二的候选节点投票,才能确定投票结果有效。若参与投票的候选节点的数量少于总节点数量的三分之二,则表示投票结果无效,这样就会导致无法选出新的出块节点,即区块链网络无法出块。
因此可见,当出块节点发生故障时,现有技术中的确定新的出块节点的方式限制了区块链网络的容灾能力。为了解决这一问题,本申请实施例提供了一种基于区块链网络的共识容灾方法,该方法可以提高区块链网络的容灾能力。
下面对本申请实施例提供的基于区块链网络的共识容灾方法的应用环境进行说明:
如图1所示,图1示出了一种区块链网络的结构示意图,其中,该区块链网络中包括多个节点,该多个节点包括出块节点101和多个候选节点102,其中,出块节点主要用于基于共识机制将区块链中预设时长内的数据生成区块,也就是说,主要用于记账,而候选节点主要用于基于共识机制对出块节点产生的区块进行验证,通过验证的区块会被记录在区块链中。出块节点以及各候选节点之间可以通信以便同步区块链等数据,其中,同步区块链等数据的过程在下文中叙述。
本申请实施例中,出块节点可以是区块链网络预先确定出来的,候选节点为区块链网络中除出块节点以外的全部节点或者部分节点。其中,候选节点可以以软件形式实现,也可以以硬件形式实现。当以硬件形式实现时,其可以是笔记本电脑、台式电脑、移动终端、便携式可穿戴设备等。
下面,结合附图对本申请实施例提供的共识容灾方法进行说明。
如图2所示,其示出了一种基于区块链网络的共识容灾方法的流程图,该区块链网络包括多个节点,其架构如图1所示。该方法适用于该区块链网络中的每个候选节点。如图2所示,该方法包括以下内容:
步骤201,候选节点在确定出块节点发生故障时,根据该候选节点的私钥份额生成第一数字签名,并将该第一数字签名发送给区块链网络中的其他候选节点。
其中,出块节点为基于区块链网络中的数据生成区块的节点。
在区块链网络的出块节点未发生故障时,该出块节点会不断地产生区块,并发送给区块链网络的各个候选节点,各个候选节点对区块进行验证,通过验证的区块会被记录在区块链中。
而在区块链网络的出块节点发生故障时,该出块节点不能产生区块,相应的,各个候选节点也不能接收到区块。当各个候选节点在预设时长内未接收到出块节点发送的区块时,各个候选节点即可自行确定出块节点发生故障。
在候选节点确定出块节点发生故障时,候选节点可以自行启动选举新的出块节点的选举策略。其中,选举新的出块节点的选举策略包括以下内容:
候选节点根据候选节点的私钥份额生成第一数字签名,并将该第一数字签名发送给区块链网络中的其他候选节点。
其中,私钥份额是根据区块链网络的门限私钥确定的。
下面分别对候选节点的私钥份额、生成第一数字签名的过程进行说明。
首先,说明候选节点的私钥份额:
在一种可选的实现方式中,区块链网络可以委托第三方信任机构生成区块链的门限公私钥对,门限公私钥对包门限私钥和门限公钥,然后由第三方信任机构利用密钥分割技术将门限私钥分割为多个私钥份额,其中,私钥份额的数量是基于区块链网络包括的候选节点的数量确定的。最后,由第三方信任机构将私钥份额分别发送给各个候选节点,并将区块链的门限公钥广播给区块链中的所有候选节点。
需要说明的是,候选节点的私钥份额是预先设置好的,并不是在确定出块节点发生故障时才获取的。进一步的,随着区块链网络中候选节点的数量的变化,各候选节点的私钥份额以及区块链网络的门限公钥是周期性更新的。
在另一种可选的实现方式中,候选节点的私钥份额可以是区块链网络包括的多个候选节点基于DKG(英文:distributed key generation,中文:分布式密钥生成)技术生成的。
其中,每个候选节点自行生成自身的公私钥对,公私钥对包括公钥和私钥,然后每个候选节点将自身的公钥广播给区块链网络中的所有候选节点。
与此同时,每个候选节点用自身的私钥对预设文件进行签名,得到预设文件签名。其中,该预设文件可以任意一个文件,区块链网络中的各个候选节点的预设文件可以相同。然后,每个候选节点将自身生成的预设文件签名广播给区块链网络包括的所有候选节点。这样,每个候选节点就可以接收到其他候选节点的公钥以及其他候选节点的预设文件签名,基于此,每个候选节点可以基于自身的公钥、自身的预设文件签名,以及其他候选节点的公钥、其他候选节点的预设文件签名来生成门限公钥,该门限公钥即区块链网络的门限公钥,每个候选节点的私钥即是对应于区块链的门限私钥的私钥份额。
其次,对候选节点生成第一数字签名的过程进行说明:
在一种可选的实现方式中,候选节点可以生成默认文件,然后根据该候选节点的私钥份额对该默认文件进行加密,从而得到第一数字签名。
其中,每个候选节点生成的默认文件是相同的。可选的,该默认文件可以例如是空文件。
在另一种可选的实现方式中,候选节点根据私钥份额生成第一数字签名的可以是指,候选节点对自己最新验证过的区块,即区块链的最后一个区块进行哈希运算,得到第一哈希结果,然后,候选节点调用自身的私钥份额对第一哈希结果进行加密运算,得到第一数字签名。
在得到第一数字签名之后,计算机节点可以将通过广播的方式将第一数字签名发送给区块链网络的其他候选节点。
步骤202,候选节点接收其他候选节点发送的第二数字签名。
其中,第二数字签名为其他候选节点在确定出块节点发生故障时,根据其他候选节点各自的私钥份额分别生成的。
本申请实施例中,候选节点还会接收到其他候选节点发送的数字签名,为便于区分,将其他候选节点发送的数字签名统称为第二数字签名,第二数字签名有多个。
其中,其他候选节点生成第二数字签名的过程可以参考步骤201公开的内容,在此不进行赘述。
步骤203,候选节点利用第一数字签名和第二数字签名生成门限签名,并根据门限私钥对应的门限公钥对门限签名进行验证;在验证通过的情况下根据门限签名生成可验证随机数,并基于可验证随机数确定新的出块节点。
本申请实施例中,候选节点在拿到自己的第一数字签名以及其他候选节点的第二数字签名之后,可以直接根据第一数字签名和第二数字签名生成门限签名。
可选的,在一种场景中,每个候选节点可以收到区块链网络中所有活跃的其他候选节点的第二数字签名,这样每个候选节点在生成门限签名时所根据的第一数字签名和第二数字签名是相同的。
在另一中场景中,不同的候选节点的算力不同,因此,不同的候选节点收到的第二数字签名的个数可能并不相同,这样,不同的候选节点在生成门限签名时,所根据的第一数字签名和第二数字签名并不相同。
需要说明的是,无论上述哪种场景,最终得到的门限签名都是相同的。这是由于,本申请实施例中,根据第一数字签名和第二数字签名生成门限签名是基于门限签名原理进行的。门限签名,也称为多重签名,表示区块链网络包括的m个候选节点中的任意n个候选节点对同一事件的签名聚在一起可以恢复出门限签名,其中,n小于m,任意少于n个签名聚在一起都不能恢复出门限签名。
其中,候选节点生成门限签名的详细过程请见下文叙述。
在得到门限签名之后,候选节点可以根据预先存储的区块链网络的门限公钥对门限签名进行验证,该验证过程的主要目的在于确定该门限签名是否可以表示区块链网络的签名。
若验证通过,则表示该门限签名为区块链网络的签名。若验证不通过,则表示该门限签名不能表示区块链网络的签名,则候选节点重新收集第二数字签名,并基于第一数字签名和第二数字签名生成门限签名,利用区块链网络的门限公钥对门限签名进行验证,重复该过程直至门限签名验证通过。
门限签名验证通过,也表示每个候选节点拿到的门限签名都是相同的,在此基础上,可以保证各个候选节点基于门限签名确定的新的出块节点是相同的。
本申请实施例中,候选节点根据门限签名确定新的出块节点的过程包括以下内容:在验证通过的情况下,候选节点根据门限签名生成可验证随机数,并基于可验证随机数确定新的出块节点。
可选的,候选节点可以基于预设算法对门限签名进行运算,将得到的运算结果作为可验证随机数。
本申请实施例中,候选节点根据第一数字签名和接收到的其他候选节点发送的第二数字签名生成门限签名,并基于区块链网络的门限公钥对门限签名进行验证,验证通过的门限签名表示该区块链网络的签名,因此可以认为,基于门限签名确定的新的出块节点是有效的,由此可见,本申请实施例中确定出块节点的过程不受到区块链网络中候选节点的数量的限制,而是以能够生成门限签名为条件,这样能够保证选举出新的出块节点,从而提高区块链网络的容灾能力。
进一步的,如图3所示,图3示出了一种双机房四可用节点,其中,出块节点1为区块链网络的当前出块节点,在出块节点的状态从产生区块变为宕机时,出块节点1发送故障,候选节点2、候选节点3和候选节点4的状态从同步区块变为确定出块节点1发生故障时,候选节点2、候选节点3和候选节点4同步执行上述步骤201-203公开的内容,并最终确定出了候选节点3为出块节点,这种情况下,候选节点3(即新的出块节点)产生区块,并发送给候选节点2和候选节点4,候选节点2和候选节点4接收到候选节点3发送的区块,并进行区块同步。
在本申请的一个实施例中,候选节点利用第一数字签名和第二数字签名生成门限签名的过程包括以下两种方式:
第一种方式是:
候选节点在收到其他候选节点发送的第二数字签名之后,就对第一数字签名和第二数字签名基于预先设置的算法进行聚合,得到聚合后的候选签名;
然后候选节点根据区块链的门限公钥对候选签名进行验证,若验证通过,则该候选签名即为门限签名。若验证失败,则该候选签名不是门限签名,则丢弃该候选签名。
当验证失败时,候选节点继续收集其他候选节点发送的第二数字签名,并重复执行上述聚合第一数字签名和第二数字签名的操作,直至得到的候选签名验证通过。
第二种方式是:
若第一数字签名和第二数字签名满足门限签名条件,则候选节点根据第一数字签名和第二数字签名生成门限签名。
其中,门限签名条件为确定第一数字签名和第二数字签名聚合后能够恢复出门限签名的条件。可选的,门限签名条件为第一数字签名和第二数字签名的数量大于等于预设阈值的条件。其中,预设阈值为区块链网络可接受的最少的存活节点的数量。
本申请实施例中,候选节点可以将第一数字签名和第二数字签名基于预先设置的算法进行聚合,得到门限签名。一般而言,第一数字签名和第二数字签名在满足门限签名条件的情况下,恢复出来的门限签名就可以表示区块链网络的签名。
然而,为了避免增强信任,候选节点还可以根据门限公钥对门限签名进行验证,若验证成功,则说明门限签名无误。若验证失败,则说明门限签名存在异常,这种情况下,候选节点可以广播警报消息。
在一种可选的实现方式中,候选节点在根据第一数字签名和第二数字签名生成门限签名之前,候选节点还需要对接收到的第二数字签名进行验证,其中,如图4所示,验证过程包括以下内容:
步骤401,候选节点根据其他候选节点的公钥对其他候选节点发送的第二数字签名进行解密,得到第二哈希结果。
对于每个其他候选节点,候选节点可以获取到每个其他候选节点的公钥,然后用每个其他候选节点的公钥对每个其他候选节点发送的第二数字签名进行验签,得到验签结果。
步骤402,候选节点检测验签结果是否为对区块链的最后一个区块的哈希结果的签名。
候选节点可以逐一地检测验签结果是否为对区块链的最后一个区块的哈希结果的签名。
其中,候选节点可以对区块链的最后一个区块进行哈希运算,得到区块链的最后一个区块的哈希结果。然后对第二数字签名进行验签。
步骤403,若验签通过,则候选节点确定第二数字签名验证通过。
若验签通过,则说明该第二数字签名是对区块链的最后一个区块的哈希结果的签名,即该第二数字签名与候选节点的第一数字签名是对同一事件的签名。
步骤404,若验签不通过,则确定第二数字签名验证失败,剔除验证失败的第二数字签名。
若验签不通过,则说明该第二数字签名与候选节点的第一数字签名不是对同一事件的签名,这种情况下,该第二数字签名对于候选节点确定新的出块节点无帮助,因此将该第二数字签名剔除。
该种方式,确保了第二数字签名与第一数字签名是对同一事件的签名,这样才能够确保第一数字签名和第二数字签名能够恢复出门限签名。
在本申请的一个实施例中,如图5所示,图5中示出了一种根据门限签名确定新的出块节点的方法,该方法包括以下内容:
步骤501,候选节点对门限签名进行哈希运算,得到目标哈希结果。
需要说明的是,每个候选节点对第一数字签名和第二数字签名聚合后得到的门限签名是相同的,因此每个候选节点对门限签名进行哈希运算得到的目标哈希结果也是相同。只有在满足各个候选节点得到的目标哈希结果相同这一条件时,才能够确保各个候选节点分别确定的新的出块节点是一致的。
步骤502,候选节点对目标哈希结果进行取模运算,将取模运算的余数作为可验证随机数。
本申请实施例中,候选节点可以对目标哈希结果进行取模运算,其中取模运算的模数为当前区块链网络中存活的所有候选节点的数量。
如图3所示,在出块节点1宕机的情况下,剩余的候选节点有3个,那么取模运算的模数即为3。
在取模运算之后可以得到取模运算的余数,本申请实施例中,候选节点将取模运算的余数作为可验证随机数。
下面对可验证随机数进行说明,可验证随机数是基于可验证随机函数VRF(英文:Verifiable Random Function,中文:随机可验证函数)确定的,本申请实施例中,取模运算对应的函数即是随机可验证函数。其中,随机可验证函数是指可以计算出一个唯一确定的值,这个值唯一确定且不可预测,且可以验证。
步骤503,候选节点基于可验证随机数确定新的出块节点。
步骤A,候选节点在确定出块节点发生故障时,确定区块链网络中的未发生故障的各个候选节点在区块链网络中的编号。
在实际应用中,区块链网络的多个候选节点之间相互发送网络心跳信息,网络心跳信息用于告知其他候选节点自身活跃状态。
与此同时,每个候选节点各自维护一个心跳表格,心跳表格中按照各个候选节点加入区块链网络的先后顺序存储各个候选节点的状态信息。
候选节点收到其他候选节点的网络心跳信息时,表示该其他候选节点处于活跃状态。而在预设时长内未接收到某个候选节点发送的网络心跳信息,则确定该候选节点发生故障。这种情况下,候选节点将发生故障的候选节点从心跳表格中移除,其他候选节点保持原有先后顺序不变。更新后的心跳表格中,各个候选节点的编号发生了变化。
本申请实施例中,当候选节点确定出块节点发生故障时,根据心跳表格确定区块链网络中未发生故障的各个候选节点在区块链网络中的编号。
需要说明的是,虽然心跳表格是各个候选节点自行维护的,但各个候选节点维护的心跳表格中的状态是一致的。因此,各个候选节点根据心跳表格确定区块链网络中未发生故障的各个候选节点在区块链网络中的编号也是一致的。
步骤B,将编号与取模运算的余数相同的候选节点确定为新的出块节点。
本申请实施例中,候选节点通过可验证随机数确定新的出块节点,能够保证新的出块节点的随机性和可验证性,从而保证区块链网络的安全性,避免新的出块节点被恶意追踪到。
在另一种可选的实现方式中,本申请还提出一种基于区块链网络的共识容灾方法,该方法包括以下内容:在确定出块节点发生故障时,候选节点基于预先设定的优先选择策略确定新的出块节点。
基于上述实施例中的步骤A公开的方案可知,候选节点维护了一个心跳表格,基于心跳表格可以确定当前区块链网络网络中处于活跃状态的候选节点。基于此,预先设定的优先选择策略是指:按照预先确定的顺序对区块链网络中的候选节点进行排序,然后按照该排序将排列在先的,处于活跃状态的候选节点确定为新的出块节点。例如:将排列在第一个位置的候选节点作为新的出块节点,若第一个候选节点发生故障,则顺次选择第二个位置的候选节点作为新的出块节点,若第二个候选节点发生故障,则顺次选择第三个位置的候选节点作为新的出块节点,……以此类推。
由于各个候选节点维护的心跳表格的状态是一致的,因此各个候选节点基于心跳表格确定的新的出块节点也是一致的,实现出块节点的可控。该种方式可以保证区块链中在一半以上节点宕机的情况下,依然可以正常出块。
如图6所示,其示出了一种基于区块链的容灾系统的整体模块图,该基于区块链的容灾系统包括多个节点,该多个节点包括出块节点和多个候选节点,其中,每个节点包括:共识模块,区块同步模块、监控和流量切换模块以及账本数据存储同步模块。
其中,共识模块,用于实现上述任一实施例提供的技术方案。
区块同步模块:通过p2p(点对点)同步区块数据,并对区块数据做校验,保证正确性和一致性。
账本数据存储同步模块:用于存储区块链账本数据。
采用链下同步的方式同步数据,包括共享存储的数据同步。
监控和流量切换模块:通过设置监控来对故障的发生进行报警。
其中,故障,可以包括脑裂和宕机等。平时的流量都指向单个机房,当事故发生时,节点网关进行流量切换。
其中,区块链账本数据包括世界状态和区块,世界状态代表了区块链账本数据的当前值。采用共享存储的方式,其中,共享存储是指两个或多个处理机共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。共享存储可以为aws s3(英文:Amazon Web Services-Simple Storage Service,中文:亚马逊网络服务-简单存储服务)对象存储和cephfs分布式存储。
如图7所示,其描述了整个区块链网络的层级,首先是共识网络,采用本申请实施例提供的基于区块链网络的共识容灾方法保证一致性和高可用,共识网络中的候选节点从出块节点同步区块数据。其次是记账节点,其不参与共识,但是从连接的共识节点同步区块数据,并进行记账。而共识网络和记账节点的数据存储则存储在共享存储中,不同数据中心的共享存储之间会定期进行链下的数据同步和备份。
如图8所示,其描述了在双数据中心的部署模式下,一个数据中心整个发生故障时,本申请实施例可以进行正常出快和流量切换。
正常运行时数据中心A作为流量的主入口,若数据中心B发生故障宕机,此时按照本申请实施例提供的基于区块链网络的共识容灾方法,可以实现一半节点宕机情况下的容错,数据中心A可以继续共识出块。监控和流量切换模块监测到数据中心B的故障,不进行流量切换。待数据中心B故障修复后,从数据中心A重新同步缺失的区块数据,共识网络恢复到一致状态。
若数据中心A发生故障宕机,此时按照本申请实施例提供的基于区块链网络的共识容灾方法,可以实现一半节点宕机情况下的容错,数据中心B中的某个节点将成为新的出块节点。监控和流量切换模块监测到流量入口数据中心A的故障,将流量切换,流量入口切换到数据中心B,继续共识出块。待数据中心A故障修复后,从数据中心B重新同步缺失的区块数据,同步完成后流量入口切换回数据中心A,共识网络恢复到一致状态。
根据图7、图8所示故障场景可以看出,本申请实施例提供的基于区块链网络的共识容灾方法可以通过双数据中心容灾部署,基于该种共识容灾方法,可以实现一半节点宕机情况下的容错,在一个数据中心故障时,另外一个数据中心可以正常出块,整个系统正常运行。实现区块链系统跨机房跨数据中心高可用,双数据中心异地灾备。
应该理解的是,虽然图2至图5中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种基于区块链网络的共识容灾装置900,应用于区块链网络中的多个候选节点,包括:签名模块901、接收模块902和出块节点确定模块903,其中:
签名模块901,用于在确定出块节点发生故障时,根据候选节点的私钥份额生成第一数字签名,并将第一数字签名发送给区块链网络中的其他候选节点;私钥份额是根据区块链网络的门限私钥确定的;出块节点为基于区块链网络中的数据生成区块的节点;
接收模块902,用于接收其他候选节点发送的第二数字签名,第二数字签名为其他候选节点在确定出块节点发生故障时,根据其他候选节点各自的私钥份额分别生成的;
出块节点确定模块903,用于利用第一数字签名和第二数字签名生成门限签名,并根据门限私钥对应的门限公钥对门限签名进行验证;在验证通过的情况下根据门限签名生成可验证随机数,并基于可验证随机数确定新的出块节点。
在一个实施例中,出块节点确定模块903具体用于:若第一数字签名和第二数字签名满足门限签名条件,则根据第一数字签名和第二数字签名生成门限签名。
在一个实施例中,出块节点确定模块903具体用于:门限签名条件为第一数字签名和第二数字签名的数量大于等于预设阈值的条件。
在一个实施例中,签名模块901具体用于:在确定出块节点发生故障时,对区块链网络的最后一个区块进行哈希运算,得到第一哈希结果;通过候选节点的私钥份额对第一哈希结果进行加密运算,得到第一数字签名。
在一个实施例中,签名模块901具体用于:根据其他候选节点的公钥对其他候选节点发送的第二数字签名进行验签,得到验签结果;检测验签结果是否为对区块链网络的最后一个区块的哈希结果的签名;若是,则确定第二数字签名验证通过;若不是,则确定第二数字签名验证失败,剔除验证失败的第二数字签名。
在一个实施例中,出块节点确定模块903具体用于:对门限签名进行哈希运算,得到目标哈希结果;对目标哈希结果进行取模运算,将取模运算的余数作为可验证随机数。
在一个实施例中,出块节点确定模块903具体用于:在确定出块节点发生故障时,确定区块链网络中的未发生故障的各个候选节点在区块链网络中的编号;将编号与取模运算的余数相同的候选节点确定为新的出块节点。
关于基于区块链网络的共识容灾装置的具体限定可以参见上文中对于基于区块链网络的共识容灾方法的限定,在此不再赘述。上述基于区块链网络的共识容灾装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链网络的共识容灾方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于区块链网络的共识容灾方法,其特征在于,应用于区块链网络中的多个候选节点,所述方法包括:
在确定出块节点发生故障时,对区块链网络的最后一个区块进行哈希运算,得到第一哈希结果,通过所述候选节点的私钥份额对所述第一哈希结果进行加密运算,得到第一数字签名,并将所述第一数字签名发送给所述区块链网络中的其他候选节点;所述私钥份额是根据所述区块链网络的门限私钥确定的;所述出块节点为基于所述区块链网络中的数据生成区块的节点;
接收所述其他候选节点发送的第二数字签名,所述第二数字签名为所述其他候选节点在确定所述出块节点发生故障时,根据所述其他候选节点各自的私钥份额分别生成的;
利用所述第一数字签名和所述第二数字签名生成门限签名,并根据所述门限私钥对应的门限公钥对所述门限签名进行验证;在验证通过的情况下根据所述门限签名生成可验证随机数,并基于所述可验证随机数确定新的出块节点。
2.根据权利要求1所述的方法,其特征在于,所述利用所述第一数字签名和所述第二数字签名生成门限签名,包括:
若所述第一数字签名和所述第二数字签名满足门限签名条件,则根据所述第一数字签名和所述第二数字签名生成门限签名。
3.根据权利要求2所述的方法,其特征在于,所述门限签名条件为所述第一数字签名和所述第二数字签名的数量大于等于预设阈值的条件。
4.根据权利要求1所述的方法,其特征在于,所述利用所述第一数字签名和所述第二数字签名生成门限签名之前,所述方法还包括:
根据所述其他候选节点的公钥对所述其他候选节点发送的所述第二数字签名进行验签,得到验签结果;
检测所述验签结果是否为对所述区块链网络的最后一个区块的哈希结果的签名;
若是,则确定所述第二数字签名验证通过;
若不是,则确定所述第二数字签名验证失败,剔除验证失败的第二数字签名。
5.根据权利要求1所述方法,其特征在于,所述根据所述门限签名生成可验证随机数,包括:
对所述门限签名进行哈希运算,得到目标哈希结果;
对所述目标哈希结果进行取模运算,将取模运算的余数作为所述可验证随机数。
6.根据权利要求5所述方法,其特征在于,所述基于所述可验证随机数确定新的出块节点,包括:
在确定出块节点发生故障时,确定所述区块链网络中的未发生故障的各个候选节点在所述区块链网络中的编号;
将编号与所述取模运算的余数相同的候选节点确定为所述新的出块节点。
7.一种基于区块链网络的共识容灾装置,其特征在于,应用于区块链网络中的多个候选节点,所述装置包括:
签名模块,用于在确定出块节点发生故障时,对区块链网络的最后一个区块进行哈希运算,得到第一哈希结果,通过所述候选节点的私钥份额对所述第一哈希结果进行加密运算,得到第一数字签名,并将所述第一数字签名发送给所述区块链网络中的其他候选节点;所述私钥份额是根据所述区块链网络的门限私钥确定的;所述出块节点为基于所述区块链网络中的数据生成区块的节点;
接收模块,用于接收所述其他候选节点发送的第二数字签名,所述第二数字签名为所述其他候选节点在确定所述出块节点发生故障时,根据所述其他候选节点各自的私钥份额分别生成的;
出块节点确定模块,用于利用所述第一数字签名和所述第二数字签名生成门限签名,并根据所述门限私钥对应的门限公钥对所述门限签名进行验证;在验证通过的情况下根据所述门限签名生成可验证随机数,并基于所述可验证随机数确定新的出块节点。
8.根据权利要求7所述装置,其特征在于,所述出块节点确定模块具体用于:若第一数字签名和第二数字签名满足门限签名条件,则根据第一数字签名和第二数字签名生成门限签名。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202110811170.8A 2021-07-19 2021-07-19 基于区块链网络的共识容灾方法、装置、设备和存储介质 Active CN113612614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110811170.8A CN113612614B (zh) 2021-07-19 2021-07-19 基于区块链网络的共识容灾方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110811170.8A CN113612614B (zh) 2021-07-19 2021-07-19 基于区块链网络的共识容灾方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113612614A CN113612614A (zh) 2021-11-05
CN113612614B true CN113612614B (zh) 2023-10-27

Family

ID=78337832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110811170.8A Active CN113612614B (zh) 2021-07-19 2021-07-19 基于区块链网络的共识容灾方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113612614B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114745131A (zh) * 2022-04-06 2022-07-12 广东钜联信息科技有限公司 一种区块链的pbft改进共识算法
CN114866567B (zh) * 2022-05-26 2023-06-02 成都质数斯达克科技有限公司 一种抗容灾的多层次区块链网络区块同步方法和装置
CN114826592B (zh) * 2022-06-22 2022-10-14 腾讯科技(深圳)有限公司 基于区块链的密钥生成方法、装置、电子设备和可读介质
CN117176470B (zh) * 2023-10-20 2024-01-26 深圳创拓佳科技有限公司 一种区块链数据监管方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109785130A (zh) * 2018-12-17 2019-05-21 金蝶软件(中国)有限公司 区块链随机共识方法、装置、计算机设备和存储介质
CN110213059A (zh) * 2019-06-20 2019-09-06 腾讯科技(深圳)有限公司 一种随机数的生成方法、生成装置及存储介质
CN112804333A (zh) * 2021-01-15 2021-05-14 北京百度网讯科技有限公司 出块节点的异常处理方法、装置、设备和存储介质
CN112883106A (zh) * 2020-12-31 2021-06-01 北京百度网讯科技有限公司 一种区块链的出块节点确定方法、装置、设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109785130A (zh) * 2018-12-17 2019-05-21 金蝶软件(中国)有限公司 区块链随机共识方法、装置、计算机设备和存储介质
CN110213059A (zh) * 2019-06-20 2019-09-06 腾讯科技(深圳)有限公司 一种随机数的生成方法、生成装置及存储介质
CN112883106A (zh) * 2020-12-31 2021-06-01 北京百度网讯科技有限公司 一种区块链的出块节点确定方法、装置、设备和介质
CN112804333A (zh) * 2021-01-15 2021-05-14 北京百度网讯科技有限公司 出块节点的异常处理方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN113612614A (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
CN113612614B (zh) 基于区块链网络的共识容灾方法、装置、设备和存储介质
US11294888B2 (en) Blockchain system and blockchain transaction data processing method based on ethereum
EP3593249B1 (en) System and method for ending view change protocol
CN108111604B (zh) 区块链共识方法、装置和系统、标识信息处理方法和装置
EP1617331B1 (en) Efficient changing of replica sets in distributed fault-tolerant computing system
EP3596888B1 (en) System and method for ending view change protocol
CN111343277B (zh) 分布式数据存储方法、系统、计算机设备和存储介质
Amir et al. Scaling byzantine fault-tolerant replication towide area networks
Martin et al. A framework for dynamic byzantine storage
CN114048517B (zh) 区块链的双通道共识系统和方法、计算机可读存储介质
Vassantlal et al. Cobra: Dynamic proactive secret sharing for confidential bft services
JP3910538B2 (ja) 潜在的に非同期式のネットワーク中でシークレットを検証可能に共有する方法
Ho et al. Nysiad: Practical Protocol Transformation to Tolerate Byzantine Failures.
Abraham et al. Optimal good-case latency for rotating leader synchronous bft
Roth et al. Do not overpay for fault tolerance!
Diamantopoulos et al. Interactive consistency in practical, mostly-asynchronous systems
CN113630445B (zh) 一种基于区块链网络的数据存储方法及装置
KR102652737B1 (ko) 블록체인 네트워크를 위한 효율적인 듀얼모드 합의 프로토콜
Dobre et al. Proofs of writing for robust storage
CN113127271A (zh) 交易系统的部署方法、装置、计算机设备和存储介质
CN111858768A (zh) 一种优化区块链可信节点与共识算法的装置
Yu et al. D-CAST: Distributed Consensus Switch in Wireless Trustworthy Autonomous System
CN115277379A (zh) 分布式锁容灾处理方法、装置、电子设备及存储介质
Lin et al. GRADE: Graceful Degradation in Byzantine Quorum Systems
Zhao On the quorum requirement and value selection rule for Fast Paxos

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