CN113449342B - 一种基于区块链的随机数预言机实现方法、设备及介质 - Google Patents
一种基于区块链的随机数预言机实现方法、设备及介质 Download PDFInfo
- Publication number
- CN113449342B CN113449342B CN202010229254.6A CN202010229254A CN113449342B CN 113449342 B CN113449342 B CN 113449342B CN 202010229254 A CN202010229254 A CN 202010229254A CN 113449342 B CN113449342 B CN 113449342B
- Authority
- CN
- China
- Prior art keywords
- voting
- random number
- client
- block chain
- round
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 230000006399 behavior Effects 0.000 claims description 7
- 230000003111 delayed effect Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- KAICRBBQCRKMPO-UHFFFAOYSA-N phosphoric acid;pyridine-3,4-diamine Chemical compound OP(O)(O)=O.NC1=CC=NC=C1N KAICRBBQCRKMPO-UHFFFAOYSA-N 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C13/00—Voting apparatus
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C15/00—Generating random numbers; Lottery apparatus
- G07C15/006—Generating random numbers; Lottery apparatus electronically
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Marketing (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开的一种基于区块链的随机数预言机实现方法、设备及介质,依托支持智能合约的区块链网络作为运行环境,为区块链网络提供一个去中心化的随机数生成方法及可信随机数服务,可供需要随机数服务的智能合约或应用调用,提高了区块链应用的安全性。
Description
技术领域
本发明涉及区块链预言机领域,具体涉及一种基于区块链的随机数预言机实现方法、设备及介质。
背景技术
利用区块链技术建立的分布式账本不能主动从外部世界获得信息,例如调用外部服务,而是依赖一种叫做预言机(Oracle)的机制。预言机是一种智能合约,它允许外部世界将某些客观事实写入区块链,以便其他智能合约使用,客观事实如外汇汇率、股票行情、航班信息、天气预报、体育比赛结果等。
预言机的实现风格,一是通过可信数据源,二是通过投票。可信数据源往往是中心化,可以引入多个数据源来减少欺骗风险。投票方式对于产生可信随机数也是有效的:利用多个投票者发出的随机数当做随机算法的输入,哈希后得到一个随机数作为输出。由于有多方参与,少数方难以控制输出的随机数,确保了输出的客观性。
需要额外说明的是,在智能合约中是无法直接利用代码逻辑来生成随机数的。因为智能合约会在多个节点上执行,在不同节点上生成的随机数不同,难以形成共识,导致用智能合约实现的随机数交易无法正常完成。
需要说明的是,上述内容属于发明人的技术认知范畴,并不必然构成现有技术。
发明内容
为了解决现有技术中的一个或多个技术问题,或至少提供一种有益的选择,本发明提供一种基于区块链的随机数预言机实现方法、设备及介质,提高生成随机数的可靠性。
本发明公开的一种基于区块链的随机数预言机实现方法,包括如下步骤:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将投票结果R保存到分布式账本。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行根据投票轮次号判断随机数投票客户端是否是第一次参与投票步骤时,若判断结果为否,则延时设定值后再次调用智能合约取投票轮次号,进行再次判断。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
建立可信数据源白名单;
随机数智能合约接收投票请求;
判断随机数投票客户端是否在白名单中;
若判断结果为是,则允许接收投票请求。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
获取白名单内的有效随机数投票客户端的总数量;
获取本轮收集到的投票数;
判断本轮收集到的投票数是否超过有效随机数投票客户端的总数量的预设比例;
若判断结果为是,则确认本轮收集到的投票有效。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
判断投票请求参数是否是从同一个随机数投票客户端发出的多次请求;
若判断结果为是,则仅忽略除第一次的其他投票结果,并返回信息告知随机数投票客户端不接受多次投票。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行将投票结果R保存到分布式账本步骤时,还包括如下步骤:
将分布式账本中的轮次号加1,以作为下一轮次的轮次号。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,执行部署封装有区块链SDK的随机数投票客户端步骤时,在随机投票客户端内配置每个投票人专用的区块链账号私钥。
作为一种基于区块链的随机数预言机实现方法的优选技术方案,随机数投票客户端能够获取投票人的数字签名,并根据数字签名对投票行为进行验证。
本发明还公开一种基于区块链的随机数预言机实现设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被所示至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将投票结果R保存到分布式账本。
本发明还公开一种基于区块链的随机数预言机实现介质,存储有计算机可执行指令,计算机可执行指令为:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将投票结果R保存到分布式账本。
本发明的有益效果在于:
1.本发明中各个随机数投票客户端可以独立的生成随机数作为随机源,使用智能合约将多个随机数合并后形成了一个客观可信的随机数,通过区块链共识机制这个随机数得到了所有节点的认可。
2.本发明为客观、可信、不受控制的随机数有需求的智能合约或外部应用提供了一个去中心化的可信随机数服务。防止了通过控制随机源进行欺诈,提高了区块链应用的安全性。利用随机数服务可以开发抽奖、摇号、双随机一公开等与随机数有关的区块链服务。
3.本发明对随机数投票客户端进行去中心化设置,确保每个执行随机数投票客户端的虚拟机的root账号在不同投票人的控制之下,防止管理员合谋恶意控制随机数投票客户端。
4.本发明利用数字签名验证的方法对每次投票记录进行收集,以便于后续审计。
5.本发明通过白名单对随机数投票客户端的投票信息进行筛选过滤,有效避免重复投票或者恶意投票,保证随机数的真实可靠。
6.本发明将多个投票随机数串联再哈希后计算得到的哈希值作为随机数投票的结果,让最终的形成的投票结果与每个随机数投票客户端形成紧密关联,任何投票结果的改动都会影响相应的随机数投票客户端,从而保证投票结果的唯一可靠性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明一实施例的流程图。
图2为本发明一实施例中执行白名单的判断流程图。
图3为本发明一实施例中根据白名单对投票有效性判断的流程图。
图4为本发明一实施例中对恶意多次投票判断的流程图。
图5为本发明一实施例中一种基于区块链的随机数预言机实现设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明旨在提供一种基于区块链的随机数预言机(Oracle)实现方案。本发明依托支持智能合约的区块链网络(如超级账本Fabric、以太坊)作为运行环境,为区块链网络提供可信随机数服务,可供需要随机数服务的智能合约或应用调用。本发明默认执行在许可链环境下,但也可以公链环境下执行。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本申请利用预言机原理,在区块链网络中设计和实现一个去中心化的可信随机数生成系统,供有随机数需求的智能合约调用或订阅,例如用于抽奖。
如图1所示,本实施例公开的一种基于区块链的随机数预言机实现方法,包括如下步骤:
S1部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源。
S2调用随机数智能合约,获取当前投票轮次号T。
S3根据投票轮次号判断随机数投票客户端是否是第一次参与投票。
S4若判断结果为是,则生成随机数r。
S5以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用。
S6随机数智能合约接收投票请求参数。
S7判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等。
S8若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r。
S9在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R。
S10将投票结果R保存到分布式账本。
S11将分布式账本中的轮次号加1,以作为下一轮次的轮次号;
S12返回投票成功。
(一直到上述交易被打包成区块,随机数投票客户端就可以查询到轮次号增加了1)。
在部署过程中,随机数投票客户端可在n个Linux虚拟机(V1、V2……Vn)中部署。在实际应用中,需要根据去中心化思想,确保每个虚拟机的Root账号在不同管理员(即投票人)的控制之下,每个管理员仅可操作自己的账户进行投票,以避免随机数投票客户端被单独管理员控制而影响随机数生成的可信度。此外,还要防止管理员合谋恶意控制随机数投票客户端,为了按设定投出随机数而修改客户端程序,或者调用智能合约时直接设定投票信息,不同虚拟机的管理员不能是亲属、朋友或利益相关方,以此杜绝管理员私下互通,从而对投票结果产生影响。
安装在虚拟机内的随机数投票客户端内部封装了区块链SDK(软件开发工具包,Software Development Kit),用于实现随机数投票客户端投票信息的分布式记录,保证数据的可信。在随机数投票客户端中配置每个投票人专用的区块链账号私钥,投票人需要管理好自己的私钥,确保每个投票人发起的投票不能被别人仿冒,避免因私钥泄露而导致恶意投票的行为。
随机数投票客户端能够获取投票人的数字签名,并根据数字签名对投票行为进行验证。随机数投票客户端获取投票人的投票请求时,对投票人的数字签名进行验证,每次的交易信息均保存投票人的数字签名,使投票人无法抵赖已经发生的投票行为,保证数据的真实可靠。
在进行投票之前,随机数投票客户端可以向随机数智能合约发起调用请求,查询当前投票轮次,获取当前投票轮次号T,并在本地判断是否已经参与投票。具体包括:将取得的当前轮次号T与客户端本地投票的轮次号T1进行比较,如果轮次号相等,即T=T1,说明该随机数投票客户端已经参与过本轮投票,即“根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票”的判断结果为否,不再接收随机数投票客户端在同一投票轮次的二次投票,可以在延时设定值(如100毫秒)后再次调用智能合约获取投票轮次号,直至获取的投票轮次号与随机数投票客户端本地的轮次号不相等,即“根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票”的判断结果为是,说明此时随机数投票客户端还没有参与过本轮投票,保留轮次号到本地对轮次号进行更新,轮次号作为随机数生成的轮次标识信息。
本实施例中,生成随机数r时,是利用编程语言的内嵌函数生成的,当使用包含投票轮次号和随机数的信息为投票参数时,可以直接将轮次号T和随机数r串联,即“T+r”,或者在轮次号T和随机数r之间增加连接符等字符结构。当完成随机数投票后,在延时设定值(如100毫秒)后,调回到循环最开始,重新开始调用智能合约获取投票轮次号。
随机数智能合约的主要目标是处理投票数据,得出投票结论,将结论写入区块,并允许查询投票结果。
如图2所示,随机数智能合约接收到投票请求参数时,还包括如下步骤:
S601建立可信数据源白名单;
S602随机数智能合约接收投票请求;
S603判断随机数投票客户端是否在白名单中;
S604若判断结果为是,则允许接收投票请求;
S605若判断结果为否,则返回错误信息至随机数投票客户端。
随机数智能合约仅支持来自可信数据源的投票,所以代码中会维持一个投票方白名单,白名单是允许投票的区块链地址(或区块链账号)的清单,当投票方不属于白名单中记录的区块链地址,则认为该请求是第三方误发请求,或者恶意请求,认定该数据源为不可信数据源,并拒绝与其通信,防止生成有导向性的随机数。为了保证白名单内的可信数据源的高可靠性,白名单通过硬编码在智能合约代码中,硬编码是将白名单数据直接嵌入到源代码中,在修改时只能通过编辑源代码的方式来修改。如果更改白名单需要对智能合约代码进行修改并重新部署,避免了恶意篡改的可能性,这种管理白名单的方式简单又安全。
如图3所示,进一步的,可利用白名单对可信数据源发送的投票数据进行判定,执行随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
S611获取白名单内的有效随机数投票客户端的总数量;
S612获取本轮收集到的投票数;
S613判断本轮收集到的投票数是否超过有效随机数投票客户端的总数量的预设比例;
S614若判断结果为是,则确认本轮收集到的投票有效。
S615若判断结果为否,则判定本轮收集到的投票无效。
其中,本轮收集到的投票数与有效随机数投票客户端的总数量的预设比例可以为二分之一、三分之二或其他。即需要收集到的投票数应达到总数量的一定比例才认为投票是有效的,例如白名单中有10条记录,只有当收集到6个或以上的投票才能够被认定为有效,从而降低少数投票就影响投票结构的问题,保证了投票的公正。
每当智能合约收到随机数投票后,直接将投票数据保存到账本,从而形成一个区块链交易,这个区块链交易即保存了投票数据,又起到审计日志的作用。如果后续需要对投票信息进行查看,可通过投票轮次号查找对应的投票信息,准确记录随机数投票客户端地址、投票随机数等。
在投票结算前,智能合约可能收到同一个投票方多次投票,原因可能是恶意的,也可能是巧合。为了避免同一随机数投票客户端的多次投票导致随机数的结果产生影响,智能合约不接受同一个投票方在一个投票周期内的多次投票,应忽略除第一次的其他投票结果,并返回信息告知客户端不接受多次投票。
如图4所示,具体步骤如下:
S621判断投票请求参数是否是从同一个随机数投票客户端发出的多次请求;
S622若判断结果为是,则仅忽略除第一次的其他投票结果,并返回信息告知随机数投票客户端不接受多次投票。
S623若判断结果为否,则正常执行后续步骤。
通过对随机数投票客户端多次投票行为的过滤,避免了恶意刷票的可能,保证随机数的真实随机性。
虽然前文公开了“判断随机数投票客户端是否是第一次参与投票”这一步骤,但是其主要用于随机数投票客户端的自律上,与前述步骤不同,本步骤中对于发送多次投票请求的随机数投票客户端,起到滤除恶意投票的功能。
本发明中的随机数智能合约通过随机数函数对外提供随机数服务。各种编程语言都有内置的伪随机数函数,如java语言可以使用java.util.Random类来生成随机数。本发明设计了几种随机数函数,满足不同场景的需要:
1.取当前随机数:取最新区块的随机数交易记录的投票结果R。
2.按区块号(或区块哈希)返回随机数:按区块号或区块哈希返回某区块中随机数交易记录的投票结果R。
现有技术中如比特币技术,采用的即是前述的第二种方式,按照区块号返回随机数,其优点在于可信度高,无法人为控制输出,可以保证投票信息的高可靠性,但是其缺点在于比特币是每十分钟产生一个区块,可以产生的随机数数量低,适用于随机数需求量不高的使用场景。或者采用前述的第一种方式,取最新区块的随机数交易记录的投票结果,其通过有限的投票方投票获得投票结果,其优点在于生成的随机数不受区块产生的频率带来的影响,且因为一个区块中包含2000个左右的交易信息,可生成的随机数量是第一种方式的2000倍,更适用于随机数需求量大的使用场景,其缺点在于随机数投票客户端有限,导致去中心化程度不高,投票结果会有一定的倾向性,需要更多的部署随机数投票客户端来降低中心化程度。
在实际应用中,随机数服务的服务对象有两大类:智能合约或外部应用(如DAPP)。
随机数服务的投票数据被以区块链交易的形式记录在分布式账本中,可以通过区块浏览器查看每轮随机数投票的结果。
无论外部应用还是智能合约都可以通过访问随机数智能合约的随机数函数取得最新或历史的随机数投票结果数据。取得投票结果按需求截短后使用,如SHA256哈希算法得到32个字节,截取最末尾的一个字节可以得到0到255的随机数。如果要得到0到100的随机数,可将得到的字节再除以2.55并取整。
如图5所示,本发明还公开一种基于区块链的随机数预言机实现设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被所示至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将投票结果R保存到分布式账本。
本发明还公开一种基于区块链的随机数预言机实现介质,存储有计算机可执行指令,计算机可执行指令为:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将投票结果R保存到分布式账本。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于区块链的随机数预言机实现方法,其特征在于,包括如下步骤:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票请求参数向随机数智能合约发起投票调用;
所述随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个所述投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将所述投票结果R保存到分布式账本。
2.根据权利要求1所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票步骤时,若判断结果为否,则延时设定值后再次调用智能合约取投票轮次号,进行再次判断。
3.根据权利要求1所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行所述随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
建立可信数据源白名单;
所述随机数智能合约接收投票请求;
判断随机数投票客户端是否在白名单中;
若判断结果为是,则允许接收投票请求。
4.根据权利要求3所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
获取所述白名单内的有效随机数投票客户端的总数量;
获取本轮收集到的投票数;
判断本轮收集到的投票数是否超过有效随机数投票客户端的总数量的预设比例;
若判断结果为是,则确认本轮收集到的投票有效。
5.根据权利要求1所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行所述随机数智能合约接收投票请求参数步骤时,还包括如下步骤:
判断投票请求参数是否是从同一个随机数投票客户端发出的多次请求;
若判断结果为是,则仅忽略除第一次的其他投票结果,并返回信息告知随机数投票客户端不接受多次投票。
6.根据权利要求1所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行将所述投票结果R保存到分布式账本步骤时,还包括如下步骤:
将分布式账本中的轮次号加1,以作为下一轮次的轮次号。
7.根据权利要求1所述的一种基于区块链的随机数预言机实现方法,其特征在于,执行部署封装有区块链SDK的随机数投票客户端步骤时,在所述随机投票客户端内配置每个投票人专用的区块链账号私钥。
8.根据权利要求7所述的一种基于区块链的随机数预言机实现方法,其特征在于,所述随机数投票客户端能够获取所述投票人的数字签名,并根据所述数字签名对所述投票行为进行验证。
9.一种基于区块链的随机数预言机实现设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所示至少一个处理器执行的指令,所述指令被至少一个处理器执行,以使所述至少一个处理器能够:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
所述随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个所述投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将所述投票结果R保存到分布式账本。
10.一种基于区块链的随机数预言机实现介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令为:
部署封装有区块链SDK的随机数投票客户端,作为分布式随机数据源;
调用随机数智能合约,获取当前投票轮次号T;
根据所述投票轮次号判断随机数投票客户端是否是第一次参与投票;
若判断结果为是,则生成随机数r;
以包含投票轮次号和随机数的信息为投票参数向随机数智能合约发起投票调用;
所述随机数智能合约接收投票请求参数;
判断投票请求参数中的投票轮次号与区块链分布式账本中的最新轮次号是否相等;
若判断结果为是,则保留投票数据至分布式账本,其中投票数据的键是包含随机数投票客户端地址和投票轮次号的数组,投票数据的值是随机数投票客户端发来的随机数r;
在历史交易中按轮次号取出多个投票随机数r,将多个所述投票随机数r转换为字符串并串联在一起成为r2,计算r2的哈希值作为随机数投票结果R;
将所述投票结果R保存到分布式账本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229254.6A CN113449342B (zh) | 2020-03-27 | 2020-03-27 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229254.6A CN113449342B (zh) | 2020-03-27 | 2020-03-27 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113449342A CN113449342A (zh) | 2021-09-28 |
CN113449342B true CN113449342B (zh) | 2023-04-11 |
Family
ID=77808109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010229254.6A Active CN113449342B (zh) | 2020-03-27 | 2020-03-27 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113449342B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114362968B (zh) * | 2022-03-15 | 2022-06-17 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
CN115206018B (zh) * | 2022-06-16 | 2024-07-02 | 湖南天河国云科技有限公司 | 基于区块链预言机的抽奖方法和抽奖设备 |
CN115170139B (zh) * | 2022-07-04 | 2023-07-18 | 北京天德科技有限公司 | 一种基于区块链数据湖的三阶段金融违规多重裁判系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985644A (zh) * | 2018-07-27 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 权益分配方法及装置、电子设备 |
CN109783057A (zh) * | 2018-12-03 | 2019-05-21 | 北京建筑大学 | 一种区块链上随机数生成方法及装置 |
WO2019133621A2 (en) * | 2017-12-26 | 2019-07-04 | Akamai Technologies, Inc. | High performance distributed system of record with distributed random oracle |
CN110427782A (zh) * | 2019-07-23 | 2019-11-08 | 杭州云象网络技术有限公司 | 一种基于区块链的随机数生成方法 |
CN110633071A (zh) * | 2019-09-26 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 一种随机数生成方法及装置 |
CN110633286A (zh) * | 2019-09-29 | 2019-12-31 | 山东爱城市网信息技术有限公司 | 一种基于区块链的授时预言机实现方法 |
GB201917284D0 (en) * | 2019-11-27 | 2020-01-08 | Nchain Holdings Ltd | Provably fair games using a blockchain |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108830714A (zh) * | 2018-05-28 | 2018-11-16 | 拜迪网络科技(上海)有限公司 | 区块链预言机 |
US11474994B2 (en) * | 2018-12-27 | 2022-10-18 | Intel Corporation | Distributed blockchain oracle |
-
2020
- 2020-03-27 CN CN202010229254.6A patent/CN113449342B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019133621A2 (en) * | 2017-12-26 | 2019-07-04 | Akamai Technologies, Inc. | High performance distributed system of record with distributed random oracle |
CN108985644A (zh) * | 2018-07-27 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 权益分配方法及装置、电子设备 |
CN109783057A (zh) * | 2018-12-03 | 2019-05-21 | 北京建筑大学 | 一种区块链上随机数生成方法及装置 |
CN110427782A (zh) * | 2019-07-23 | 2019-11-08 | 杭州云象网络技术有限公司 | 一种基于区块链的随机数生成方法 |
CN110633071A (zh) * | 2019-09-26 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 一种随机数生成方法及装置 |
CN110633286A (zh) * | 2019-09-29 | 2019-12-31 | 山东爱城市网信息技术有限公司 | 一种基于区块链的授时预言机实现方法 |
GB201917284D0 (en) * | 2019-11-27 | 2020-01-08 | Nchain Holdings Ltd | Provably fair games using a blockchain |
Also Published As
Publication number | Publication date |
---|---|
CN113449342A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165945B (zh) | 代表节点设备选举方法、装置、计算机设备及存储介质 | |
CN113449342B (zh) | 一种基于区块链的随机数预言机实现方法、设备及介质 | |
TWI733328B (zh) | 跨鏈發送可認證訊息的方法和裝置 | |
CN110033244B (zh) | 基于区块链的智能合约执行方法及装置和电子设备 | |
CA3048743A1 (en) | Consensus verification method and device | |
CN107483509A (zh) | 一种身份验证方法、服务器及可读存储介质 | |
US11283622B2 (en) | Signature verification for a blockchain ledger | |
CN110633286A (zh) | 一种基于区块链的授时预言机实现方法 | |
CN109547488A (zh) | 一种基于联盟区块链的可信数据计算及交换系统 | |
WO2020233149A1 (zh) | 一种块链式账本中的授时认证方法、装置及设备 | |
CN111034151B (zh) | 用于管理对区块链系统中的账户的访问的方法和设备 | |
CN111602166A (zh) | 在区块链上提供可遍历键值数据存储的方法和设备 | |
CN110597918A (zh) | 一种账户管理方法、装置及计算机可读存储介质 | |
CN110163602A (zh) | 一种账本的验证方法、装置及设备 | |
CN110839002B (zh) | 云的开户、认证及访问方法和设备 | |
TWI728692B (zh) | 跨鏈發送可認證訊息的方法和裝置 | |
CN113656842B (zh) | 一种数据验证方法、装置及设备 | |
CN112070342B (zh) | 微服务评价方法和装置、电子设备和计算机可读存储介质 | |
CN113885834A (zh) | 一种基于区块链的随机数生成方法、投票方法及设备 | |
CN114697063A (zh) | 一种安全认证方法、装置、电子设备及存储介质 | |
CN111460465A (zh) | 一种基于区块链的身份认证方法、设备及介质 | |
CN116996208A (zh) | 区块链系统中的区块编辑方法和区块链节点 | |
CN116451280A (zh) | 基于区块链的资产管理方法和装置 | |
CN113032823B (zh) | 设备id的生成方法及装置 | |
CN111556160B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |