CN113157700B - 一种基于区块链技术的快速抽签/排序方法 - Google Patents
一种基于区块链技术的快速抽签/排序方法 Download PDFInfo
- Publication number
- CN113157700B CN113157700B CN202110451727.1A CN202110451727A CN113157700B CN 113157700 B CN113157700 B CN 113157700B CN 202110451727 A CN202110451727 A CN 202110451727A CN 113157700 B CN113157700 B CN 113157700B
- Authority
- CN
- China
- Prior art keywords
- sorting
- block
- ordering
- lottery
- random number
- 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
- 238000012163 sequencing technique Methods 0.000 title claims abstract description 23
- 238000005516 engineering process Methods 0.000 title claims abstract description 17
- 230000000694 effects Effects 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims description 35
- 238000004364 calculation method Methods 0.000 claims description 26
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 210000003746 feather Anatomy 0.000 description 1
- 230000002147 killing effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- 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/23—Updating
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及区块链技术领域,提出了一种基于区块链技术的快速抽签/排序方法,包括以下步骤:S1、抽签/排序活动参与者在区块链的历史区块中任意选定一个抽签/排序区块;S2、活动主办方选定一个未来T2时刻才出块的区块作为初始抽签/排序区块;创建抽签/排序表,由初始区块开始,利用抽签/排序区块头中的随机数计算出索引值以及下一个计算索引值的区块,并根据各个区块的索引值计算抽签/排序号码,本发明适用于各类以数字号码为抽签/排序结果的情景,因而从技术上消除了抽签/排序作弊的可能性,而且只需获取一个新出区块中的随机数参数,就可以快速确定所有抽签/排序结果,排序方法简单快捷。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链技术的快速抽签/排序方法。
背景技术
现代社会中,有限的资源如何有序、有效、公平地进行分配,是一个关系到每个人切身利益的课题。其中,抽签和排序(排队)是进行资源分配过程中的两种常用方式,在现实生活大量存在。例如:学区房摇号、商场的抽奖促销活动、购物网站的限时秒杀抽奖活动、国家体育总局发行的体育彩票、中国福利彩票发行管理中心发行的双色球彩票、世界杯参赛球队的分组抽签、美国总统竞选人演讲排序等。虽然这些活动会事先公布若干的抽签/排序规则,但是,由于活动主办方是中心化性质的运维平台,会投入巨大的人力、物力资源,另一方面,其公平性也难以保证,利益相关的组织或个人在整个活动中会营私舞弊,监守自盗,第三方的黑客也觊觎这些资源利益,侵入***平台,破坏和修改抽签/排序规则。
区块链(Blockchain)是一种去中心化的链式数据结构,并以密码学方式保证其数据不可篡改和不可伪造,单个甚至多个节点对数据的修改无法影响其他更多节点的数据,其公链区块头中的随机数既不能***控,也不能被预测,是一种理想的随机数源,将其应用于抽签/排序活动,可以实现一个监管成本低、公开、公平和公正的快速抽签/排序方法。
发明内容
本发明克服现有技术存在的不足,所要解决的技术问题为:提供一种基于区块链技术的快速抽签/排序方法,解决抽签/排序的公开、公平和公正问题。
为了解决上述技术问题,本发明采用的技术方案为:一种基于区块链技术的快速抽签/排序方法,包括以下步骤:
S1、抽签/排序活动参与者在区块链的历史区块中任意选定一个抽签/排序区块,各个抽签/排序参者选定的区块各不相同;
S2、活动主办方选定一个未来T2时刻才出块的区块作为初始抽签/排序区块;
S3、创建抽签/排序表,所述抽签排序表中,所有抽签/排序活动参与者分别设置一个编号;
S4、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,根据随机数计算索引值,并通过索引值确定下一个参与索引值计算的区块,重复计算索引值;
S5、根据索引的计算结果对抽签/排序活动参与者进行排序。
所述步骤S4具体包括以下步骤:
S401、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,将其转换为十进制,再根据随机数N1计算出对应的索引Z1的值,并根据索引Z1的值从抽签/排序表中找到对应的编号;将当前计算出的抽签/排序活动参与者所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S402、从抽签/排序表中被删除行信息中的抽签/排序区块的区块头参数中提取出随机数N2,将其转换为十进制,再根据随机数N2计算出对应的索引Z2的值,并根据索引Z2的值从新的抽签/排序表中找到对应的编号;将当前计算出的抽签/排序号码所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S403、重复步骤S402,直至抽签排序表仅剩一行;
其中,所述索引的计算公式为:Zn= Nn mod Hn,并且,若Zn=0,则Zn=Hn;其中,Hn=H-n+1,H表示参与抽签/排序的总人数,n表示第n个参与计算的区块,Nn表示第n个参与计算的区块中的随机数。
所述区块链为区块头中有随机数参数以及时间戳参数的公有链。
所述步骤S3中,按照抽签/排序活动参与者的编号为其选定的抽签/排序区块高度的排序号。
所述的抽签/排序活动以数字号码为抽签/排序结果。
根据抽签/排序活动参与者索引被找到的顺序对抽签/排序活动参与者进行排序。
将索引Zn的值作为编号为n的抽签/排序活动参与者的排序号码,对抽签/排序活动参与者进行排序。
本发明与现有技术相比具有以下有益效果:
1、本发明基于区块链技术,去中心化,抽签/排序结果基于未知区块的随机数进行计算,任何人都无法作弊,即使是抽签/排序主办方,也无法事先预知或设定抽签/排序结果,可以实现一个公开、公平和公正的抽签/排序方法。
2、本发明的抽签/排序方法,区块中的随机数是通过全网所有节点一起协作生成的,从技术上保证了抽签/排序结果更随机、更公正。
3、本发明属于免公证、无硬件的抽签/排序方法,无需第三方公证,无需抽签/排序装置,能够大幅度降低抽签/排序成本。
4、本发明的抽签/排序方法,抽签/排序参与者可以自由自主地选择各自的抽签/排序区块高度。
5、本发明的抽签/排序方法,在抽签/排序之前已经公布了抽签/排序规则、抽签/排序区块高度、抽签/排序参与者与选定的抽签/排序区块之间的对应关系,任何用户都可以通过区块链浏览器查看,方便各方监督。
6、本发明的抽签/排序方法,在区块被确认之后,任何用户都可以通过区块链浏览器查看区头中的随机数,进而计算出抽签/排序结果,方便各方监督。
7、本发明的抽签/排序方法,只需要获取一个新出区块中的随机数参数,就可以快速确定所有抽签/排序结果。
附图说明
图1为本发明实施例提供的基于区块链技术的抽签/排序方法流程图;
图2为本发明实施例提供的抽签/排序参与者选定抽签/排序区块的方法流程图;
图3为本发明实施例提供的抽签/排序号码的计算方法流程图;
图4初始抽签/排序区块计算出抽签/排序号码及抽签/排序表的更新;
图5第二次计算出抽签/排序号码及抽签/排序表的更新;
图6第三次计算出抽签/排序号码及抽签/排序表的更新;
图7第四次计算出抽签/排序号码及抽签/排序表的更新;
图8第五次计算出抽签/排序号码及抽签/排序表的更新;
图9为本发明实施例中应用的区块链的区块头参数示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于区块链技术种类较多,为了方便理解本发明的实现方法,对其中一些重要细节进行说明:在区块链网络中,数据以文件的形式被永久记录,称之为区块。新区块一旦上链确认,就再也不能改变或删除。每个区块记录了它被创建之前一段时间内发生的所有事件。区块头中的参数信息可以包括:版本号、父区块哈希值、Merkle根、时间戳、难度值、随机数等,本发明对此不进行具体限定,但必须包含随机数和时间戳。随机数用来生成抽签/排序号码,时间戳可以验证本发明方法中提到的各种时刻。区块有两个标示符,一是区块头的哈希值,二是区块高度。本发明考虑到区块高度是连续变化的正整数,可以事先指定,因此选为本发明的区块标识符。
本发明实施例提供了一种基于区块链技术的快速抽签/排序方法,其基本原理如图1所示,在开始抽签/排序之前,抽签/排序活动参与者自己在区块链的历史区块中随便选定一个抽签/排序区块(高度),活动主办方指定一个初始的抽签/排序区块(高度),接下来活动主办方将指定的初始抽签/排序区块(高度)、以及所有的抽签/排序参与者信息与其所选定的对应区块(高度)写在区块公链之上,作为存证。然后在T1时刻将这些信息对外公布,不可更改,各方都可以在区块链浏览器里面进行公布信息的查看。活动主办方指定的初始抽签/排序区块是未来T2时刻才会产生的区块,相对于公布时间T1时刻来说,它是还没有产生的区块。这个初始抽签/排序区块在T3时刻被全网节点确认之后,数据不会再发生分叉更改,抽签/排序活动主办方才可以开始抽签/排序操作。抽签/排序活动主办方在T4时刻将所有的抽签/排序区块中的随机数提取出来,然后计算出来全部的抽签/排序号码。在时间数轴上,T1<T2<T3<T4。其中,所采用的具体方法包括抽签/排序参与者选定抽签/排序区块的方法,活动主办方选定初始抽签/排序区块的方法,抽签/排序号码的计算方法。
具体地,本发明实施例提供的一种基于区块链技术的快速抽签/排序方法,包括以下步骤:
S1、抽签/排序活动参与者在区块链的历史区块中任意选定一个抽签/排序区块,各个抽签/排序参者选定的区块各不相同。
S2、活动主办方选定一个未来T2时刻才出块的区块作为初始抽签/排序区块。
S3、创建抽签/排序表,所述抽签排序表中,所有抽签/排序活动参与者分别设置一个编号;所述步骤S3中,按照抽签/排序活动参与者的编号为其选定的抽签/排序区块高度的排序号。
S4、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,根据随机数计算索引值,并通过索引值确定对应的排序编号,以及下一个参与索引值计算的区块,重复计算索引值。
所述步骤S4具体包括以下步骤:
S401、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,将其转换为十进制,再根据随机数N1计算出对应的索引Z1的值,并根据索引Z1的值从抽签/排序表中找到对应的编号;将当前计算出的抽签/排序活动参与者所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S402、从抽签/排序表中被删除行信息中的抽签/排序区块的区块头参数中提取出随机数N2,将其转换为十进制,再根据随机数N2计算出对应的索引Z2的值,并根据索引Z2的值从新的抽签/排序表中找到对应的编号;将当前计算出的抽签/排序号码所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S403、重复步骤S402,直至抽签排序表仅剩一行;
其中,所述索引的计算公式为:Zn= Nn mod Hn,并且,若Zn=0,则Zn=Hn;其中,Hn=H-n+1,H表示参与抽签/排序的总人数,n表示第n个参与计算的区块,Nn表示第n个参与计算的区块中的随机数。
S5、根据索引的计算结果对抽签/排序活动参与者进行排序。
其中,抽签/排序参与者选定抽签/排序区块的方法流程如图2所示,抽签/排序活动参与者自己在区块链的历史区块中随便选定一个抽签/排序区块(高度)即可,唯一的要求是这些选定的区块(高度)之间不能有相同的情况出现,必须全部是唯一的,否则活动主办方再次让相同者重新选取或者重新开启一轮区块的任意选取。活动主办方选定初始抽签/排序区块的方法比较简单,选定一个未来T2时刻才出块的区块(高度)。
之后活动主办方依据活动参与者选定区块的先后顺序(即抽签/排序参与者选定抽签/排序区块高度从小到大的顺序)进行排序,然后将抽签/排序参与者与抽签/排序的区块一一对应起来(其中抽签/排序参与者的数量和抽签/排序区块的数量相同,一个抽签/排序参与者对应一个抽签/排序区块),如表1所示。
表1抽签/排序参与者与其选定的抽签/排序区块
其中,表1中的Block_1,Block_2,Block_3,...,Block_H是抽签/排序参与者选定的抽签/排序区块,其区块高度并不一定是连续的,但肯定是按照从小到大的顺序排列。之后,将所有参与者与被选区块的信息写在区块公链之上然后公布,格式为:
Participant_1 Block_1—Participant_2 Block_2—……—Participant_HBlock_H—Block_initialization
其中,最后一个为活动主办方选定的初始抽签/排序区块(高度)。
下面以基于以太坊公链技术的抽签/排序为例介绍,以太坊出块速度为平均每15秒出1个区块,即平均一分钟出4个区块,平均一小时出240个区块。假设时间是2018年11月20日下午13点整,则当前以太坊区块高度为6737645,假设抽签/排序活动主办方统计参与抽签/排序活动的有6人,主办方准备计划在2018年11月20日下午15点前后产生初始抽签/排序区块,可以大致计算出初始抽签/排序的区块高度为:6737645+240x2=6738125,主办方可以选定初始抽签/排序的区块高度为6738125,也可以在其附近选取,例如主办方最终选定初始抽签/排序的区块高度为6738120,其余6名抽签/排序参与者选定的抽签/排序区块高度为:123456、880880、66666、5840、1037627、1000。之后活动主办方按照区块高度从小到大的顺序进行排序为:1000、5840、66666、123456、880880、1037627,然后将抽签/排序参与者与抽签/排序的区块一一对应起来,如表2所示。
表2抽签/排序参与者与其选定的抽签/排序区块
其中,此处人名示例只是示意性说明,之后抽签/排序活动主办方将所有指定/选定的信息写在区块公链之上,文字信息格式为:
张三1000—李四5840—王五66666—赵六123456—李刚880880—张峰1037627—6738120
写入区块公链时,首先将文字信息转换为UTF-8编码,然后再将utf-8编码转为16进制编码,将其复制粘贴到以太坊钱包的发送选项中,发送的钱包地址可随意,由于以太坊转账的gas存在上限,所以可发送的数据也存在限制,大约只能发送不超过44KB的数据,对于信息过多的情况,可以采取分块写入的方式。等待交易确认完毕后,在以太坊浏览器区块交易页面下方,可以选择UTF-8编码,查询到刚才写入区块的文字信息。
抽签/排序活动主办方一旦将信息上链,可以在T1时刻公布,例如在2018年11月20日下午13点30分,对外公布。
注意:区块6738125是按照出块的平均速度估算出来的区块高度,实际情况可能在2018年11月20日下午15点前后的任何时间出块,例如:高度为6738125的区块真实出块时间为2018年11月20日下午14点52分32秒。
其中,抽签/排序号码的计算方法流程如图3所示,下面以基于以太坊公链技术的抽签/排序为例介绍,抽签/排序主办方公布的初始抽签/排序区块会在T2时刻出块,如表3所示。
表3初始抽签/排序区块出块时间
以太坊的每个区块默认要经过120个区块被全网节点确认之后,数据才不会再发生分叉更改,因此区块确认T3时刻=T2时刻+Ts,Ts是120个区块被全网节点确认的时间,抽签/排序主办方在T3时刻之后的T4时刻才可以开始抽签/排序操作,即T3<T4。例如:高度为6738120的初始抽签/排序区块在经过120个区块确认之后的时间是2018年11月20日下午15点21分25秒,在此时刻之后即可对高度为6738120的初始抽签/排序区块计算抽签/排序号码。
其中,抽签/排序号码的计算方法具体为:
1、创建抽签/排序表,如表4所示。当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,将其转换为十进制,再根据随机数N1计算出对应的索引Z1的值,并根据索引Z1的值从抽签/排序表中得到对应的抽签/排序编号;将当前计算出的抽签/排序编号所在的行信息从抽签/排序表中删除,更新抽签/排序表;
表4抽签/排序表
2、从抽签/排序表中被删除的抽签/排序区块的区块头参数中提取出随机数N2,将其转换为十进制,再根据随机数N2计算出对应的索引Z2的值,并根据索引Z2的值从新的抽签/排序表中找到对应的排序编号;将当前计算出的抽签/排序编号所在的行信息从抽签/排序表中删除,更新抽签/排序表;
依次将后续的抽签/排序区块按照此算法计算,直至找到所有的抽签/排序编号,即抽签/排序表只剩一行。其中,各个区块对应的索引的计算公式为:Zn= Nn mod Hn,并且,若Zn=0,则Zn=Hn;其中,Hn=H-n+1,H表示参与抽签/排序的总人数,n表示第n个参与计算的区块,Nn表示第n个参与计算的区块中的随机数。
在本实施例中,假设抽签/排序参与者的人数是H=6,同样假设可能的抽签/排序号码为1-6,如表4的第二列所示。如果可能的抽签/排序号码多于6个,计算过程与此一样,不再单独列出。下面以区块高度6738120、1000、5840、66666、123456、880880、1037627为例介绍6个抽签/排序号码的计算过程。
高度为6738120的初始抽签/排序区块随机数为:0xb393d84007562d80,转换成十进制为:12939923923878161792,H1=6,12939923923878161792 mod 6=0,即索引为Z1= 6,索引6对应的抽签/排序号码为6,则计算结果为:编码为6的抽签/排序参与者排序第一,然后删除抽签/排序表编号为6的那一行,更新抽签/排序表,如图4所示。
从抽签/排序表中被删除的抽签/排序区块高度为:1037627,从其区块头参数中提取出随机数为:0x86fdc0762c5713f9,转换成十进制为:9727142383972717561,索引为Z2=9727142383972717561 mod 5=4,查询抽签/排序表,可知编码为4的抽签/排序参与者排序第二,然后删除抽签/排序表编号为4的那一行,更新抽签/排序表,如图5所示。
从抽签/排序表中被删除的抽签/排序区块高度为:123456,从其区块头参数中提取出随机数为:0xf4b883fed83092b2,转换成十进制为:17633989471541170866,索引为Z3=17633989471541170866 mod 4=0,即索引为Z3= 4,查询抽签/排序表,可知编码为5的抽签/排序参与者排序第三,然后删除抽签/排序表编号为5的那一行,更新抽签/排序表,如图6所示。
从抽签/排序表中被删除的抽签/排序区块高度为:880880,从其区块头参数中提取出随机数为:0x2d1f47977b1ffa6b,转换成十进制为:3251396171916114539,索引为Z4=3251396171916114539mod 3=0,即索引为Z4= 3,查询抽签/排序表,可知编码为3的抽签/排序参与者排序第四,然后删除抽签/排序表编号为3的那一行,更新抽签/排序表,如图7所示。
从抽签/排序表中被删除的抽签/排序区块高度为:66666,从其区块头参数中提取出随机数为:0xfc631df0c04190b2,转换成十进制为:18186412640107073714,索引为Z5=18186412640107073714mod 2=0,即索引为Z5= 2,查询抽签/排序表,可知编码为2的抽签/排序参与者排序第五,然后删除抽签/排序表编号为2的那一行,更新抽签/排序表,如图8所示。此时只剩一个抽签/排序编码1,则可知编码为1的抽签/排序参与者排序第六。
最终的抽签/排序号码为:6,4,5,3,2,1。即排名先后顺序为:张峰,赵六,李刚,王五,李四,张三。
上述实施例中,对抽签/排序活动参与者进行排序时,是根据抽签/排序活动参与者被找到的顺序对抽签/排序活动参与者进行排序。此外,本发明实施例中,对抽签/排序活动参与者进行排序时,也可以将索引Zn的值作为编号为n的抽签/排序活动参与者的排序号码,对抽签/排序活动参与者进行排序。在此情况下,张三序号为6,李四序号为4,王五序号为5,赵六序号为3,李刚序号为2,张峰序号为1;整理后最终的排序为:张峰,李刚,赵六,李四,王五,张三。虽然上述用不同的排序方法进行了最终排序,但应说明的是,这两种方法都不影响本实施例的公平性。
图9为本发明实施例提供的抽签排序方法所使用的区块链的区块头参数示意图,不同的区块链技术在每个区块头中的参数可能不一样,本发明对此不进行具体限定,但本发明要求必须包含随机数和时间戳这两个参数,其中随机数用来计算抽签/排序号码,时间戳可以验证本发明中提到的T1、T2、T3、T4时刻。提取随机数之后,如果是十六进制,需要转换为十进制。
本发明实施例通过以太坊的7个区块中的随机数计算出6个抽签/排序号码,从技术上消除了抽签/排序作弊的可能性,解决了由第三方机构抽签/排序缺乏安全性、公平性、公开性的问题。而且,只需要获取一个新出区块中的随机数参数,就可以快速确定所有抽签/排序结果。其排序方法简单,计算过程快速方便,提高了排序速度。
需要说明的是,由于抽签/排序活动的本质是为所有的抽签/排序参与者随机分配一个可能出现的且相互不一致的数字号码,至于这个数字号码代表了是否中签、是否得奖、排在第几位等可能情况,仅仅是根据具体的抽签/排序活动内容而定,并不影响抽签/排序活动的本质。其中抽签活动中,抽签参与者的人数小于等于可能的抽签号码总数,而排序活动中,排序参与者的人数等于可能的排序号码总数。这两种情况都不影响本发明的具体实施。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (7)
1.一种基于区块链技术的快速抽签/排序方法,其特征在于,包括以下步骤:
S1、抽签/排序活动参与者在区块链的历史区块中任意选定一个抽签/排序区块,各个抽签/排序参者选定的区块各不相同;
S2、活动主办方选定一个未来T2时刻才出块的区块作为初始抽签/排序区块;
S3、创建抽签/排序表,所述抽签排序表中,所有抽签/排序活动参与者分别设置一个编号;
S4、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,根据随机数计算索引值,并通过索引值确定下一个参与索引值计算的区块,重复计算索引值;
S5、根据索引的计算结果对抽签/排序活动参与者进行排序。
2.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,所述步骤S4具体包括以下步骤:
S401、当指定的初始抽签/排序区块在链上等待若干个区块确认之后,从初始抽签/排序区块的区块头参数中提取出随机数N1,将其转换为十进制,再根据随机数N1计算出对应的索引Z1的值,并根据索引Z1的值从抽签/排序表中找到对应的编号;将当前计算出的抽签/排序活动参与者所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S402、从抽签/排序表中被删除行信息中的抽签/排序区块的区块头参数中提取出随机数N2,将其转换为十进制,再根据随机数N2计算出对应的索引Z2的值,并根据索引Z2的值从新的抽签/排序表中找到对应的编号;将当前计算出的抽签/排序号码所在的行信息从抽签/排序表中删除,更新抽签/排序表;
S403、重复步骤S402,直至抽签排序表仅剩一行;
其中,所述索引的计算公式为:Zn= Nn mod Hn,并且,若Zn=0,则Zn=Hn;其中,Hn=H-n+1,H表示参与抽签/排序的总人数,n表示第n个参与计算的区块,Nn表示第n个参与计算的区块中的随机数。
3.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,所述区块链为区块头中有随机数参数以及时间戳参数的公有链。
4.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,所述步骤S3中,按照抽签/排序活动参与者的编号为其选定的抽签/排序区块高度的排序号。
5.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,所述的抽签/排序活动以数字号码为抽签/排序结果。
6.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,根据抽签/排序活动参与者索引被找到的顺序对抽签/排序活动参与者进行排序。
7.根据权利要求1所述的一种基于区块链技术的快速抽签/排序方法,其特征在于,将索引Zn的值作为编号为n的抽签/排序活动参与者的排序号码,对抽签/排序活动参与者进行排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110451727.1A CN113157700B (zh) | 2021-04-26 | 2021-04-26 | 一种基于区块链技术的快速抽签/排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110451727.1A CN113157700B (zh) | 2021-04-26 | 2021-04-26 | 一种基于区块链技术的快速抽签/排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157700A CN113157700A (zh) | 2021-07-23 |
CN113157700B true CN113157700B (zh) | 2024-05-14 |
Family
ID=76870680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110451727.1A Active CN113157700B (zh) | 2021-04-26 | 2021-04-26 | 一种基于区块链技术的快速抽签/排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157700B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726534A (zh) * | 2022-03-28 | 2022-07-08 | 海南格子山网络科技有限公司 | 一种基于Solana区块链技术实现智能合约抽签的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002352037A (ja) * | 2001-05-23 | 2002-12-06 | Ntt Data Corp | 順位付け方法、抽選サーバ、端末及びプログラム |
CN105740440A (zh) * | 2016-02-01 | 2016-07-06 | 上海凭安网络科技有限公司 | 一种加快区块链查询的索引方法 |
CN107103097A (zh) * | 2017-05-22 | 2017-08-29 | 中链科技有限公司 | 基于区块链技术的抽签方法和终端设备 |
CN109918044A (zh) * | 2019-02-26 | 2019-06-21 | 太原理工大学 | 一种基于区块链技术的抽签/排序方法 |
GB202009798D0 (en) * | 2020-06-26 | 2020-08-12 | Nchain Holdings Ltd | Methods and devices for validating data in a blockchain network |
-
2021
- 2021-04-26 CN CN202110451727.1A patent/CN113157700B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002352037A (ja) * | 2001-05-23 | 2002-12-06 | Ntt Data Corp | 順位付け方法、抽選サーバ、端末及びプログラム |
CN105740440A (zh) * | 2016-02-01 | 2016-07-06 | 上海凭安网络科技有限公司 | 一种加快区块链查询的索引方法 |
CN107103097A (zh) * | 2017-05-22 | 2017-08-29 | 中链科技有限公司 | 基于区块链技术的抽签方法和终端设备 |
CN109918044A (zh) * | 2019-02-26 | 2019-06-21 | 太原理工大学 | 一种基于区块链技术的抽签/排序方法 |
GB202009798D0 (en) * | 2020-06-26 | 2020-08-12 | Nchain Holdings Ltd | Methods and devices for validating data in a blockchain network |
Non-Patent Citations (1)
Title |
---|
可更改区块链技术研究;李佩丽;徐海霞;马添军;穆永恒;;密码学报(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113157700A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232081B2 (en) | Methods and apparatus for a distributed database within a network | |
US11657036B2 (en) | Methods and apparatus for a distributed database that enables deletion of events | |
US10318505B2 (en) | Methods and apparatus for a distributed database within a network | |
KR102012435B1 (ko) | 네트워크 내의 분산 데이터베이스를 위한 방법 및 장치 | |
CN109985389B (zh) | 基于区块链智能合约的牌类游戏防作弊方法及其*** | |
CN107103097A (zh) | 基于区块链技术的抽签方法和终端设备 | |
CN109544334A (zh) | 一种网络可扩展性区块链实现方法 | |
CN110602217B (zh) | 基于区块链的联盟管理方法、装置、设备及存储介质 | |
CN108667717A (zh) | 基于即时通信消息记录的区块链处理方法、介质、装置和计算设备 | |
CN108365960B (zh) | 随机数提供方法和装置 | |
CN109918044B (zh) | 一种基于区块链技术的抽签/排序方法 | |
Braverman et al. | Mafia: A theoretical study of players and coalitions in a partial information environment | |
CN113157700B (zh) | 一种基于区块链技术的快速抽签/排序方法 | |
Petrov et al. | Online political flashmob: The Case of 632305222316434 | |
CN111047316A (zh) | 一种反篡改的智能区块链***及实现方法 | |
CN108282339A (zh) | 一种基于智能合约和自社交媒体的数字身份找回方法 | |
CN110310176A (zh) | 一种基于区块链网络的数据加密方法及装置 | |
CN113779608A (zh) | 多方纵向联邦学习LightGBM训练中基于WOE掩码的数据保护方法 | |
CN111223227B (zh) | 一种目标用户筛选方法及装置 | |
Hsueh et al. | EPoW: Solving blockchain problems economically | |
CN113781699A (zh) | 一种摇号的方法 | |
CN110189465B (zh) | 一种借助于区块链的随机抽奖方法及其设备 | |
CN109299388A (zh) | 一种查找高质量社交用户的***及方法 | |
CN115687526A (zh) | 一种基于区块链和联邦学习的地震数据模型共享方法 | |
CN111953546B (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 |