CN113783946A - 一种基于门限签名的可再投票二元共识方法及装置 - Google Patents

一种基于门限签名的可再投票二元共识方法及装置 Download PDF

Info

Publication number
CN113783946A
CN113783946A CN202110984380.7A CN202110984380A CN113783946A CN 113783946 A CN113783946 A CN 113783946A CN 202110984380 A CN202110984380 A CN 202110984380A CN 113783946 A CN113783946 A CN 113783946A
Authority
CN
China
Prior art keywords
consensus
round
voting
value
threshold signature
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.)
Pending
Application number
CN202110984380.7A
Other languages
English (en)
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.)
Shandong Blockchain Research Institute
Tsinghua University
Original Assignee
Shandong Blockchain Research Institute
Tsinghua University
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 Shandong Blockchain Research Institute, Tsinghua University filed Critical Shandong Blockchain Research Institute
Priority to CN202110984380.7A priority Critical patent/CN113783946A/zh
Publication of CN113783946A publication Critical patent/CN113783946A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • 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
    • H04L9/3255Cryptographic 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 using group based signatures, e.g. ring or threshold signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请实施例中一种基于门限签名的可再投票二元共识方法及装置,应用于分布式系统中的任一共识节点,方法包括:针对任一待共识提议确定初始投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;广播携带有所述初始投票值以及门限签名份额的首轮共识消息;基于其他共识节点广播的首轮共识消息确定待共识提议的共识情况,采用上述方式,可以使分布式系统中的各个共识节点在每轮共识的共识步骤较少,因此可以快速达成共识。

Description

