CN115344235A - 摇号方法、区块链节点和可读存储介质 - Google Patents
摇号方法、区块链节点和可读存储介质 Download PDFInfo
- Publication number
- CN115344235A CN115344235A CN202110517196.1A CN202110517196A CN115344235A CN 115344235 A CN115344235 A CN 115344235A CN 202110517196 A CN202110517196 A CN 202110517196A CN 115344235 A CN115344235 A CN 115344235A
- Authority
- CN
- China
- Prior art keywords
- random number
- number seed
- node
- seed
- nodes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012790 confirmation Methods 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 12
- 239000012634 fragment Substances 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 11
- 230000009286 beneficial effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000002349 favourable effect Effects 0.000 description 3
- 238000004091 panning Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种摇号方法、区块链节点和可读存储介质,涉及区块链技术领域,区块链系统包括n‑1个第二节点和1个第一节点,n为大于1的正整数;方法包括:接收摇号请求;根据第一预设随机算法生成一个随机数种子片段并签名,保存随机数种子片段至本地,并发送随机数种子片段给n‑1个第二节点;接收n‑1个第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;将第一随机数种子发送给n‑1个第二节点;若接收到n‑1个第二节点发送的第一随机数种子的确认信号,将第一随机数种子代入随机数生成函数,得到目标随机数。解决了现有技术缺少公平性高、可验证性强的摇号方法的问题。
Description
技术领域
本发明实施例涉及区块链技术领域,尤其涉及一种摇号方法、区块链节点和可读存储介质。
背景技术
现有的基于区块链的摇号方法中,随机种子仅能实现针对特定节点的公开校验,每一节点在摇号过程中的公平性难以保证,且在随机种子由一个节点产生时存在单个节点多次执行程序,生成对自己有利的随机种子的隐患;缺少公平性高、可验证性强的摇号方法。
发明内容
本发明实施例提供一种摇号方法、区块链节点和可读存储介质,以解决现有技术缺少公平性高、可验证性强的摇号方法的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种摇号方法,应用于区块链系统的第一节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
接收摇号请求;
根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
将所述第一随机数种子发送给n-1个所述第二节点;
若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
可选的,所述接收摇号请求之后,还包括:
接收所述第一节点为主节点的确认信号;所述确认信号由客户端从所述区块链系统的多个节点中根据第二预设随机算法随机指定。
可选的,所述依据本地保存的n个随机数种子片段生成第一随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第一随机数种子。
可选的,所述将所述第一随机数种子发送给n-1个所述第二节点之后还包括:
若未接收到所述第二节点发送的第一随机数种子的确认信号,转入所述根据第一预设随机算法生成一个随机数种子片段并签名的步骤。
可选的,所述摇号请求为从包含X个数的集合中随机选取Y个数;所述X个数分配有索引,Y为正整数,X为不小于Y的正整数;
所述得到目标随机数之后,还包括:
通过所述Y个数,对所述X个数进行索引运算,获取Y个对应元素,所述Y个对应元素为最终摇号结果。
第二方面,本发明实施例提供了一种摇号方法,应用于区块链系统的第二节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
接收摇号请求;
接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;若所述第二随机数种子与所述第一随机数种子相等,则向所述第一节点发送所述第一随机数种子的确认信号。
可选的,所述依据本地保存的n个随机数种子片段生成第二随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第二随机数种子。
可选的,还包括:
若所述第二随机数种子与所述第一随机数种子不相等,向所述第一节点发送第一随机数种子的非确认信号;
所述方法还包括:
若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤。
第三方面,本发明实施例提供了一种区块链节点,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第一接收模块,用于接收摇号请求;
第一执行模块,用于根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
所述第一执行模块还用于接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
第一发送模块,用于将所述第一随机数种子发送给n-1个所述第二节点;
随机数生成模块,用于若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
第四方面,本发明实施例提供了一种区块链节点,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第二接收模块,用于接收摇号请求;
第二执行模块,用于接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
所述第二执行模块还用于若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
第二发送模块,用于若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
所述第二执行模块还用于接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;
所述第二发送模块还用于若所述第二随机数种子与所述第一随机数种子相等时,向所述第一节点发送所述第一随机数种子的确认信号。
第五方面,本发明实施例提供了一种区块链节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,所述处理器执行所述程序时实现如第一方面任一项所述的摇号方法或如第二方面任一项所述的摇号方法中的步骤。
第六方面,本发明实施例提供了一种可读存储介质,其上存储有程序,该程序被处理器执行时实现如第一方面任一项所述的摇号方法或如第二方面任一项所述的摇号方法中的步骤。
本发明实施例中,区块链系统包括n-1个第二节点和1个第一节点,第一节点接收用户发起的摇号请求和自身为主节点的确认信号,根据预设随机算法生成一个随机数种子片段并签名,保存该随机数种子片段至本地并发送给n-1个第二节点,接收n-1个第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;将第一随机数种子发送给n-1个第二节点,若接收到n-1个第二节点发送的第一随机数种子的确认信号,将第一随机数种子代入随机数生成函数,得到目标随机数;主节点由客户端随机指定,每一节点均有决定第一随机数种子的随机数种子片段生成,保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子;每一第二节点均可验证第一节点生成的第一随机数种子,第一随机数种子必须经所有第二节点验证合法性通过后生成目标随机数,解决了随机数生成过程中其他节点无法验证的问题,人为干预可能性比较低,从技术角度保证了摇号过程的公平性和可验证性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种摇号方法的流程示意图之一;
图2为本发明实施例提供的一种摇号方法的流程示意图之二;
图3为本发明实施例提供的一种区块链节点的结构示意图之一;
图4为本发明实施例提供的一种区块链节点的结构示意图之二;
图5为本发明实施例提供的一种区块链节点的结构示意图之三。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例提供的一种摇号方法的流程示意图之一;本发明提供一种摇号方法,应用于区块链系统的第一节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
步骤11:接收摇号请求;
步骤12:根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
步骤13:接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
步骤14:将所述第一随机数种子发送给n-1个所述第二节点;
步骤15:若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
本发明实施例中,区块链系统包括n-1个第二节点和1个第一节点,第一节点接收用户发起的摇号请求和自身为主节点的确认信号,根据预设随机算法生成一个随机数种子片段并签名,保存该随机数种子片段至本地并发送给n-1个第二节点,接收n-1个第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;将第一随机数种子发送给n-1个第二节点,若接收到n-1个第二节点发送的第一随机数种子的确认信号,将第一随机数种子代入随机数生成函数,得到目标随机数;主节点由客户端随机指定,每一节点均有决定第一随机数种子的随机数种子片段生成,保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子;每一第二节点均可验证第一节点生成的第一随机数种子,第一随机数种子必须经所有第二节点验证合法性通过后生成目标随机数,解决了随机数生成过程中其他节点无法验证的问题,人为干预可能性比较低,从技术角度保证了摇号过程的公平性和可验证性。
本发明的一些实施例中,可选的,所述接收摇号请求之后,还包括:
接收所述第一节点为主节点的确认信号;所述确认信号由客户端从所述区块链系统的多个节点中根据第二预设随机算法随机指定。
本发明实施例中,主节点由客户端从区块链系统的多个节点中根据第二预设随机算法随机指定一节点生成,保证了主节点生成的公平性和随机性。
本发明的一些实施例中,可选的,所述依据本地保存的n个随机数种子片段生成第一随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第一随机数种子。
本发明实施例中,依据本地保存的n个随机数种子片段生成第一随机数种子的实现方式包括但不限于执行n-1次异或、求余操作或进行哈希计算;n个随机数种子片段来自n个节点,最终的随机种子必须由所有节点收到其它节点广播自己的随机种子,验证合法性,验证通过,才可进行后续步骤;生成的第一随机数种子公平性高;保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子。
本发明的一些实施例中,可选的,所述将所述第一随机数种子发送给n-1个所述第二节点之后还包括:
若未接收到所述第二节点发送的第一随机数种子的确认信号,转入所述根据第一预设随机算法生成一个随机数种子片段并签名的步骤。
本发明实施例中,若未接收到第二节点发送的第一随机数种子的确认信号,则转入根据第一预设随机算法生成一个随机数种子片段并签名的步骤,实现了第二节点也可验证随机数种子是否被改动,做到随机数种子的每一节点的可验证。
本发明的一些实施例中,可选的,当重复1-2次转入所述根据第一预设随机算法生成一个随机数种子片段并签名的步骤后,若仍然未收到确认信号,则说明有恶意节点,需要进行人工干预。
本发明的一些实施例中,可选的,所述摇号请求为从包含X个数的集合中随机选取Y个数;所述X个数分配有索引,Y为正整数,X为不小于Y的正整数;
所述得到目标随机数之后,还包括:
通过所述Y个数,对所述X个数进行索引运算,获取Y个对应元素,所述Y个对应元素为最终摇号结果。本发明实施例中,摇号方法应用于不同应用场景时,目标随机数代表的元素来自于有索引的多个号码时,得到目标随机数后通过对多个号码进行索引运算即可得到包含目标随机数信息的对应元素,通过本方法得到的摇号结果公平性高,可验证性强。
在本发明的一些实施例中,可选的,针对第一节点侧,随机种子构造方案如下:
摇号客户端发送摇号请求给摇号节点。摇号请求包括集合数量X和摇号结果数Y,其中X>=Y,摇号节点个数为N(N>=2)。
一、初始化阶段
初始化阶段用于确定随机数产生的摇号范围,即对集合数量X分配索引。以及根据预定随机算法进行随机指定摇号主节点。摇号主节点是由客户端发送摇号请求同时由客户端随机指定的。
二、随机种子生成阶段
接收到摇号客户端的请求,第一节点成为摇号主节点。不失一般性,记第一节点为A,其余为N-1个第二节点。
1:利用预设随机算法生成一段64位的随机数种子F1片段,全节点发送给第二节点。
2:第二节点收到A发出的随机数AN,对A的数字签名进行验证,验证是否通过,此次验证目的主要是验证该随机数是否由第一节点A发出,各自按照时间顺序生成利用随机算法生成一段64位的随机数F2、F3、F4、F5……FN,进行第二次全节点发送。
3:二次全节点发送后,每个节点都拥有了N个随机数种子片段,第二节点通知第一节点A随机数种子片段收集已经准备完成,A继续执行。
4:A对这N个随机数种子片段执行N-1次异或操作,获得最终随机数种子R。
5:A将R广播给第二节点,第二节点收到R后,对本身N个随机数片段也执行N-1次异或操作。执行结果与R相比是否相等,相等,通知A确认R为最终随机数种子。不相等则重新执行1-4步骤。进行此步骤的目的是为了第二节点也可验证是否为随机种子是否被改动,做到随机种子可验证。
三、随机数生成阶段
A收到第二节点确认,R为最终的随机种子。利用R初始化随机数生成函数,直至得到Y个不重复随机生成函数。
四、摇号出号阶段
通过Y个随机数,对所述的集合数量X进行索引运算,并获取对应元素,所述对应元素即为摇号结果。
具体地,以3个节点作为举例说明,注:节点数目不限,其流程一样,其中,随机种子生成是由所有节点均参与,不由单个节点控制。
1)节点A生成随机数AN并签名,保存到本地节点,然后全网发送其他网络节点(B、C)。
2)其他节点收到A发送的随机数AN后验证签名,并保存数据到本地节点。
3)节点B生成随机数BN并签名,保存到本地节点,然后全网发送其他网络节点。
4)其他节点收到B发送的随机数BN后验证签名,并保存数据到本地节点。
5)节点C生成随机数CN并签名,保存到本地节点,然后全网发送其他网络节点。
6)其他节点收到C发送的随机数CN后验证签名,并保存数据到本地节点。
7)A,B,C三个节点最终收到全部数据:AN、BN、CN,生成最终随机数:ANEND、BNEND、CNEND。各个节点向全网发送最终随机数ANEND、BNEND、CNEND。
8)节点A对ANEND与BNEND、CNEND进行对比,如果一致,则保留数据;B节点ANEND与BNEND、CNEND,进行对比,如果一致,则保留数据,报送节点A;C节点ANEND与BNEND、CNEND,进行对比,如果一致,则保留数据,报送节点A。
9)节点A最终把ANEND数据保存到区块链。
请参考图2,图2为本发明实施例提供的一种摇号方法的流程示意图之二;
本发明实施例还提供了一种摇号方法,应用于区块链系统的第二节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
步骤21:接收摇号请求;
步骤22:接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
步骤23:若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
步骤24:若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
步骤25:接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;若所述第二随机数种子与所述第一随机数种子相等,则向所述第一节点发送所述第一随机数种子的确认信号。
本发明实施例中,区块链系统包括n-1个第二节点和1个第一节点,第一节点接收用户发起的摇号请求,接收第一节点发送的随机数种子片段并验证;若验证通过,第二节点根据第三预设随机算法生成一个随机数种子片段,保存随机数种子片段至本地并发送给其余n-2个所述第二节点和所述第一节点,若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向第一节点发送随机数种子片段的收齐信号;接收第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子,若第二随机数种子与第一随机数种子相等,则向第一节点发送第一随机数种子的确认信号;每一第二节点均有决定第一随机数种子的随机数种子片段生成,保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子;每一第二节点均可验证第一节点生成的第一随机数种子,第一随机数种子必须经所有第二节点验证合法性通过后生成目标随机数,解决了随机数生成过程中其他节点无法验证的问题,人为干预可能性比较低,从技术角度保证了摇号过程的公平性和可验证性。
本发明的一些实施例中,可选的,所述依据本地保存的n个随机数种子片段生成第二随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第二随机数种子。
本发明实施例中,依据本地保存的n个随机数种子片段生成第二随机数种子的实现方式包括但不限于执行n-1次异或、求余操作或进行哈希计算;n个随机数种子片段来自n个节点,最终的随机种子必须由所有节点收到其它节点广播自己的随机种子,验证合法性,验证通过,才可进行后续步骤;生成的第二随机数种子公平性高;保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子。
本发明的一些实施例中,可选的,还包括:
若所述第二随机数种子与所述第一随机数种子不相等,向所述第一节点发送第一随机数种子的非确认信号;
所述方法还包括:
若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤。
本发明实施例中,若第二随机数种子与第一随机数种子不相等,向第一节点发送第一随机数种子的非确认信号,实现了第二节点验证随机数种子是否被改动,做到随机数种子的每一节点的可验证。此外,在向第一节点发送第一随机数种子的非确认信号之后,若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤,保证了第二节点的摇号方法的完整性。
请参考图3,图3为本发明实施例提供的一种区块链节点的结构示意图之一;
本发明实施例提供了一种区块链节点30,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第一接收模块31,用于接收摇号请求;
第一执行模块32,用于根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
所述第一执行模块32还用于接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
第一发送模块33,用于将所述第一随机数种子发送给n-1个所述第二节点;
随机数生成模块34,用于若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
本发明实施例中,区块链系统包括n-1个第二节点和1个第一节点,第一节点接收用户发起的摇号请求和自身为主节点的确认信号,根据预设随机算法生成一个随机数种子片段并签名,保存该随机数种子片段至本地并发送给n-1个第二节点,接收n-1个第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;将第一随机数种子发送给n-1个第二节点,若接收到n-1个第二节点发送的第一随机数种子的确认信号,将第一随机数种子代入随机数生成函数,得到目标随机数;主节点由客户端随机指定,每一节点均有决定第一随机数种子的随机数种子片段生成,保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子;每一第二节点均可验证第一节点生成的第一随机数种子,第一随机数种子必须经所有第二节点验证合法性通过后生成目标随机数,解决了随机数生成过程中其他节点无法验证的问题,人为干预可能性比较低,从技术角度保证了摇号过程的公平性和可验证性。
本发明的一些实施例中,可选的,所述区块链节点为第一节点。
本发明的一些实施例中,可选的,所述第一接收模块31还用于接收所述第一节点为主节点的确认信号;所述确认信号由客户端从所述区块链系统的多个节点中根据第二预设随机算法随机指定。
本发明实施例中,主节点由客户端从区块链系统的多个节点中根据第二预设随机算法随机指定一节点生成,保证了主节点生成的公平性和随机性。
本发明的一些实施例中,可选的,所述依据本地保存的n个随机数种子片段生成第一随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第一随机数种子。
本发明实施例中,依据本地保存的n个随机数种子片段生成第一随机数种子的实现方式包括但不限于执行n-1次异或、求余操作或进行哈希计算;n个随机数种子片段来自n个节点,最终的随机种子必须由所有节点收到其它节点广播自己的随机种子,验证合法性,验证通过,才可进行后续步骤;生成的第一随机数种子公平性高;保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子。
本发明的一些实施例中,可选的,随机数生成模块34还用于若未接收到所述第二节点发送的第一随机数种子的确认信号,转入所述根据第一预设随机算法生成一个随机数种子片段并签名的步骤。
本发明实施例中,若未接收到第二节点发送的第一随机数种子的确认信号,则转入根据第一预设随机算法生成一个随机数种子片段并签名的步骤,实现了第二节点也可验证随机数种子是否被改动,做到随机数种子的每一节点的可验证。
本发明的一些实施例中,可选的,所述摇号请求为从包含X个数的集合中随机选取Y个数;所述X个数分配有索引,Y为正整数,X为不小于Y的正整数;
所述得到目标随机数之后,还包括:
通过所述Y个数,对所述X个数进行索引运算,获取Y个对应元素,所述Y个对应元素为最终摇号结果。本发明实施例中,摇号方法应用于不同应用场景时,目标随机数代表的元素来自于有索引的多个号码时,得到目标随机数后通过对多个号码进行索引运算即可得到包含目标随机数信息的对应元素,通过本方法得到的摇号结果公平性高,可验证性强。
请参考图4,图4为本发明实施例提供的一种区块链节点40的结构示意图之二;
本发明实施例提供了一种区块链节点40,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第二接收模块41,用于接收摇号请求;
第二执行模块42,用于接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
所述第二执行模块42还用于若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
第二发送模块43,用于若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
所述第二执行模块42还用于接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;
所述第二发送模块43还用于若所述第二随机数种子与所述第一随机数种子相等时,向所述第一节点发送所述第一随机数种子的确认信号。
本发明实施例中,区块链系统包括n-1个第二节点和1个第一节点,第一节点接收用户发起的摇号请求,接收第一节点发送的随机数种子片段并验证;若验证通过,第二节点根据第三预设随机算法生成一个随机数种子片段,保存随机数种子片段至本地并发送给其余n-2个所述第二节点和所述第一节点,若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向第一节点发送随机数种子片段的收齐信号;接收第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子,若第二随机数种子与第一随机数种子相等,则向第一节点发送第一随机数种子的确认信号;每一第二节点均有决定第一随机数种子的随机数种子片段生成,保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子;每一第二节点均可验证第一节点生成的第一随机数种子,第一随机数种子必须经所有第二节点验证合法性通过后生成目标随机数,解决了随机数生成过程中其他节点无法验证的问题,人为干预可能性比较低,从技术角度保证了摇号过程的公平性和可验证性。
本发明的一些实施例中,可选的,所述区块链节点为任一第二节点。
本发明的一些实施例中,可选的,所述依据本地保存的n个随机数种子片段生成第二随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第二随机数种子。
本发明实施例中,依据本地保存的n个随机数种子片段生成第二随机数种子的实现方式包括但不限于执行n-1次异或、求余操作或进行哈希计算;n个随机数种子片段来自n个节点,最终的随机种子必须由所有节点收到其它节点广播自己的随机种子,验证合法性,验证通过,才可进行后续步骤;生成的第二随机数种子公平性高;保证了每一节点都参与产生随机种子,避免了单个节点多次执行程序,生成对自己有利的随机种子。
本发明的一些实施例中,可选的,所述第二发送模块43还用于若所述第二随机数种子与所述第一随机数种子不相等,向所述第一节点发送第一随机数种子的非确认信号;
所述第二执行模块42还用于若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤。
本发明实施例中,若第二随机数种子与第一随机数种子不相等,向第一节点发送第一随机数种子的非确认信号,实现了第二节点验证随机数种子是否被改动,做到随机数种子的每一节点的可验证。此外,在向第一节点发送第一随机数种子的非确认信号之后,若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤,保证了第二节点的摇号方法的完整性。
本发明的一些实施例中,可选的,所述第一预设随机算法、第二预设随机算法或第三预设随机算法可以为相同或不同的预设随机算法;各节点之间的随机算法可以相同,也可以不同。
请参考图5,图5为本发明实施例提供的一种区块链节点50的结构示意图之三;本发明实施例提供了一种区块链节点50,包括存储器51、处理器52及存储在所述存储器51上并可在所述处理器52上运行的程序;所述处理器52执行所述程序时实现如上述任一实施例所述的摇号方法中的步骤。
本发明实施例还提供一种可读存储介质,可读存储介质上存储有程序,该程序被处理器执行时实现如上所述的摇号方法实施例的各个过程;或者实现如上所述的摇号方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的可读存储介质,可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (12)
1.一种摇号方法,其特征在于,应用于区块链系统的第一节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
接收摇号请求;
根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
将所述第一随机数种子发送给n-1个所述第二节点;
若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
2.根据权利要求1所述的摇号方法,其特征在于,所述接收摇号请求之后,还包括:
接收所述第一节点为主节点的确认信号;所述确认信号由客户端从所述区块链系统的多个节点中根据第二预设随机算法随机指定。
3.根据权利要求1所述的摇号方法,其特征在于,所述依据本地保存的n个随机数种子片段生成第一随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第一随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第一随机数种子。
4.根据权利要求1所述的摇号方法,其特征在于,所述将所述第一随机数种子发送给n-1个所述第二节点之后还包括:
若未接收到所述第二节点发送的第一随机数种子的确认信号,转入所述根据第一预设随机算法生成一个随机数种子片段并签名的步骤。
5.根据权利要求1所述的摇号方法,其特征在于,所述摇号请求为从包含X个数的集合中随机选取Y个数;所述X个数分配有索引;Y为正整数,X为不小于Y的正整数;
所述得到目标随机数之后,还包括:
通过所述Y个数,对所述X个数进行索引运算,获取Y个对应元素,所述Y个对应元素为最终摇号结果。
6.一种摇号方法,其特征在于,应用于区块链系统的第二节点,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;所述方法包括:
接收摇号请求;
接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;若所述第二随机数种子与所述第一随机数种子相等,则向所述第一节点发送所述第一随机数种子的确认信号。
7.根据权利要求6所述的摇号方法,其特征在于,所述依据本地保存的n个随机数种子片段生成第二随机数种子包括以下任一操作:
对本地保存的n个随机数种子片段执行n-1次异或操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行n-1次求余操作,生成第二随机数种子;
对本地保存的n个随机数种子片段执行哈希计算,生成第二随机数种子。
8.根据权利要求6所述的摇号方法,其特征在于,还包括:
若所述第二随机数种子与所述第一随机数种子不相等,向所述第一节点发送第一随机数种子的非确认信号;
所述方法还包括:
若接收到所述第一节点发送的新的随机数种子片段,转入所述验证所述第一节点的数字签名的步骤。
9.一种区块链节点,其特征在于,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第一接收模块,用于接收摇号请求;
第一执行模块,用于根据第一预设随机算法生成一个随机数种子片段并签名,保存所述随机数种子片段至本地,并发送所述随机数种子片段给n-1个所述第二节点;
所述第一执行模块还用于接收n-1个所述第二节点发送的随机数种子片段并保存,依据本地保存的n个随机数种子片段生成第一随机数种子;
第一发送模块,用于将所述第一随机数种子发送给n-1个所述第二节点;
随机数生成模块,用于若接收到n-1个所述第二节点发送的第一随机数种子的确认信号,将所述第一随机数种子代入随机数生成函数,得到目标随机数。
10.一种区块链节点,其特征在于,应用于区块链系统,所述区块链系统包括n-1个第二节点和1个第一节点,n为大于1的正整数;包括:
第二接收模块,用于接收摇号请求;
第二执行模块,用于接收到所述第一节点发送的随机数种子片段,验证所述第一节点的数字签名;
所述第二执行模块还用于若验证通过,根据第三预设随机算法生成一个随机数种子片段,保存所述随机数种子片段至本地,并发送所述随机数种子片段给其余n-2个所述第二节点和所述第一节点;
第二发送模块,用于若全部接收到其余n-2个所述第二节点和所述第一节点发送的随机数种子片段,向所述第一节点发送随机数种子片段的收齐信号;
所述第二执行模块还用于接收所述第一节点发送的第一随机数种子,依据本地保存的n个随机数种子片段生成第二随机数种子;
所述第二发送模块还用于若所述第二随机数种子与所述第一随机数种子相等时,向所述第一节点发送所述第一随机数种子的确认信号。
11.一种区块链节点,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项所述的摇号方法或如权利要求6至8中任一项所述的摇号方法中的步骤。
12.一种可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的摇号方法或如权利要求6至8中任一项所述的摇号方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110517196.1A CN115344235A (zh) | 2021-05-12 | 2021-05-12 | 摇号方法、区块链节点和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110517196.1A CN115344235A (zh) | 2021-05-12 | 2021-05-12 | 摇号方法、区块链节点和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344235A true CN115344235A (zh) | 2022-11-15 |
Family
ID=83947318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110517196.1A Pending CN115344235A (zh) | 2021-05-12 | 2021-05-12 | 摇号方法、区块链节点和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344235A (zh) |
-
2021
- 2021-05-12 CN CN202110517196.1A patent/CN115344235A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111526217B (zh) | 一种区块链中的共识方法和系统 | |
CN109743173B (zh) | 区块链中出块节点确定方法、区块验证方法及区块链系统 | |
CN108683539B (zh) | 区块链网络的管理方法、装置、介质及电子设备 | |
CN109493221B (zh) | 区块链中交易记录保密方法、设备、网络及存储介质 | |
CN108023896B (zh) | 区块同步方法及系统 | |
CN107171810B (zh) | 区块链的验证方法及装置 | |
CN110235162B (zh) | 区块链系统数据处理方法和区块的生成方法 | |
CN109379343B (zh) | 一种区块链的异构共识方法及终端 | |
WO2022217807A1 (zh) | 区块链共识节点选择方法、装置、计算机设备和存储介质 | |
CN111275438B (zh) | 区块链网络的共识方法、装置、设备和存储介质 | |
CN108737105B (zh) | 私钥的找回方法、装置、私钥设备和介质 | |
US10229467B2 (en) | Model anti-collusion watermark | |
CN112631550A (zh) | 区块链随机数生成方法、装置、设备及计算机存储介质 | |
US10795644B2 (en) | Decentralized random number generator | |
CN114281888A (zh) | 一种区块链共识方法、装置、设备及存储介质 | |
CN112749968B (zh) | 基于区块链的业务数据记录方法及装置 | |
CN111488134A (zh) | 基于区块链的公开随机数生成方法及设备 | |
CN114710504A (zh) | 区块链系统中共识节点的轮换方法、节点和区块链系统 | |
CN114338673A (zh) | 一种交易数据处理方法、装置、设备、系统及存储介质 | |
CN113988831A (zh) | 一种基于联盟链的转账方法 | |
CN115344235A (zh) | 摇号方法、区块链节点和可读存储介质 | |
CN111061813B (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN113810453A (zh) | 基于共识区块链的时间戳标记方法和装置 | |
CN112561700A (zh) | 区块链中交易数据的存储方法、验证方法、及区块链系统 | |
CN111177263A (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 |