一种区块链上基于权重抽签的方法、系统、终端设备及存储介质技术方案

技术编号:36962773 阅读:7 留言:0更新日期:2023-03-22 19:23
本发明专利技术提供了一种区块链上基于权重抽签的方法、系统、终端设备及存储介质,涉及计算机系统领域,方法步骤包括发布投票抽签任务、用户投票、得出锁票计算投票权重二叉树以及按照投票二叉树抽签并输出抽签结果,通过本发明专利技术的计票抽签方案实现了可以根据用户更改投入权重记录灵活计票的抽签选举过程,通过本发明专利技术的计票抽签方案可以灵活适配按用户权重抽签选举以及用户权重相同时的抽签选举机制。举以及用户权重相同时的抽签选举机制。举以及用户权重相同时的抽签选举机制。

【技术实现步骤摘要】
一种区块链上基于权重抽签的方法、系统、终端设备及存储介质


[0001]本专利技术涉及计算机系统领域,具体而言,涉及一种区块链上基于权重抽签的方法、系统、终端设备及存储介质。

技术介绍

[0002]抽签系统广泛应用于各个场景,例如积分抽奖、福利彩票等。目前基于区块链技术的抽签系统,有的抽签时没有考虑用户权重,所有用户中签概率均相等。另一方面,抽签系统的安全性也是所有系统重点考察的指标。但是目前的抽签方法存在一定的缺陷,具体在于:
[0003]1、用户中签概率均相等,有时无法更好的适用于真实场景。
[0004]2、中签概率是按权重分布还是所有用户平均,无法灵活适配。
[0005]3、部分抽签方案无法对已有数据进行多次不重复抽签。
[0006]针对上述缺陷所需要作出的改进以及对应所需要解决的问题在于:
[0007]1、抽签选举用户的场景中不能按照投入权重变化记录灵活计票的问题。
[0008]2、解决抽签选举用户的场景中不能适配多种抽签机制的问题。
[0009]3、通过客户端计票的方式解决用户刷票情形的不良影响。
[0010]4、用户在有效时间内可以重复多次更改自己的投票权重。
[0011]5、通过merkle树结构变化,实现同样数据多次不重复抽签的效果。

技术实现思路

[0012]本专利技术的主要目的在于提供一种区块链上基于权重抽签的方法,本方案的计票抽签平台是基于区块链Merkle树的数据结构方法,按照每个用户的整体权重投入分布情况一次性输出计票结果。实现了投票期间无论用户怎样更改投票权重,抽签平台在锁票后会按照所有投票记录计算Merkle树,根据Merkle树抽签选择并输出抽签结果。该方法全程公开可验证,并且该方法可以灵活适配用户权重相同情况下的抽签机制,因此本专利技术实施例提供一种区块链上基于权重抽签的方法、系统、终端设备及存储介质。
[0013]一种区块链上基于权重抽签的方法,其步骤包括发布投票抽签任务、用户投票、得出锁票计算投票权重二叉树以及按照投票二叉树抽签并输出抽签结果。
[0014]进一步的:发布投票抽签任务具体步骤包括投票抽签客户端生成投票抽签任务信息、投票抽签客户端将生成的任务信息发送至区块链抽签节点C1、将本次投票抽签任务信息打包生成区块同时任务信息上链并更新区块链账本数据、区块链抽签节点C1通知投票抽签客户端投票抽签任务信息完成上链、客户端通知用户{A1,A2,...,A
n
}投票抽签任务发布完成。
[0015]进一步的:用户投票步骤具体的当系统时间为T1时投票开始,用户{A1,A2,...,A
n
}可以访问投票抽签客户端进行投票。以用户A1为例说明投票流程,用户A1的已投票权重变量
为W
A1
,初始值为0;可投票权重变量为W
A1

,初始值为用户A1的现有权重值,随后用户发起投票,录入{用户ID:A
11
,本次投票权重:W
A11
}、投票抽签客户端自动记录用户本次投票时间T
A11
、投票抽签客户端得到用户的投票信息并验证用户的身份、验证用户的当前投票是否满足投票条件、将验证通过的用户A1的投票信息发送至区块链抽签节点C1、区块链抽签节点C1将收到的用户A1的本次投票信息打包生成区块同时投票信息上链并更新区块链账本数据、区块链抽签节点C1通知投票抽签客户端用户A1的投票信息完成上链、投票抽签客户端计算并更新用户A1的相关投票权重变量、投票抽签客户端更新变量后得到用户A1的最新投票信息、投票抽签客户端通知用户A1投票成功。
[0016]进一步的:得出锁票计算投票权重二叉树具体步骤包括投票抽签客户端查询获取用户{A1,A2,...,A
n
}的投票数据信息、投票抽签客户端剔除已投票权重变量值为0的用户,得到投票权重有效的用户{A
i1
,A
i2
,...,A
im
}的投票数据信息、投票抽签客户端将投票权重有效的用户{A
i1
,A
i2
,...,A
im
}按照用户ID“A
i1
~A
im”字典序进行排序,得到排序后的用户集合{A
i1
,A
i2
,...,A
im
}、将排序后的用户{A
i1
,A
i2
,...,A
im
}作为二叉树的叶节点,叶节点顺序就是3中得到的顺序、根据权重标识设置二叉树叶节点的值、每个二叉树节点的值为其对应的左子树和右子树的已投票权重变量值之和并生成二叉树。
[0017]进一步的:按照投票二叉树抽签并输出抽签结果的具体步骤包括客户端获得投票权重二叉树、投票抽签客户端获得可信的随机数X、投票抽签客户端初始化i=1,选择二叉树根节点作为选择点Node的初始值、判断投票抽签客户端判断Node是否为叶节点、计算得到N
i
=hash{X||i}、计算得到M
i
=N
i
%、更新Node节点、更新参数i++,重复判断投票抽签客户端判断Node是否为叶节点、客户端判断是否需要进行下一次抽签、投票抽签客户端完成抽签并将抽签结果发送至区块链抽签节点C1、区块链抽签节点C1将收到的抽签结果信息打包生成区块,抽签结果信息上链并更新区块链账本数据、区块链抽签节点C1通知投票抽签客户端抽签结果信息完成上链、投票抽签客户端公布抽签结果,抽签完成。
[0018]进一步的:投票抽签客户端将生成的任务信息包括:
[0019]1)当权重标识W=false,用户投票权重不同,输出任务内容包含以下信息:{抽签目标用户:{A1,A2,...,A
n
},投票开始时间:T1,投票结束时间:T2,权重标识:false}。
[0020]2)当权重标识W=true,用户投票权重相同,输出任务内容包含以下信息:{抽签目标用户:{A1,A2,...,A
n
},投票开始时间:T1,投票结束时间:T2,权重标识:true}。
[0021]进一步的:投票抽签客户端验证用户的身份具体包括:
[0022](1)验证用户A1的当前投票时间T
A11
是否包含在投票抽签任务时间T1至T2的范围内。
[0023]1)T
A11
包含在任务时间T1至T2的范围内,继续验证。
[0024]2)T
A11
不在任务时间T1至T2的范围内,投票时间已过期,通知用户A1投票失败。
[0025](2)验证用户A1的本次投票权重是否满足投票条件。
[0026]进一步的:该终端设备可以包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当终端设备运行时,处理器与存储介质之间本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链上基于权重抽签的方法,其特征在于,其步骤包括发布投票抽签任务、用户投票、得出锁票计算投票权重二叉树以及按照投票二叉树抽签并输出抽签结果。2.根据权利要求1所述的方法,其特征在于,发布投票抽签任务具体步骤包括投票抽签客户端生成投票抽签任务信息、投票抽签客户端将生成的任务信息发送至区块链抽签节点C1、将本次投票抽签任务信息打包生成区块同时任务信息上链并更新区块链账本数据、区块链抽签节点C1通知投票抽签客户端投票抽签任务信息完成上链、客户端通知用户{A1,A2,...,A
n
}投票抽签任务发布完成。3.根据权利要求1所述的方法,其特征在于,用户投票步骤具体的当系统时间为T1时投票开始,用户{A1,A2,...,A
n
}可以访问投票抽签客户端进行投票,用户A1的已投票权重变量为W
A1
,初始值为0;可投票权重变量为W
A1

,初始值为用户A1的现有权重值,随后用户发起投票,录入{用户ID:A
11
,本次投票权重:W
A11
}、投票抽签客户端自动记录用户本次投票时间T
A11
、投票抽签客户端得到用户的投票信息并验证用户的身份、验证用户的当前投票是否满足投票条件、将验证通过的用户A1的投票信息发送至区块链抽签节点C1、区块链抽签节点C1将收到的用户A1的本次投票信息打包生成区块同时投票信息上链并更新区块链账本数据、区块链抽签节点C1通知投票抽签客户端用户A1的投票信息完成上链、投票抽签客户端计算并更新用户A1的相关投票权重变量、投票抽签客户端更新变量后得到用户A1的最新投票信息、投票抽签客户端通知用户A1投票成功。4.根据权利要求1所述的方法,其特征在于,得出锁票计算投票权重二叉树具体步骤包括投票抽签客户端查询获取用户{A1,A2,...,A
n
}的投票数据信息、投票抽签客户端剔除已投票权重变量值为0的用户,得到投票权重有效的用户{A
i1
,A
i2
,...,A
im
}的投票数据信息、投票抽签客户端将投票权重有效的用户{A
i1
,A
i2
,...,A
im
}按照用户ID“A
i1
~A
im”字典序进行排序,得到排序后的用户集合{A
i1
,A
i2
,...,A
im
}、将排序后的用户{A
i1
,A
i2
,...,A
im
}作为二叉树的叶节点,叶节点顺序...

【专利技术属性】
技术研发人员:王桐姜鹏陈志明
申请(专利权)人:中信银行股份有限公司
类型:发明
国别省市:

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

1