CN112631550A - 区块链随机数生成方法、装置、设备及计算机存储介质 - Google Patents
区块链随机数生成方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112631550A CN112631550A CN202011524078.5A CN202011524078A CN112631550A CN 112631550 A CN112631550 A CN 112631550A CN 202011524078 A CN202011524078 A CN 202011524078A CN 112631550 A CN112631550 A CN 112631550A
- Authority
- CN
- China
- Prior art keywords
- random number
- final
- node
- block chain
- service
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,并公开了一种区块链随机数生成方法,该方法包括:对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;控制各服务节点对区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定随机数请求对应的所有目标服务节点;根据随机数服务提供组和各目标服务节点计算最终随机数,并根据最终随机数和各服务节点确定最终签名结果;基于最终签名结果将最终随机数作为目标随机数回写到区块链中的用户合约。本发明还公开了一种区块链随机数生成装置、设备和一种计算机存储介质。本发明实现了区块链获取随机数不受单个节点限制,可以获取到适用多数场景的随机数。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及区块链随机数生成方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对区块链获取随机数技术提出了更高的要求。目前区块链获取随机数的方式是通过预言机服务获取随机数,包括中心化预言机和去中心化预言机,中心化预言机获取随机数是通过链下API(Application Programming Interface,应用程序接口)获取随机数,然后通过中心化预言机服务方把随机数上链,但这种方式获取的随机数容易受到各种攻击。去中心化预言机是通过用户生成随机数种子,预言机服务节点提供私钥,产生可验证随机数,但会碰到网络故障和节点故障不响应的情况。并且去中心化预言机采用的staking(权益质押)机制下,节点不响应后者网络不稳定这种行为将被罚款,而且问题节点之后会从随机数生成者名单中被移除,并且低质量或违规的预言机服务节点将遭受巨大的短期和长期经济损失,并不适合很多场景,如联盟链等。因此如何使区块链获取随机数不受单个节点限制,可以获取到适用多数场景的随机数成为了目前急需解决的问题。
发明内容
本发明的主要目的在于提出一种区块链随机数生成方法、装置、设备及计算机存储介质,旨在解决如何使区块链获取随机数不受单个节点限制,可以获取到适用多数场景的随机数的技术问题。
为实现上述目的,本发明提供一种区块链随机数生成方法,所述区块链随机数生成方法包括如下步骤:
对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
可选地,对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组的步骤,包括:
获取区块链中所有服务节点的随机数组,并根据预设的密钥分发函数和各所述随机数组计算各所述服务节点的密钥交换内容;
若各所述密钥交换内容全部合法,则根据各所述密钥交换内容计算各所述服务节点的私钥和公钥,并将各所述服务节点的私钥和公钥作为随机数服务提供组。
可选地,根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤之前,包括:
依次遍历各所述目标服务节点,根据所述随机数服务提供组确定遍历的目标服务节点的私钥;
根据所述私钥和预设的随机数算法进行哈希计算,以获取所述遍历的目标服务节点对应的节点随机数和随机数结果。
可选地,根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤,包括:
若各所述目标服务节点均能正常响应,则获取各所述目标服务节点对应的随机数结果,并计算各所述随机数结果的平均值,将所述平均值作为最终随机数。
可选地,根据所述最终随机数和各所述服务节点确定最终签名结果的步骤,包括:
根据各所述目标服务节点的私钥对所述最终随机数进行签名,以获取各所述目标服务节点对应的节点签名;
若各所述节点签名均为有效签名,则对各所述节点签名进行相加,以获取最终签名结果。
可选地,基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤之前,包括:
确定各所述目标服务节点的节点数量,并根据所述最终随机数对搜索节点数量进行取余计算,根据所述取余计算结果确定所述区块链的上链节点,其中,所述上链节点将所述最终随机数和所述最终签名结果上传至所述区块链。
可选地,基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤,包括:
根据所述区块链启动预设的配对函数,并根据所述配对函数对所述最终签名结果和所述最终随机数进行校验,若所述校验的校验结果是校验通过,则将所述最终随机数回写到所述区块链中的用户合约。
此外,为实现上述目的,本发明还提供一种区块链随机数生成装置,所述区块链随机数生成装置包括:
获取模块,用于对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
解析模块,用于控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
计算模块,用于根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
回写模块,用于基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
此外,为实现上述目的,本发明还提供一种区块链随机数生成设备,所述区块链随机数生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链随机数生成程序,所述区块链随机数生成程序被所述处理器执行时实现如上所述的区块链随机数生成方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有区块链随机数生成程序,所述区块链随机数生成程序被处理器执行时实现如上所述的区块链随机数生成方法的步骤。
本发明通过对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。通过对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组,并控制各个服务节点对随机数请求进行解析,以确定所有目标服务节点,再根据随机数服务提供组和各个目标服务节点计算最终随机数,并根据最终签名结果将最终随机数作为目标随机数会写到用户合约,从而避免了现有技术中区块链获取随机数时由于节点不响应或网络不稳定导致随机数的可用性受到影响的现象发生,实现了区块链获取随机数不受单个节点限制,可以获取到适用多数场景的随机数。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的区块链随机数生成设备结构示意图;
图2为本发明区块链随机数生成方法第一实施例的流程示意图;
图3为本发明区块链随机数生成装置的装置模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的区块链随机数生成设备结构示意图。
本发明实施例区块链随机数生成设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该区块链随机数生成设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的区块链随机数生成设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及区块链随机数生成程序。
在图1所示的区块链随机数生成设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的区块链随机数生成程序,并执行下述区块链随机数生成方法中的操作。
基于上述硬件结构,提出本发明区块链随机数生成方法实施例。
参照图2,图2为本发明区块链随机数生成方法第一实施例的流程示意图,所述方法包括:
步骤S10,对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
由于目前区块链随机数生成的方法存在预言机服务节点单点故障或故意不响应的现象发生,因此在本实施例中采用多预言机服务节点提供随机数组来产生可验证的随机数,从而有效地避免单点作恶的现象发生。而且在本实施例中,对oracle服务节点(即服务节点)各自提供的随机数求平均后得到最终随机数,并对最终随机数取余,以便从oracle服务节点中选取上链节点,上链节点将最终结果上链。各oracle服务节点对最终结果进行签名链下聚合,并且上链节点会将签名结果也上链。并且在本实施例中,中心化预言机有oraclize,去中心化预言机有chainlink。
此外,在本实施例中的各个关键名词解释如下:
公钥是公钥密码学中的公开密钥参数,需要公布,用于加密和验证签名,在区块链账户体系下,公钥对应一个账户地址。私钥是公钥密码学中的私有密钥参数,用于解密和进行签名,在区块链账户体系下,私钥控制着账户的所有权和使用权。地址是账户的标识,对于外部账户来说,地址表示的是该账户公钥的后20位字节。签名聚合是针对一个或多个消息(交易)的多个签名,合并为一个签名进行验证,不关心每一个独立的签名是什么,只要聚合签名通过验证,则所有签名通过验证。公钥聚合是把多把公钥聚合为一个公钥。
而且在本实施例中,假设用户A需要产生链上可验证随机数(即目标随机数),则需要在区块链下随机生成随机数seed,并在oracle服务网络选择所有oracle服务节点(即服务节点),或者N个服务节点来协助产生随机数,并设定只要M(M小于或等于N)个服务节点就可以完成随机数产生。也就是在本实施例中,先确定区块链中N个服务节点来提供随机数,并设置N个服务节点的随机数的优先级,将其记录在区块链智能合约的地址列表中。再对区块链中被选中的所有服务节点(如N个oracle服务节点)的随机数组进行分布式密钥初始化,以获取随机数服务提供组。即先让N个oracle服务节点中每个成员i生成各自的随机数组ran_i,此随机数组对其他节点保密,即每个服务节点都生成一个只有自己可见的随机数组;而且在服务节点中会先确定需要将随机数组广播到多少个服务节点,假设需要广播j个服务节点(其中,j为服务节点的编号,且1≤j≤N),则需要对j个服务节点中的随机数组进行加密再进行广播,如在将服务节点i的随机数组广播到服务节点j时,先采用预设的密钥分发函数根据自身的私钥片段对随机数组进行加密,以得到密钥交换内容,再将密钥交换内容从服务节点i广播到服务节点j。其中,密钥交换内容send_{ij}=f(ran_i,j),ran_i为服务节点i需要广播的随机数组,j为服务节点i需要广播到的服务节点的编号,f为密钥分发函数。并且在本实施例中,每个服务节点都会收集到其他服务节点发送的密钥交换内容,即send_{1j},send_{2j},...,send_{Nj},并且各个服务节点在收集到密钥交换内容后,需要验证密钥交换内容的合法性,也就是根据各个服务节点公开的公钥信息对密钥交换内容进行验证,以确定是否合法。当各个服务节点的所有数据全部合法后,各个服务节点就可以根据获取到的密钥交换内容提炼出各自节点的私钥s_j和组公钥P(各个服务节点的公钥的公钥聚合)。再将其广播到区块链中,从而完成分布式密钥初始化过程。其中,随机数服务提供组包括各个服务节点的私钥、公钥和组公钥P。
步骤S20,控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
在本实施例中,可以在区块链下以求平均值方式(avg)聚合M个oracle服务节点提供的随机数,再通过调用预言机合约(如chainlink合约),将以上参数(M,N,seed,avg)以及N个预言机节点的地址传入oracle合约中的地址列表,每个服务节点监听到oracle合约发出的随机数请求事件后,会解析自己的地址是否在智能合约记录的地址列表中,若在,则确定是目标服务节点,也就是各个服务节点会区块链中智能合约oracle合约发出的随机数请求进行请求参数解析,以确定随机数请求对应的所有目标服务节点。而且在本实施例中,目标服务节点的数量为M,也就是智能合约记录的地址列表中的数量。而且本实施例中,各个目标服务节点会执行以下步骤,即目标服务节点为节点j时,节点j利用分发的私钥s_j(1≤j≤N),并根据随机数seed计算随机数哈希值,从而得到最终的随机数结果random_j,同时还需要生成随机数证明,以得到具体的随机数proof_j。其中,随机数证明的生成可以是先将公钥pub_j和私钥s_j,以及随机数seed作为输入,再通过相应的函数运算得到随机数证明。并向其它N个节点广播自己的随机数结果和可验证的随机数。
而每个服务节点在收集到其它服务节点发送的可验证的随机数后,会验证该可验证的随机数的正确性,也就是解码可验证的随机数,并根据公钥pub_j对解码后的随机数进行验证,以确定随机数是否正确。pub_j为j节点的公钥。验证通过则记录j节点的随机数结果和可验证的随机数。因此当所有服务节点都验证通过后,选择M个服务节点作为目标服务节点,选取规则可以是根据智能合约记录的地址列表中服务节点顺序,选择前M个服务节点作为目标服务节点,并获取各个目标服务节点的随机数和随机数结果。
步骤S30,根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
在确定各个目标服务节点后,可以根据随机数服务提供组确定各个目标服务节点的私钥,随机数和随机数结果等信息。并且若收到M个服务节点的随机数,则进行平均数计算,并且若在这M个服务节点中存在某个节点不响应,则依次顺延,选择下一个节点的随机数结果,直至获取到M个随机数,再进行计算,得到最终随机数,而最终随机数的计算公式可以是最终随机数:
在本实施例中,当计算得到最终随机数random后,需要对M取余,即index=ramdom%M,得出的结果index即为负责将结果上链的预言机节点在区块链智能合约的地址列表中的下表。这样随机的确定了上链节点。并在确定上链节点后,还需要计算前M个节点的最终签名结果SIG。即前M个预言机服务节点i(即目标服务节点)利用自身的私钥(s_i)对最终随机数结果random进行签名,sig_i=s_i*H(ramdom),H为hash函数,节点i签名为sig_i,向前M个节点广播sig_i。也就是先计算目标服务节点的最终随机数结果的哈希值,并计算目标服务节点的私钥和哈希值的乘积,将此乘积作为目标服务节点的签名,再将签名广播到前M个节点中。每个节点j收集其他成员广播的sig_i,并用pub_i(公钥)验证签名(即验证节点签名),验证e(pub_i,H(ramdom))=e(G,s_i)是否相等,其中e为配对函数,也就是若e(公钥pub_i,最终随机数的哈希值H(ramdom))=e(s_i*G,最终随机数的哈希值)=e(G,s_i),则确定验证通过,并将节点签名作为有效签名接受,当收集到M个有效签名后,对这些有效签名进行相加,并将相加的和值作为最终签名结果SIG,并广播最终签名结果SIG。
步骤S40,基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
在本实施例中,负责上链的上链节点会将M个节点所产生的proof_i{(i=1,2,...,M)}和最终签名结果SIG,组私钥S,以及随机数结果random传入预言机合约,而区块链上的预言机合约在接收到上链节点上传的信息后,需要进行签名验证,并在签名验证通过后,会将最终随机数作为目标随机数回写到区块链中的用户合约。其中,签名验证包括随机数签名验证和分布式签名验证。
在本实施例中,通过对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。通过对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组,并控制各个服务节点对随机数请求进行解析,以确定所有目标服务节点,再根据随机数服务提供组和各个目标服务节点计算最终随机数,并根据最终签名结果将最终随机数作为目标随机数会写到用户合约,从而避免了现有技术中区块链获取随机数时由于节点不响应或网络不稳定导致随机数的可用性受到影响的现象发生,实现了区块链获取随机数不受单个节点限制,可以获取到适用多数场景的随机数。
进一步地,基于上述本发明的第一实施例,提出本发明区块链随机数生成方法的第二实施例,本实施例中,上述实施例中的步骤S10,对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组的步骤的细化,包括:
步骤a,获取区块链中所有服务节点的随机数组,并根据预设的密钥分发函数和各所述随机数组计算各所述服务节点的密钥交换内容;
在本实施例中,在准备获取区块链中的随机数时,需要获取区块链中所有服务节点,或用户提前设置的N个服务节点的随机数组,如获取N个服务节点的随机数组,即让N个服务节点中每个成员i生成各自的随机数组ran_i,此随机数组对其他节点保密,也就是每个服务节点都生成一个只有自己可见的随机数组;而且在服务节点中会先确定需要将随机数组广播到多少个服务节点,假设需要广播j个服务节点(其中,j为服务节点的编号,且1≤j≤N),则需要对j个服务节点中的随机数组进行加密再进行广播,如在将服务节点i的随机数组广播到服务节点j时,先采用预设的密钥分发函数根据自身的私钥片段对随机数组进行加密,以得到密钥交换内容,再将密钥交换内容从服务节点i广播到服务节点j。其中,密钥交换内容send_{ij}=f(ran_i,j),ran_i为服务节点i需要广播的随机数组,j为服务节点i需要广播到的服务节点的编号,f为密钥分发函数,可以根据用户的需求自行进行设置。
步骤b,若各所述密钥交换内容全部合法,则根据各所述密钥交换内容计算各所述服务节点的私钥和公钥,并将各所述服务节点的私钥和公钥作为随机数服务提供组。
每个服务节点都会收集到其他服务节点发送的密钥交换内容,即send_{1j},send_{2j},...,send_{Nj},并且各个服务节点在收集到密钥交换内容后,需要验证密钥交换内容的合法性,也就是根据各个服务节点公开的公钥信息对密钥交换内容进行验证,以确定是否合法。当各个服务节点的所有数据全部合法后,各个服务节点就可以根据获取到的密钥交换内容提炼出各自节点的私钥s_j和组公钥P(各个服务节点的公钥的公钥聚合)。再将其广播到区块链中,从而完成分布式密钥初始化过程。其中,随机数服务提供组包括各个服务节点的私钥、公钥和组公钥P。
在本实施例中,通过根据预设的密钥分发函数区块链中所有服务节点的随机数组计算各个服务节点的密钥交换内容,并在密钥交换内容全部合法时,根据各个密钥交换内容计算各个服务节点的私钥和公钥,并将其作为随机数服务提供组,从而保障了获取到的随机数服务提供组的准确性。
进一步地,根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤之前,包括:
步骤c,依次遍历各所述目标服务节点,根据所述随机数服务提供组确定遍历的目标服务节点的私钥;
在本实施例中,当确定M数量的所有目标服务节点后,可以依次遍历各个目标服务节点,由于随机数服务提供组中包含有所有服务节点的私钥、公钥和组公钥P等信息,因此可以在随机数服务提供组中确定遍历的目标服务节点的私钥。
步骤d,根据所述私钥和预设的随机数算法进行哈希计算,以获取所述遍历的目标服务节点对应的节点随机数和随机数结果。
再根据目标服务节点的私钥和提前设置的随机数算法进行哈希计算和证明计算,以获取遍历的目标服务节点对应的节点随机数和随机数结果,也就是目标服务节点j利用分发的私钥s_j(1≤j≤N),并根据随机数seed计算随机数哈希值,从而得到最终的随机数结果random_j,同时还需要生成随机数证明,以得到具体的随机数proof_j。其中,随机数证明的生成可以是先将公钥pub_j和私钥s_j,以及随机数seed作为输入,再通过相应的函数运算得到随机数证明,即随机数,并向其它N个节点广播自己的随机数结果和随机数(即可验证的随机数)。
在本实施例中,通过遍历各个目标服务节点,根据遍历的目标服务节点的私钥和预设的随机数算法进行哈希计算,以获取目标服务节点对应的节点随机数和随机数结果,从而为后续计算最终随机数提供了基础。
进一步地,根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤,包括:
步骤e,若各所述目标服务节点均能正常响应,则获取各所述目标服务节点对应的随机数结果,并计算各所述随机数结果的平均值,将所述平均值作为最终随机数。
在本实施例中,在计算最终随机数,需要先确定各个目标服务节点是否都能正常响应,并在各个目标服务节点均能正常响应时,获取这M个目标服务节点对应的随机数结果,再计算各个随机数结果的平均值,并将平均值作为最终随机数。其中,最终随机数的计算公式可以是最终随机数:
在本实施例中,通过在各个目标服务节点都能正常响应时,计算各个目标服务节点的随机数结果的平均值,并将平均值作为最终随机数,从而保障了获取到的最终随机数的准确性。
进一步地,根据所述最终随机数和各所述服务节点确定最终签名结果的步骤,包括:
步骤f,根据各所述目标服务节点的私钥对所述最终随机数进行签名,以获取各所述目标服务节点对应的节点签名;
在本实施例中,在获取最终签名结果时,需要先获取各个目标服务节点的私钥,然后各个目标服务节点再根据自己的私钥对最终随机数进行签名,以获各个目标服务节点对应的节点签名,即sig_i=s_i*H(ramdom),H为hash函数,节点i签名为sig_i,向前M个节点广播sig_i。也就是先计算目标服务节点的最终随机数结果的哈希值,并计算目标服务节点的私钥和哈希值的乘积,将此乘积作为目标服务节点的签名,再将签名广播到前M个节点中。
步骤g,若各所述节点签名均为有效签名,则对各所述节点签名进行相加,以获取最终签名结果。
每个节点j收集其他成员广播的sig_i,并用pub_i验证签名(即验证节点签名),验证e(pub_i,H(ramdom))=e(G,s_i)是否相等,其中e为配对函数,也就是若e(公钥pub_i,最终随机数的哈希值H(ramdom))=e(s_i*G,最终随机数的哈希值)=e(G,s_i),则确定验证通过,并将节点签名作为有效签名接受,当收集到M个有效签名后,对这些有效签名进行相加还原出门限签名最终签名结果SIG,并广播最终签名结果SIG。
在本实施例中,通过根据各个目标服务节点的私钥对最终随机数进行签名,以获取节点签名,并在各个节点签名为有效签名时机芯相加,以获取最终签名结果,从而保障了获取到的最终签名结果的准确性。
进一步地,基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤之前,包括:
步骤h,确定各所述目标服务节点的节点数量,并根据所述最终随机数对搜索节点数量进行取余计算,根据所述取余计算结果确定所述区块链的上链节点,其中,所述上链节点将所述最终随机数和所述最终签名结果上传至所述区块链。
在本实施例中,需要通过上链节点将最终随机数等信息上传到区块链,因此需要确定上链节点。即可以先确定各个目标服务节点的节点数量是否为M,并在节点数量为M时,可以通过最终随机数ramdom对节点数量进行取余计算,再根据取余计算结果来确定区块链的上链节点,即index=ramdom%M,得出的结果index即为负责将结果上链的预言机节点在地址列表中的下表,这样随机的确定了上链节点。而且在本实施例中,上链节点是将最终随机数和最终签名结果上传至区块链中的预言机合约,也就是负责上链的上链节点会将M个节点所产生的proof_i{(i=1,2,...,M)}和最终签名结果SIG,组私钥S,以及随机数结果random传入预言机合约。
在本实施例中,通过根据最终随机数对目标服务节点的节点数量进行取余计算,以便根据取余计算结果确定区块链的上链节点,从而保障了获取到的上链节点的随机性,减少了节点发生故障而无法上传的概率。
进一步地,基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤,包括:
步骤k,根据所述区块链启动预设的配对函数,并根据所述配对函数对所述最终签名结果和所述最终随机数进行校验,若所述校验的校验结果是校验通过,则将所述最终随机数回写到所述区块链中的用户合约。
在本实施例中,区块链上的预言机合约在接收到上链节点上传的信息后,需要进行签名验证,并在签名验证通过后,会将最终随机数作为目标随机数回写到区块链中的用户合约。其中,签名验证包括随机数签名验证和分布式签名验证,具体签名验证步骤如下:根据每个节点具体的随机数和公钥计算每个节点的proof(随机数)是否正确;根据随机数算法的哈希函数解析出随机数结果random_i;获取每个节点产生的随机数;对M个节点的随机数求平均值,校验等于random值。通过则确定随机数校验通过,也就是随机数签名验证通过;根据最终随机数random,组公钥,组私钥,校验e(P,H(ramdom))=e(G,S),如果相等,则分布式签名成功。则校验通过。将随机数random回调写入用户合约,至此用户获取到了随机数。其中,e为配对函数。
在本实施例中,通过根据预算的配对函数对最终签名结果和最终随机数进行校验,并在校验通过时,将最终随机数回写到区块链的用户合约,从而保障了用户可以及时获取到随机数。
本发明还提供一种区块链随机数生成装置,参照图3,所述区块链随机数生成装置包括:
获取模块A10,用于对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
解析模块A20,用于控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
计算模块A30,用于根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
回写模块A40,用于基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
可选地,获取模块A10,用于:
获取区块链中所有服务节点的随机数组,并根据预设的密钥分发函数和各所述随机数组计算各所述服务节点的密钥交换内容;
若各所述密钥交换内容全部合法,则根据各所述密钥交换内容计算各所述服务节点的私钥和公钥,并将各所述服务节点的私钥和公钥作为随机数服务提供组。
可选地,计算模块A30,用于:
依次遍历各所述目标服务节点,根据所述随机数服务提供组确定遍历的目标服务节点的私钥;
根据所述私钥和预设的随机数算法进行哈希计算,以获取所述遍历的目标服务节点对应的节点随机数和随机数结果。
可选地,计算模块A30,用于:
若各所述目标服务节点均能正常响应,则获取各所述目标服务节点对应的随机数结果,并计算各所述随机数结果的平均值,将所述平均值作为最终随机数。
可选地,计算模块A30,用于:
根据各所述目标服务节点的私钥对所述最终随机数进行签名,以获取各所述目标服务节点对应的节点签名;
若各所述节点签名均为有效签名,则对各所述节点签名进行相加,以获取最终签名结果。
可选地,回写模块A40,用于:
确定各所述目标服务节点的节点数量,并根据所述最终随机数对搜索节点数量进行取余计算,根据所述取余计算结果确定所述区块链的上链节点,其中,所述上链节点将所述最终随机数和所述最终签名结果上传至所述区块链。
可选地,回写模块A40,用于:
根据所述区块链启动预设的配对函数,并根据所述配对函数对所述最终签名结果和所述最终随机数进行校验,若所述校验的校验结果是校验通过,则将所述最终随机数回写到所述区块链中的用户合约。
上述各程序单元所执行的方法可参照本发明区块链随机数生成方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有区块链随机数生成程序,所述区块链随机数生成程序被处理器执行时实现如上所述的区块链随机数生成方法的步骤。
其中,在所述处理器上运行的区块链随机数生成程序被执行时所实现的方法可参照本发明区块链随机数生成方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种区块链随机数生成方法,其特征在于,所述区块链随机数生成方法包括如下步骤:
对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
2.如权利要求1所述的区块链随机数生成方法,其特征在于,所述对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组的步骤,包括:
获取区块链中所有服务节点的随机数组,并根据预设的密钥分发函数和各所述随机数组计算各所述服务节点的密钥交换内容;
若各所述密钥交换内容全部合法,则根据各所述密钥交换内容计算各所述服务节点的私钥和公钥,并将各所述服务节点的私钥和公钥作为随机数服务提供组。
3.如权利要求1所述的区块链随机数生成方法,其特征在于,所述根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤之前,包括:
依次遍历各所述目标服务节点,根据所述随机数服务提供组确定遍历的目标服务节点的私钥;
根据所述私钥和预设的随机数算法进行哈希计算,以获取所述遍历的目标服务节点对应的节点随机数和随机数结果。
4.如权利要求1所述的区块链随机数生成方法,其特征在于,所述根据所述随机数服务提供组和各所述目标服务节点计算最终随机数的步骤,包括:
若各所述目标服务节点均能正常响应,则获取各所述目标服务节点对应的随机数结果,并计算各所述随机数结果的平均值,将所述平均值作为最终随机数。
5.如权利要求1所述的区块链随机数生成方法,其特征在于,所述根据所述最终随机数和各所述服务节点确定最终签名结果的步骤,包括:
根据各所述目标服务节点的私钥对所述最终随机数进行签名,以获取各所述目标服务节点对应的节点签名;
若各所述节点签名均为有效签名,则对各所述节点签名进行相加,以获取最终签名结果。
6.如权利要求1所述的区块链随机数生成方法,其特征在于,所述基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤之前,包括:
确定各所述目标服务节点的节点数量,并根据所述最终随机数对搜索节点数量进行取余计算,根据所述取余计算结果确定所述区块链的上链节点,其中,所述上链节点将所述最终随机数和所述最终签名结果上传至所述区块链。
7.如权利要求1-6任一项所述的区块链随机数生成方法,其特征在于,所述基于所述最终签名结果将所述最终随机数回写到所述区块链中的用户合约的步骤,包括:
根据所述区块链启动预设的配对函数,并根据所述配对函数对所述最终签名结果和所述最终随机数进行校验,若所述校验的校验结果是校验通过,则将所述最终随机数回写到所述区块链中的用户合约。
8.一种区块链随机数生成装置,其特征在于,所述区块链随机数生成装置包括:
获取模块,用于对区块链中所有服务节点的随机数组进行分布式密钥初始化,以获取随机数服务提供组;
解析模块,用于控制各所述服务节点对所述区块链中智能合约发送的随机数请求对应的请求参数进行解析,以确定所述随机数请求对应的所有目标服务节点;
计算模块,用于根据所述随机数服务提供组和各所述目标服务节点计算最终随机数,并根据所述最终随机数和各所述服务节点确定最终签名结果;
回写模块,用于基于所述最终签名结果将所述最终随机数作为目标随机数回写到所述区块链中的用户合约。
9.一种区块链随机数生成设备,其特征在于,所述区块链随机数生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链随机数生成程序,所述区块链随机数生成程序被所述处理器执行时实现如权利要求1至7中任一项所述的区块链随机数生成方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有区块链随机数生成程序,所述区块链随机数生成程序被处理器执行时实现如权利要求1至7中任一项所述的区块链随机数生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011524078.5A CN112631550A (zh) | 2020-12-21 | 2020-12-21 | 区块链随机数生成方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011524078.5A CN112631550A (zh) | 2020-12-21 | 2020-12-21 | 区块链随机数生成方法、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112631550A true CN112631550A (zh) | 2021-04-09 |
Family
ID=75320579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011524078.5A Pending CN112631550A (zh) | 2020-12-21 | 2020-12-21 | 区块链随机数生成方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631550A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799636A (zh) * | 2021-04-14 | 2021-05-14 | 北京百度网讯科技有限公司 | 随机数生成方法、装置、设备和存储介质 |
CN113489584A (zh) * | 2021-07-02 | 2021-10-08 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN113872828A (zh) * | 2021-09-27 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 区块链预言机状态监控方法 |
CN114205087A (zh) * | 2021-08-30 | 2022-03-18 | 深圳时空云科技有限公司 | 一种基于区块链随机数产生的方法 |
CN114338051A (zh) * | 2022-03-15 | 2022-04-12 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
CN114362968A (zh) * | 2022-03-15 | 2022-04-15 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
CN115567330A (zh) * | 2022-12-07 | 2023-01-03 | 国网天津市电力公司培训中心 | 一种隐私信息加密方法、系统、设备及存储介质 |
-
2020
- 2020-12-21 CN CN202011524078.5A patent/CN112631550A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799636A (zh) * | 2021-04-14 | 2021-05-14 | 北京百度网讯科技有限公司 | 随机数生成方法、装置、设备和存储介质 |
CN112799636B (zh) * | 2021-04-14 | 2021-08-27 | 北京百度网讯科技有限公司 | 随机数生成方法、装置、设备和存储介质 |
CN113489584A (zh) * | 2021-07-02 | 2021-10-08 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN113489584B (zh) * | 2021-07-02 | 2024-04-05 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN114205087A (zh) * | 2021-08-30 | 2022-03-18 | 深圳时空云科技有限公司 | 一种基于区块链随机数产生的方法 |
CN114205087B (zh) * | 2021-08-30 | 2023-12-15 | 深圳时空云科技有限公司 | 一种基于区块链随机数产生的方法 |
CN113872828A (zh) * | 2021-09-27 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 区块链预言机状态监控方法 |
CN113872828B (zh) * | 2021-09-27 | 2022-12-30 | 深圳前海微众银行股份有限公司 | 区块链预言机状态监控方法 |
CN114338051A (zh) * | 2022-03-15 | 2022-04-12 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
CN114362968A (zh) * | 2022-03-15 | 2022-04-15 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
EP4246310A1 (en) * | 2022-03-15 | 2023-09-20 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method and apparatus for acquiring a random number for blockchain, device and storage medium |
CN115567330A (zh) * | 2022-12-07 | 2023-01-03 | 国网天津市电力公司培训中心 | 一种隐私信息加密方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112631550A (zh) | 区块链随机数生成方法、装置、设备及计算机存储介质 | |
CN107566124B (zh) | 基于哈希运算的共识建立方法、区块链系统及存储介质 | |
CN111523890B (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN108924130B (zh) | 一种区块数据的验证方法、装置、设备和存储介质 | |
CN108734028B (zh) | 基于区块链的数据管理方法、区块链节点及存储介质 | |
CN112527912B (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN113157648A (zh) | 基于区块链的分布式数据存储方法、装置、节点及系统 | |
CN111460394A (zh) | 一种版权文件的验证方法、装置及计算机可读存储介质 | |
CN111311211A (zh) | 一种基于区块链的数据处理方法以及设备 | |
CN110990790B (zh) | 一种数据处理方法及设备 | |
CN114372296A (zh) | 一种基于区块链的用户行为数据审计方法及系统 | |
CN113888164A (zh) | 区块链交易池实现方法、装置、计算机设备和存储介质 | |
CN114127724A (zh) | 针对多副本存储的完整性审计 | |
CN115208628B (zh) | 基于区块链的数据完整性验证方法 | |
CN111585995A (zh) | 安全风控信息传输、处理方法、装置、计算机设备及存储介质 | |
CN110910110A (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN109450636B (zh) | 一种云存储中群组数据的完整性验证方法 | |
CN111385096A (zh) | 一种区块链网络、签名处理方法、终端及存储介质 | |
CN111597537B (zh) | 基于区块链网络的证书签发方法、相关设备及介质 | |
Duan et al. | Data storage security for the internet of things | |
CN112732676B (zh) | 基于区块链的数据迁移方法、装置、设备及存储介质 | |
CN111125734B (zh) | 一种数据处理方法及系统 | |
CN115941217A (zh) | 用于安全通信的方法和其相关产品 | |
Li et al. | Audit as You Go: A Smart Contract‐Based Outsourced Data Integrity Auditing Scheme for Multiauditor Scenarios with One Person, One Vote | |
CN113949508B (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 |