基于区块链技术的抽签方法和终端设备与流程

文档序号:11432336阅读:1682来源:国知局
基于区块链技术的抽签方法和终端设备与流程

本申请涉及区块链技术,具体涉及一种基于区块链技术的抽签方法和终端设备。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用技术集合。从数据角度来看,区块链按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,所述数据结构通过密码学方式保证的其不可篡改和不可伪造。从技术角度来看,区块链技术整合了多种不同的技术,通过构建区块链网络,使得网络内的每一个节点都允许获得一份完整的数据库拷贝,并基于共识机制以及竞争计算来维护基于区块链的数据库的更新,由此,通过众多节点沟通构成的端到端网络实现数据存储和管理的去中心化和去信任。

在区块链网络中,所有的运行规则以及数据信息对于所有的节点均公开,因此,每一条记录对所有节点可见。同时,由于节点和节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。同时,区块链技术具有极佳的安全性,单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能够控制整个网络中超过51%的节点同时修改,才有可能修改区块链记载的数据,而这是几乎不可能发生的。

目前在股票市场,有新股申购的中签算法;在福彩、体彩、汽车摇号、购房摇号等场景下也都有自己的摇奖机制和中签规则。各企事业单位都耗费了大量的精力去让普通大众相信抽签的公平和公正,但是目前还是有很多的负面消息传出,依赖于计算机技术的抽签过程是否能做到公平、公正、公开开始受到越来越多的质疑,甚至认为计算机抽签结果很容易通过修改抽签的执行程序来造假,抽签结果已被人为的设置在了抽签程序中,这样极大的增加了社会的信任成本。



技术实现要素:

有鉴于此,本申请实施例提供一种基于区块链技术的抽签方法和终端设备,以解决现有技术中计算机抽签容易被人为操纵的技术问题。

根据本申请实施例的一个方面,提供了一种基于区块链技术的抽签方法,所述方法包括:根据预设规则确定中签区块;获取中签区块保存的哈希值作为中签地址,根据中签地址和抽签总数生成中签因子;提取预设数量的抽签号并与在中签区块之前产生的相应预设数量的区块建立对应关系,将每个抽签号与对应区块保存的哈希值绑定;根据中签地址和绑定的哈希值生成每个抽签号的抽签因子;根据中签因子和抽签号的抽签因子确定中签的抽签号。

根据本申请实施例的另一方面,提供了一种终端设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:根据预设规则确定中签区块;获取中签区块保存的哈希值作为中签地址,根据中签地址和抽签总数生成中签因子;提取预设数量的抽签号并与在中签区块之前产生的相应预设数量的区块建立对应关系,将每个抽签号与对应区块保存的哈希值绑定;根据中签地址和绑定的哈希值生成每个抽签号的抽签因子;根据中签因子和抽签号的抽签因子确定中签的抽签号。

本申请实施例的有益效果包括:利用多个节点共同维护的区块链生成中签区块,并利用各区块保存的哈希值生成中签因子和抽签因子,数据无法被人为篡改,保证抽签数据的真实性,各区块由多个节点竞争创建并得到所有节点的确认,竞争创建区块的过程由各节点通过随机计算来完成,从而保证了抽签结果的公正。

附图说明

通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本申请实施例抽签管理系统的架构示意图;

图2是本申请实施例基于区块链技术的抽签方法的流程示意图;

图3是本申请实施例基于区块链技术的抽签方法的流程示意图;

图4是本申请实施例利用基于区块链技术的抽签方法进行车辆指标申请摇号的流程示意图。

具体实施方式

以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本申请实施例在抽签结束后确定中签区块,取中签区块内保存的哈希值作为中签地址并结合抽签总人数根据预设算法确定中签因子,将抽签期间产生的抽签号与中签区块之前产生的相应数量的区块建立对应关系并与各区块内保存的哈希值绑定,再利用中签地址和绑定的哈希值根据预设算法确定每个抽签号的抽签因子,再将与中签因子之间满足预设关系的抽签因子所对应的抽签号确定为中签的抽签号,区块链中各区块的哈希值由所有节点共同维护,和之前所有区块的哈希值有关,从而保证了该哈希值和随机性和不可预测性,并且无法被轻易篡改,保证了抽签数据的真实性;将每一个抽签号与一个区块的哈希值绑定,也能够保证抽签的公正,使其不会受到人为干预,完全由计算机随机操作;中签区块产生后,各节点都可以根据中签区块保存的哈希值自动计算出中签的抽签号,改变了中签结果仅有单方对方发布的情形,提升了抽签的公开、透明度。

图1是本申请实施例抽签管理系统的架构示意图,该系统包括多个节点1来共同维护区块链。节点1应当具备区块链网络节点的基本要求,其可以是符合相关要求并适于执行预定程序指令的通用数据处理设备,例如台式计算机、工作站、服务器等。该区块链可以是共有区块链,任何个体或者团体都可以通过架设节点1加入到区块链共同维护中来并参与基于该区块链进行的抽签活动。也可以是联合区块链,由行政管理机构确定的多个节点1(例如,其所管理的或者具备相应许可资质的多个企业、单位和组织)负责维护区块链,每个区块的生成由所有预先确定的多个节点1共同决定,行政管理机构可通过区块链来查询或监督由各个节点1基于该区块链进行的抽签活动。该区块链还可以是私有区块链,即由某个企业、单位或组织内部或经过其授权的多个节点1共同维护的区块链,用于该企业、单位或组织举办的抽签活动。

利用各节点1共同维护的区块链进行抽签的过程如下。

举办抽签活动时会对外发布提交抽签申请的期限。该期限经过后抽签截止,无法再提交新的抽签申请,此时根据预设规则确定一个区块链中的一个区块为中签区块,例如抽签结束后,将区块链产生的第一个、第二个或第n个区块作为中签区块。

确定中签区块后,获取该中签区块保存的哈希值。该哈希值被保存在中签区块的区块头,通过由版本号、父区块哈希值、merkle树、时间戳、难度值、随机数组成的区块头数据根据预设散列算法(如sha256)得到。将该哈希值或者其中预设位数(如33位)的哈希值作为中签地址。

根据中签地址和参与抽签的抽签总数按照预设算法生成中签因子。可以将中签地址对应的10进制数与抽签总数做取余运算,将得到的余数作为中签因子。该中签因子被用来作为确定中签的抽签号的比较基准。

提取预设数量的抽签号和在中签区块之前产生的相应数量的区块,建立抽签号与区块之间的对应的关系。例如,提取10万抽签号,那么再提取中签区块之前产生的10万个区块分别与10万个抽签号对应。提取的每个区块中,区块头保存有哈希值,将该哈希值与对应的抽签号绑定。提取抽签号时,可以一次性将所有参与抽签的抽签号全部提取,也可以按批次分批提取。在采取分批提取时,可以为每批提取的抽签号分别产生一个中签区块,从而为每批抽签号分别生成中签因子。

再根据中签地址和每个抽签号绑定的哈希值根据预设算法生成每个抽签号的抽签因子。可以将中签地址分别与每个抽签号绑定的哈希值做十六进制加法运算,所得结果对应的十进制数再分别与抽签总数取余,将余数作为抽签号对应的抽签因子。抽签因子用于与中签因子进行比较,以确定中签的抽签号。本实施例中,利用对应的区块保存的哈希值计算抽签因子更有利于保证对于抽签结果的公平性,因为生成区块时保存的哈希值无法被人为篡改,完全由计算机计算生成,因此可以防止人为作弊,比直接利用抽签号来计算抽签因子的方法更具有公正性,因为抽签号的分配是容易被人为操纵的,而利用区块内的哈希值恰好可以避免这一缺点,达到更佳的防作弊效果。

在将抽签因子与中签因子比较时,以中签因子为基准,确定预设数量的并且满足预设条件的多个抽签因子,例如,与中签因子最为接近的预设数量(例如一万个)的抽签因子,或者与中签因子相差最大的预设数量的抽签因子。被确定的抽签因子所对应的抽签号,即为最接近的抽签号。

本实施例中,利用多个节点共同维护的区块链生成中签区块,并利用各区块保存的哈希值生成中签因子和抽签因子,数据无法被人为篡改,保证抽签数据的真实性,各区块由多个节点竞争创建并得到所有节点的确认,竞争创建区块的过程由各节点通过随机计算来完成,从而保证了抽签结果的公正。

确定中签的抽签号后,可以有其中一个或多个节点将中签的抽签号对外进行发布。也可以对外发布中签地址,在各节点通过该中签地址按照各步骤的预设算法自行查询(计算)出最终中签的抽签结果。从而使中签结果的发布可由任意节点进行,甚至任何一个参与抽签的人都可以利用发布的中签地址来查询出最终中签的抽签号,提升了抽签活动的公开性。

此外,抽签活动进行阶段,各节点如果接收到抽签申请,则开始竞争创建新的区块,并将抽签申请信息加入到新创建的区块中。抽签申请信息包括申请人信息、申请时间、价格、抽签号等信息。可以对抽签申请信息按照预设算法进行哈希运算,得到抽签申请信息的数据指纹,将数据指纹保存到区块的区块主体部分。节点获取到抽签申请信息及其数据指纹后,向所在区块链网络内部广播。每个接收到抽签申请信息及其数据指纹的节点都将数据指纹保存到将要创建的区块内的区块主体部分,然后各个节点开始通过竞争机制(如解算一个数学难题)来获取创建该新区块的权利。当一个节点在竞争中胜出时,其向全网广播该区块内保存的所有已盖时间戳的数据指纹,并由全网其它节点进行核对。全网其它节点核对该区块记录的数据指纹的正确性,如果确认正确后,所有节点将继续按照该竞争机制竞争创建下一个区块,由此,形成保存抽签申请信息的区块链。创建每个区块时,在该区块的区块头保存有区块头信息的哈希值,用于在计算中签结果时根据中签地址生成该抽签申请信息的抽签因子。

基于以上论述,本申请实施例在节点一侧提供了一种基于区块链技术的抽签方法,如图2所示,该方法包括以下步骤。

s10,根据预设规则确定中签区块;

s11,获取中签区块保存的哈希值作为中签地址,根据中签地址和抽签总数生成中签因子;

s12,提取预设数量的抽签号并与在中签区块之前产生的相应预设数量的区块建立对应关系,将每个抽签号与对应区块保存的哈希值绑定;

s13,根据中签地址和绑定的哈希值生成每个抽签号的抽签因子;

s14,根据中签因子和抽签号的抽签因子确定中签的抽签号。

该基于区块链技术的抽签方法改善了抽签活动的真实性和公正性,有助于提升人们对抽签活动的信任度。其中s10可以进一步包括:将抽签截止后产生的处于预设顺位的区块作为中签区块。

或者,每次提取抽签号时的预设数量小于抽签总数时,s10可以进一步包括:根据分批提取抽签号的批次数,将抽签截止后产生的相应数量的多个区块分别作为每批抽签号对应的中签区块。此时,s12在提取预设数量的抽签号时进一步包括:分批提取预设数量的抽签号。

上述方法还可以进一步包括:根据输入的中签地址查询本次中签的抽签号并进行显示。中签地址可以由节点通过网络获取,或者由用户输入。从而可通过任意一个节点来查询中签的抽签号。

下面通过具体场景对本申请实施例提供的基于区块链技术的抽签方法做进一步说明。

假设场景中有100万人参与抽签,中签人数为1万,提交抽签申请的期限为上午9:00至下午14:00,那么本次抽签活动的步骤如图3所示。

s20,抽签开始后根据接收到的抽签申请信息分配抽签号码。

100万人每人一个抽签号码,从1排到100万。可按参与的时间顺序分配抽签号码;也可以随机分配抽签号码。

s21,抽签结束后,取14:00后产生的第一个区块保存的哈希值的后33位作为中签地址。

s22,用中签地址对应的10进制数和参与抽签人数100万取余,余数为中签因子。

s23,每批按顺序提取10万个抽签号,然后从中签区块开始往前数10万个区块,并取每个区块保存的哈希值的后33位值和本次抽取的10万个抽签号绑定。

如抽签号1绑定区块—1,抽签号10万绑定区块—100000。

s24,用中签地址依次和此10万个抽签号所绑定的哈希值做16进制加法运算,将结果对应的10进制数依次和参与抽签总人数100万取余,余数为每个抽签号的抽签因子。

s25,依次提取14:00之后产生的第二个至第十个区块的哈希值的后33位值,重复上述s22-s24,得到每个抽签号的抽签因子。

s26,以中奖因子为基准,得出离中奖因子最接近的1万个抽签因子,此1万个抽签因子对应的抽签号就是中签的抽签号。

利用上述抽签方法,有利于保证抽签活动的公平、公正,提升可信度。上述抽签方法可应用于股票申购、房屋申购、彩票投注、车辆指标申请等,相应接收到的抽签申请信息分别为股票申购信息、房屋申购信息、彩票投注信息和车辆指标申请信息。

例如,利用本申请实施例提供的基于区块链技术的抽签方法进行车辆指标申请摇号的过程如图4所示,包括以下步骤。

s30,接收到车辆指标申请信息后,将车辆指标申请信息加入到区块链新创建的区块中并分配申请编码。

车辆指标申请信息按照提交申请的时间顺序分别保存在不同的区块中。

s31,申请截止后,获取预设时间点之后生成的第一个区块作为中签区块并将该区块保存的哈希值作为中签地址。

s32,用中签地址对应的10进制数和通过审核具有申请资格的总人数(例如,500万)取余,余数为中签因子。

s33,每批按顺序提取预设数量(例如50万个)的申请编码,然后从中签区块开始往前数相应数量的区块,并取每个区块保存的哈希值与本次抽取的申请编码绑定。

s34,用中签地址依次和提取的申请编码所绑定的哈希值做16进制加法运算,将结果对应的10进制数依次和具有申请资格的总人数取余,余数为每个申请编码的抽签因子。

s35,依次提取申请截止后产生的第二个至第n个(至所有的申请编码被提取时为止)区块的哈希值,重复上述s32-s34,从而得到每个申请编码的抽签因子。

s36,以中奖因子为基准,得出满足预设条件的(例如,离中奖因子最接近)的预设中签数量的抽签因子,得到的抽签因子对应的申请编码就是中签的申请编码。

利用本申请实施例提供的基于区块链技术的抽签方法进行车辆指标申请摇号,可保证摇号结果的真实性,使摇号过程和结果公开透明,有助于提升申请人对计算机摇号方式的信任度,维护社会公信力。利用该方法进行股票申购、房屋申购、彩票投注同样可取得上述效果,在此不再重复说明。

本申请实施例还提供了一种终端设备,其包括处理器,用于存储处理器可执行指令的存储器;其中,处理器被配置为:根据预设规则确定中签区块;获取中签区块保存的哈希值作为中签地址,根据中签地址和抽签总数生成中签因子;提取预设数量的抽签号并与在中签区块之前产生的相应预设数量的区块建立对应关系,将每个抽签号与对应区块保存的哈希值绑定;根据中签地址和绑定的哈希值生成每个抽签号的抽签因子;根据中签因子和抽签号的抽签因子确定中签的抽签号。

在一个实施例中,根据预设规则确定中签区块包括:将抽签截止后产生的处于预设顺位的区块作为中签区块。

在一个实施例中,获取中签区块保存的哈希值作为中签地址,根据中签地址和抽签总数生成中签因子包括:从中签区块保存的哈希值中获取预设位数的哈希值作为中签地址;将中签地址对应的十进制数与抽签总数取余,得到的余数作为中签因子。

在一个实施例中,根据中签地址和绑定的哈希值生成每个抽签号的抽签因子包括:将中签地址分别与每个抽签号绑定的哈希值做十六进制加法运算,将所得结果对应的十进制数分别与抽签总数取余,将余数作为抽签号对应的抽签因子。

在一个实施例中,根据中签因子和抽签号的抽签因子确定中签的抽签号包括:按照抽签因子与中签因子之间的距离进行排序,取排序靠前的预设中签数量的抽签号。

在一个实施例中,当预设数量小于抽签总数时,提取预设数量的抽签号包括:分批提取预设数量的抽签号;

根据预设规则确定中签区块包括:根据分批提取抽签号的批次数,将抽签截止后产生的相应数量的多个区块分别作为每批抽签号对应的中签区块。

在一个实施例中,根据预设规则确定中签区块之前,该处理器进一步被配置为:当接收到的抽签申请信息时,将抽签申请信息加入到区块链新生成的区块中。

在一个实施例中,抽签申请信息为股票申购信息、房屋申购信息、彩票投注信息和车辆指标申请信息中的任意一种。

在一个实施例中,该处理器进一步被配置为:根据中签地址查询本次中签的抽签号并进行显示。

本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1