一种基于门限签名的可再投票二元共识方法及装置
技术领域
本申请涉及计算机技术领域,具体地,涉及一种基于门限签名的可再投票二元共识方法及装置。
背景技术
二元共识是拜占庭容错协议(拜占庭共识,BFT)的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元共识,其可以使分布式系统在异步环境下达成共识。同时,二元共识也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元共识还可以应用在数据库等技术领域。因此,对于二元共识的研究是目前业界重要的研究方向。
发明内容
本申请实施例中提供了一种分布式系统中的共识方法,用于解决现有技术中共识效率低下的问题。
根据本申请实施例的第一个方面,提出一种基于门限签名的可再投票二元共识方法,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为预先设置的正整数,所述方法包括:
针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;
在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
广播携带有投票值以及对应于该投票值的门限签名份额的首轮共识消息;
基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况。
根据本申请实施例的第二个方面,一种基于门限签名的可再投票二元共识装置,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为预先设置的正整数,所述装置包括:
处理模块,用于针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
通信模块,用于广播携带有投票值以及对应于该投票值的门限签名份额的首轮共识消息;
所述处理模块,还用于基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况。
采用本申请实施例中提供的共识方法,各个共识节点通过广播投票值和门限签名份额,可以使各个共识节点就待共识提议快速达成共识,进而提高了分布式系统的处理能力。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本说明书实施例的一种共识节点维护共识实例的结构示意图;
图1b为本说明书实施例的另一种共识节点维护共识实例的结构示意图;
图2为本说明书实施例的一种基于门限签名的可再投票二元共识方法的流程示意图;
图3为本说明书实施例的一种广播共识消息的流程示意图;
图4为本说明书实施例的另一种基于门限签名的可再投票二元共识方法示意图;
图5为本说明书实施例的一种基于门限签名的可再投票二元共识装置的结构示意图;
图6是用于配置本说明书实施例装置的一种设备的结构示意图。
具体实施方式
二元共识是拜占庭容错协议(拜占庭共识,BFT)的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元共识,其可以使区块链等分布式系统在异步环境下达成共识。同时,二元共识也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元共识还可以应用在数据库等技术领域。
二元共识中,二元是指两个值,通常用0和1表示,分布式系统中各个节点可以就两个值中的某个值达成一致,而该值对于分布式系统来说往往具有重要的实际意义。以二元共识应用在区块链网络为例,区块链网络中各个节点的数据需要保持一致,如果利用二元共识方法确保区块链中各个节点的数据一致,那么当各个节点针对某批交易达成共识为1时,则各个节点都存储该数据,当各个节点针对某批交易达成共识为0时,则各个节点都不存储该数据,这样就保证了各个节点存储数据的一致性。可以理解的是,如果二元共识的执行效率越高,各个节点就能够快速就二元中的某个值达成共识,则分布式系统的性能也就越好,因此如何提高二元共识的效率是目前业界重要的研究方向。
针对上述问题,本申请实施例中提供了一种基于门限签名的可再投票二元共识方法,应用于分布式系统中的任一共识节点,该节点广播包括投票值和门限签名份额的共识消息,并基于接收到的其他共识节点发送的共识消息确定共识结果,从而使系统中各个节点达成共识。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本说明书中,待共识提议可以理解为任一共识节点发出的数据,并希望其他共识节点共同参与对该数据的共识,而投票值则用于表示各个共识节点对该数据的共识意见,其中投票值包括优先投票值以及其他投票值两种值,即各个共识节点可以对待共识提议存在共两种共识意见,优先投票值以及其他投票值在一个实施例中,可以用1和0分别进行表示,在其他实施例中,还可以用其他形式和符号进行表示,本说明书对于优先投票值以及其他投票值的具体形式不行进行限定,只要能够用于区分优先投票值和其他投票值均可。
以区块链场景为例,待共识提议可以是任一共识节点从本地交易池中获取的一批交易,并希望其他共识节点可以接收并存储该批交易,而投票值用于表示各个共识节点是否同意存储该待共识提议。
在其他应用场景中,待共识提议以及投票值会具有其他不同的实际含义,本说明书对此不进行限定。
如图1a所示,为分布式系统中的任一共识节点所要执行的二元共识实例的示意图,如分布式系统中共存在N个共识节点,为了方便说明将其中任一共识节点称为目标节点,分布式系统中的目标节点会针对每一个共识节点(包括其自身)分别利用本说明提出的可再投票二元共识方法确定该节点提出的待共识提议的共识结果;如图中RABA1-RABAN,分别代表针对N个待共识提议进行可再投票二元共识方法RABA的示意图,RABA1为目标节点针对共识节点1提出的待共识提议使用本说明书提出的基于门限签名的可再投票二元共识方法进行处理的示意,RABA2为目标节点针对共识节点2提出的待共识提议使用本说明书提出的基于门限签名的可再投票二元共识方法进行处理的示意,以此类推。
从示意图中可以看出,目标节点在针对每个待共识提议进行共识时,会确定一个初始投票值(0或1),最终基于本说明提出的基于门限签名的可再投票二元共识方法也会得到针对该待共识提议的共识结果(0或1)。
如图2所示,基于以上说明本说明书提出一种基于门限签名的可再投票二元共识方法,分布式系统至少包括N个共识节点,共识节点是指参与共识过程的节点,可以理解的是,在分布式系统中通常还会存在其他不参与共识的节点,这些节点仅接收和存储共识节点的共识结果而不参与共识过程;另外,当系统中的恶意节点或称拜占庭节点过多时任何一种共识方法均无法确保系统中的共识节点达成共识,因此本说明书中规定该分布式系统包括N个共识节点,所述N个共识节点中允许存在f个恶意节点,N≥3f+1,所述f和N均为大于等于0的整数,例如,当N为4时,f只能为1,当N为8时,f为2或1。本说明书中将f值预先设置为任一对应于N值的正整数。例如,当N为8时,可以将f设置为2。本说明书提出的方法应用于所述多个共识节点中的任一正确节点,可以理解的是本说明书提出的分布式系统中,各个节点没有主副之分,每个共识节点都在异步执行下述方法,当目标节点针对任一共识节点提出的待共识提议得到共识结果时,其他正确共识节点最终也会针对该待共识提议得到相同的共识结果,该分布式系统可以是区块链网络也可以是其他分布式系统,本说明书对此不进行限定。
该方法包括:
S201,针对任一待共识提议确定初始投票值;
S202,在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
本说明书中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;本说明书提出设置其中一种投票值为优先投票值,即希望各个共识节点偏向于该优先投票值达成共识,在一个具体的示例中可以用0和1分别表示优先投票值以及其他投票值,其中,优先投票值可以为1也可以为0,下文中均以优先投票值为1,以其他投票值为0为例进行说明。
根据上述图1a、以及对于图1a的说明可知,目标节点会针对每个共识节点的待共识提议分别确定共识结果,本图2所描述的即为目标节点针对每个待共识提议所要执行的共识过程。
在S201中,初始投票值在不同应用场景中可以根据不同的数据确定。下面以区块链场景为例,对目标节点确定初始投票值的方式进行说明:在区块链网络中,各个共识节点可以基于可靠广播协议RBC广播待共识提议,并且可以基于接收待共识提议的情况确定针对该待共识提议的初始投票值,在区块链网络中,目标节点可以是从本地交易池中随机获取预设数量的交易,或者按照交易存储的先后顺序,优先获取较早存储的预设数量的交易。可以理解的是,由于各个共识节点都会接收客户端请求的交易,因此各个共识节点都可以在本地维护自己的交易池。目标节点在获取了交易后,可以将获取的交易打包成为本次的待共识提议。目标节点在获取了本地待共识提议后,即可以基于可靠广播RBC协议,向其他共识节点广播本地待共识提议,同时也可以基于可靠广播RBC协议接收其他共识节点广播的待共识提议。可靠广播RBC协议的具体内容可以参照相关技术,本说明书对此不进行详述,各个共识节点可以同时发出本地的待共识提议,因此目标节点可能会先后接收到不同共识节点发送的待共识提议。目标节点可以根据接收待共识提议的情况确定针对该待共识提议的初始投票值,目标节点具体可以是在接收到任一个共识节点通过可靠广播RBC协议广播的待共识提议的情况下,若还未针对该待共识提议开始执行共识过程即S201-S205,则将该待共识提议的初始投票值确定为优先投票值1;
在接收到N-f个共识节点广播的待共识提议的情况下,将还未开始共识过程的待共识提议的初始投票值确定为其他投票值0;
另外,目标节点在接收到任一个共识节点通过可靠广播RBC协议广播的待共识提议的情况下,若已针对该待共识提议开始执行共识过程,且还未得到该待共识提议的共识结果的情况下,则重新将该待共识提议的初始投票值确定为优先投票值1。
本实施例中,由于在接收到N-f个共识节点广播的待共识提议的情况下,将还未开始执行共识过程的待共识提议的初始投票值确定为其他投票值0,并且可靠广播RBC协议可以保证目标节点在接收任一待共识提议时,仅会接收到一次,而非多次接收同一待共识提议,因此,在接收到任一待共识提议后,若已经针对该待共识提议开始执行共识过程,则说明是以其他投票值0为初始投票值开始执行的,进一步,可以将初始投票值由其他投票值0修改为优先投票值1。即在区块链网络场景中,可以将预设条件配置为:若接收到该待共识提议,且还未得到该待共识提议的共识结果。
以N为7,f为2为例进行说明,目标节点在接收到任一共识节点广播的待共识提议之后,确定是否已经开始针对该待共识提议执行共识过程,如果没有,则将该待共识提议的初始投票值确定为优先投票值1,并开始执行S203-S205,以得到针对该待共识提议的共识结果。
另外,在确定接收到N-f即7-2=5个共识节点广播的待共识提议,即已经开始针对5个待共识提议分别以优先投票值1作为输入开始执行共识过程,可以将剩余的其他还未开始执行共识过程的2个待共识提议的初始投票值确定为其他投票值0,并针对这剩余的2个待共识提议开始执行共识过程。
同时,目标节点在接收到任一共识节点广播的待共识提议之后,若已针对该待共识提议开始执行共识过程,并且该待共识提议的初始投票值为其他投票值0,且还未得到该待共识提议的共识结果,则重新将该待共识提议的初始投票值确定为优先投票值。
在确定任一个待共识提议存在初始投票值的情况下,即针对该待共识提议执行共识过程。
如图1b所述,区块链网络中共存在7个共识节点,每个共识节点需要在针对7个共识节点发出的待共识提议分别达成共识,如图中所示,需要维护7对RBC+RABA实例,其中RABA即为本说明书提出的基于门限签名的可再投票二元共识方法,其中N为7,f为2,目标节点在接收到了节点0-节点4的5个待共识提议后,就开始针对节点0-节点4的待共识提议分别执行本说明书提出的二元共识方法,即将RABA0-RABA4的输入均设置为1(优先投票值)并开始执行,并且直接将对应于节点5和节点6的RABA5和RABA6的输入均设置为0(其他投票值)并开始执行,即在接收到N-f个共识节点的待共识提议的最后一个待共识提议的情况下,就开始触发剩余f个还未开始执行RABA的待共识提议开始执行,如图中所示,在节点3以1为输入执行开始RABA3时,就将RABA5和RABA6的输入均设置为0,触发开始执行RABA5和RABA6。另外,节点5和节点6的RABA5和RABA6的输入设置为0之后,且还未得到RABA5和RABA6的输出结果时,如果又接收到了节点5和节点6的待共识提议,那么可以将RABA5和RABA6的输入更改为1,再次触发执行RABA5和RABA6,以得到RABA5和RABA6的输出结果。采用上述方式,可以保障各个待共识提议的二元共识过程基本上是在并行处理和发生的,进一步提升了共识的效率。
可以理解的是,上述方式仅是在区块链网络中确定初始投票值的方式,在其他应用场景中,还可以根据不同的数据确定待共识提议的初始投票值。
在上述S201中,目标节点在确定了初始投票值的情况下,不论初始投票值为优先投票值还是其他投票值,目标节点均可以执行S203,即广播该初始投票值,并接收其他共识节点广播的针对该待共识提议的初始投票值。
另外,本说明书提出为了使各个共识节点能够就该优先投票值快速达成共识,因此允许目标节点在确定的初始投票值为其他投票值的情况下,若确定满足预设条件,则可以重新将所述初始投票值确定为优先投票值,并再次执行S203。在不满足预设条件的情况下,不允许目标节点修改初始投票值,在不同分布式系统应用场景中可以灵活的配置不同的预设条件。可以理解的是,上述仅以区块链网络应用场景为例进行说明,在其他的应用场景中,可以根据不同的场景需求配置不同的预设条件,本步骤中,允许目标节点再投票,即针对同一个待共识提议确定两次初始投票值,允许目标节点在某个待共识提议的初始投票值为其他投票值的情况下,将初始投票值修改为优先投票值,目的在于可以使各个共识节点可以快速就优先投票值达成共识。
S203,基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
S204,广播携带有投票值以及对应于该投票值的门限签名份额的首轮共识消息;
S205,基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况。
在上述S203中,门限签名技术与基础签名机制类似,通常也分为两部分,一部分为门限密钥生成过程,一部分为门限签名过程。门限密钥生成过程,会生成一个共有的公钥,和分属不同参与方各自所有的私钥份额,聚集了预设数量的私钥份额就可以构造出真正的私钥。而门限签名过程,就是各参与方通过自己的私钥份额对同一消息内容进行分布式协作签署并输出最终的可验证签名,这个可验证签名与使用真正的私钥进行签名的内容一样,简单来说就是各参与方基于本地的私钥份额对消息进行门限签名,得到门限签名份额,再对预设数量的各参与方的门限签名份额进行合并,可以得到可验证门限签名。本说明书中门限为2f+1具体是指,在得到2f+1个针对同一内容进行门限签名的门限签名份额后,可以对2f+1个门限签名份额进行合并得到完整的门限签名,该门限签名可以基于共有的公钥进行验签,下文中将完整的门限签名称为可验证门限签名。关于门限签名技术的具体过程和实现方式可以参照相关技术,本说明书对此不进行详细说明。另外,本步骤中,除了使用门限签名份额对初始投票值进行签名,还可以使用门限签名份额对初始投票值和共识轮数、待共识提议ID的组合数据进行签名。
在上述S204中,目标节点具体可以是执行如图3所述的方法:
S301,将初始投票值和门限签名份额携带在首轮第一共识消息中进行广播,接收其他共识节点广播的首轮第一共识消息;
本步骤中,可以采用上述方式确定初始投票值以及门限签名份额,这里不再进行详述。
目标节点可以通过认证信道将第一共识消息传输至分布式系统中的其他共识节点,当然在没有认证信道时,为了保证数据传输的安全性,还可以通过数字签名或公钥技术设施等密码学工具保证共识消息传输的安全性,本说明书对此不进行限定。
在一个实施例中,第一共识消息可以是bvalr格式的消息,目标节点可以广播形如bvalr(estr,ts2.share)消息,其中estr为投票值,ts2.share为门限为2f+1的门限签名份额,投票值estr是一个二进制数(0或1),r为共识轮数,首轮即第0轮,共识轮从0开始以1为步长递增。
可以理解的是,分布式系统中的全部正确节点都在执行目标节点所执行的步骤,即其他共识节点也会发送包括投票值第一共识消息;此时,目标节点会接收到来自其他共识节点发送的第一共识消息。
S302,基于其他共识节点广播的首轮第一共识消息重新确定首轮投票值、门限签名份额以及得到首轮投票值的可验证门限签名;将重新确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第二共识消息中进行广播;
目标节点在接收到N-f条首轮第一共识消息后,即可以根据接收到的首轮第一共识消息重新确定投票值。
具体可以是,如果这N-f个首轮第一共识消息中的投票值相同,目标节点则确定该N-f条首轮第一共识消息所携带的初始投票值为重新确定的首轮投票值,并基于本地的私钥份额对该重新确定的首轮投票值进行门限签名得到门限签名份额,对该N-f条首轮第一共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
例如,如果目标节点收到N-f条bval0(b,ts2.share)消息,b∈{0,1}。则重新确定投票值为b,并利用本地私钥份额对b进行签名得到ts2.share,并对N-f条首轮第一共识消息携带的门限签名份额进行合并得到可验证门限签名sig。在N-f个首轮第一共识消息中的投票值相同,才确定该N-f条首轮第一共识消息所携带的初始投票值为重新确定的首轮投票值,可以避免恶意节点作恶,即避免恶意节点操控节点收到的消息顺序,使得即使在f+1个正确节点都广播优先投票值的情况下,仍然会有节点在第二共识消息中广播其他投票值,即可以避免各个共识节点携带在第二共识消息中投票值不同,导致最终无法达成共识。
在确定了上述内容后,即可以将上述内容携带在首轮第二共识消息中进行广播;
例如,结合上述例子,目标节点可以广播aux0(v,sig,ts2.share)消息,其中auxr为第二共识消息格式,v=b,sig为可验证门限签名,ts2.share为门限签名份额。
S303,基于其他共识节点广播的第二共识消息再次确定首轮投票值,可验证门限签名以及门限签名份额;将再次确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第三共识消息中进行广播。
具体地,确定第三共识消息中携带的内容的方式,可以为:
在接收N-f条验签成功的首轮第二共识消息的情况下,若所述N-f条首轮第二共识消息中携带的投票值相同,则确定所述N-f条首轮第二共识消息所携带的投票值为再次确定的首轮投票值;其中,验签成功是指该第二共识消息中携带的可验证门限签名验签成功;在确定了首轮投票值后,可以基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额;并对所述N-f条首轮第二共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
另外,如果所述N-f条首轮第二共识消息中携带的投票值不相同,则确定首轮投票值为空,基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值。
在确定了上述内容后,即可以将上述内容携带在首轮第三共识消息中进行广播;
例如,结合上述例子,目标节点可以广播conf0(v,sig,ts2.share)消息,其中confr为第三共识消息格式,v为投票值,sig为可验证门限签名,ts2.share为门限签名份额。
上述S301-S303描述的为S204的过程,即首轮广播投票值的过程,下面对S205中的过程进行描述:
其中基于其他共识节点广播的首轮共识消息得到共识结果,可以是基于其他共识节点广播的第三共识消息得到共识结果。
具体地,可以是在接收N-f条验签成功的首轮第三共识消息的情况下,将首轮公共抛币值设置为优先投票值,若所述N-f条首轮第三共识消息中携带的投票值相同,则确定所述N-f条首轮第三共识消息所携带的投票值为共识结果。
另外,在所述N-f条首轮第三共识消息中携带的投票值不相同的情况下,则确定首轮未到达共识,需要继续执行下轮共识过程。
其中,验签成功是指,该第三共识消息中携带的可验证门限签名验签成功。例如,如果N-f条验证成功的首轮第三共识消息中携带的投票值均为1,则确定共识结果为1。
本步骤中,将公共抛币设置为优先投票值,这是为了使各个节点广播的投票值不同的情况下,在下轮共识中,各个节点可以偏向于优先投票值达成共识。
可见,采用上述共识方法,可以使各个共识节点在共识首轮就快速达成共识,提高了共识效率。
本说明书提出的共识方法是按轮执行的,其中每轮共识中包括若干步骤,上述S201-S205即为首轮共识所执行的步骤,下面介绍其他轮共识所执行的步骤:
除了首轮以外,其他轮的共识均是采用如图4所示的方法达成共识:
在首轮没有得到共识结果的情况下,则可以开始循环执行S401-S402,直到达到预设停止条件。其中,预设停止条件可以是确定上轮共识中得到共识结果、且在本轮发送第三共识消息,即在得到共识结果后,目标节点仍会参与下一轮的共识过程,并在下一轮发送第三共识消息后退出共识过程,以使其他共识节点能够得到共识结果。
S401,确定本轮投票值,并广播本轮共识消息;所述共识消息中携带本轮投票值以及所述本轮投票值的门限签名份额;
S402,基于接收到的其他共识节点广播的共识消息确定待共识提议的共识情况。
其中,在S401中确定投票值的方式与首轮共识时确定初始投票值的方式不同,确定方式具体可以是:
确定上一轮接收到的第三共识消息中是否存在至少一条第三共识消息验签成功;若存在,则确定本轮投票值为所述验签成功的第三共识消息携带的投票值,基于本地的私钥份额对所述投票值进行门限签名得到门限签名份额,并确定本轮可验证门限签名为所述验签成功的第三共识消息中携带的可验证门限签名;
例如,在上一轮第三共识消息中,既存在携带投票值为1的第三共识消息,又存在携带投票值为空的第三共识消息,根据上述描述可知,在投票值为1的情况下,该第三共识消息中的可验证门限签名可以验签成功,而在投票值为空的情况下,该第三共识消息中的可验证门限签名的值并非是合并门限签名份额得到,而是直接设置为接收到的多种不同的投票值,因此无法验签成功。在存在至少一条第三共识消息验签成功的情况下,则直接将本轮的投票值设置为该验签成功的第三共识消息中的投票值,进而利用本地的门限私钥份额对该投票值进行签名得到门限签名份额,并直接沿用该第三共识消息中携带的可验证门限签名。
另外,若上一轮接收到的第三共识消息中不存在验签成功的第三共识消息,则确定本轮投票值为上一轮的公共抛币值,基于本地的私钥份额对本轮投票值进行门限签名得到门限签名份额,并将上一轮N-f个第三共识消息携带的门限签名份额进行合并得到本轮可验证门限签名。
即上一轮第三共识消息中的投票值均为空,上一轮的第三共识消息中的可验证签名均不能验签成功,则直接将上一轮的公共抛币值确定为本轮投票值,由于首轮是默认公共抛币值为优先投票值1,因此第二轮共识时,如果确定首轮共识时的第三共识消息均不能验签成功,则直接确定本轮投票值为优先投票值。
在确定了投票值之后,可以广播本轮共识消息,具体可以是:
S401a,将确定的本轮投票值、可验证门限签名以及门限签名份额携带在第二共识消息中进行广播;
S401b,接收其他共识节点广播的第二共识消息;
S401c,基于其他共识节点广播的第二共识消息重新确定投票值、门限签名份额以及可验证门限签名;
S401d,将重新确定的投票值、可验证门限签名以及门限签名份额携带在首轮第三共识消息中进行广播。
S401a-S401d,具体可以是在接收N-f条验签成功的第二共识消息的情况下,若所述N-f条第二共识消息中携带的投票值相同,则确定所述N-f条第二共识消息所携带的投票值为重新确定的投票值,基于本地的私钥份额对所述重新确定的投票值进行门限签名得到门限签名份额;对所述N-f条第二共识消息携带的门限签名份额进行合并得到针对所述投票值的可验证门限签名;
若所述N-f条第二共识消息中携带的投票值不相同,则确定本轮投票值为空,基于本地的私钥份额对所述重新确定的本轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值;
将确定的本轮投票值、门限签名份额以及可验证门限签名携带在第三共识消息中进行广播。
在执行完S401后,可以执行S402。其中S402,具体可以是:
在接收N-f条验签成功的第三共识消息的情况下,确定本轮公共抛币值,若所述N-f条第三共识消息中携带的投票值相同,则确定所述N-f条第三共识消息所携带的投票值为共识结果。其中,公共抛币值,只有0或1两种值,各个共识节点可以在某一轮中获得相同的公共抛币值,且每一轮的抛币值是随机的,获得公共抛币值的方法可以是采用门限签名算法等方式获得,具体内容可以参照相关技术,这里不进行限定。
例如,接收到的N-f条合法第三共识消息confr()中携带的投票值均相同,为优先投票值1,或者其他投票值0,则确定共识结果为该投票值,否则开始执行下轮共识。
可以理解的是,上述方式是共识节点中的任一正确节点所执行的方法,其他正确共识节点也在异步执行上述方法,采用上述方式,各个共识节点通过交互投票值以及门限签名份额,可以使异步环境下的分布式系统中的各个共识节点快速就优先投票值达到共识状态,每轮共识过程中,达成共识的概率为1/2,同时采用门限签名技术完成,可以使各个共识节点在每轮中执行的共识步数较少,各个共识节点只需要在首轮共识过程中广播三次共识消息,而从次轮共识开始,每轮中仅需要广播二次共识消息,提升了共识效率。同时设置优先投票值,将首轮公共抛币值置为优先投票值,可以使各个共识节点偏向于优先投票值达成共识。同时,采用上述共识方法可以保证分布式系统中的共识节点满足以下性质,即以下技术效果:有效性:在所有正确节点广播的投票值均为v、且没有再次广播其他投票值的情况下,那么所有正确节点的共识结果均为该投票值v;一致终止:在所有正确节点广播的投票值为相同值v、且没有再次广播其他投票值的情况下,那么所有正确节点均可以终止共识操作,即达成共识;共识性:如果任一个正确节点确定某一投票值v为共识结果,那么其他终止共识操作的正确节点也会确定该投票值v为共识结果;有偏有效性:如果f+1个正确节点广播投票值v,那么正确节点在终止共识时,可以确定该投票值v为共识结果;有偏终止:如果Q是正确节点的集合,其中Q1是广播了投票值1没有再次广播投票值0的正确节点的集合,Q2是广播了投票值0又再次广播了投票值1的正确节点的集合,如果
Figure BDA0003230096920000162
以及Q=Q1∪Q2,那么所有正确的节点都会达成共识;完整性:正确的节点就一个提议只达成一次共识。
在针对每个共识节点提出的共识提议达成共识之后,各个正确的共识节点会得到相同的共识结果,共识结果为1或者为0,在针对全部共识节点提出的共识提议达成共识之后,会得到包含0和1的序列。进一步即可以基于该序列执行相应的事务处理,仍以区块链网络为例,在区块链网络中,0或1用于指示是否将相应的共识提议打包成块。例如共有四个共识节点,共识节点1提出的共识提议为P1,共识节点2提出的共识提议为P2,共识节点3提出的共识提议为P3,共识节点4提出的共识提议为P4,使用上述共识方法进行共识后会分别针对P1-P4得到共识结果,进而会得到四个共识结果,组成一个01序列,例如得到的序列为(1,1,1,0),则达成的共识结果为所有节点将P1、P2以及P3打包成块存储在本地不存储P4,即各个共识节点根据共识结果对各共识提议进行了一致性处理,保证各个共识节点的数据一致性。
下面从代码实现角度对本说明书的S201-S204进行说明:
伪代码如下:
Figure BDA0003230096920000161
Figure BDA0003230096920000171
上述伪代码中:
ts2表示(n,N-f)的门限签名,即总数为n,门限位N-f的门限签名,ts2.share为节点本地生成的门限签名部分;
*符号代表任意值;
majority(vals),表示在vals数组中,超过半数的一致的数值。
每个节点在第0轮触发propose()之后,广播bval0(est0,ts2.share)消息,其中est0为协议的初始输入,ts2.share为基于est0以及协议附加信息,如协议的实例id、轮数等,该行为对所有门限签名适用,下文不再赘述)的(n,N-f)门限签名。将第0轮的公共抛币值设置为1,由此进入协议的循环。
每个节点在触发repropose()之后,直接广播bval0(*)。下文描述在第r轮的流程。
如果r=0,那么每个节点在收集到n-f个bval0()消息后开始判断。节点需要收到n-f个一致的b值才进入到下一步。收集到之后对其中收到的门限签名部分进行合并,获取sig签名;
如果r>0,那么节点判断上一轮(r-1)是否收到至少一条有效的confr-1(b,t2sig)消息(后文具体描述),及t2sig为一个可以被验证的对b的签名。如果存在,那么节点选择v=b值,并且将t2sig赋给sig。如果不存在任何一条有效的confr-1()消息,则选在上一轮的公共抛币值coinr-1作为所选择的值,并将sig设置为上一轮n-f个对b为空的conf投票的门限签名。基于上述两种情况,节点在此刻拥有了v,即选择的二进制值,以及sig及一个有效的门限签名(或空值),节点随后广播auxr(v,sig,ts2.share)消息,其中ts2.share为基于v的门限签名份额。
节点收集到n-f条auxr()消息后开始判断,其中vals为收到的auxr()消息中的二进制数值,shares为其中可被验证的门限签名份额。每个节点只会接收可被验证的auxr(b,sig,ts2.share)消息,即b若不为空。如果节点仅仅收到一个数值b,那么节点选择b作为下一步的值,同时将收到的门限签名份额合并,获取sig。如果不存在这样一个唯一的值,那么节点选择*作为值,并将sig设置为冲突的投票。在这个时刻,节点拥有了进入下一步的值v,以及对应的签名sig,节点随后广播confr(v,sig,ts2.share),ts2.share为对v的门限签名份额。
节点收集到n-f条confr()消息后与其余节点交互产生一个公共抛币(在第0轮时直接将公共抛币置为1),其后开始判断,其中vals为收到的二进制数值,shares为其中可被验证的门限签名份额。每个节点只会接收可被验证的confr(b,sig,ts2.share)消息,即b若不为,sig为一个可被验证的合并后的门限签名。如果节点只收到了一个b值,那么节点决定b。否则进入下一轮。
如图5所示,与前述一种基于门限签名的可再投票二元共识方法相对应,本说明书还提供了一种基于门限签名的可再投票二元共识装置,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为预先设置的正整数,所述装置包括:
处理模块510,用于针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
通信模块520,用于广播投票值以及对应于该投票值的门限签名份额的首轮共识消息;
所述处理模块510,还用于基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况。
在一个实施例中,所述处理模块510,还用于在首轮未得到共识结果的情况下,循环执行其他轮共识步骤,直到达到预设停止条件;
在其他轮共识中:
处理模块510,用于确定本轮投票值;
通信模块520,用于广播本轮共识消息;所述共识消息中携带本轮投票值以及所述本轮投票值的门限签名份额;
所述处理模块510,还用于基于接收到的其他共识节点广播的共识消息确定待共识提议的共识情况。
在一个实施例中,所述通信模块520,具体用于将所述初始投票值以及门限签名份额携带在首轮第一共识消息中进行广播;接收其他共识节点广播的首轮第一共识消息;
所述处理模块510,具体用于基于其他共识节点广播的首轮第一共识消息重新确定首轮投票值、门限签名份额以及得到首轮投票值的可验证门限签名;
所述通信模块520,还用于将重新确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第二共识消息中进行广播;
所述处理模块510,还用于基于其他共识节点广播的第二共识消息再次确定首轮投票值,可验证门限签名以及门限签名份额;
所述通信模块520,还用于将再次确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第三共识消息中进行广播。
在一个实施例中,所述处理模块510,具体用于在接收N-f条首轮第一共识消息的情况下,若所述N-f条首轮第一共识消息中携带的初始投票值相同,则确定所述N-f条首轮第一共识消息所携带的初始投票值为重新确定的首轮投票值;基于本地的私钥份额对所述重新确定的首轮投票值进行门限签名得到门限签名份额;对所述N-f条首轮第一共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
在一个实施例中,所述处理模块510,具体用于在接收N-f条验证成功的首轮第二共识消息的情况下,若所述N-f条首轮第二共识消息中携带的投票值相同,则确定所述N-f条首轮第二共识消息所携带的投票值为再次确定的首轮投票值;基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额;对所述N-f条首轮第二共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
在本实施例中,所述处理模块510,还用于若所述N-f条首轮第二共识消息中携带的投票值不相同,则确定首轮投票值为空,基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值。
在一个实施例中,所述处理模块510,具体用于在接收N-f条验证成功的首轮第三共识消息的情况下,将本轮公共抛币值设置为优先投票值,若所述N-f条首轮第三共识消息中携带的投票值相同,则确定所述N-f条首轮第三共识消息所携带的投票值为共识结果。
在一个实施例中,所述预设停止条件为:确定上轮共识得到共识结果、且在本轮发送第三共识消息。
在一个实施例中,所述处理模块510,具体用于确定上一轮接收到的第三共识消息中是否存在至少一条第三共识消息验签成功;若存在,则确定本轮投票值为所述验签成功的第三共识消息携带的投票值,基于本地的私钥份额对所述投票值进行门限签名得到门限签名份额,并确定本轮可验证门限签名为所述验签成功的第三共识消息中携带的可验证门限签名;
若不存在,则确定本轮投票值为上一轮的公共抛币值,基于本地的私钥份额对所述投票值进行门限签名得到门限签名份额,并将上一轮N-f个第三共识消息携带的门限签名份额进行合并得到本轮可验证门限签名。
在一个实施例中,所述通信模块520,具体同于将确定的本轮投票值、可验证门限签名以及门限签名份额携带在第二共识消息中进行广播;接收其他共识节点广播的第二共识消息;
所述处理模块510,具体用于基于其他共识节点广播的第二共识消息重新确定投票值、门限签名份额以及可验证门限签名;
所述通信模块520,具体同于将重新确定的投票值、可验证门限签名以及门限签名份额携带在本轮第三共识消息中进行广播。
在一个实施例中,所述处理模块510,具体用于在接收N-f条验证成功第二共识消息的情况下,若所述N-f条第二共识消息中携带的投票值相同,则确定所述N-f条第二共识消息所携带的投票值为再次确定的本轮投票值,基于本地的私钥份额对所述再次确定的本轮投票值进行门限签名得到门限签名份额;对所述N-f条第二共识消息携带的门限签名份额进行合并得到针对所述本轮投票值的可验证门限签名;
若所述N-f条第二共识消息中携带的投票值不相同,则确定本轮投票值为空,基于本地的私钥份额对所述再次确定的本轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值。
在一个实施例中,所述处理模块510,具体用于在接收N-f条验签成功的第三共识消息的情况下,确定本轮公共抛币值,若所述N-f条第三共识消息中携带的投票值相同,则确定所述N-f条第三共识消息所携带的投票值为共识结果。
上述设备中各个部件的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的方法。该方法至少包括上述图2所示的方法。
图6示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的方法。该方法至少包括上述图2所示的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

