发明内容
本申请的主要目的在于提供一种共识方法、装置、设备及可读存储介质,旨在解决现有共识机制计算量大的技术问题。
为实现上述目的,本申请提供了一种共识方法,包括:
若当前区块高度符合预设共识条件,则将加入当前交易信息公证池的节点确定为目标节点;
分别获取每个目标节点对应的第一参数;第一参数是每个目标节点利用VRF随机函数对自身私钥和公开随机数处理得到的随机数;
将第一参数符合预设验证条件的目标节点确定为验证节点;
根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点。
优选地,将加入当前交易信息公证池的节点确定为目标节点,包括:
将以代币质押方式加入当前交易信息公证池的节点确定为目标节点。
优选地,将第一参数符合预设验证条件的目标节点确定为验证节点包括:
确定所有目标节点的数量,并计算预设验证节点的数量与所有目标节点的数量的比值;
根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数;
将第二参数小于比值的目标节点确定为验证节点。
优选地,根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点之前,还包括:
在当前区块链网络中确定中转节点;
利用中转节点收集各个验证节点根据自身对应的第一参数计算得到的隐藏参数,并将收集有所有隐藏参数的第一列表广播至各个验证节点,以使各个验证节点发送自身对应的第一参数,根据自身私钥计算得到的当前交易信息的VRF证明,以及计算隐藏参数所用的随机数;
利用中转节点收集各个验证节点发送的第一参数、当前交易信息的VRF证明,以及计算隐藏参数所用的随机数,并将收集有所有第一参数,所有VRF证明,以及所有计算隐藏参数所用的随机数的第二列表广播至各个验证节点,以使各个验证节点验证每个隐藏参数和每个VRF证明。
优选地,各个验证节点根据自身对应的第一参数计算隐藏参数,包括:
各个验证节点按照预设第一公式计算隐藏参数,预设第一公式为:
i为各个验证节点的标识,C
i表示验证节点i根据自身对应的第一参数r
i计算得到的隐藏参数,g、h和n均为系统参数,j为随机数。
优选地,还包括:
若各个验证节点在预设第一时间段内未接收到第一列表,或在预设第二时间段内未接收到第二列表,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
优选地,根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点,包括:
获取各个验证节点按照预设第二公式计算得到的第三参数;
在所有第三参数中确定最大第三参数,并将最大第三参数对应的验证节点确定为执行节点;
其中,预设第二公式为:
其中,i为各个验证节点的标识,a和b预设系数;Oi表示验证节点i对应的第三参数;Pi表示验证节点i质押的代币数量,Pmax表示质押代币数量最多的验证节点质押的代币数量;φi表示验证节点i对应的第二参数,r表示验证节点i对应的第一参数,max表示验证节点i对应的第一参数对应的目标值。
优选地,将最大第三参数对应的验证节点确定为执行节点之前,还包括:
若最大第三参数存在多个,则将最大第三参数确定为目标参数;
分别计算每个目标参数对应的哈希值;
在所有哈希值中确定最大哈希值,并将最大哈希值对应的目标参数确定为最大第三参数。
优选地,执行节点打包当前交易信息,包括:
执行节点将当前交易信息和当前交易信息的所有VRF证明打包为区块,并将区块广播至当前区块链网络中的所有节点。
优选地,将区块广播至当前区块链网络中的所有节点之后,还包括:
若当前区块链网络中的所有节点在预设第三时间段内未接收到区块,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
优选地,根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数,包括:
针对任一个目标节点对应的第一参数,确定当前第一参数所属数制的位数;
将数制中具有位数的最大数值确定为当前第一参数对应的目标值;
将当前第一参数与目标值的比值确定为目标节点对应的第二参数。
为实现上述目的,本申请进一步提供了一种共识装置,包括:
第一确定模块,用于若当前区块高度符合预设共识条件,则将加入当前交易信息的公证池的节点确定为目标节点;
获取模块,用于分别获取每个目标节点对应的第一参数;第一参数是每个目标节点利用VRF随机函数对自身私钥和公开随机数处理得到的随机数;
第二确定模块,用于将第一参数符合预设验证条件的目标节点确定为验证节点;
第三确定模块,用于根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点。
优选地,第一确定模块具体用于:
将以代币质押方式加入当前交易信息公证池的节点确定为目标节点。
优选地,第二确定模块包括:
第一计算单元,用于确定所有目标节点的数量,并计算预设验证节点的数量与所有目标节点的数量的比值;
第二计算单元,用于根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数;
验证节点确定单元,用于将第二参数小于比值的目标节点确定为验证节点。
优选地,还包括:
第四确定模块,用于在当前区块链网络中确定中转节点;
第一收集模块,用于利用中转节点收集各个验证节点根据自身对应的第一参数计算得到的隐藏参数,并将收集有所有隐藏参数的第一列表广播至各个验证节点,以使各个验证节点发送自身对应的第一参数,根据自身私钥计算得到的当前交易信息的VRF证明,以及计算隐藏参数所用的随机数;
第二收集模块,用于利用中转节点收集各个验证节点发送的第一参数、当前交易信息的VRF证明,以及计算隐藏参数所用的随机数,并将收集有所有第一参数,所有VRF证明,以及所有计算隐藏参数所用的随机数的第二列表广播至各个验证节点,以使各个验证节点验证每个隐藏参数和每个VRF证明。
优选地,第一收集模块具体用于:
各个验证节点按照预设第一公式计算隐藏参数,预设第一公式为:
i为各个验证节点的标识,C
i表示验证节点i根据自身对应的第一参数r
i计算得到的隐藏参数,g、h和n均为系统参数,j为随机数。
优选地,还包括:
第一容错模块,用于若各个验证节点在预设第一时间段内未接收到第一列表,或在预设第二时间段内未接收到第二列表,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
优选地,第三确定模块包括:
获取单元,用于获取各个验证节点按照预设第二公式计算得到的第三参数;
第一确定单元,用于在所有第三参数中确定最大第三参数,并将最大第三参数对应的验证节点确定为执行节点;
其中,预设第二公式为:
其中,i为各个验证节点的标识,a和b预设系数;Oi表示验证节点i对应的第三参数;Pi表示验证节点i质押的代币数量,Pmax表示质押代币数量最多的验证节点质押的代币数量;φi表示验证节点i对应的第二参数,r表示验证节点i对应的第一参数,max表示验证节点i对应的第一参数对应的目标值。
优选地,第三确定模块还包括:
第二确定单元,用于若最大第三参数存在多个,则将最大第三参数确定为目标参数;
第三计算单元,用于分别计算每个目标参数对应的哈希值;
第三确定单元,用于在所有哈希值中确定最大哈希值,并将最大哈希值对应的目标参数确定为最大第三参数。
优选地,第三确定模块具体用于:
使执行节点将当前交易信息和当前交易信息的所有VRF证明打包为区块,并将区块广播至当前区块链网络中的所有节点。
优选地,还包括:
第二容错模块,用于若当前区块链网络中的所有节点在预设第三时间段内未接收到区块,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
为实现上述目的,本申请进一步提供了一种共识设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的共识方法。
为实现上述目的,本申请进一步提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的共识方法。
在本申请中,若当前区块高度符合预设共识条件,也就是达到当前区块链网络预设的共识触发条件时,当前区块链网络中的各个节点自由加入当前交易信息的公证池,此时将加入公证池的节点确定为目标节点,这些目标节点即为想要对当前交易信息进行打包的节点。加入公证池的这些目标节点各自利用VRF随机函数对自身私钥和公开随机数处理,从而可得到自身对应的第一参数;若第一参数符合预设验证条件,则目标节点有可能对当前交易信息进行打包,此时将有可能对当前交易信息进行打包的节点确定为验证节点。进一步地,根据每个验证节点对应的第一参数,可在所有验证节点中确定执行节点,而该执行节点即为负责出块当前交易信息的节点。由此过程通过层层选拔,可在区块链网络中为交易信息确定负责出块的执行节点,从而完成当前交易信息的入块。
其中,加入公证池的目标节点各自利用VRF随机函数对自身私钥和公开随机数处理得到第一参数,可满足共识机制的去中心化、公平性和随机性;并且,VRF随机函数对于任意输入,都会存在对应的输出,且该输出具备可公开验证性,因此目标节点计算得到的第一参数具备可公开验证性,也就是能够被其他节点公开验证,即满足去中心化的共识和安全性。同时,VRF随机函数相比于现有的POW共识机制,其验证计算量远小于Hash运算,因此可降低共识方法的计算量,避免计算机资源的浪费。
相应地,本申请提供的一种共识装置、设备及可读存储介质,也同样具有上述技术效果。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
参见图1,图1为本申请实施例公开的第一种共识方法流程图。在一实施例中,该方法包括:
S101、若当前区块高度符合预设共识条件,则将加入当前交易信息公证池的节点确定为目标节点;
在一种具体实施方式中,将加入当前交易信息公证池的节点确定为目标节点,包括:将以代币质押方式加入当前交易信息公证池的节点确定为目标节点。以代币质押方式加入公证池,可增加验证交易信息的成本,从而可有效防止女巫攻击。
在本实施例中,网络中的各个节点可通过代币质押方式自由参与共识,整个过程公平公开,具备共识机制的去中心化和公平性。
需要说明的是,预设共识条件为区块链网络中设置的共识流程的触发条件,一般为:当区块链网络中的区块高度达到某个数值时,触发共识流程,即执行“将加入当前交易信息公证池的节点确定为目标节点”步骤。如:当区块链网络中的区块高度为10、20、30、40……时,触发本实施例中的S101的执行。当然,预设共识条件可根据实际情况灵活调整,具体可参照现有技术中的相关设置。一般是周期性触发,若每个区块高度都触发,将会增加无谓的计算开销。
S102、分别获取每个目标节点对应的第一参数;
其中,第一参数是每个目标节点利用VRF(verifiable random function,可验证随机函数)随机函数对自身私钥和公开随机数处理得到的可验证的随机数。第一参数的具体计算过程可参见现有技术中VRF随机函数的算法原理,为避免累赘,在此不再赘述。
S103、将第一参数符合预设验证条件的目标节点确定为验证节点;
S104、根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点。
需要说明的是,本实施例中所说的共识流程主要包括对负责出块的执行节点的确定流程,区块链系统中的各验证人节点对区块所打包交易的验证并不是本文说明的重点;执行节点确定之后,在下一个新的执行节点确定之前,都负责该周期内的区块的出块。
在本实施例中,若当前区块高度符合预设共识条件,也就是达到当前区块链网络预设的共识触发条件(如当前区块高度为H)时,当前区块链网络中的各个节点自由加入当前交易信息的公证池,此时将加入公证池的节点确定为目标节点,这些目标节点即为想要对当前交易信息进行打包的节点。可以理解的是,若共识触发条件为当前区块高度为H,那么当前共识方法打包得到的区块即为H。
加入公证池的这些目标节点各自利用VRF随机函数对自身私钥和公开随机数处理,从而可得到自身对应的第一参数;若第一参数符合预设验证条件,则目标节点有可能对当前交易信息进行打包,此时将有可能对当前交易信息进行打包的节点确定为验证节点。进一步地,根据每个验证节点对应的第一参数,可在所有验证节点中确定执行节点,而该执行节点即为对当前交易信息进行打包的节点,故执行节点打包当前交易信息。由此过程通过层层选拔,可在区块链网络中为交易信息确定打包的执行节点,从而完成当前交易信息的入块。
需要说明的是,任意一个节点均可以利用VRF随机函数产生一对密钥,即公钥和私钥。并且,可利用VRF随机函数对自身私钥和任意输入进行处理,从而获得当前输入的VRF证明;而任意第三方均可以利用与私钥对应的公钥对该VRF证明进行验证。因此VRF随机函数既具备数学上的严谨性,又具备安全性和随机性。故而各个目标节点利用VRF随机函数对自身私钥和公开随机数处理得到的第一参数既具备数学上的严谨性,又具备安全性和随机性。VRF随机函数的随机性,也可以有效防止女巫攻击。
请参见图2,图2为图1中S103步骤的细化流程图。图1中的S103的具体实现步骤包括:
S201、确定所有目标节点的数量,并计算预设验证节点的数量与所有目标节点的数量的比值;
S202、根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数;
S203、将第二参数小于比值的目标节点确定为验证节点。
具体的,预设验证节点的数量即为当前区块链网络中设置的可以对一个交易信息进行验证的节点数量,该数量设置后为定值,但可以根据实际情况灵活调整。若所有目标节点的数量为N,而预设验证节点的数量为M,那么其比值为M/N。
在一种具体实施方式中,根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数,包括:针对任一个目标节点对应的第一参数,确定当前第一参数所属数制的位数;将数制中具有位数的最大数值确定为当前第一参数对应的目标值;将当前第一参数与目标值的比值确定为目标节点对应的第二参数。
也就是说,计算每个目标节点对应的第二参数,可按照下述公式进行计算:
其中,φi表示验证节点i对应的第二参数,r表示验证节点i对应的第一参数,max表示验证节点i对应的第一参数r对应的目标值。若第一参数r为二进制数,若第一参数r为两位的二进制数,那么max即为“二进制数11”;若第一参数r为8位的二进制数,那么max即为“二进制数11111111”。
其中,若目标节点对应的第二参数小于比值,则表明目标节点对应的第一参数符合预设验证条件,也就是目标节点可以为当前交易的验证节点,否则目标节点对应的第一参数不符合预设验证条件,目标节点就不能参与当前交易的验证。
在本实施例中,加入公证池的目标节点各自利用VRF随机函数对自身私钥和公开随机数处理得到第一参数,可满足共识机制的去中心化、公平性和随机性;并且,VRF随机函数对于任意输入,都会存在对应的输出,且该输出具备可公开验证性,因此目标节点计算得到的第一参数具备可公开验证性,也就是能够被其他节点公开验证,即满足去中心化的共识和安全性。同时,VRF随机函数相比于现有的POW共识机制,其验证计算量远小于Hash运算,因此可降低共识方法的计算量,避免计算机资源的浪费。
参见图3,图3为本申请实施例公开的第二种共识方法流程图。在二实施例中,该方法包括:
S301、若当前区块高度符合预设共识条件,则将加入当前交易信息公证池的节点确定为目标节点;
S302、分别判断每个目标节点对应的第一参数是否符合预设验证条件;若是,则执行S304;若否,则执行S303;
其中,第一参数是每个目标节点利用VRF随机函数对自身私钥和公开随机数处理得到的随机数。
S303、从当前交易信息公证池中删除第一参数不符合预设验证条件的目标节点;
S304、将第一参数符合预设验证条件的目标节点确定为验证节点;
S305、在当前区块链网络中确定中转节点;
S306、利用中转节点收集各个验证节点根据自身对应的第一参数计算得到的隐藏参数,并将收集有所有隐藏参数的第一列表广播至各个验证节点,以使各个验证节点发送自身对应的第一参数,根据自身私钥计算得到的当前交易信息的VRF证明,以及计算隐藏参数所用的随机数;
在本实施例中,各个验证节点根据自身对应的第一参数计算隐藏参数,包括:各个验证节点按照预设第一公式计算隐藏参数,预设第一公式为:
i为各个验证节点的标识,C
i表示验证节点i根据自身对应的第一参数r
i计算得到的隐藏参数,g、h和n均为系统参数,j为随机数。
具体的,首先收集并广播隐藏参数,可以提高安全性。隐藏参数C即为一个验证节点公布其拥有第一参数r的承诺,而后可证明第一参数r与隐藏参数C匹配。通过隐藏参数C不能反推出第一参数r,因此使用隐藏参数C可使中转节点在收集第一列表后,确定各个验证节点对应的第一参数r,从而使各个验证节点或其他节点无从作恶。
在一种具体实施方式中,中转节点为提出当前交易的节点。例如:区块链网络中的节点A提出区块H对应的交易信息,且区块高度H符合当前网络中的预设共识条件,则触发共识流程。对节点A提出的交易信息完成共识流程后,将会得到区块H,该共识流程中的中转节点即为节点A。
S307、利用中转节点收集各个验证节点发送的第一参数、当前交易信息的VRF证明,以及计算隐藏参数所用的随机数,并将收集有所有第一参数,所有VRF证明,以及所有计算隐藏参数所用的随机数的第二列表广播至各个验证节点,以使各个验证节点验证每个隐藏参数和每个VRF证明。
需要说明的是,当中转节点收集所有验证节点对应的隐藏参数后,可保障各个验证节点对应的第一参数不被更改,因此可提高安全性。进而中转节点可转发各个验证节点发送的第一参数和对当前交易信息的VRF证明,以便完成每个隐藏参数和每个VRF证明的验证操作。其中,由于隐藏参数的计算过程需要用到随机数j,那么隐藏参数的验证操作必然也需要用到随机数j,因此各个验证节点向中转节点发送第一参数和当前交易信息的VRF证明时,还同时发送了计算隐藏参数所用的随机数j。
S308、根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点。
其中,为了提高共识方法的容错率,本实施例还包括:若各个验证节点在预设第一时间段内未接收到第一列表,或在预设第二时间段内未接收到第二列表,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
也就是说,若各个验证节点在预设第一时间段内未接收到第一列表,或在预设第二时间段内未接收到第二列表,则表明当前共识流程出现故障,因此按照本实施例提供的方法重新进行共识。当重新进行共识时,中转节点会更换。例如:当前中转节点为NH,若共识流程出现故障,则重新进行共识时,中转节点会更改为NH-1。
请参见图4,图4为图3中S308步骤的细化流程图。图3中的S308的具体实现步骤包括:
S401、获取各个验证节点按照预设第二公式计算得到的第三参数;
在本实施例中,预设第二公式为:
其中,i为各个验证节点的标识,a和b预设系数;Oi表示验证节点i对应的第三参数;Pi表示验证节点i质押的代币数量,Pmax表示质押代币数量最多的验证节点质押的代币数量;φi表示验证节点i对应的第二参数,r表示验证节点i对应的第一参数,max表示验证节点i对应的第一参数对应的目标值。
具体的,a可取值为0.8,b可取值为0.2。当然,a和b的取值可以根据实际应用情况灵活调整,其中a+b=1,a和b可看作权重,数值越大,则与其相乘的参数所占的比重越大。当b为0时,完全取决于VRF随机数结果;当a为0时,完全取决于质押的代币数量。通过调节a和b的取值,可以调节质押代币数量的占比,从而可鼓励或压制竞选节点质押代币,达到调节代币流通的目的。
S402、在所有第三参数中确定最大第三参数,若最大第三参数存在多个,则将最大第三参数确定为目标参数;
S403、分别计算每个目标参数对应的哈希值;
具体的,每个目标参数对应的哈希值可以根据目标参数对应的验证节点的ID和公开随机数确定,也就是对目标参数对应的验证节点的ID和公开随机数进行哈希运算,以获得目标参数对应的哈希值。这里的公开随机数即用于计算第一参数的公开随机数。
S404、在所有哈希值中确定最大哈希值,并将最大哈希值对应的目标参数确定为最大第三参数;
S405、将最大第三参数对应的验证节点确定为执行节点,以使执行节点打包当前交易信息。
可以理解的是,由于图3中的S308步骤和图1中的S104步骤相同,因此图4也是图1中S104步骤的细化流程图。按照图4提供的方法,最终可确定出唯一的执行节点来打包当前交易信息。这样共识流程在执行过程中不会分叉,从而可提高区块链网络的稳定性。
具体的,执行节点打包当前交易信息,包括:执行节点将当前交易信息和当前交易信息的所有VRF证明打包为区块,并将区块广播至当前区块链网络中的所有节点。当前交易信息的所有VRF证明包括:各个验证节点利用VRF随机函数对自身私钥和当前交易信息进行处理得到的VRF证明。
其中,为了提高共识方法的容错率,将区块广播至当前区块链网络中的所有节点之后,还包括:若当前区块链网络中的所有节点在预设第三时间段内未接收到区块,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
也就是说,若所有节点在预设第三时间段内未接收到区块,则表明当前共识流程出现故障,因此按照本实施例提供的方法重新进行共识。当重新进行共识时,中转节点会更换。例如:当前中转节点为NH,若共识流程出现故障,则重新进行共识时,中转节点会更改为NH-1。
需要说明的是,本实施例中的其他实现步骤与上述实施例相同或类似,故本实施例在此不再赘述。
由上可见,本实施例可满足共识机制的去中心化、公平性、随机性和可公开验证性,也满足去中心化的共识和安全性。同时,VRF随机函数还可以降低共识方法的计算量,避免计算机资源的浪费。
下面对本申请实施例提供的一种共识装置进行介绍,下文描述的一种共识装置与上文描述的一种共识方法可以相互参照。
参见图5,图5为本申请实施例公开的一种共识装置示意图。在三实施例中,该装置包括:
第一确定模块501,用于若当前区块高度符合预设共识条件,则将加入当前交易信息的公证池的节点确定为目标节点;
获取模块502,用于分别获取每个目标节点对应的第一参数;第一参数是每个目标节点利用VRF随机函数对自身私钥和公开随机数处理得到的随机数;
第二确定模块503,用于将第一参数符合预设验证条件的目标节点确定为验证节点;
第三确定模块504,用于根据每个验证节点对应的第一参数在所有验证节点中确定负责出块的执行节点。
在一种具体实施方式中,第一确定模块具体用于:
将以代币质押方式加入当前交易信息公证池的节点确定为目标节点。
在一种具体实施方式中,第二确定模块包括:
第一计算单元,用于确定所有目标节点的数量,并计算预设验证节点的数量与所有目标节点的数量的比值;
第二计算单元,用于根据每个目标节点对应的第一参数分别计算每个目标节点对应的第二参数;
验证节点确定单元,用于将第二参数小于比值的目标节点确定为验证节点。
在一种具体实施方式中,还包括:
第四确定模块,用于在当前区块链网络中确定中转节点;
第一收集模块,用于利用中转节点收集各个验证节点根据自身对应的第一参数计算得到的隐藏参数,并将收集有所有隐藏参数的第一列表广播至各个验证节点,以使各个验证节点发送自身对应的第一参数,根据自身私钥计算得到的当前交易信息的VRF证明,以及计算隐藏参数所用的随机数;
第二收集模块,用于利用中转节点收集各个验证节点发送的第一参数、当前交易信息的VRF证明,以及计算隐藏参数所用的随机数,并将收集有所有第一参数,所有VRF证明,以及所有计算隐藏参数所用的随机数的第二列表广播至各个验证节点,以使各个验证节点验证每个隐藏参数和每个VRF证明。
在一种具体实施方式中,第一收集模块具体用于:
各个验证节点按照预设第一公式计算隐藏参数,预设第一公式为:
i为各个验证节点的标识,C
i表示验证节点i根据自身对应的第一参数r
i计算得到的隐藏参数,g、h和n均为系统参数,j为随机数。
在一种具体实施方式中,还包括:
第一容错模块,用于若各个验证节点在预设第一时间段内未接收到第一列表,或在预设第二时间段内未接收到第二列表,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
在一种具体实施方式中,第三确定模块包括:
获取单元,用于获取各个验证节点按照预设第二公式计算得到的第三参数;
第一确定单元,用于在所有第三参数中确定最大第三参数,并将最大第三参数对应的验证节点确定为执行节点;
其中,预设第二公式为:
其中,i为各个验证节点的标识,a和b预设系数;Oi表示验证节点i对应的第三参数;Pi表示验证节点i质押的代币数量,Pmax表示质押代币数量最多的验证节点质押的代币数量;φi表示验证节点i对应的第二参数,r表示验证节点i对应的第一参数,max表示验证节点i对应的第一参数对应的目标值。
在一种具体实施方式中,第三确定模块还包括:
第二确定单元,用于若最大第三参数存在多个,则将最大第三参数确定为目标参数;
第三计算单元,用于分别计算每个目标参数对应的哈希值;
第三确定单元,用于在所有哈希值中确定最大哈希值,并将最大哈希值对应的目标参数确定为最大第三参数。
在一种具体实施方式中,第三确定模块具体用于:
使执行节点将当前交易信息和当前交易信息的所有VRF证明打包为区块,并将区块广播至当前区块链网络中的所有节点。
在一种具体实施方式中,还包括:
第二容错模块,用于若当前区块链网络中的所有节点在预设第三时间段内未接收到区块,则执行将加入当前交易信息公证池的节点确定为目标节点的步骤。
在一种具体实施方式中,第二计算单元具体用于:
针对任一个目标节点对应的第一参数,确定当前第一参数所属数制的位数;
将数制中具有位数的最大数值确定为当前第一参数对应的目标值;
将当前第一参数与目标值的比值确定为目标节点对应的第二参数。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种共识装置,该装置利用VRF随机函数满足了共识机制的去中心化、公平性、随机性和公开验证性;并降低了共识方法的计算量,避免了计算机资源的浪费。
下面对本申请实施例提供的一种共识设备进行介绍,下文描述的一种共识设备与上文描述的一种共识方法及装置可以相互参照。
参见图6,图6为本申请实施例公开的一种共识设备示意图。在四实施例中,该设备包括:
存储器601,用于保存计算机程序;
处理器602,用于执行所述计算机程序,以实现上述任意实施例公开的共识方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
参见图7,图7为本申请实施例公开的另一种共识设备示意图。该共识设备可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是共识设备的内部存储单元,例如该共识设备的硬盘。存储器11在另一些实施例中也可以是共识设备的外部存储设备,例如共识设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器11还可以既包括共识设备的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于共识设备的应用软件及各类数据,例如共识程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行共识程序等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,共识设备还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
可选地,该设备还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在该设备中处理的信息以及用于显示可视化的用户界面。
图7仅示出了具有组件11-13的共识设备,本领域技术人员可以理解的是,图7示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种共识方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的共识方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。