CN110427782A - 一种基于区块链的随机数生成方法 - Google Patents
一种基于区块链的随机数生成方法 Download PDFInfo
- Publication number
- CN110427782A CN110427782A CN201910665963.6A CN201910665963A CN110427782A CN 110427782 A CN110427782 A CN 110427782A CN 201910665963 A CN201910665963 A CN 201910665963A CN 110427782 A CN110427782 A CN 110427782A
- Authority
- CN
- China
- Prior art keywords
- random number
- game
- generating random
- contract
- generating
- 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
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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于区块链的随机数生成方法,包括步骤:(1)在区块链上部署随机数生成合约,所述随机数生成合约利用随机数生成博弈协议定义,其中包括随机数生成函数、退款函数、激励函数、输出函数;(2)所述随机数生成合约接收节点的随机数生成请求,启动随机数生成过程为所述请求生成随机数,并公布随机数的哈希值;(3)根据生成随机数的哈希值,调用输出函数向所述节点客户端输出随机数生成结果,本发明通过引入博弈理论在区块链网络中部署基于随机数生成合约,并基于智能合约的原有属性的基础上,该智能合约可在任何图灵完备的可编程区块链中实现,增加激励及安全机制,生成防篡改、安全有效的随机数。
Description
技术领域
本发明属于区块链技术领域,具体涉及一种基于区块链的随机数生成方法。
背景技术
区块链协议是中本聪发明的,目的是确保各方就比特币的交易结果和资金所有权达成共识。然而,该协议能够诱导对任何定义良好的确定性过程的结果达成共识。虽然比特币脚本很有用,但它们仅限于一些基本操作。一些较新的加密货币允许任意复杂的程序(Turingcomplete),这些程序可用于实现更复杂的金融智能合约。这些程序可以接收、持有和传输加密货币单位形式的货币。因此,它们也被称为智能合约。目前,使用最广泛的智能合约平台是以太坊,它也是市值为的第二大加密货币。我们交替使用术语程序、智能合约和合约,也使用“随机”这个术语来表示伪随机,并假设网络的每个节点都可以生成本地伪随机数。
要使智能合约具有可执行性,整个加密货币网络应该就其执行状态和由此产生的货币交易达成共识。基本上,如果网络的每个节点具有相同的语义理解程序,当一个函数调用(变化)程序添加到区块链,节点运行程序和计算其结果状态和事务,必须与所计算的任何其他节点的网络。以太坊和其他可编程加密货币通过在它们的智能合约中不允许非决定论和随机性来确保这一特性。
虽然在当今的平台上,智能合约必须是非概率的,但是众所周知,概率程序比简单的非概率程序要丰富得多。此外,在许多真实世界的金融合同中,随机性扮演着至关重要的角色,例如赌场游戏和赌注证明协议。因此,缺乏概率是智能合约的一个重要限制。考虑到在许多实际应用中随机化的必要性,已经开发了几种方法来生成用于智能合约的伪随机数,其中包括使用当前块的散列作为种子,通过数据库依赖外部提供者,或者创建一个智能合约,任何人都可以在其中提交随机生成的数字,其他智能合约可以作为库。然而,这些方法存在安全问题和激励问题,不能相信它们能产生可能带来巨大财务后果的随机数。
以前产生随机数的方法有:1)使用块哈希或时间戳。最简单的方法是使用包含事务的块的属性之一,例如它的散列或时间戳,作为在事务执行中生成随机数的种子。在这种方法中,假定没有任何一方能够控制块的哈希值或它被挖掘的确切时间,因此随机数生成是防篡改的。它的弱点之一是,它给矿商带来了不合理的优势。比如彩票,如果挖掘包含对其函数调用的块的矿工是彩票参与者,并且使用块时间戳作为种子,那么他可以操纵时间戳以始终赢得彩票。如果种子不可操作,例如块哈希,那么如果矿工意识到他将失去彩票,他可以简单地忽略该块,并决定不在网络上发布它。这样做,他失去了他的块奖励,但获得了额外的机会赢得彩票。如果一大笔钱处于危险之中,那么这种策略就是理性的。然而大多数彩票都有数百万参与者,因此使用这种方法无法安全地实现现实中的彩票。具体地说,如果涉及的金额超过了块奖励,那么不应该信任矿工为随机数生成种子。2)数据库。根据设计,智能合约只能访问写在区块链上的数据。数据库是访问外部资源并将获得的数据写入区块链上的第三方服务,这样智能合约就可以使用它。数据通常带有来自数据库的签名,承诺是从预定义的源收集的。要生成随机数,可以创建一个数据库,例如使用oraclize服务,该服务从外部资源(例如random.org)获取随机数,并将它们放在区块链上。但是,这种方法需要信任数据库中的所有者,并允许他们将任意数字作为随机输出报告。因此,它集中了随机数生成过程,不能被认为是安全的。
之前的大多数方法都给矿商的所有者带来了不公平的优势。在最坏的情况下,这可能导致随机数生成过程的完全集中。因此,使用这些方法作为其随机性来源的智能合约自动信任矿商或数据库/其他智能合约的所有者通常都是匿名实体。前面的一些方法依赖于来自多个参与者的随机输入,以便生成用于区块链的随机数。虽然这些方法提供了参与激励,但它们并没有鼓励参与者提交随机数。参与者每次提交一个固定的数字,例如0,就可以得到相同的奖励。因此,他们依赖于参与者的诚实,即假设大多数或至少部分参与者确实提交了随机输入,特别是考虑到生成随机输入比重用常量(稍微)昂贵一些。
在当今可编程区块链中,智能合约被局限于确定性和非概率性。这种随机性的缺乏是一种限制,因为现实世界中的许多金融合约,比如赌场游戏和彩票,都完全依赖于随机性。因此,一些特别的随机数生成方法被开发出来用于智能和约。这些方法包括使用数据库或依赖块散列。然而,这些方法是可操作的,也就是说,它们的输出可能会被非中立方篡改,比如数据库的所有者或矿商。
发明内容
为解决上述问题,本文发明提出了一种基于区块链的随机数生成方法,采用一种新的博弈论方法来生成区块链上可证明不可操纵的随机数。该方法允许智能合约访问一个值得信赖的随机性,不依赖于潜在来源妥协矿工或数据库,因此使创建新一代的智能合约并不仅限于非概率性的和从更普遍的概率程序获取。
本发明一种基于区块链的随机数生成方法,采用如下步骤:
(1)利用随机数生成博弈协议设置随机数生成合约,部署在区块链上,其中随机数生成合约包括随机数生成函数(RequestRandomBit)、退款函数(ReturnDeposit)、激励函数(RequestReward)、输出函数(GetOutput);其中,RequestRandomBit=f(φ,t,v),其中请求生成随机数的节点根据随机数价值在发出请求时支付给随机数生成合约的费用φ;随机数生成过程的截止时间即时间戳t;请求节点产生的潜在经济后果的上限为v。
(2)所述随机数生成合约接收节点的随机数生成请求,启动随机数生成过程为所述请求生成随机数,并公布随机数的哈希值;
(3)根据生成随机数的哈希值,调用输出函数向所述节点客户端输出随机数生成结果。
该随机数生成合约必须支持以下功能:
a)为了适用于真实的区块链,它必须是可实现的智能合约;
b)其他智能合约/节点应该能够将其用作数据库。具体来说,其他人应该能够通过支付一定的费用并指定一个截止日期来从合约中请求随机数,以及如果生成的随机位被篡改,可能产生的潜在经济后果的上限v。
c)它可以依赖博弈参与者生成随机数,但不能依赖于客户端。
该随机数生成合约必须提供以下保证:
1)随机数提交请求时,节点客户端必须在最后期限之前接受下列情况之一:
i)成功:当输出非可控和非篡改随机数,必须在请求并不是已知或可预见的之后生成;或
ii)罚款:一个可能***纵的随机数,也是在请求之后生成的,同时至少被处罚v个单位(这确保如果***纵的随机数,其经济后果可以通过向请求节点支付的v个单位的罚款来纠正);或
iii)故障:参与博弈人数不足,发出随机数生成失败和全额退款的通知。
2)随机性保证:只要至少有2个参与者提交了一致随机的输入,最终的输出数字必须是一致随机的。
3)开放性:为了避免集中化,任何人都可以作为该合约的博弈参与者加入。
4)针对恶意矿工的安全措施。任何博弈参与者都不能通过篡改或保留随机数生成过程中使用的块来影响协议的输出。
5)对恶意参与者的安全性:如果随机数成功生成,则应保证随机数生成过程中没有参与者对输出进行篡改。
6)避免重用:不应该重用生成的随机数,并且应该为每个请求生成一个新的专用随机数,这些任务是独立的,不需要同步。
7)激励需求。最后,协议必须保证有激励博弈参与者诚实行事的措施:
i)任何博弈参与者都应在支付至少v(w)个单位的押金或不将输出类型从成功改为惩罚的情况下操纵输出。
ii)激励博弈参与者向随机数生成合约提交一致随机生成数作为输入,即提供随机输入对博弈参与者来说应该是准强均衡。
进一步地,步骤(1)所述随机数生成博弈协议逻辑如下:
1.1对博弈参与者按照1到n(n≥2)进行编号,并按编号奇偶性进行分类,在偶数组合中存在数组{0,2},在奇数组合中存在数组{1,3},不同奇偶性的博弈参与者选择所持有的数组的数进行两两小型博弈,在每场博弈中分为3种结果:
1)博弈参与者选择数比对方恒大1时认定为取胜,记录博弈结果1点;
2)博弈参与者选择数比对方小1时认定为失败,记录博弈结果-1点;
3)其他记录博弈结果0点。
1.2计算所述博弈参与者参与所有小型随机数选择博弈的点数总和即为所述博弈参与者的效用值u,对比所有参与者的效用值u,博弈参与者效用值u越大说明其所参与的小型博弈中,赢得次数比较多,选择最高效用值u对应的博弈参与者为最终胜出的博弈参与者,并给以选择随机数的权限;
1.3拥有随机数选择权限的博弈参与者选择随机数作为唯一一致性的随机数输出,并计算显示所述随机数对应的哈希值h。
为了激励参与者积极参与随机数选择博弈,所有博弈参与者根据其效用值u给予经济激励。
进一步地,所述步骤(2)具体如下:
2.1节点客户端输入随机数生成请求所用参数:费用φ、时间戳t及经济上限v,调用随机数生成合约,提出随机数生成请求,其中费用φ为请求生成随机数的节点根据随机数价值在发出请求时支付给随机数生成合约的费用;时间戳t为随机数生成过程的截止时间;经济上限v为所述节点请求随机数所承担的经济风险上限;
2.2随机数生成合约接收节点的随机数生成请求,对比接收到的时间戳t与本次生成随机数的总可用时间,在确认t大于本次生成随机数的总可用时间后,分配至请求节点一个请求标识号id,同时记录φ,t及v的值,并将id标记号广播公开,以便在下一个时间单位中注册;若t小于本次生成随机数的总可用时间,则拒绝该请求,随机数生成的总可用时间由博弈参与者数量决定,设置时间戳及请求标识号可进一步提高在区块链网络中随机数生成的可溯源性;
2.3参与者收到请求标识号id后,根据id对应的φ,t及v信息,选择性提交押金w注册成为相应博弈参与者,区块链网络中任一参与者均可通过缴纳押金w注册成为博弈参与者,所述押金w大于等于所述节点请求随机数所承担的经济风险上限v。由此保证请求随机数的节点无需信任区块链网络中的任何参与者,均可提出随机数生成的请求,一旦出现恶意博弈参与者破坏随机数的生成,则该博弈参与者所提交的押金转给本次随机数请求节点。
所述博弈参与者参与博弈,并生成各自博弈的效用值u,胜出博弈参与者选择随机数x输出,并利用预定义的哈希函数计算显示所选随机数x的哈希值h;
2.4所述随机数生成合约记录所述胜出博弈参与者选择的随机数x、哈希值h及效用值u。
进一步地,所述步骤(3)中在截止时间t之后,所述请求节点客户端调用随机数生成合约的输出函数,首先验证随机数,经博弈参与者编号和请求标识号id及输出随机数的联合散列值与哈希值h对比后,输出结果包括如下:
3.1故障:无随机数哈希值,没有参与者注册并参与博弈选择随机数,即输出产生故障,并退还费用φ;
3.2惩罚:出现恶意博弈参与者导致随机数生成失败,博弈参与者和请求标识号id及输出随机数的联合散列值不等于所述哈希值h,即输出随机数生成失败,并退还费用φ及恶意博弈参与者押金w;
3.3成功:博弈参与者和请求标识号id及输出随机数的联合散列值等于所述哈希值h,向请求节点客户端输出生成的唯一一致的随机数x,并根据费用φ、参与博弈人数n及其博弈效用值u调用激励函数(RequestReward),为博弈参与者分配经济激励。
进一步地,所述步骤3.3中随机数成功输出后,博弈参与者调用退款函数,返还本次参与博弈注册押金。
进一步地,本发明所述随机数生成合约基于现场可编程门阵列实现并行处理多个随机数生成任务,这些任务是独立的,不需要同步,针对每个请求节点生成其专有随机数。
由此,本发明具有以下有益技术效果:本发明通过引入博弈理论在区块链网络中部署基于随机数生成合约,并基于智能合约的原有属性的基础上,该智能合约可在任何图灵完备的可编程区块链中实现,增加激励及安全机制,生成防篡改、安全有效的随机数。
附图说明
图1本发明基于区块链的随机数生成方法的整体示意图;
图2本发明基于区块链的随机数生成方法的流程图。
图3本发明小型博弈参与者胜出示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
在本实施例中,如图1所示,为一种基于区块链的随机数生成方法的整体示意图,其主要采用如下步骤:
Step1:利用随机数生成博弈协议定义一个随机数生成合约,该合约包括随机数生成函数(RequestRandomBit)、退款函数(ReturnDeposit)、激励函数(RequestReward)、输出函数(GetOutput);并部署在区块链上,如图2所示,为基于区块链的随机数生成方法的流程图。
Step2:随机数生成合约接收节点的随机数生成请求,启动随机数生成过程为所述请求生成随机数,并公布随机数的哈希值。
节点客户端输入随机数生成请求,输入信息包括RequestRandomBit所用参数:费用φ、时间戳t及经济上限v,即RequestRandomBit=f(φ,t,v),其中费用φ为请求生成随机数的节点根据随机数价值在发出请求时支付给随机数生成合约的费用;时间戳t为随机数生成过程的截止时间;经济上限v为所述节点请求随机数所承担的经济风险上限,调用随机数生成合约,提出随机数生成请求;
随机数生成合约接收节点的随机数生成请求,对比接收到的时间戳t与本次生成随机数的总可用时间,在确认t大于本次生成随机数的总可用时间后,分配至请求节点一个请求标识号id,同时记录φ,t及v的值,并将id标记号广播公开,以便在下一个时间单位中注册;若t小于本次生成随机数的总可用时间,则拒绝该请求,随机数生成的总可用时间与区块链中区块生成难度有关,即区块的挖掘难度决定该区块生成时间,比如比特币的生成时间平均6.5秒,以太币的生成时间为16秒。设置时间戳及请求标识号可进一步提高在区块链网络中随机数生成的可溯源性;
参与者收到请求标识号id后,根据id对应的φ,t及v信息,选择性提交押金w注册成为相应博弈参与者,区块链网络中任一参与者均可通过缴纳押金w注册成为博弈参与者,所述押金w大于等于所述节点请求随机数所承担的经济风险上限v。由此保证请求随机数的节点无需信任区块链网络中的任何参与者,均可提出随机数生成的请求,一旦出现恶意博弈参与者破坏随机数的生成,则该博弈参与者所提交的押金转给本次随机数请求节点。
***对注册成为本次博弈参与者进行1到n(n≥2)编号,并按照编号的奇偶性将博弈参与者分组,对于偶数组的每个博弈参与者,令编号为i(i≤n)的博弈参与者属于偶数组,存在数组Si={0,2},在奇数组的每个博弈参与者,令编号为j(i≤n)的博弈参与者属于奇数组,存在数组Sj={1,3},不同奇偶性的博弈参与者选择所持有的数组的数进行两两小型博弈,令偶数组中编号为i(i≤n)的博弈参与者与奇数组中编号为j(i≤n)的博弈参与者参与小型博弈,具体逻辑如下:
每两个不同奇偶组的博弈参与者(i,j)选择所持有的数组的数进行一场小型随机数选择博弈,在所述小型随机数选择博弈中,博弈参与者选择随机数并将其进行哈希运算,根据所选随机数、请求标识号id计算其哈希值h(xi)=hash(i,xi,id),博弈存在为3种结果:
1)博弈参与者选择数比对方恒大1时认定为取胜,记录博弈结果1点;
2)博弈参与者选择数比对方小1时认定为失败,记录博弈结果-1点;
3)其他记录博弈结果0点。
即:
如图3所示,在博弈参与者x与y进行的小型博弈中,图中箭头的指向表示参与者y对应于x胜出。
其中,博弈参与者i的效用值是其参与所有小型随机数选择博弈的点数总和:
u(i)=∑i≠jf(xi,xj),在本次博弈中所有博弈参与者的效用值集合U:(u1...ui...un)中,选择选择效用值最高umax的博弈参与者作为最终博弈胜出者被给以选择随机数的权限;
拥有随机数选择权限的博弈参与者(假定为i)选择随机数作为唯一一致的随机数xi输出,并计算显示所述随机数对应的哈希值h(i)。
Step3:根据生成随机数的哈希值h(i),进行随机数验证,调用GetOutput函数向所述节点客户端输出随机数生成结果。
在截止时间t之后,请求节点客户端调用随机数生成合约的GetOutput函数,首先进行随机数验证,对比散列值hash(i,xi,id)是否等于h(i),确认输出结果:
(1)故障:无随机数哈希值h(i),没有参与者注册并参与博弈选择随机数,即输出产生故障,并退还费用φ,分析原因:
1)请求本次随机数生成的节点提供的费用φ比较低,而请求随机数所承担的经济风险上限v比较高,导致链上参与者不愿参与到本次随机数选择;
2)同时请求随机数生成的节点比较多,链上参与者数量少于请求节点的数量;
3)随机数生成合约生成随机数的整个过程时间超过截止时间t,导致无随机数哈希值输出。
分析以上三种原因,由于在上述随机数生成的过程中,对参与博弈人数n,以及请求随机数生成节点提供的截止时间t均有限制,故输出“故障”的概率几乎没有。
(2)惩罚:出现恶意博弈参与者导致随机数生成失败,hash(i,xi,id)≠h(i),即输出随机数生成失败,并退还费用φ及恶意博弈参与者押金w,分析原因:博弈参与者在参与随机数选择的过程中,选择与随机数不一致的哈希值存储并被记录在随机数生成合约中,并最终以效用值最大胜出,导致在验证随机数的过程中,hash(i,xi,id)≠“h(i)”。
由于博弈参与者是两两组合进行小型博弈,每个博弈参与者进行小型博弈次数为(n/2)次,而每次选择组合中数比对方大1的概率为0.5,之后通过效用值最大的博弈者作为胜出的博弈者选择的随机数作为唯一一致随机数,所以恶意博弈参与者很难通过胜出大部分小型博弈并最终成为效用值最大的博弈参与者,进而进行恶意存储随机数哈希值,故通过博弈的手段可以防止区块链网络中随机数生成的过程中被随意篡改,并通过随机数生成合约的随机数验证,进一步保障随机数生成的安全性。
(3)成功:hash(i,xi,id)=h(i),向请求节点客户端输出生成的唯一一致的随机数,并根据费用φ、参与博弈人数n及其博弈效用值u(i)调用激励函数,为博弈参与者分配经济激励R,分配经济激励公式为:其中,为博弈参与者的贡献度。
在输出函数成功输出随机数之后,所有博弈参与者调用退款函数,返还本次参与博弈注册押金w。本发明所述随机数生成合约基于现场可编程门阵列实现并行处理多个随机数生成任务,这些任务是独立的,不需要同步,针对每个请求节点生成其专有随机数。
下面结合附图及具体实施例对本发明作进一步详细说明。
采用Go语言模拟在局部以太坊区块链中部署随机数生成合约,在该实验中,随机数请求节点要求每秒256个随机数生成,试验采用不同的以太坊区块体难度,导致新区块生成的速率不同,其中,平均块生成时间为14133ms,设置随机数请求截止时间戳为10倍的块生成时间。测试结果是在运行微软Windows10的英特尔酷睿i5-2520M双核(2.5GHz)计算机上得到的。
实验结果如下表1和表2。表1中显示了随机数生成合约对每个随机数生成请求的处理时间,即从步骤1到步骤3结束的时间,随着区块体生成难度的增加,随机数生成的处理时间越来越大,表2中显示了吞吐量,即随着时间的推移成功生成随机数的数量。
表1随机数生成的处理时间与区块生成难度测试表
表2随机数生成数量与时间及区块生成难度的测试表
由表1和表2可看出,本发明随机数生成方法是可伸缩的。在与Ethereum具有相同挖掘难度的区块链上,处理时间严重依赖于块生成时间。相反,吞吐量的依赖性要小得多,因为随机数生成合约可以有效地并行处理许多请求。
在本发明中形式化了区块链上随机数生成的功能和安全需求,并为该问题提供了第一个可证明的安全、良好的激励和不可操作的方法。实验结果表明,该方法具有良好的可扩展性和较高的吞吐量。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (6)
1.一种基于区块链的随机数生成方法,其特征在于,包括如下步骤:
(1)在区块链上部署随机数生成合约,所述随机数生成合约利用随机数生成博弈协议定义,其中包括随机数生成函数、退款函数、激励函数、输出函数;
(2)所述随机数生成合约接收节点的随机数生成请求,启动随机数生成过程为所述请求生成随机数,并公布随机数的哈希值;
(3)根据生成随机数的哈希值,进行随机数验证,调用输出函数向所述节点客户端输出随机数生成结果。
2.根据权利要求1所述的基于区块链的随机数生成方法,其特征在于,所述步骤(1)所述随机数生成博弈协议逻辑如下:
1.1对博弈参与者按照1到n(n≥2)进行编号,并按编号奇偶性进行分类,在偶数组合中存在数组{0,2},在奇数组合中存在数组{1,3},不同奇偶性的博弈参与者选择所持有的数组的数进行两两小型博弈,在每场博弈中分为3种结果:
1)博弈参与者选择数比对方恒大1时认定为取胜,记录博弈结果1点;
2)博弈参与者选择数比对方小1时认定为失败,记录博弈结果-1点;
3)其他记录博弈结果0点。
1.2计算所述博弈参与者参与所有小型随机数选择博弈的点数总和即为所述博弈参与者的效用值,对比所有参与者的效用值,选择效用值最大的博弈参与者给以选择随机数的权限;
1.3拥有随机数选择权限的博弈参与者选择随机数输出,并计算显示所述随机数对应的哈希值。
3.根据权利要求1所述的基于区块链的随机数生成方法,其特征在于,所述步骤(2)具体如下:
2.1节点客户端输入随机数生成请求所用参数:费用、时间戳及经济上限,提出随机数生成请求,其中费用为请求生成随机数的节点根据随机数价值在发出请求时支付给随机数生成合约的费用;时间戳为随机数生成过程的截止时间;经济上限为所述节点请求随机数所承担的经济风险上限;
2.2随机数生成合约接收节点的随机数生成请求,对比接收到的时间戳与本次生成随机数的总可用时间,在确认时间戳大于本次生成随机数的总可用时间后,分配至请求节点一个请求标识号,同时记录费用、时间戳及经济上限的值,并将标记号广播公开,以便在下一个时间单位中注册;
2.3区块链网络中任一参与者收到请求标识号后,选择性提交押金注册成为相应博弈参与者,所述押金大于等于所述节点请求随机数所承担的经济风险上限,所述博弈参与者参与博弈,并生成各自博弈的效用值,胜出博弈参与者选择随机数输出,并利用预定义的哈希函数计算显示所选随机数的哈希值;
2.4所述随机数生成合约记录所述胜出博弈参与者选择的随机数、哈希值及效用值。
4.根据权利要求1和3所述的基于区块链的随机数生成方法,其特征在于,所述步骤(3)中在截止时间之后,所述请求节点客户端调用随机数生成合约的输出函数,经胜出博弈参与者和请求标识号及输出随机数的联合散列值与哈希值对比后,输出结果包括如下:
3.1故障:无随机数哈希值,没有参与者注册并参与博弈选择随机数,即输出产生故障,并退还费用;
3.2惩罚:出现恶意博弈参与者导致随机数生成失败,博弈参与者和请求标识号及输出随机数的联合散列值不等于所述哈希值,即输出随机数生成失败,并退还费用及恶意博弈参与者押金;
3.3成功:博弈参与者和请求标识号及输出随机数的联合散列值等于所述哈希值h,向请求节点客户端输出生成的唯一一致的随机数,并根据费用、参与博弈人数及其博弈效用值调用激励函数,为博弈参与者分配经济激励。
5.根据权利要求2和3所述的基于区块链的随机数生成方法,其特征在于,所述步骤3.3中随机数成功输出后,博弈参与者调用退款函数,返还本次参与博弈注册押金。
6.根据权利要求1-5所述的基于区块链的随机数生成方法,其特征在于,所述随机数生成合约基于现场可编程门阵列实现并行处理多个随机数生成任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910665963.6A CN110427782A (zh) | 2019-07-23 | 2019-07-23 | 一种基于区块链的随机数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910665963.6A CN110427782A (zh) | 2019-07-23 | 2019-07-23 | 一种基于区块链的随机数生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110427782A true CN110427782A (zh) | 2019-11-08 |
Family
ID=68411925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910665963.6A Pending CN110427782A (zh) | 2019-07-23 | 2019-07-23 | 一种基于区块链的随机数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427782A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111009068A (zh) * | 2019-12-18 | 2020-04-14 | 中体彩科技发展有限公司 | 基于区块链的彩票开奖号码生成方法及*** |
CN111562902A (zh) * | 2020-05-07 | 2020-08-21 | 成都库珀区块链科技有限公司 | 一种基于区块链的随机数生成方法及装置 |
CN111786772A (zh) * | 2019-12-10 | 2020-10-16 | 深圳启元信息服务有限公司 | 一种基于区块链的确定的非确定性选择方法、***及存储介质 |
CN112090055A (zh) * | 2020-09-14 | 2020-12-18 | 涂先锋 | 一种公平性的桌面游戏数字化***及验证方法 |
CN112764714A (zh) * | 2021-01-28 | 2021-05-07 | 上海朝夕网络技术有限公司 | 基于智能合约的自激励随机数生成方法及终端设备 |
CN113055178A (zh) * | 2019-12-27 | 2021-06-29 | 深圳市网心科技有限公司 | 区块链***及数值信息传输方法、***、装置、介质 |
CN113449342A (zh) * | 2020-03-27 | 2021-09-28 | 山东浪潮质量链科技有限公司 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
CN113448541A (zh) * | 2020-03-26 | 2021-09-28 | 宏碁股份有限公司 | 区块链随机数生成***及区块链随机数生成方法 |
CN113489584A (zh) * | 2021-07-02 | 2021-10-08 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN113761586A (zh) * | 2020-06-28 | 2021-12-07 | 北京同邦卓益科技有限公司 | 基于区块链的物品随机抽检的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180234413A1 (en) * | 2017-02-13 | 2018-08-16 | Zentel Japan Corporation | Authenticated Network |
CN109461076A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链交易方法 |
CN109753269A (zh) * | 2019-01-30 | 2019-05-14 | 百度在线网络技术(北京)有限公司 | 区块链的随机数生成方法、装置、设备和存储介质 |
-
2019
- 2019-07-23 CN CN201910665963.6A patent/CN110427782A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180234413A1 (en) * | 2017-02-13 | 2018-08-16 | Zentel Japan Corporation | Authenticated Network |
CN109461076A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链交易方法 |
CN109753269A (zh) * | 2019-01-30 | 2019-05-14 | 百度在线网络技术(北京)有限公司 | 区块链的随机数生成方法、装置、设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
KRISHNENDU CHATTERJEE等: "Probabilistic Smart Contracts: Secure Randomness on the Blockchain", 《2019 IEEE INTERNATIONAL CONFERENCE ON BLOCKCHAIN AND CRYPTOCURRENCY (ICBC)》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111786772B (zh) * | 2019-12-10 | 2024-05-07 | 北京铭泰恒通信息技术有限公司 | 一种基于区块链的确定的非确定性选择方法、***及存储介质 |
CN111786772A (zh) * | 2019-12-10 | 2020-10-16 | 深圳启元信息服务有限公司 | 一种基于区块链的确定的非确定性选择方法、***及存储介质 |
CN111009068A (zh) * | 2019-12-18 | 2020-04-14 | 中体彩科技发展有限公司 | 基于区块链的彩票开奖号码生成方法及*** |
CN111009068B (zh) * | 2019-12-18 | 2021-09-17 | 中体彩科技发展有限公司 | 基于区块链的彩票开奖号码生成方法及*** |
CN113055178A (zh) * | 2019-12-27 | 2021-06-29 | 深圳市网心科技有限公司 | 区块链***及数值信息传输方法、***、装置、介质 |
CN113448541B (zh) * | 2020-03-26 | 2023-08-01 | 宏碁股份有限公司 | 区块链随机数生成***及区块链随机数生成方法 |
CN113448541A (zh) * | 2020-03-26 | 2021-09-28 | 宏碁股份有限公司 | 区块链随机数生成***及区块链随机数生成方法 |
CN113449342A (zh) * | 2020-03-27 | 2021-09-28 | 山东浪潮质量链科技有限公司 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
CN113449342B (zh) * | 2020-03-27 | 2023-04-11 | 山东浪潮质量链科技有限公司 | 一种基于区块链的随机数预言机实现方法、设备及介质 |
CN111562902B (zh) * | 2020-05-07 | 2023-08-11 | 成都库珀创新科技有限公司 | 一种基于区块链的随机数生成方法及装置 |
CN111562902A (zh) * | 2020-05-07 | 2020-08-21 | 成都库珀区块链科技有限公司 | 一种基于区块链的随机数生成方法及装置 |
CN113761586A (zh) * | 2020-06-28 | 2021-12-07 | 北京同邦卓益科技有限公司 | 基于区块链的物品随机抽检的方法和装置 |
CN112090055A (zh) * | 2020-09-14 | 2020-12-18 | 涂先锋 | 一种公平性的桌面游戏数字化***及验证方法 |
CN112764714A (zh) * | 2021-01-28 | 2021-05-07 | 上海朝夕网络技术有限公司 | 基于智能合约的自激励随机数生成方法及终端设备 |
CN112764714B (zh) * | 2021-01-28 | 2023-10-03 | 上海朝夕网络技术有限公司 | 基于智能合约的自激励随机数生成方法及终端设备 |
CN113489584A (zh) * | 2021-07-02 | 2021-10-08 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN113489584B (zh) * | 2021-07-02 | 2024-04-05 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110427782A (zh) | 一种基于区块链的随机数生成方法 | |
Poon et al. | Plasma: Scalable autonomous smart contracts | |
CN109964446B (zh) | 一种基于投票的共识方法 | |
US11769214B1 (en) | Method for tracking transferrable digital objects within decentralized consensus system | |
Kaur et al. | Blockchain: A path to the future | |
Desai et al. | A hybrid blockchain architecture for privacy-enabled and accountable auctions | |
US11978313B2 (en) | Distributed ledger based gaming system | |
KR102250810B1 (ko) | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 | |
Feng et al. | Towards random-honest miners selection and multi-blocks creation: Proof-of-negotiation consensus mechanism in blockchain networks | |
CN110380858A (zh) | 用于区块链的游戏共识协议 | |
US11030841B2 (en) | Decentralized talent discovery via blockchain | |
CN105488675A (zh) | 一种区块链的分布式共享总账构建方法 | |
KR102050087B1 (ko) | 하드웨어 및 지분증명 합의 알고리즘을 포함하는 블록 체인 시스템과 그 블록 체인 시스템에서의 블록 생성 방법 | |
CN110310203A (zh) | 一种区块链交易方法和装置 | |
CN110298641B (zh) | 区块链的规则更新方法、装置、区块链节点及网络 | |
Snow et al. | Business processes secured by immutable audit trails on the blockchain | |
Valdivia et al. | Decentralization: The failed promise of cryptocurrencies | |
Almashaqbeh | Cachecash: A cryptocurrency-based decentralized content delivery network | |
Chaumont et al. | DPoPS: Delegated Proof-of-Private-Stake, a DPoS implementation under X-Cash, a Monero based hybrid-privacy coin | |
CN114693241A (zh) | 一种基于区块链的电子简历***及其实现方法 | |
WO2022079431A1 (en) | Block reward management in blockchain | |
TWM586416U (zh) | 基於區塊鏈技術實現交易的多中心分散驗證系統 | |
Suliyanti et al. | Evaluation of hash rate-based double-spending based on proof-of-work blockchain | |
WO2022189780A1 (en) | Improved blockchain relying on advanced consensus | |
KR20190097683A (ko) | 블록 체인 기반의 복권 발행 방법 및 시스템 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191108 |
|
RJ01 | Rejection of invention patent application after publication |