Claims (15)

1.一种基于门限签名的可再投票二元共识方法,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为预先设置的正整数,所述方法包括:
针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;
在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
广播携带有投票值以及对应于该投票值的门限签名份额的首轮共识消息;
基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况。
2.根据权利要求1所述的方法,其特征在于,还包括:
在首轮未得到共识结果的情况下,循环执行以下其他轮共识步骤,直到达到预设停止条件,其中其他轮共识步骤包括:
确定本轮投票值,并广播本轮共识消息;所述共识消息中携带本轮投票值以及所述本轮投票值的门限签名份额;
基于接收到的其他共识节点广播的共识消息确定所述待共识提议的共识情况。
3.根据权利要求1所述的方法,其特征在于,所述广播携带有投票值以及对应于该投票值的门限签名份额的首轮共识消息,包括:
将所述初始投票值以及门限签名份额携带在首轮第一共识消息中进行广播;
接收其他共识节点广播的首轮第一共识消息;
基于其他共识节点广播的首轮第一共识消息重新确定首轮投票值、门限签名份额以及得到首轮投票值的可验证门限签名;
将重新确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第二共识消息中进行广播;
基于其他共识节点广播的第二共识消息再次确定首轮投票值,可验证门限签名以及门限签名份额;
将再次确定的首轮投票值、可验证门限签名以及门限签名份额携带在首轮第三共识消息中进行广播。
4.根据权利要求3所述的方法,其特征在于,所述基于其他共识节点广播的首轮第一共识消息重新确定首轮投票值、门限签名份额以及得到所述重新确定的首轮投票值的可验证门限签名,包括:
在接收N-f条首轮第一共识消息的情况下,若所述N-f条首轮第一共识消息中携带的初始投票值相同,则确定所述N-f条首轮第一共识消息所携带的初始投票值为重新确定的首轮投票值;
基于本地的私钥份额对所述重新确定的首轮投票值进行门限签名得到门限签名份额;
对所述N-f条首轮第一共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
5.根据权利要求4所述的方法,其特征在于,所述基于其他共识节点广播的首轮第二共识消息再次确定首轮投票值,可验证门限签名以及门限签名份额,包括:
在接收N-f条验签成功的首轮第二共识消息的情况下,若所述N-f条首轮第二共识消息中携带的投票值相同,则确定所述N-f条首轮第二共识消息所携带的投票值为再次确定的首轮投票值;
基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额;
对所述N-f条首轮第二共识消息携带的门限签名份额进行合并得到针对所述首轮投票值的可验证门限签名。
6.根据权利要求5所述的方法,其特征在于,还包括:
若所述N-f条首轮第二共识消息中携带的投票值不相同,则确定首轮投票值为空,基于本地的私钥份额对所述再次确定的首轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值。
7.根据权利要求6所述的方法,其特征在于,基于其他共识节点广播的首轮共识消息确定所述待共识提议的共识情况,包括:
在接收N-f条验签成功的首轮第三共识消息的情况下,将本轮公共抛币值设置为优先投票值,若所述N-f条首轮第三共识消息中携带的投票值相同,则确定所述N-f条首轮第三共识消息所携带的投票值为共识结果。
8.根据权利要求2所述的方法,其特征在于,所述预设停止条件为:确定上轮共识得到共识结果、且在本轮发送第三共识消息。
9.根据权利要求2所述的方法,其特征在于,所述确定本轮投票值,包括:
确定上一轮接收到的第三共识消息中是否存在至少一条第三共识消息验签成功;若存在,则确定本轮投票值为所述验签成功的第三共识消息携带的投票值,基于本地的私钥份额对所述投票值进行门限签名得到门限签名份额,并确定本轮可验证门限签名为所述验签成功的第三共识消息中携带的可验证门限签名;
若不存在,则确定本轮投票值为上一轮的公共抛币值,基于本地的私钥份额对所述投票值进行门限签名得到门限签名份额,并将上一轮N-f个第三共识消息携带的门限签名份额进行合并得到本轮可验证门限签名。
10.根据权利要求9所述的方法,其特征在于,所述广播本轮共识消息,包括:
将确定的本轮投票值、可验证门限签名以及门限签名份额携带在本轮第二共识消息中进行广播;
接收其他共识节点广播的本轮第二共识消息;
基于其他共识节点广播的本轮第二共识消息重新确定投票值、门限签名份额以及可验证门限签名;
将重新确定的投票值、可验证门限签名以及门限签名份额携带在本轮第三共识消息中进行广播。
11.根据权利要求10所述的方法,其特征在于,所述基于其他共识节点广播的第二共识消息重新确定投票值、门限签名份额以及可验证门限签名,包括:
在接收N-f条验签成功的第二共识消息的情况下,若所述N-f条第二共识消息中携带的投票值相同,则确定所述N-f条第二共识消息所携带的投票值为重新确定的投票值,基于本地的私钥份额对所述重新确定的投票值进行门限签名得到门限签名份额;对所述N-f条第二共识消息携带的门限签名份额进行合并得到针对所述本轮投票值的可验证门限签名;
若所述N-f条第二共识消息中携带的投票值不相同,则确定本轮投票值为空,基于本地的私钥份额对所述重新确定的本轮投票值进行门限签名得到门限签名份额,并将可验证门限签名的值设置为接收到的多种不同的投票值。
12.根据权利要求11所述的方法,其特征在于,所述基于接收到的其他共识节点广播的共识消息确定所述待共识提议的共识情况,包括:
在接收N-f条验签成功的第三共识消息的情况下,确定本轮公共抛币值,若所述N-f条第三共识消息中携带的投票值相同,则确定所述N-f条第三共识消息所携带的投票值为共识结果。
13.一种基于门限签名的可再投票二元共识装置,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为预先设置的正整数,所述装置包括:
处理模块,用于针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
基于本地的私钥份额对初始投票值进行门限签名得到门限签名份额;所述门限签名的门限为2f+1;
通信模块,用于广播携带有所述初始投票值以及门限签名份额的首轮共识消息;
所述处理模块,还用于基于其他共识节点广播的首轮共识消息,得到共识结果。
14.一种计算机设备,其特征在于,包括存储器、处理器、通信接口及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至12任一项所述的方法。
CN202110984380.7A 2021-08-25 2021-08-25 一种基于门限签名的可再投票二元共识方法及装置 Pending CN113783946A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110984380.7A CN113783946A (zh) 2021-08-25 2021-08-25 一种基于门限签名的可再投票二元共识方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110984380.7A CN113783946A (zh) 2021-08-25 2021-08-25 一种基于门限签名的可再投票二元共识方法及装置

