一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链获取随机数的方法、装置、设备和介质与流程

2022-04-14 00:55:30 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及区块链、数据可信计算技术。


背景技术:

2.区块链可通过部署多种智能合约,来实现不同的业务功能。在这些业务功能中,会存在基于随机数开发出来可靠的应用需求。例如,游戏中的随机中奖、资源管理中的随机分配等。
3.生成随机数需要可靠的随机源,而区块链中智能合约本身可以用的随机源很少。获取随机数需要两个步骤:第一,确定随机种子;第二,基于随机算法处理随机种子来生成随机数。由于智能合约的代码是公开的,所以代码中使用的随机算法也是公开的。这就意味着随机数生成结果的不确定,是被随机种子所决定的。因此,提高随机种子的生成可靠性,对于随机数的可靠性具有重要意义。


技术实现要素:

4.本公开提供了一种区块链获取随机数的方法、装置、设备和介质,以提高生成随机数的可靠性。
5.第一方面,本公开实施例提供了一种区块链获取随机数的方法,应用于区块链节点,所述方法包括:在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求;通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子;通过所述随机数合约获取所述可信计算设备反馈的随机因子,并根据所述随机因子和链上随机算法产生随机数;通过所述随机数合约将所述随机数反馈给所述业务事务请求。
6.第二方面,本公开实施例还提供了一种区块链获取随机数的方法,应用于可信计算设备,所述方法包括:获取区块链上部署的随机数合约所执行的随机数获取请求;根据所述随机数获取请求,在可信计算设备中,采用所述可信计算设备的私钥产生随机因子;将所述随机因子反馈给所述随机数合约。
7.第三方面,本公开实施例还提供了一种区块链获取随机数的装置,配置于区块链节点,所述装置包括:随机数获取请求生成模块,用于在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求;随机数获取请求执行模块,用于通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子;
随机数生成模块,用于通过所述随机数合约获取所述可信计算设备反馈的随机因子,并根据所述随机因子和链上随机算法产生随机数;随机数反馈模块,用于通过所述随机数合约将所述随机数反馈给所述业务事务请求。
8.第四方面,本公开实施例还提供了一种区块链获取随机数的装置,应用配置于可信计算设备,所述装置包括:随机数获取请求获取模块,用于获取区块链上部署的随机数合约所执行的随机数获取请求;随机因子生成模块,用于根据所述随机数获取请求,在可信计算设备中,采用所述可信计算设备的私钥产生随机因子;随机因子反馈模块,用于将所述随机因子反馈给所述随机数合约。
9.第五方面,本公开实施例还提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面实施例或第二方面实施例所提供的一种区块链获取随机数的方法。
10.第六方面,本公开实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如第一方面实施例或第二方面实施例所提供的一种区块链获取随机数的方法。
11.第七方面,一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令在被处理器执行时实现如第一方面实施例或第二方面实施例所提供的一种区块链获取随机数的方法。
12.本公开实施例通过使得链外设置的可信计算设备,基于该可信计算设备的私钥生成随机因子,避免了随机因子在生成和传输过程中被篡改的风险,有效提高了随机因子生成的可靠性,从而保证了随机数合约根据所述随机因子和链上随机算法生成的随机数的可靠性。
13.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
14.附图用于更好地理解本方案,不构成对本公开的限定。其中:图1是根据本公开实施例所提供的一种区块链获取随机数的方法的流程;图2是根据本公开实施例所提供的一种区块链获取随机数的方法的流程;图3是根据本公开实施例所提供的一种区块链获取随机数的方法的流程;图4是根据本公开实施例所提供的一种区块链获取随机数的装置的结构示意图;图5是根据本公开实施例所提供的一种区块链获取随机数的装置的结构示意图;图6是用来实现本公开实施例所提供的区块链获取随机数的方法的电子设备的框图。
具体实施方式
15.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
16.图1是根据本公开实施例提供的一种区块链获取随机数的方法的流程图,本公开实施例可适用于区块链访问链外设备,以获取随机因子来生成随机数的情况。该方法可由一种区块链获取随机数的装置来执行,该装置可采用硬件和/或软件的方式来实现,可配置于电子设备中,该电子设备可以为区块链节点。参考图1,该方法应用于区块链节点,具体包括如下:s110、在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求。
17.其中,在区块链系统中可以部署各种智能合约来实现相应的有业务功能,可称为业务智能合约,业务功能例如为:电子货物的购买、游戏等直接提供给用户的功能,业务功能也可以是在区块链系统中需要为其他业务智能合约提供的功能,例如,转账数据处理、权限验证等。用户可通过区块链的客户端获取业务智能合约提供的接口界面。业务事务请求可以是由用户根据自身需要通过客户端向业务智能合约发起的事务请求。
18.其中,随机数合约可以是在业务事务请求执行的过程中,遇到需要获取随机数的条件时所调用的、用于获取随机数的智能合约。
19.其中,随机数获取请求可以用于请求生成业务事务请求执行过程中需要获取的随机数。其中,随机数可以用于游戏中,提升游戏的可信度或在游戏活动中随机向玩家提供奖励,还可以用于随机分配资源等。其中,随机分配资源可以是向考生随机分配考官等方式。
20.具体地,用户可以根据自身需要发起业务事务请求,当在该业务事务请求的执行阶段过程中,需要获取随机数时,对区块链中所部署的随机数合约进行调用,以请求生成对应的随机数。
21.示例性地,在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求,可以包括:在运行业务智能合约执行所述业务事务请求的过程中,根据调用随机数合约的指令,调用所述随机数合约,以产生随机数获取请求。
22.其中,业务智能合约可以是专门用于执行业务事务请求的智能合约。其中,调用随机数合约的指令可以用于在业务智能合约的执行阶段,对随机数合约进行调用。
23.具体地,可以通过运行业务智能合约执行用户节点发起的业务事务请求,当在该业务事务请求执行的过程中遇到需要获取随机数的条件时,当前业务智能合约可以发起调用随机数合约的指令,通过跨合约调用的方式,调取随机数合约,进而产生随机数获取请求。
24.可以理解的是,通过在运行业务智能合约执行业务事务请求的过程中,根据随机数合约的指令,可以实现对相应随机数合约的跨合约调用,从而无需再单独发起调用随机数合约的业务事务请求,即可产生随机数获取请求,进而有助于提高随机数获取的效率。
25.s120、通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子。
26.其中,可信计算设备可以是具备可信执行环境(trusted execution environment,tee)的计算设备。可信计算设备可以基于任意随机算法来产生随机数据,而后采用私钥对随机数据进行签名而产生随机因子。进一步的,可信计算设备可以基于随机数获取请求的请求参数来产生随机数据,再采用私钥对随机数据进行签名而产生随机因子。
27.其中,请求参数是能够表征该随机数获取请求的参数,例如可以包括请求编号、请求数据、请求哈希值、请求者地址和回调函数中的至少一种。
28.具体地,可以通过随机数合约执行随机数获取请求,并对设置于区块链外的可信计算设备进行控制,基于此,可以利用可信计算设备的私钥对随机数获取请求的请求参数所确定的随机数数据进行签名,并将签名结果作为相应的随机因子。例如,可以通过对链外可信计算设备的接口调用来发送随机数获取请求。或者可以采用其他方式,使得可信计算设备发现随机数获取请求并执行。
29.示例性地,通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子,可以包括:通过所述随机数合约处理所述随机数获取请求,产生事件日志,记录在区块中;所述事件日志记录于区块中区块头的日志树;其中,所述事件日志用于在被所述可信计算设备监听到时,触发所述可信计算设备获取所述随机数获取请求,并基于所述可信计算设备的私钥产生随机因子。
30.其中,事件日志可以是随机数合约执行随机数获取请求的过程中所产生的事件信息。该事件日志可以记录在区块链的区块头或区块体中。区块包括区块头和区块体,区块体中可以记录区块的详细数据,例如,可以记录区块链执行过程中产生或接收的至少一条事务请求数据。区块头中可以记录上一个区块的哈希值和本区块的哈希值,以及至少一颗用于记录信息的树等。例如,事件日志可以记录在区块头中的日志树中。其中,日志树可以是记录区块中各事件信息的数据结构。
31.具体地,当随机数合约在执行随机数获取请求时,可以产生处理该随机数获取请求所对应的随机数获取事件日志,并记录在区块头的日志树中。对于事件日志中所形成的内容可以进行预先定义,即设定在随机数合约执行随机数获取请求时所产生的随机数事件都包括哪些信息。在产生事件日志后,区块链节点可以将事件日志在网络中进行广播。相应的,可信计算设备可以对区块链中所产生的事件进行监听,若是监听到随机数获取事件日志,则可以触发可信计算设备获取随机数获取请求,以基于该可信计算设备的私钥产生随机因子。
32.可以理解的是,可信计算设备通过对区块链中所产生的事件日志进行监听,能够准确获取到对应区块链节点中的随机数获取请求,实现了对链上随机数获取请求的及时确定,同时基于其本身的私钥产生相应的随机因子,有效提高了随机因子生成的可靠性。采用监听的方式,还可以使得区块链的随机数合约无需对特定的可信计算设备进行接口调用。区块链网络包括多个区块链节点,若分别调用可信计算设备,则可能产生大量调用请求。
33.示例性地,通过所述随机数合约处理所述随机数获取请求,可以包括:通过所述随机数合约执行所述随机数获取请求,以确定请求编号、请求数据、请求哈希值、请求者地址和回调函数。
34.其中,请求编号可以是随机数获取请求中所包含的标识性信息,该标识信息可以用于对不同随机数请求进行区分。其中,请求数据可以用于描述对所产生随机数的需求描述。其中,请求哈希值可以是随机数合约对随机数获取请求进行哈希计算得到的,该请求哈希值可以用于区块链各节点对随机数获取事件进行共识。
35.其中,请求者地址可以是调用随机数合约的业务智能合约的地址。其中,回调函数可以将生成的随机数反馈至业务智能合约的地址。
36.具体地,可以通过随机数合约执行随机数获取请求,根据执行结果确定请求编号、请求数据、请求哈希值、请求者地址和回调函数。
37.s130、通过所述随机数合约获取所述可信计算设备反馈的随机因子,并根据所述随机因子和链上随机算法产生随机数。
38.其中,所述链上随机算法可以是用于生成随机数的算法规则。可以包括一种或多种链上随机数算法,由业务智能合约指定或由随机数合约选择使用当前使用的算法。
39.具体地,可信计算设备生成随机因子后,可以将随机因子反馈至随机数合约,相应的,随机数合约可以在接收到可信计算设备反馈的随机因子后,根据该随机因子按照预先设置的随机数生成算法生成随机数。
40.示例性的,通过所述随机数合约获取所述可信计算设备反馈的随机因子,可以包括:获取可信计算设备发起的随机因子反馈事务请求;在执行所述随机因子反馈事务请求的过程中,调用所述随机数合约,以获取所述可信计算设备反馈的随机因子。
41.其中,所述随机因子反馈事务请求可以是向调用随机数合约的区块链节点反馈随机因子的事务请求。
42.具体的,可信计算设备可以安装有区块链的客户端,可以在产生随机因子后,向对应区块链节点发送随机因子反馈事务请求,该区块链节点可以调用随机数合约,获取可信计算设备反馈的随机因子。
43.可以理解的是,通过执行可信计算设备发起的反馈事务请求,调用随机数合约对可信计算设备中生成的随机因子进行获取,从而保证随机数合约所获取随机因子的可靠性,进而有助于提高随机数生成的可靠性。
44.s140、通过所述随机数合约将所述随机数反馈给所述业务事务请求。
45.具体地,随机数合约可以将自身生成的随机数反馈至对应的业务事务请求。
46.示例性的,通过所述随机数合约将所述随机数反馈给所述业务事务请求,可以包括:通过所述随机数合约,将所述随机数通过所述回调函数反馈给所述业务事务请求。
47.具体地,随机数合约可以通过调用区块链随机数获取请求中的请求参数中所包括的回调函数,将自身生成随机数反馈至对应的业务事务请求中。
48.可以理解的是,基于随机数获取请求中的请求参数中所包括的回调函数,随机数合约能够将自身生成的随机数反馈至对应的业务事务请求中,从而保证了业务事务请求所获取的随机数的可靠性。
49.在上述各实施例的技术方案的基础上,进一步地,在使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子之前,还可以包括:获取可信计算设备的注册事务请求;在执行所述注册事务请求的过程中,调用所述随机数合约,获取所述注册事务请求中所述可信计算设备的标识、随机因子生成算法的代码存证和公钥,并上链存储。
50.其中,注册事务请求可以是由可信计算设备发起的向区块链中进行设备信息注册的事务请求。其中,可信计算设备的标识可以用于对可信计算设备的身份验证。其中,所述随机因子生成算法的代码存证可用于对可信计算设备反馈的随机因子的生成过程进行验证。其中,可信计算设备的公钥可以用于对可信计算设备反馈的随机因子的签名进行验证。
51.具体地,通过获取可信计算设备的注册事务请求,在执行该注册事务请求的过程中对随机数合约进行调用,将获取的注册事务请求中的可信计算设备的标识,随机因子生成算法的代码存证和公钥存储至区块链中。
52.可以理解的是,通过在执行注册事务请求的过程中,调用随机数合约,能够获取注册事务请求中所包括的可信计算设备的标识,随机因子生成算法的代码存证和公钥,并存储至区块链中,能够实现对可信计算设备和所生成随机数的验证,保证了所获取随机因子的可靠性。
53.本公开实施例通过在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求;通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子;通过所述随机数合约获取所述可信计算设备反馈的随机因子,并根据所述随机因子和链上随机算法产生随机数。基于上述方案通过使得链外设置的可信计算设备,基于该可信计算设备的私钥生成随机因子,避免了随机因子在生成和传输过程中被篡改的风险,有效提高了随机因子生成的可靠性,从而保证了随机数合约根据所述随机因子和链上随机算法生成的随机数的可靠性。
54.本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等,均符合相关法律法规的规定,且不违背公序良俗。
55.图2是根据本公开实施例提供的一种区块链获取随机数的方法的流程图。本公开实施例在上述各实施例的技术方案的基础上,进行了优化。
56.进一步地,在“通过所述随机数合约获取所述可信计算设备反馈的随机因子”操作之后,追加“通过所述随机数合约,采用所述可信计算设备的公钥对所述随机因子的签名进行验证,所述签名为所述可信计算设备采用私钥对随机数获取请求参数和随机因子的签名”,以实现随机因子的签名的验证。
57.如图2所示的区块链获取随机数的方法,包括:s210、在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求。
58.s220、通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子。
59.s230、通过所述随机数合约获取所述可信计算设备反馈的随机因子。
60.s240、通过所述随机数合约,采用所述可信计算设备的公钥对所述随机因子的签名进行验证,所述签名为所述可信计算设备采用私钥对随机数获取请求参数和随机因子的签名。
61.具体地,可以通过随机数合约,利用区块链中存储的可信计算设备的公钥对随机数获取请求参数和随机因子的签名进行有效性验证,并验证签名是否由可信计算设备所生成,以及验证签名的随机数获取请求参数与区块链中存储的请求参数是否一致。
62.可选的,所述随机数获取请求包括根据链上信息生成的链上因子;相应的,所述随机因子为所述可信计算设备基于私钥对所述随机数获取请求的请求参数和链上因子进行签名而产生的。
63.其中,链上信息可以是当前区块链节点中所存储的数据信息,例如,链上信息可以是当前区块的高度值或当前区块的哈希值等。
64.具体地,可以根据当前区块链节点中所存储的数据信息生成链上因子,可信计算设备基于私钥对所获取的随机数获取请求的请求参数和随机数获取请求中所包括的链上因子进行签名,并将签名结果作为随机因子。
65.示例性地,通过所述随机数合约,采用所述可信计算设备的公钥对所述随机因子的签名进行验证之后,还可以包括:验证链上记录的链上因子,与所述可信计算设备反馈的链上因子是否一致。
66.具体地,可以将可信计算设备反馈的链上因子与区块链中记录的链上因子进行匹配,验证链上记录的链上因子与可信计算设备反馈的链上因子是否一致。
67.可以理解的是,通过可信计算设备的私钥对随机数获取请求的请求参数和链上因子进行签名生成随机因子,对应的,通过链上存储的可信计算设备的公钥对随机因子进行验证,并在此基础上对可信计算设备反馈的链上因子进行一致性验证,从而保证了可信计算设备所反馈随机因子的可靠性。
68.s250、根据所述随机因子和链上随机算法产生随机数。
69.s260、通过所述随机数合约将所述随机数反馈给所述业务事务请求。
70.本公开实施例中可信计算设备基于自身私钥对随机数获取请求参数和随机因子进行签名,并进一步通过随机数合约,利用链上存储的可信计算设备的公钥验证所获取的随机因子的有效性,保证了随机数合约所获取随机因子的可靠性,进而有助于提高随机数生成的可靠性。
71.图3是根据本公开实施例提供的一种区块链获取随机数的方法的流程图,本公开实施例可适用于区块链访问链外设备,以获取随机因子来生成随机数的情况。该方法可由一种区块链获取随机数的装置来执行,该装置可采用硬件和/或软件的方式来实现,可配置于电子设备中,该电子设备为可信计算设备。参考图3,该方法应用于可信计算设备,具体包括如下:s310、获取区块链上部署的随机数合约所执行的随机数获取请求。
72.其中,随机数合约可以是在业务事务请求执行的过程中,遇到需要获取随机数的条件时所调用的智能合约。
73.其中,随机数获取请求可以用于请求生成业务事务事情执行过程中需要获取的随机数。其中,随机数可以用于提升游戏的可信度或在游戏活动中向随机向玩家提供奖励,还可以用于随机分配资源等。其中,随机分配资源可以是向考生随机分配考官等方式。
74.示例性地,获取区块链上部署的随机数合约所执行的随机数获取请求,可以包括:监听区块链中的事件日志;其中,所述事件日志记录于区块中区块头的日志树;
如果监听到所述事件日志中出现随机数获取请求时,则从事件日志中读取所述随机数获取请求。
75.其中,事件日志可以是随机数合约执行随机数获取请求的过程中所产生的事件信息。其中,日志树可以是记录区块中各事件信息的数据结构。
76.具体地,可信计算设备可以对区块链中的事件日志进行监听,当监听到出现随机数获取请求的事件日志时,可以从事件日志中获取随机数获取请求,从而实现对区块链中随机数获取请求的及时抓取。
77.s320、根据所述随机数获取请求,在可信计算设备中,采用所述可信计算设备的私钥产生随机因子。
78.可信计算设备可以基于任意随机算法产生随机数据,进而采用私钥进行签名来产生随机因子。随机数据中可以加入随机数获取请求的请求参数,以及其他因素,以增加随机性。即,在可信计算设备中,采用所述可信计算设备的私钥对所述随机数获取请求的请求参数进行签名而产生随机因子。
79.其中,随机数获取请求的请求参数为能够区分表征该随机数获取请求的参数,可以包括请求编号、请求数据、请求哈希值、请求者地址和回调函数中的至少一种。
80.其中,请求编号可以是随机数获取请求中所包含的标识性信息,该标识信息可以用于对不同随机数请求进行区分。其中,请求数据可以用于描述随机数合约对随机数获取请求的执行过程。其中,请求哈希值可以是随机数合约对随机数获取请求进行哈希计算得到的,该请求哈希值可以用于区块链各节点对随机数获取事件进行共识。
81.其中,请求者地址可以是调用随机数合约的业务智能合约的地址。其中,回调函数可以将生成的随机数反馈至业务智能合约的地址。
82.具体地,可信计算设备可以通过对所获取的随机获取请求进行解析,确定随机数获取请求的请求参数,并利用自身的私钥对该请求参数进行签名,将签名结果作为随机因子。
83.s330、将所述随机因子反馈给所述随机数合约。
84.具体地,可信计算设备在生成随机因子后,可以向区块链发起随机数随机因子反馈事务请求,以将随机因子反馈给随机数合约。
85.可选的,所述获取随机数获取请求和将随机因子反馈给所述随机数合约的操作由所述可信计算设备中设置于非可信计算环境的中转模块(relay)执行,所述随机因子的产生操作在所述可信计算设备的可信计算环境(enclave)中执行。
86.其中,非可信计算环境可以是可信计算设备中未受到保护的非安全区域,可信计算环境可以是可信计算设备中受到保护的安全区域。其中,中转模块可以用于区块链与可信计算设备的可信计算环境之间的数据通信。
87.其中,随机数合约和可信计算设备之间可以通过点对点(peer-to-peer,p2p)的方式进行通信。
88.在上述各实施例的技术方案的基础上,进一步地,在获取区块链上部署的随机数合约所执行的随机数获取请求之前,还可以包括:向区块链发起可信计算设备的注册事务请求,以调用所述随机数合约执行所述注册事务请求,将所述可信计算设备的标识、随机因子生成算法的代码存证和公钥,上链存
储;获取所述区块链中随机数合约的地址,并根据所述地址启动对所述随机数合约产生的事件日志的监听。
89.其中,注册事务请求可以是向区块链发起的进行设备信息注册的事务请求。其中,可信计算设备的标识可以用于对可信计算设备的身份验证。其中,所述随机因子生成算法的代码存证可用于对可信计算设备反馈的随机因子的生成过程进行验证。其中,可信计算设备的公钥可以用于对可信计算设备反馈的随机因子的签名进行验证。
90.具体地,可信计算设备可以预先向区块链发起注册事务请求,随机数合约执行该注册事务请求,获取注册事务请求中的可信计算设备的标识、随机因子生成算法的代码存证和公钥,并存储至区块链中。
91.可以理解的是,通过发起可信计算设备的注册事务请求,预先将可信计算设备的标识、随机因子生成算法的代码存证和公钥进行上链存储,使得随机数合约可以对接收到的可信计算设备反馈的随机因子进行验证,保证了所获取随机因子的可靠性。
92.具体地,可信计算设备可以在随机数合约执行注册事务请求时,对随机数合约的地址的进行获取,从而针对随机数合约的地址对随机数合约产生的事件日志进行监听。
93.在上述各实施例的技术方案的基础上,所述随机数合约可以是预言机合约,所述可信计算设备可以部署于预言机节点中。
94.其中,预言机合约可以用于将区块链外部的数据传递至区块链上的智能合约中。其中,预言机节点可以用于从区块链外部的数据源中获取数据。
95.本公开实施例通过获取区块链上部署的随机数合约所执行的随机数获取请求;根据所述随机数获取请求,在可信计算设备中,采用所述可信计算设备的私钥产生随机因子,避免了随机因子在生成过程中被篡改的风险。在此基础上,将所述随机因子反馈给所述随机数合约,对随机数合约生成的随机数的可靠性具有重大意义。
96.图4是根据本公开实施例提供的一种区块链获取随机数的装置的结构示意图,本公开实施例可适用于区块链访问链外设备,以获取随机因子来生成随机数的情况。该装置可采用硬件和/或软件的方式来实现,可配置于电子设备中,该电子设备可以为区块链节点。参考图4,该装置配置于区块链节点,具体包括如下:随机数获取请求生成模块410,用于在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求。
97.随机数获取请求执行模块420,用于通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子。
98.随机数生成模块430,用于通过所述随机数合约获取所述可信计算设备反馈的随机因子,并根据所述随机因子和链上随机算法产生随机数;随机数反馈模块440,用于通过所述随机数合约将所述随机数反馈给所述业务事务请求。
99.可选的,通过所述随机数合约处理所述随机数获取请求,并使得链外设置的可信计算设备,基于所述可信计算设备的私钥产生随机因子包括:通过所述随机数合约处理所述随机数获取请求,产生事件日志,记录在区块中;所述事件日志记录于区块中区块头的日志树;
其中,所述事件日志用于在被所述可信计算设备监听到时,触发所述可信计算设备获取所述随机数获取请求,并基于所述可信计算设备的私钥产生随机因子。
100.可选的,通过所述随机数合约处理所述随机数获取请求包括:通过所述随机数合约执行所述随机数获取请求,以确定请求编号、请求数据、请求哈希值、请求者地址和回调函数;相应的,通过所述随机数合约将所述随机数反馈给所述业务事务请求包括:通过所述随机数合约,将所述随机数通过所述回调函数反馈给所述业务事务请求。
101.可选的,在执行业务事务请求的过程中,调用随机数合约,以产生随机数获取请求包括:在运行业务智能合约执行所述业务事务请求的过程中,根据调用随机数合约的指令,调用所述随机数合约,以产生随机数获取请求。
102.可选的,通过所述随机数合约获取所述可信计算设备反馈的随机因子包括:获取可信计算设备发起的随机因子反馈事务请求;在执行所述随机因子反馈事务请求的过程中,调用所述随机数合约,以获取所述可信计算设备反馈的随机因子。
103.可选的,所述装置还包括:随机因子签名验证模块,用于通过所述随机数合约,采用所述可信计算设备的公钥对所述随机因子的签名进行验证,所述签名为所述可信计算设备采用私钥对随机数获取请求参数和随机因子的签名。
104.可选的,所述随机数获取请求包括根据链上信息生成的链上因子;相应的,所述随机因子为所述可信计算设备基于私钥对所述随机数获取请求的请求参数和链上因子进行签名而产生的。
105.可选的,所述装置还包括:链上因子一致性验证模块,用于验证链上记录的链上因子,与所述可信计算设备反馈的链上因子是否一致。
106.可选的,所述装置还包括:可信计算设备注册模块,用于获取可信计算设备的注册事务请求;在执行所述注册事务请求的过程中,调用所述随机数合约,获取所述注册事务请求中所述可信计算设备的标识、随机因子生成算法的代码存证和公钥,并上链存储。
107.本公开实施例所提供的区块链获取随机数的装置可以执行本公开实施例所提供的任意的区块链获取随机数的方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
108.图5是根据本公开实施例提供的一种区块链获取随机数的装置的结构示意,本公开实施例可适用于区块链访问链外设备,以获取随机因子来生成随机数的情况。该装置可采用硬件和/或软件的方式来实现,可配置于电子设备中,该电子设备可以为可信计算设备。参考图5,该装置配置于可信计算设备,具体包括如下:随机数获取请求获取模块510,用于获取区块链上部署的随机数合约所执行的随机数获取请求。
109.随机因子生成模块520,用于根据所述随机数获取请求,在可信计算设备中,采用所述可信计算设备的私钥产生随机因子。
110.随机因子反馈模块530,用于将所述随机因子反馈给所述随机数合约。
111.可选的,获取区块链上部署的随机数合约所执行的随机数获取请求包括:监听区块链中的事件日志;其中,所述事件日志记录于区块中区块头的日志树;如果监听到所述事件日志中出现随机数获取请求时,则从事件日志中读取所述随机数获取请求。
112.可选的,所述获取随机数获取请求和将随机因子反馈给所述随机数合约的操作由所述可信计算设备中设置于非可信计算环境的中转模块执行,所述随机因子的产生操作在所述可信计算设备的可信计算环境中执行。
113.可选的,所述装置还包括:可信计算设备注册请求模块,用于向区块链发起可信计算设备的注册事务请求,以调用所述随机数合约执行所述注册事务请求,将所述可信计算设备的标识、随机因子生成算法的代码存证和公钥,上链存储;获取所述区块链中随机数合约的地址,并根据所述地址启动对所述随机数合约产生的事件日志的监听。
114.可选的,所述随机数合约为预言机合约,所述可信计算设备部署于预言机节点中。
115.本公开实施例所提供的区块链获取随机数的装置可以执行本公开实施例所提供的任意的区块链获取随机数的方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
116.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
117.图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
118.如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元606加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
119.设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元606,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
120.计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如区块链获取随机数的方法。例如,在一些实施例中,区块链获取随机数的方法可被实现
为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元606。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram 603并由计算单元601执行时,可以执行上文描述的区块链获取随机数的方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行区块链获取随机数的方法。
121.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
122.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
123.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
124.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
125.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)区块链网络和互联网。
126.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
127.人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
128.云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作系统、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
129.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
130.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献