基于去中心化可验证延迟函数生成随机数的方法及系统
技术领域
本文件涉及区块链
技术领域
,尤其涉及一种基于去中心化可验证延迟函数生成随机数的方法及系统。背景技术
区块链,是利用分布式账本技术解决多方信任问题的去中心化创新性的解决方案,是当前社会的前沿技术。
在区块链领域产生随机数是一种关键技术,各种共识算法的本质就是随机选择出块人的问题,这种随机性要被全网节点验证,并且不能被操控。
然而,目前的共识算法仍残存中心化设置的问题,无法保证绝对的去中心化效果,为此,亟需找到一种新的随机数生成方案以解决中心化设置的缺陷。
发明内容
本说明书一个或多个实施例的目的是提供一种基于去中心化可验证延迟函数生成随机数的方法及系统,以通过分布式的模数确定的模数参数,保证可验证延迟函数以去中心化的方式生成随机数。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
第一方面,提出了一种基于去中心化可验证延迟函数生成随机数的方法,应用于包含多个用户节点的区块链系统,所述方法包括:
所述多个用户节点基于选取的多个RSA模数确定模数参数,以及,确定至少一个出块时间为时间参数,并将所述模数参数和所述时间参数作为公开参数写入激励合约;
基于所述激励合约规定的区块高度开始,每隔预设数目的区块:每个用户节点使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数;
最先计算出随机数的用户节点将计算结果和证明发送给所述激励合约进行验证,并在验证通过后,将该用户节点计算的随机数作为本次生成的随机数。
第二方面,提出了一种基于去中心化可验证延迟函数生成随机数的系统,包含多个用户节点,其中,
所述多个用户节点基于选取的多个RSA模数确定模数参数,以及,确定至少一个出块时间为时间参数,并将所述模数参数和所述时间参数作为公开参数写入激励合约;
基于所述激励合约规定的区块高度开始,每隔预设数目的区块:每个用户节点使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数;
最先计算出随机数的用户节点将计算结果和证明发送给所述激励合约进行验证,并在验证通过后,将该用户节点计算的随机数作为本次生成的随机数。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行所述的用户节点所执行的方法步骤。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述的方法步骤:
由以上本说明书一个或多个实施例提供的技术方案可见,区块链网络中的用户节点在使用VDF产生随机数时,可基于选取的多个RSA模数确定激励合约中作为公开参数的模数参数,这样,激励合约中模数并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对一个或多个实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例所涉及的场景架构示意图。
图2是本说明书实施例提供的一种基于去中心化可验证延迟函数生成随机数的方法的步骤示意图。
图3是本说明书的一个实施例提供的基于去中心化可验证延迟函数生成随机数的系统结构示意图。
图4是本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的一个或多个实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
应理解,目前使用最广泛的工作量证明PoW类共识算法是通过设置一个哈希难题让大家计算,谁先算出来谁有出块权,算力高的人胜出的概率大,这种方式可以保证出块者是随机选择的,并且这种随机性能通过全网验证。然而这种随机数生成方案有两个缺点,一是算力竞争会带来巨大的电力消耗,造成资源浪费;二是由于矿机和矿池的出现普通人很难参与挖矿过程,有损去中心化程度。为了解决这两个问题,出现了以权益证明PoS为代表的其它共识算法,然而这些共识算法仍需要集中某类资源,依然存在去中心化不彻底的问题。
这样,本申请引入了可验证延迟函数VDF,事实上,VDF是指可以通过计算一个函数来产生一个随机数,这个计算过程需要消耗一定的时间,并且不能通过并行计算来加快这个计算过程,计算的结果是可验证并且容易验证的。本申请中,区别于现有技术的中心化设置的VDF,通过对VDF使用的激励合约中的公开参数内模数参数的分布式处理,保证VDF生成随机数的方案是基于去中心化实现的。
参照图1所示,为本说明书实施例所涉及的场景架构,该场景架构可用于基础的共识场景,进一步可以使用在随机数生成场景下。该场景下多个用户节点A参与区块链网络B的共识,在共识过程中最先计算出VDF结果的用户节点将计算结果与证明发给激励合约进行验证,并在验证通过后作为本次生成的随机数。
下面通过具体的实施例来详述本申请改进方案的具体内容。
实施例一
参照图2所示,为本说明书实施例提供的一种基于去中心化可验证延迟函数生成随机数的方法的步骤示意图,应用于包含多个用户节点的区块链系统,所述方法可以包括以下步骤:
步骤202:所述多个用户节点基于选取的多个RSA模数确定模数参数,以及,确定至少一个出块时间为时间参数,并将所述模数参数和所述时间参数作为公开参数写入激励合约。
可选地,本申请实施例中,在多个用户节点基于选取的多个RSA模数确定模数参数时,可采用以下方式:
方式一:所述多个用户节点将选取的多个RSA模数的乘积确定为模数参数。
方式二:所述多个用户节点基于选取的多个RSA模数求平均得到模数参数。
这样,激励合约中用于计算VDF的公开参数中模数参数,并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
进一步,所述多个RSA模数是所述多个用户节点通过投票方式选取的根证书的RSA模数。由此,确定模数参数所使用的多个RSA模数是经用户节点通过投票方式选取,保证确定的多个RSA模数的随机性,从而,更贴合去中心化思想,有利于后续确定随机数。
例如,通过投票选择三个根CA证书的RSA模数N1,N2,N3,计算N=N1*N2*N3。同时,可将时间参数设置为与5个区块的出块时间相关(理论上大于一个区块的出块时间即可)。之后,将确定的模数参数N和时间参数T作为公开参数写入激励合约中。
步骤204:基于所述激励合约规定的区块高度开始,每隔预设数目的区块:每个用户节点使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数。
应理解,激励合约规定从高度为k的区块开始,每隔m个区块悬赏一个由可验证延迟函数VDF产生的随机数,每轮VDF的输入x为这个区块的哈希。
在本说明书实施例中,步骤204中每个用户节点在使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数时,具体用于使用以下公式,计算各自产生的随机数:
其中,所述N是公开参数中的模数参数,所述T是公开参数中的时间参数,所述x是用户节点对应的区块的哈希,所述y是用户节点计算产生的随机数。
可见,使用VDF计算随机数,可避免现有技术中耗费更多电力资源的问题,且通过投票方式确定的多个RSA模数确定公开参数中的模数参数,很好的解决中心化问题。
步骤206:最先计算出随机数的用户节点将计算结果和证明发送给所述激励合约进行验证,并在验证通过后,将该用户节点计算的随机数作为本次生成的随机数。
其实,步骤206可以按照现有的验证方式来实现,即通过将计算结果 和证明发送给激励合约进行结果验证,并在验证通过后给予该用户节点奖励,这样,该用户节点计算产生的y作为本次的随机源,即随机数。其中,∏是验证时所使用的证明,而μi是证明分量,在验证时通过降维的方式以减少计算量。
其实,在基于激励合约进行验证时,用户节点可向激励合约证明元组(x,y)满足用户节点先向激励合约发送然后计算激励合约计算元组(x′,y′)=(xrμ,μry),其中,r=hash((x,y),μ),如果成立,那么,成立,否则,不成立。由此,现在的时间参数已经缩小到T/2,减少了计算量,重复上述过程log(T)即可验证计算结果。
通过上述技术方案,区块链网络中的用户节点在使用VDF产生随机数时,可基于选取的多个RSA模数确定激励合约中作为公开参数的模数参数,这样,激励合约中模数并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
实施例二
参照图3所示,为本说明书实施例提供的基于去中心化可验证延迟函数生成随机数的系统,该系统300可以包括:多个用户节点302,这些用户节点可基于智能合约参与区块链网络304的交易。其中,
所述多个用户节点302基于选取的多个RSA模数确定模数参数,以及,确定至少一个出块时间为时间参数,并将所述模数参数和所述时间参数作为公开参数写入激励合约;
基于所述激励合约规定的区块高度开始,每隔预设数目的区块:每个用户节点302使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数;
最先计算出随机数的用户节点302将计算结果和证明发送给所述激励合约进行验证,并在验证通过后,将该用户节点计算的随机数作为本次生成的随机数。
可选地,作为一个实施例,所述多个用户节点在基于选取的多个RSA模数确定模数参数时,具体用于将选取的多个RSA模数的乘积确定为模数参数。
可选地,在本说明书实施例的一种具体实现方式中,所述多个用户节点在基于选取的多个RSA模数确定模数参数时,具体用于基于选取的多个RSA模数求平均得到模数参数。
可选地,在本说明书实施例的另一种具体实现方式中,所述多个RSA模数是所述多个用户节点通过投票方式选取的根证书的RSA模数。
可选地,在本说明书实施例的另一种具体实现方式中,每个用户节点在使用所述激励合约中的公开参数,基于可验证延迟函数VDF计算各自产生的随机数时,具体用于使用以下公式,计算各自产生的随机数:
其中,所述N是公开参数中的模数参数,所述T是公开参数中的时间参数,所述x是用户节点对应的区块的哈希,所述y是用户节点计算产生的随机数。
通过上述技术方案,区块链网络中的用户节点在使用VDF产生随机数时,可基于选取的多个RSA模数确定激励合约中作为公开参数的模数参数,这样,激励合约中模数并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
实施例三
图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链节点(即用户节点)。处理器,执行存储器所存放的程序,并具体用于执行图2所述的方法步骤。
上述如本说明书图2所示实施例揭示的装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图2的方法,并实现相应装置在图2所示实施例的功能,本说明书实施例在此不再赘述。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
通过上述技术方案,区块链网络中的用户节点在使用VDF产生随机数时,可基于选取的多个RSA模数确定激励合约中作为公开参数的模数参数,这样,激励合约中模数并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
实施例四
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法。
本说明书技术方案,区块链网络中的用户节点在使用VDF产生随机数时,可基于选取的多个RSA模数确定激励合约中作为公开参数的模数参数,这样,激励合约中模数并不是由单一的某个模数确定,而是由多个RSA模数通过乘积或者求平均等方式共同确定,使得计算VDF时所用的模数参数并不是中心化控制的,有效保证随机数生成方案的去中心化程度。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
上述一个或多个实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括″、″包含″或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句″包括一个……″限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。