Publications (1)

Publication Number Publication Date
CN113783946A true CN113783946A (zh) 2021-12-10

Family

ID=78839111

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110984380.7A Pending CN113783946A (zh) 2021-08-25 2021-08-25 一种基于门限签名的可再投票二元共识方法及装置

Country Status (1)

Country Link
CN (1) CN113783946A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114374704A (zh) * 2021-12-29 2022-04-19 张海滨 可靠广播方法、装置、系统及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110246038A (zh) * 2019-04-26 2019-09-17 众安信息技术服务有限公司 一种区块链交易快速确认方法及系统
CN111988137A (zh) * 2020-07-11 2020-11-24 浙江工商大学 一种基于门限签名和公平奖励的DPoS共识方法及其系统
CN112689848A (zh) * 2019-06-28 2021-04-20 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN112994891A (zh) * 2019-12-18 2021-06-18 中国移动通信集团浙江有限公司 一种基于门限签名的交易请求共识方法和系统
US20210256016A1 (en) * 2018-06-25 2021-08-19 Commonwealth Scientific And Industrial Research Organisation Blockchain system and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210256016A1 (en) * 2018-06-25 2021-08-19 Commonwealth Scientific And Industrial Research Organisation Blockchain system and method
CN110246038A (zh) * 2019-04-26 2019-09-17 众安信息技术服务有限公司 一种区块链交易快速确认方法及系统
CN112689848A (zh) * 2019-06-28 2021-04-20 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN112994891A (zh) * 2019-12-18 2021-06-18 中国移动通信集团浙江有限公司 一种基于门限签名的交易请求共识方法和系统
CN111988137A (zh) * 2020-07-11 2020-11-24 浙江工商大学 一种基于门限签名和公平奖励的DPoS共识方法及其系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114374704A (zh) * 2021-12-29 2022-04-19 张海滨 可靠广播方法、装置、系统及介质
CN114374704B (zh) * 2021-12-29 2023-07-07 张海滨 可靠广播方法、装置、系统及介质

