一种基于默克尔树和排序的可验证随机摇号方法技术

技术编号:39728946 阅读:4 留言:0更新日期:2023-12-17 23:33
本发明专利技术公开一种基于默克尔树和排序的可验证随机摇号方法:首先确定摇号的获胜方数量和参与方,并由系统记录各参与方提交的个人数据和其在时间段内点击确认的随机时间戳;然后利用

【技术实现步骤摘要】
一种基于默克尔树和排序的可验证随机摇号方法


[0001]本专利技术属于随机算法领域,涉及一种基于默克尔树和排序的可验证随机摇号方法


技术介绍

[0002]为了更好地实现市场资源的公平分配,针对大城市的购房

购车

适龄儿童入学等场景,摇号操作被越来越多地采用

现今使用的大规模摇号操作大约分为两种类型:第一种为使用随机摇号球生成随机种子,再调用经典的随机数算法
(rand
等函数
)
,生成随机指标得出摇号结果,例如北京市的购房资格摇号操作;第二种为直接在计算机上调用经典的随机数算法,生成随机指标得出摇号结果,而其中的随机种子则是利用操作系统的熵池来生成,例如杭州市的购房资格摇号操作

但这两种类型操作都存在以下弱点:
[0003]1、
无法复现随机种子

对于第一种类型,由于摇号球属于单次过程,是无法复现的

对于第二种类型,操作系统的熵池中熵源为各种非确定性的设备事件,也是无法复现的

[0004]2、
随机种子与用户数据无关

不论是摇号球还是操作系统熵池,其随机种子都与各个摇号参与方的数据无关,导致各参与方对于摇号的参与度较低

[0005]已知的,默克尔树
(Merkle tree)
是一种哈希二叉树,是用于数据校验的经典算法,其可提供
O(log
>2 n)
大小的证据,来验证某个成员是否在包含
n
个元素的集合中

因此通过结合默克尔树和排序方式,我们提出一个新的可验证摇号算法方案


技术实现思路

[0006]为了解决现有技术中存在的上述技术问题,本专利技术提出了一种基于默克尔树和排序的可验证随机摇号方法,可实现摇号结果的后续验证,从根本上增强摇号结果的公平性与说服力,其具体技术方案如下:
[0007]一种基于默克尔树和排序的可验证随机摇号方法,包括以下步骤:
[0008]步骤1:确定摇号的获胜方数量以及摇号的各参与方;
[0009]步骤2:各参与方提交个人数据;
[0010]步骤3:摇号开始,各参与方点击确认随机时间戳;
[0011]步骤4:系统记录各参与方的个人数据与随机时间戳,利用
SM3
算法构造默克尔树,将默克尔树的树根作为随机
seed

[0012]步骤5:利用随机
seed
作为输入,迭代运行
SM3
算法,得到各参与方的随机串;
[0013]步骤6:将所有随机串进行从大到小的排序;
[0014]步骤7:根据给定的获胜方数量选出摇号获胜方,摇号结束;
[0015]步骤8:摇号随机
seed
验证:某参与方重新提交数据,系统利用默克尔树的成员证明功能,验证随机
seed
的合法性;
[0016]步骤9:摇号结果验证:通过对合法的随机
seed
进行迭代运行
SM3
算法,复现并验证
摇号结果

[0017]进一步的,所述步骤1包括如下具体步骤:
[0018]步骤
1.1
:确定摇号的获胜方数量,记为
m

[0019]步骤
1.2
:确定摇号的各参与方,记为
P0,

,P
n
‑1,参与方总数量为
n,
要求
m≤n。
[0020]进一步的,所述步骤2具体为:每个参与方
P
i
提交各自的数据
D
i
给摇号系统,其中
i

0,1,

,n

1。
[0021]进一步的,所述步骤3包括如下具体步骤:
[0022]步骤
3.1
:摇号开始,设置时间段;
[0023]步骤
3.2
:各参与方在时间段内通过系统点击摇号确认,以确定各自的摇号时间戳
t
i

[0024]进一步的,所述步骤4包括如下具体步骤:
[0025]步骤
4.1
:系统记录各参与方的数据
D
i
与随机时间戳
t
i

[0026]步骤
4.2
:计算默克尔树的层数对于
i

0,1,

,n
‑1,令对于
i

n,n+1,

,2
d
‑1,令从而得到默克尔树的2d
个叶子节点的在层数为
d
时,对于
i

0,1,

,2
d
‑1‑1,进行哈希合并操作其中
||
表示为两个数据的拼接,从而得到第
d
‑1层的2d
‑1个叶子节点的在层数为
d
‑1时,对于
i

0,1,

,2
d
‑2‑1,进行哈希合并操作得到第
d
‑2层的2d
‑2个叶子节点的依次类推,直到第1层,计算默克尔树根节点的进而存储该默克尔树的所有节点;
[0027]步骤
4.3
:将该默克尔树的根节点的作为随机
seed
值,并公开该
seed

[0028]进一步的,所述步骤5包括如下具体步骤:
[0029]步骤
5.1
:根据随机
seed
值,计算参与方
P0的随机串
r0=
SM3(seed)

[0030]步骤
5.2
:对于
i

0,1,

,n
‑1,迭代计算
r
i+1

SM3(r
i
)
,得到
P1,

,P
n
‑1的随机串

[0031]进一步的,所述步骤6具体为:将所有参与方
P
i
对应的随机串
r
i
进行从大到小的排序,顺序按照对应的二进制值大小来排列,得到并将排序结果公开

[0032]进一步的,所述步骤7具体为:根据随机串的排序结果:与摇号胜选数量
m
,选出摇号获胜方
[0033]进一步的,所述步骤8包括如下具本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于默克尔树和排序的可验证随机摇号方法,其特征在于,包括以下步骤:步骤1:确定摇号的获胜方数量以及摇号的各参与方;步骤2:各参与方提交个人数据;步骤3:摇号开始,各参与方点击确认随机时间戳;步骤4:系统记录各参与方的个人数据与随机时间戳,利用
SM3
算法构造默克尔树,将默克尔树的树根作为随机
seed
;步骤5:利用随机
seed
作为输入,迭代运行
SM3
算法,得到各参与方的随机串;步骤6:将所有随机串进行从大到小的排序;步骤7:根据给定的获胜方数量选出摇号获胜方,摇号结束;步骤8:摇号随机
seed
验证:某参与方重新提交数据,系统利用默克尔树的成员证明功能,验证随机
seed
的合法性;步骤9:摇号结果验证:通过对合法的随机
seed
进行迭代运行
SM3
算法,复现并验证摇号结果
。2.
如权利要求1所述的一种基于默克尔树和排序的可验证随机摇号方法,其特征在于,所述步骤1包括如下具体步骤:步骤
1.1
:确定摇号的获胜方数量,记为
m
;步骤
1.2
:确定摇号的各参与方,记为
P0,

,P
n
‑1,参与方总数量为
n,
要求
m≤n。3.
如权利要求2所述的一种基于默克尔树和排序的可验证随机摇号方法,其特征在于,所述步骤2具体为:每个参与方
P
i
提交各自的数据
D
i
给摇号系统,其中
i

0,1,

,n

1。4.
如权利要求3所述的一种基于默克尔树和排序的可验证随机摇号方法,其特征在于,所述步骤3包括如下具体步骤:步骤
3.1
:摇号开始,设置时间段;步骤
3.2
:各参与方在时间段内通过系统点击摇号确认,以确定各自的摇号时间戳
t
i
。5.
如权利要求4所述的一种基于默克尔树和排序的可验证随机摇号方法,其特征在于,所述步骤4包括如下具体步骤:步骤
4.1
:系统记录各参与方的数据
D
i
与随机时间戳
t
i
;步骤
4.2
:计算默克尔树的层数对于
i

0,1,

,n
‑1,令对于
i

n,n+1,

,2
d
‑1,令从而得到默克尔树的2d
个叶子节点的在层数为
d
时,对于
i

0,1,

,2
d
‑1‑1,进行哈希合并操作其中
||
表示为两个数据的拼接,从而得到第
d
‑1层的2d
‑1个叶子节点的在层数为
d
‑1时,对于
i

0,1,

,2
d
‑2‑1,进行哈希合并操作得到第
d
‑2层的2d
‑2个叶子节点的依次类推,直到第1层,计算默克尔树根节点的进而存储该默克尔树的所有节点;步骤
4.3
:将该默克尔树的根节点的作为随机
seed
值,并公开该
see...

【专利技术属性】
技术研发人员:胡耿然聂祖培游林
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1