Similar Documents

Publication Publication Date Title
CN113783935B (zh) 一种拜占庭容错方法及装置
CN113794694B (zh) 一种基于可靠广播的二元共识方法及装置
CN107566124B (zh) 基于哈希运算的共识建立方法、区块链系统及存储介质
CN109936457B (zh) 区块链多方见证方法、装置、设备及计算机可读存储介质
KR102469267B1 (ko) 블록 체인 합의 방법, 어카운팅 노드 및 노드
CN113810465B (zh) 一种异步二元共识方法及装置
CN113783708A (zh) 一种基于可靠广播的可再投票二元共识方法及装置
CN112199382B (zh) 在联盟链网络中创建节点组、基于节点组的交易方法
CN111163130B (zh) 一种网络服务系统及其数据传输方法
CN110020854B (zh) 一种基于多个区块链网络的数据存证方法及系统
CN113794576B (zh) 一种可再投票的二元共识方法及装置
CN114070733B (zh) 一种基于区块链网络的共识方法、装置及系统
CN111985007A (zh) 一种基于区块链的合同签署与执行方法及装置
CN111401904B (zh) 联盟链中的共识方法和系统
CN113783946A (zh) 一种基于门限签名的可再投票二元共识方法及装置
CN113556238B (zh) 区块验证方法
CN113794566B (zh) 一种可再投票的二元共识方法、装置、及存储介质
CN113935737A (zh) 基于区块链的随机数生成方法及装置
CN112994891B (zh) 一种基于门限签名的交易请求共识方法和系统
CN112202765A (zh) 基于可信计算的区块链共识出块方法、装置及相关产品
CN116257882A (zh) 投票方法、系统、电子设备及存储介质
CN114422125B (zh) 秘密数据共享、密钥生成方法及分布式系统
CN112131602B (zh) 基于可信计算进行节点间信任关系快速扩展的方法、装置及相关产品
CN111884808B (zh) 一种防止交易跨链重放的方法、装置及电子设备
CN112633893A (zh) 一种区块链的回滚方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination