抽签数据处理方法、装置以及系统与流程



1.本公开涉及区块链技术领域,尤其是涉及一种抽签数据处理方法、装置以及系统。


背景技术:



2.目前,很多在线抽签活动都基于区块链技术实现。首先用户在平台参加预约,系统自动为用户分配一个预约码,随后,所有人的申购码与该场次的预约数据一起通过智能合约被加密后存证入区块链当中。其次,抽签系统通过哈希算法随机生成出该场次申购的成功因子,进而确定出中签用户。
3.但是,对于现有的这种抽签数据处理方法,区块链的数据处理量较大,导致区块链的运行压力较大。


技术实现要素:



4.本公开的目的在于提供一种抽签数据处理方法、装置以及系统,以缓解区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
5.第一方面,本公开实施例提供了一种抽签数据处理方法,应用于区块链,所述区块链的外部对应有抽签系统;所述方法包括:
6.接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基于待抽签用户确定的对应号码;
7.基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的哈希(hash)值确定中签因子;
8.将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
9.第二方面,本公开实施例提供了一种抽签数据处理方法,应用于抽签系统,所述抽签系统对应有用于抽签的区块链;所述方法包括:
10.基于待抽签用户确定对应的预约码;
11.将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;
12.接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中确定中签用户。
13.第三方面,本公开实施例提供了一种抽签数据处理方法,用于抽签的区块链的外部对应有抽签系统;所述方法包括:
14.所述抽签系统基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送至所述区块链;
15.所述区块链基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;
16.所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
17.第四方面,本公开实施例提供了一种抽签数据处理装置,应用于区块链,所述区块链的外部对应有抽签系统;包括:
18.接收模块,用于接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基于待抽签用户确定的对应号码;
19.确定模块,用于基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子;
20.发送模块,用于将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
21.第五方面,本公开实施例提供了一种抽签数据处理装置,应用于抽签系统,所述抽签系统对应有用于抽签的区块链;包括:
22.第一确定模块,用于基于待抽签用户确定对应的预约码;
23.发送模块,用于将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;
24.第二确定模块,用于接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中确定中签用户。
25.第六方面,本公开实施例提供了一种抽签数据处理系统,包括:用于抽签的区块链以及所述区块链的外部对应的抽签系统;
26.所述抽签系统用于基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送至所述区块链;
27.所述区块链用于基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;
28.所述抽签系统还用于基于所述中签因子从所述待抽签用户中确定中签用户。
29.第七方面,本公开实施例又提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面、第二方面以及第三方面所述的方法的步骤。
30.第八方面,本公开实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述第一方面、第二方面以及第三方面所述的方法。
31.本公开实施例带来了以下有益效果:
32.本公开实施例提供的一种抽签数据处理方法、装置以及系统,首先接收抽签系统发送的预约码的总数量,其中的预约码是抽签系统基于待抽签用户确定的对应号码,之后基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子,从而将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户。本方案中,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工
作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
附图说明
33.为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1为本公开实施例提供的应用场景示意图;
35.图2示出了本公开实施例提供的一种电子设备的结构示意图;
36.图3为本公开实施例提供的一种电子设备的使用场景示意图;
37.图4为本公开实施例提供的一种抽签数据处理方法的流程示意图;
38.图5为本公开实施例提供的另一种抽签数据处理方法的流程示意图;
39.图6为本公开实施例提供的另一种抽签数据处理方法的流程示意图;
40.图7为本公开实施例提供的一种抽签数据处理装置的结构意图;
41.图8为本公开实施例提供的另一种抽签数据处理装置的结构意图;
42.图9为本公开实施例提供的一种抽签数据处理系统的结构意图。
具体实施方式
43.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
44.本公开实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
45.现有区块链抽签,往往需要向链上发起交易,保存预约抽签用户名单信息,并分配预约码。如有1万用户,需要将1万用户信息及预约码存储到区块链链上。然后基于随机算法(在1万用户随机抽取1000名中签用户),链上通过区块hash信息生成随机因子,并进行中签计算,在1万用户中到中签名单。现有区块链抽签方式,将预约码及用户信息存储区块链上,适合于少量抽签用户的场景,若预约用户超过百万乃至千万的大量数据,这对区块链的交易和存储来说难以胜任。同时链上对大数据量预约数据,计算中签名单,智能合约也难以承受,导致智能合约的堆栈溢出,导致交易失败。因此现有技术存在着如下问题:现有的区块链交易性能有限,存储资源宝贵,无法支撑大数据量的预约用户及预约码存储上链;区块链智能合约无法支持超复杂的中签逻辑计算,如在大数据量的预约用户中计算中签名单;大量无效的未中签的用户相关数据存储区块链,占用区块链资源,没有任何其他用途。总而言之,对于现有的这种抽签数据处理方法,区块链的数据处理量较大,导致区块链的运行压
力较大。
46.基于此,本公开实施例提供了一种抽签数据处理方法、装置以及系统,通过本公开实施例提供的方法,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,进而较为的有效缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
47.在本公开其中一种实施例中,抽签数据处理方法可以运行于本地终端设备或者是服务器。当抽签数据处理方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
48.在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,抽签数据处理方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑等;但是进行信息处理的为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
49.在一可选的实施方式中,以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与玩家进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给玩家的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给玩家。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。
50.在一种可能的实施方式中,本公开实施例提供了一种抽签数据处理方法,通过终端设备提供图形用户界面,其中,终端设备可以是前述提到的本地终端设备,也可以是前述提到的云交互系统中的客户端设备。
51.例如,如图1所示,图1为本公开实施例提供的应用场景示意图。该应用场景可以包括电子设备(例如,手机102)和服务器101,该电子设备可以通过有线网络或无线网络与服务器101进行通信。其中电子设备用于运行虚拟桌面,通过该虚拟桌面,可以与服务器101进行交互,以实现对服务器101中的虚拟角进行控制。
52.本实施例的电子设备以手机102为例进行说明。手机102包括射频(radio frequency,rf)电路210、存储器220、触摸屏230、处理器240等部件。本领域技术人员可以理解,图2中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。本领领域技术人员可以理解触摸屏230属于用户界面(user interface,ui),且手机102可以包括比图示或者更少的用户界面。
53.rf电路210还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(global system of mobile communication,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma)、长期演进(long term evolution,lte)、、短消息服务(short messaging service,sms)等。
54.存储器220可用于存储软件程序以及模块,处理器240通过运行存储在存储器220的软件程序以及模块,从而执行手机102的各种功能应用以及数据处理。存储器220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机102的使用所创建的数据等。此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
55.触摸屏230可用于显示图形用户界面和接收用户针对图形用户界面的操作。具体的触摸屏230可包括显示面板和触控面板。其中显示面板可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置。触控面板可收集用户在其上或附近的接触或者非接触操作(例如,如图3所示,用户使用手指301、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成预先设定的操作指令。另外,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位、姿势,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成处理器能够处理的信息,再送给处理器240,并能接收处理器240发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板,也可以采用未来发展的任何技术实现触控面板。进一步的,触控面板可覆盖显示面板,用户可以根据显示面板显示的图形用户界面,在显示面板上覆盖的触控面板上或者附近进行操作,触控面板检测到在其上或附近的操作后,传送给处理器240以确定用户输入,随后处理器240响应于用户输入在显示面板上提供相应的视觉输出。另外,触控面板与显示面板可以作为两个独立的部件来实现也可以集成而来实现。
56.处理器240是手机102的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器220内的软件程序和/或模块,以及调用存储在存储器220内的数据,执行手机102的各种功能和处理数据,从而对手机进行整体监控。
57.下面结合附图对本公开实施例进行进一步地介绍。
58.图4为本公开实施例提供的一种抽签数据处理方法的流程示意图。其中,该方法可以应用于区块链,区块链的外部对应有抽签系统。如图4所示,该方法包括:
59.步骤s410,接收抽签系统发送的预约码的总数量。
60.其中的预约码是抽签系统基于待抽签用户确定的对应号码。
61.示例性的,在进行抽签之前的预约期间,抽签系统可以不断接收用户的预约并进行打乱,再给当前场次的打乱的用户分配连续的预约码(reservationnum),并在链外保存预约详情。例如,接收到请求为user1(分配2个预约码),user2(分配2个预约码),user3(分配1个预约码),user4(分配3个预约码)。系统乱序后为:user3(分配1个预约码),user2(分
配2个预约码),user4(分配3个预约码),user1(分配2个预约码)。分配的预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6)。
62.当预约结束,抽签系统可以对本场次的所有预约人数(usercount)进行统计,得到预约码的总数量(m),并将预约码的总数量发送至区块链,使区块链接收到抽签系统发送的预约码的总数量。
63.步骤s420,基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子。
64.示例性的,区块链可以接收到抽签系统上传的场次编号(sessionid)、预约码的总数量、预约人数等信息。当系统管理员发起交易,区块链可以判断当前场次信息是否存在,若不存在,说明场次没初始化过,拒绝抽签。如果存在,则保存抽签基础信息,通过场次编号及抽签详情map进行映射,其中的抽签详情可以包括指定中签数量、预约码的总数量、用户数量、步长信息等(步长信息为确定中签用户时需要用到的信息)。之后系统管理员可以在某个时刻选择进行抽签,在区块链上开得中签因子(一个随机数r),区块链可以基于指定中签数量(即中签人数)和预约码的总数量(即参与活动的总人数),利用随机算法通过区块链的hash值确定中签因子。其中的hash值可以通过最新块高hash(blockhash)+当前区块时间戳(block.timestamp)+当前区块高度(block.number)+随机数据(随机自定义盐salt)计算得到。
65.步骤s430,将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户。
66.示例性的,区块链计算出中签因子后,可以将中签因子发送至链外的抽签系统,使抽签系统基于中签因子从待抽签用户中确定中签用户。例如,抽签系统得到中签因子(中签的随机数r),基于r计算得到第一个中签用户的预约码x=r%m(中签因子对预约码的总数量取余),并根据步长l=m/n(预约码的总数量除总中签数量后向下取整得到的整数),依次计算得到预约码x,x+l,x+2l

,并通过预约码到对应的用户即可以得到所有中签用户。即根据公式si=(r%m+i*l)%m(i=0,1,2,...n-1),即可以确定所有的中签用户。例如预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6);若中签预约码为1,4,7。则用户user3,user4,user5中签。
67.在实际应用中,假设中签数量n=3,预约码的总数量m=200,则步长l=200
÷
3=66。假设中签因子r=1134,则可以根据si=(r%m+i*l)%m(i=0,1,2,...n-1),得到中签的预约码为134,0,66。
68.本公开实施例中,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
69.下面对上述步骤进行详细介绍。
70.在一些实施例中,区块链下的抽签系统将可以将计算得到的中签用户信息进行存证上链,保证了系统安全以及抽签活动的公平性,例如将中签用户的预约码及预约用户信息上传到区块链上,链上校验预约码是否与中签用户相对应,之后进行存证,确保本场次中签名单无法被篡改。作为一个示例,在上述步骤s430之后,该方法还可以包括如下步骤:
71.步骤a),接收抽签系统发送的中签用户的信息,并基于中签用户的信息对中签用户对应的预约码进行是否中签的验证,得到验证结果。
72.步骤b),如果验证结果为中签,则对中签用户的信息进行存储。
73.示例性的,区块链上根据抽签系统上传的中签用户的信息,首先判断此次抽签活动是否存在,中签用户是否存在重复验证的情况。之后可以根据步长l、中签因子r以及预约码的总数量m,反向计算验证中签用户对应的预约码是否中签,如果验证结果为此预约码的确中签,则对中签用户的信息进行存证,至此用户中签的预约码及用户基本信息无法被篡改。
74.通过使区块链接收抽签系统发送的中签用户的信息,并基于中签用户的信息对中签用户对应的预约码进行是否中签的验证,得到验证结果,如果验证结果为中签,则对中签用户的信息进行存储,确保本场次中签名单无法被篡改,保证了系统安全以及抽签活动的公平性。
75.在一些实施例中,区块链还可以提供查询接口供外部对中签结果进行查询,使功能更加丰富多样,例如链上合约基于抽签算法,提供通过预约码查询链上是否中签计算算法验证方法,使用户可以根据针对自己的预约码进行查询,知晓自己是否中签,提高用户的使用体验。作为一个示例,在上述步骤s430之后,该方法还可以包括如下步骤:
76.步骤c),接收客户端发送的针对待查询预约码是否中签的第一查询请求。
77.步骤d),基于第一查询请求验证待查询预约码是否中签,得到验证结果。
78.步骤e),将验证结果发送至客户端。
79.示例性的,用户可以通过客户端输入抽签活动的场次编号、参与抽签活动的用户预约码等信息,客户端可以根据这些信息生成查询请求发送至区块链上,之后区块链可以根据步长l、中签因子r以及预约码的总数量m,反向计算验证中签用户对应的预约码是否中签,得到与查询请求对应的验证结果,并将验证结果发送至客户端,使用户可以知晓自己所输入的预约码是否中签。
80.通过使区块链首先接收客户端发送的针对待查询预约码是否中签的第一查询请求,之后基于第一查询请求验证待查询预约码是否中签,得到验证结果,并将验证结果发送至客户端,使功能更加丰富,使外部可以对中签结果进行实时查询,使功能更加丰富。
81.在一些实施例中,区块链还可以提供查询接口供外部对中签用户的信息进行查询,使功能更加丰富,例如链上合约基于抽签算法,提供通过预约码查询中签用户信息方法,使活动主办方或系统管理员可以对中签用户进行确定,便于派发中签奖品。作为一个示例,在上述步骤s430之后,该方法还可以包括如下步骤:
82.步骤f),接收客户端发送的针对中签用户的第二查询请求。
83.步骤g),基于第二查询请求将中签用户的信息发送至客户端。
84.示例性的,活动主办方或系统管理员可以通过客户端输入抽签活动的场次编号、该场次的中签用户预约码等信息,客户端可以根据这些信息生成查询请求发送至区块链
上,之后区块链可以根据先前的存证信息,查询到中签用户的信息,例如、收货地址等,并将中签用户的信息发送至客户端,使活动主办方或系统管理员可以知晓相关信息,进行中签奖品的派发。
85.通过使区块链接收客户端发送的针对中签用户的第二查询请求,并基于第二查询请求将中签用户的信息发送至客户端,使外部可以对中签用户的信息进行查询,使功能更加丰富。
86.在一些实施例中,可以通过利用区块hash和随机数据对中签因子进行计算,例如,基于区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算得到hash值,从而基于指定中签数量、预约码的总数量以及hash值计算得到中签因子的值,进而可以确保中签因子是不可预测随机的且不可篡改的数据,保证了系统安全以及抽签活动的公平性。作为一个示例,上述步骤s420具体可以包括如下步骤:
87.步骤h),基于区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值。
88.步骤i),基于指定中签数量、预约码的总数量以及hash值确定中签因子。
89.示例性的,hash值可以通过抽签时区块链上最新区块hash(blockhash)+当前区块时间戳(block.timestamp)+当前区块高度(block.number)+随机数据(随机自定义盐salt)计算得到。之后可以基于指定中签数量、预约码的总数量以及hash值。利用hash算法计算的到具体的中签因子r,计算公式如下:
90.r=hash(blockhash+block.timestamp+block.number+salt);
91.其中hash算法可以为keccak256算法或hash256算法。
92.通过首先基于区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值,之后基于指定中签数量、预约码的总数量以及hash值确定中签因子,确保了中签因子是不可预测及不可篡改的数据,保证了系统安全以及抽签活动的公平性。
93.图5为本公开实施例提供的一种抽签数据处理方法的流程示意图。其中,该方法可以应用于抽签系统,抽签系统对应有用于抽签的区块链。如图5所示,该方法包括:
94.步骤s510,基于待抽签用户确定对应的预约码。
95.示例性的,在进行抽签之前的预约期间,抽签系统可以不断接收用户的预约并进行打乱,再给当前场次的打乱的用户分配连续的预约码(reservationnum),并在链外保存预约详情。例如,接收到请求为user1(分配2个预约码),user2(分配2个预约码),user3(分配1个预约码),user4(分配3个预约码)。系统乱序后为:user3(分配1个预约码),user2(分配2个预约码),user4(分配3个预约码),user1(分配2个预约码)。分配的预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6)。当预约结束,抽签系统可以对本场次的所有预约人数(usercount)进行统计,得到预约码的总数量(m),并将预约码的总数量发送至区块链,使区块链接收到抽签系统发送的预约码的总数量。
96.步骤s520,将预约码的总数量发送至区块链,以使区块链基于指定中签数量和预约码的总数量利用随机算法通过区块链的hash值确定中签因子。
97.示例性的,抽签系统可以将将预约码的总数量发送至区块链,之后系统管理员可以在某个时刻选择进行抽签,在区块链上开得中签因子(一个随机数r),区块链可以基于指
定中签数量(即中签人数)和预约码的总数量(即参与活动的总人数),利用随机算法通过区块链的hash值确定中签因子。其中的hash值可以通过最新块高hash(blockhash)+当前区块时间戳(block.timestamp)+当前区块高度(block.number)+随机数据(随机自定义盐salt)计算得到。
98.步骤s530,接收区块链发送的中签因子,并基于中签因子从待抽签用户中确定中签用户。
99.示例性的,区块链计算出中签因子后,可以将中签因子发送至链外的抽签系统,使抽签系统基于中签因子从待抽签用户中确定中签用户。例如,抽签系统得到中签因子(中签的随机数r),基于r计算得到第一个中签用户的中签预约码x=r%m(中签因子对预约码的总数量取余),并根据步长l=m/n(预约码的总数量除总中签数量后向下取整得到的整数),依次计算得到预约码x,x+l,x+2l

,并通过预约码到对应的用户即可以得到所有中签用户。
100.本公开实施例中,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
101.在一些实施例中,抽签系统将可以将计算得到的中签用户信息进行存证上链,保证了系统安全以及抽签活动的公平性,例如将中签用户的预约码及预约用户信息上传到区块链上,链上校验预约码是否与中签用户相对应,之后进行存证,确保本场次中签名单无法被篡改。作为一个示例,在上述步骤s530之后,该方法还可以包括如下步骤:
102.步骤j),将中签用户的信息发送至区块链,以使区块链对中签用户的信息进行存储。
103.示例性的,抽签系统可以将中签用户的信息发送至区块链,区块链上根据抽签系统上传的中签用户的信息,首先判断此次抽签活动是否存在,中签用户是否存在重复验证的情况。之后可以根据步长l、中签因子r以及预约码的总数量m,反向计算验证中签用户对应的预约码是否中签,如果验证结果为此预约码的确中签,则对中签用户的信息进行存证,至此用户中签的预约码及用户基本信息无法被篡改。
104.通过使抽签系统将中签用户的信息发送至区块链,以使区块链对中签用户的信息进行存储,确保本场次中签名单无法被篡改,保证了系统安全以及抽签活动的公平性。
105.在一些实施例中,抽签系统可以基于抽签活动的场次信息以及参加抽签活动的待抽签用户的预约信息为用户分配预约码,从而确保预约码是独一无二的,通过在链外进行用户数据及用户预约码分配,减少区块链交易及存储开销,解决大数据问题,提高系统预约效率。作为一个示例,上述步骤s510具体可以包括如下步骤:
106.步骤k),确定执行抽签的当前场次。
107.步骤l),接收待抽签用户的预约信息,基于预约信息和当前场次为待抽签用户分
配对应的预约码。
108.示例性的,抽签系统可以首先确定当前抽签活动的场次,得到场次编号等信息。之后在预约期间,抽签系统可以不断接收带抽签用户的预约信息并进行打乱,再给当前场次的打乱的用户分配连续的预约码(reservationnum),并在链外保存预约详情。其中的打乱方式可以为随机打乱,乱序的目的是为了确保不会按照用户预约时间分配预约码,保证预约码混乱。例如,接收到请求为user1(分配2个预约码),user2(分配2个预约码),user3(分配1个预约码),user4(分配3个预约码)。系统乱序后为:user3(分配1个预约码),user2(分配2个预约码),user4(分配3个预约码),user1(分配2个预约码)。分配的预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6)。当预约结束,抽签系统可以对本场次的所有预约人数(usercount)进行统计,得到预约码的总数量(m),并将预约码的总数量发送至区块链,使区块链接收到抽签系统发送的预约码的总数量。
109.通过使抽签系统首先确定执行抽签的当前场次,之后接收待抽签用户的预约信息,基于预约信息和当前场次为待抽签用户分配对应的预约码,在链外进行用户数据及用户预约码分配,减少区块链交易及存储开销,解决大数据问题,提高系统预约效率。
110.在一些实施例中,抽签系统可以通过将抽签相关信息初始化到智能合约中,通过智能合约将相关信息规则发送至区块链的方式,使区块链可以基于智能合约对中签因子进行计算,较为精准的生成对应的中签因子。作为一个示例,上述步骤s520具体可以包括如下步骤:
111.步骤m),确定预约码的总数量,并通过区块链对应的智能合约将预约码的总数量以及指定中签数量发送至区块链。
112.示例性的,抽签系统确定预约码的总数量并将预约码的总数量初始化到智能合约,并将智能合约发送至区块链。是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。在以太坊中智能合约采用solidity语言实现。区块链链上需部署上述智能合约,得到抽签合约地址。抽签系统不仅可以将预约码的总数量初始化至智能合约中,还可以将本抽签场次的唯一编号(sessionid)及指定中签数量(awardscount)等信息一并初始化至智能合约中,发送至区块链,从而使区块链基于智能合约进行抽签计算。
113.通过使抽签系统确定预约码的总数量,并通过区块链对应的智能合约将预约码的总数量以及指定中签数量发送至区块链,使区块链可以基于智能合约对中签因子进行计算,较为精准的生成对应的中签因子。
114.在一些实施例中,在得到区块链上计算得出的中签因子后,链外抽签系统可以通过较为科学严谨的计算方式求得与中签因子对应的中签预约码以及若干目标中签用户,确保了抽签结果的随机性和公平性。作为一个示例,上述步骤s530具体可以包括如下步骤:
115.步骤n),确定中签因子对应的中签预约码和预约码的总数量相除后的余数。
116.步骤o),确定预约码的总数量和指定中签数量的相除结果。
117.步骤p),基于余数以及相除结果,得到多个目标预约码,并将多个目标预约码对应的待抽签用户确定为中签用户。
118.示例性的,某个抽签场次,预先设定不添加随机数据(salt),在进行抽签的那一
刻,链上最新区块hash(blockhash)为0x221bf8e565f5556daeaf9e019551a21e26b094fb7d36f28030710deb6f84cb4e;所在区块时间戳(block.timestamp)为1649221848774;所在区块高度为12106;利用keccak256算法进行计算。因此可以计算中签因子r=hash(链上最新区块hash+当前区块时间戳+当前块高)=keccak256(abi.encode(0x221bf8e565f5556daeaf9e019551a21e26b094fb7d36f28030710deb6f84cb4e,1649221848774,12106))=10233858231250241519236343753568272549663958680473177248773779480838361970431。之后可以确定中签因子对应的中签预约码和预约码的总数量相除后的余数:r%m=10233858231250241519236343753568272549663958680473177248773779480838361970431%10717=6561。根据上述计算公式可以确定第一位中签者对应的中签预约码为s0=(6561+0*297)%10717=6561。该场次预约码的总数量为m=10717个,指定中签数量n=36个,步长l=10717/36=297,因此第二位为s1=(6561+1*297)%1724=6858。依次类推,所有中签者的目标预约码列表为[6561,6858,7155,7452,7749,8046,8343,8640,8937,9234,9531,9828,10125,10422,2,299,596,893,1190,1487,1784,2081,2378,2675,2972,3269,3566,3863,4160,4457,4754,5051,5348,5645,5942,6239],进而可以通过目标预约码到对应的中签用户。
[0119]
又例如,某个抽签场次,预先设定不添加随机数据(salt),在进行抽签的那一刻,链上最新区块hash(blockhash)为0x863a0e2a100300f6e977fd117e154aeff991a7940e53a8498cac5a169eb16e25;所在区块时间戳(block.timestamp)为1648703476090;所在区块高度为10727;利用keccak256算法进行计算。因此可以计算中签因子r=hash(链上最新区块hash+当前区块时间戳+当前块高)=keccak256(abi.encode(0x863a0e2a100300f6e977fd117e154aeff991a7940e53a8498cac5a169eb16e25,1648703476090,10727))=110889572574634027803447540008288002233826164825105048705823348457023053248946。之后可以确定中签因子对应的中签预约码和预约码的总数量相除后的余数:r%m=110889572574634027803447540008288002233826164825105048705823348457023053248946%1724=422。根据上述计算公式可以确定第一位中签者对应的中签预约码为s0=(422+0*71)%1724=422。该场次预约码的总数量为m=1724个,指定中签数量n=24个,步长l=1724/24=71,因此第二位为s1=(422+1*71)%1724=493。依次类推,所有中签者的目标预约码列表为[422,493,564,635,706,777,848,919,990,1061,1132,1203,1274,1345,1416,1487,1558,1629,1700,118,189,260,331],进而可以通过目标预约码到对应的中签用户。
[0120]
通过使抽签系统首先确定中签因子对应的中签预约码和预约码的总数量相除后的余数,从而确定预约码的总数量和指定中签数量的相除结果,进而基于余数以及相除结果,得到多个目标预约码,并将多个目标预约码对应的待抽签用户确定为中签用户。
[0121]
图6为本公开实施例提供的一种抽签数据处理方法的流程示意图。其中,该方法可以应用于抽签的区块链的外部对应有抽签系统。如图6所示,该方法包括:
[0122]
步骤s610,抽签系统基于待抽签用户确定对应的预约码,并将预约码的总数量发送至区块链。
[0123]
示例性的,在进行抽签之前的预约期间,抽签系统可以不断接收用户的预约并进行打乱,再给当前场次的打乱的用户分配连续的预约码(reservationnum),并在链外保存预约详情。例如,接收到请求为user1(分配2个预约码),user2(分配2个预约码),user3(分
配1个预约码),user4(分配3个预约码)。系统乱序后为:user3(分配1个预约码),user2(分配2个预约码),user4(分配3个预约码),user1(分配2个预约码)。分配的预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6)。
[0124]
当预约结束,抽签系统可以对本场次的所有预约人数(usercount)进行统计,得到预约码的总数量(m),并将预约码的总数量发送至区块链,使区块链接收到抽签系统发送的预约码的总数量。
[0125]
步骤s620,区块链基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子,并将中签因子发送至抽签系统。
[0126]
示例性的,区块链可以接收到抽签系统上传的场次编号(sessionid)、预约码的总数量、预约人数等信息。当系统管理员发起交易,区块链可以判断当前场次信息是否存在,若不存在,说明场次没初始化过,拒绝抽签。如果存在,则保存抽签基础信息,通过场次编号及抽签详情map进行映射,其中的抽签详情可以包括指定中签数量、预约码的总数量、用户数量、步长信息等(步长信息为确定中签用户时需要用到的信息)。之后系统管理员可以在某个时刻选择进行抽签,在区块链上开得中签因子(一个随机数r),区块链可以基于指定中签数量(即中签人数)和预约码的总数量(即参与活动的总人数),利用随机算法通过区块链的hash值确定中签因子。其中的hash值可以通过最新块高hash(blockhash)+当前区块时间戳(block.timestamp)+当前区块高度(block.number)+随机数据(随机自定义盐salt)计算得到。
[0127]
步骤s630,抽签系统基于中签因子从待抽签用户中确定中签用户。
[0128]
示例性的,区块链计算出中签因子后,可以将中签因子发送至链外的抽签系统,使抽签系统基于中签因子从待抽签用户中确定中签用户。例如,抽签系统得到中签因子(中签的随机数r),基于r计算得到第一个中签用户的预约码x=r%m(中签因子对预约码的总数量取余),并根据步长l=m/n(预约码的总数量除总中签数量后向下取整得到的整数),依次计算得到预约码x,x+l,x+2l

,并通过预约码到对应的用户即可以得到所有中签用户。即根据公式si=(r%m+i*l)%m(i=0,1,2,...n-1),即可以确定所有的中签用户。例如预约码为:1(user3),2(user2),3(user2),4(user4),5(user4),6(user4),7(user5),8(user6);若中签预约码为1,4,7。则用户user3,user4,user5中签。
[0129]
本公开实施例中,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0130]
图7为本公开实施例提供的一种抽签数据处理装置的结构示意图。其中,该装置可以应用于区块链,区块链的外部对应有抽签系统。如图7所示,抽签数据处理装置700包括:
[0131]
接收模块701,用于接收抽签系统发送的预约码的总数量;其中,预约码是抽签系统基于待抽签用户确定的对应号码;
[0132]
确定模块702,用于基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子;
[0133]
发送模块703,用于将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户。
[0134]
在一些实施例中,该装置还可以包括:
[0135]
验证模块,用于将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户之后,接收抽签系统发送的中签用户的信息,并基于中签用户的信息对中签用户对应的预约码进行是否中签的验证,得到验证结果;
[0136]
如果验证结果为中签,则对中签用户的信息进行存储。
[0137]
在一些实施例中,该装置还可以包括:
[0138]
第一查询模块,用于将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户之后,接收客户端发送的针对待查询预约码是否中签的第一查询请求;
[0139]
基于第一查询请求验证待查询预约码是否中签,得到验证结果;
[0140]
将验证结果发送至客户端。
[0141]
在一些实施例中,该装置还可以包括:
[0142]
第二查询模块,用于将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户之后,接收客户端发送的针对中签用户的第二查询请求;
[0143]
基于第二查询请求将中签用户的信息发送至客户端。
[0144]
在一些实施例中,确定模块702具体用于:
[0145]
基于区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值;
[0146]
基于指定中签数量、预约码的总数量以及hash值确定中签因子。
[0147]
本公开实施例提供的一种抽签数据处理装置,与上述实施例提供的一种抽签数据处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果,通过将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0148]
图8为本公开实施例提供的一种抽签数据处理装置的结构示意图。其中,该装置可以应用于抽签系统,抽签系统对应有用于抽签的区块链。如图8所示,抽签数据处理装置800包括:
[0149]
第一确定模块801,用于基于待抽签用户确定对应的预约码;
[0150]
发送模块802,用于将预约码的总数量发送至区块链,以使区块链基于指定中签数量和预约码的总数量利用随机算法通过区块链的hash值确定中签因子;
[0151]
第二确定模块803,用于接收区块链发送的中签因子,并基于中签因子从待抽签用
户中确定中签用户。
[0152]
在一些实施例中,该装置还可以包括:
[0153]
存储模块,用于基于中签因子从待抽签用户中确定中签用户之后,将中签用户的信息发送至区块链,以使区块链对中签用户的信息进行存储。
[0154]
在一些实施例中,第一确定模块801具体用于:
[0155]
确定执行抽签的当前场次;
[0156]
接收待抽签用户的预约信息,基于预约信息和当前场次为待抽签用户分配对应的预约码。
[0157]
在一些实施例中,发送模块802具体用于:
[0158]
确定预约码的总数量,并通过区块链对应的智能合约将预约码的总数量以及指定中签数量发送至区块链。
[0159]
在一些实施例中,第二确定模块803具体用于:
[0160]
确定中签因子对应的中签预约码和预约码的总数量相除后的余数;
[0161]
确定预约码的总数量和指定中签数量的相除结果;
[0162]
基于余数以及相除结果,得到多个目标预约码,并将多个目标预约码对应的待抽签用户确定为中签用户。
[0163]
本公开实施例提供的一种抽签数据处理装置,与上述实施例提供的一种抽签数据处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果,通过将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0164]
图9为本公开实施例提供的一种抽签数据处理系统的结构示意图。如图9所示,抽签数据处理系统包括:用于抽签的区块链以及区块链的外部对应的抽签系统;
[0165]
抽签系统用于基于待抽签用户确定对应的预约码,并将预约码的总数量发送至区块链;
[0166]
区块链用于基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子,并将中签因子发送至抽签系统;
[0167]
抽签系统还用于基于中签因子从待抽签用户中确定中签用户。
[0168]
通过本公开实施例提供的一种抽签数据处理系统,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较
大导致区块链的运行压力较大的技术问题。
[0169]
本技术实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行如实施例中的一种抽签数据处理方法时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,所述处理器方法项的前序部分,以执行以下步骤:
[0170]
接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基于待抽签用户确定的对应号码;
[0171]
基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子;
[0172]
将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
[0173]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0174]
接收所述抽签系统发送的所述中签用户的信息,并基于所述中签用户的信息对所述中签用户对应的预约码进行是否中签的验证,得到验证结果;
[0175]
如果所述验证结果为中签,则对所述中签用户的信息进行存储。
[0176]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0177]
接收客户端发送的针对待查询预约码是否中签的第一查询请求;
[0178]
基于所述第一查询请求验证所述待查询预约码是否中签,得到验证结果;
[0179]
将所述验证结果发送至所述客户端。
[0180]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0181]
接收客户端发送的针对中签用户的第二查询请求;
[0182]
基于所述第二查询请求将所述中签用户的信息发送至所述客户端。
[0183]
在一个可行的实施方案中,所述处理器具体用于执行:
[0184]
基于所述区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值;
[0185]
基于指定中签数量、所述预约码的总数量以及所述hash值确定中签因子。
[0186]
当电子设备运行如实施例中的一种抽签数据处理方法时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,所述处理器方法项的前序部分,以执行以下步骤:
[0187]
基于待抽签用户确定对应的预约码;
[0188]
将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;
[0189]
接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中
确定中签用户。
[0190]
在一个可行的实施方案中,在所述基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0191]
将所述中签用户的信息发送至所述区块链,以使所述区块链对所述中签用户的信息进行存储。
[0192]
在一个可行的实施方案中,所述处理器具体用于执行:
[0193]
确定执行抽签的当前场次;
[0194]
接收所述待抽签用户的预约信息,基于所述预约信息和所述当前场次为所述待抽签用户分配对应的预约码。
[0195]
在一个可行的实施方案中,所述处理器具体用于执行:
[0196]
确定所述预约码的总数量,并通过所述区块链对应的智能合约将所述预约码的总数量以及所述指定中签数量发送至所述区块链。
[0197]
在一个可行的实施方案中,所述处理器具体用于执行:
[0198]
确定所述中签因子对应的中签预约码和所述预约码的总数量相除后的余数;
[0199]
确定所述预约码的总数量和所述指定中签数量的相除结果;
[0200]
基于所述余数以及所述相除结果,得到多个目标预约码,并将所述多个目标预约码对应的待抽签用户确定为中签用户。
[0201]
当电子设备运行如实施例中的一种抽签数据处理方法时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,所述处理器方法项的前序部分,以执行以下步骤:
[0202]
所述抽签系统基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送至所述区块链;
[0203]
所述区块链基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;
[0204]
所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
[0205]
上述电子设备所执行步骤的具体实施例和具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
[0206]
通过上述方式,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0207]
对应于上述抽签数据处理方法,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质储存有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器执行以下步骤:
[0208]
接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基
于待抽签用户确定的对应号码;
[0209]
基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子;
[0210]
将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
[0211]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0212]
接收所述抽签系统发送的所述中签用户的信息,并基于所述中签用户的信息对所述中签用户对应的预约码进行是否中签的验证,得到验证结果;
[0213]
如果所述验证结果为中签,则对所述中签用户的信息进行存储。
[0214]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0215]
接收客户端发送的针对待查询预约码是否中签的第一查询请求;
[0216]
基于所述第一查询请求验证所述待查询预约码是否中签,得到验证结果;
[0217]
将所述验证结果发送至所述客户端。
[0218]
在一个可行的实施方案中,在所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0219]
接收客户端发送的针对中签用户的第二查询请求;
[0220]
基于所述第二查询请求将所述中签用户的信息发送至所述客户端。
[0221]
在一个可行的实施方案中,所述处理器具体用于执行:
[0222]
基于所述区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值;
[0223]
基于指定中签数量、所述预约码的总数量以及所述hash值确定中签因子。
[0224]
上述计算机可读存储介质储存有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令还可以促使所述处理器执行以下步骤:
[0225]
基于待抽签用户确定对应的预约码;
[0226]
将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;
[0227]
接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中确定中签用户。
[0228]
在一个可行的实施方案中,在所述基于所述中签因子从所述待抽签用户中确定中签用户之后,所述处理器还用于执行:
[0229]
将所述中签用户的信息发送至所述区块链,以使所述区块链对所述中签用户的信息进行存储。
[0230]
在一个可行的实施方案中,所述处理器具体用于执行:
[0231]
确定执行抽签的当前场次;
[0232]
接收所述待抽签用户的预约信息,基于所述预约信息和所述当前场次为所述待抽签用户分配对应的预约码。
[0233]
在一个可行的实施方案中,所述处理器具体用于执行:
[0234]
确定所述预约码的总数量,并通过所述区块链对应的智能合约将所述预约码的总数量以及所述指定中签数量发送至所述区块链。
[0235]
在一个可行的实施方案中,所述处理器具体用于执行:
[0236]
确定所述中签因子对应的中签预约码和所述预约码的总数量相除后的余数;
[0237]
确定所述预约码的总数量和所述指定中签数量的相除结果;
[0238]
基于所述余数以及所述相除结果,得到多个目标预约码,并将所述多个目标预约码对应的待抽签用户确定为中签用户。
[0239]
上述计算机可读存储介质储存有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令还可以促使所述处理器执行以下步骤:
[0240]
所述抽签系统基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送至所述区块链;
[0241]
所述区块链基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;
[0242]
所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。
[0243]
上述计算机可读存储介质储中的计算机可运行指令在被处理器调用和运行时,所述处理器所执行步骤的具体实施例和具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
[0244]
通过上述方式,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0245]
本公开实施例中,将抽签数据处理任务分配给区块链以及区块链外部的抽签系统两部分完成,区块链获取抽签系统发送的预约码的总数量,在进行抽签时区块链只负责基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值计算出唯一的中签因子,而具体的若干中签用户是抽签系统基于中签因子计算得出的,将复杂的计算工作以及数据存储工作交给区块链外部的抽签系统完成,避免了大量无效的数据存储在区块链占用区块链资源,避免了大量的数据计算占用区块链的计算资源,降低了区块链的交易成本、存储成本以及计算成本,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。
[0246]
在本公开所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可
以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0247]
再例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0248]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0249]
另外,在本公开提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0250]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述抽签数据处理方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0251]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0252]
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的范围。都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

技术特征:


1.一种抽签数据处理方法,其特征在于,应用于区块链,所述区块链的外部对应有抽签系统;所述方法包括:接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基于待抽签用户确定的对应号码;基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子;将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。2.根据权利要求1所述的方法,其特征在于,所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,还包括:接收所述抽签系统发送的所述中签用户的信息,并基于所述中签用户的信息对所述中签用户对应的预约码进行是否中签的验证,得到验证结果;如果所述验证结果为中签,则对所述中签用户的信息进行存储。3.根据权利要求1所述的方法,其特征在于,所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,还包括:接收客户端发送的针对待查询预约码是否中签的第一查询请求;基于所述第一查询请求验证所述待查询预约码是否中签,得到验证结果;将所述验证结果发送至所述客户端。4.根据权利要求1所述的方法,其特征在于,所述将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户之后,还包括:接收客户端发送的针对中签用户的第二查询请求;基于所述第二查询请求将所述中签用户的信息发送至所述客户端。5.根据权利要求1所述的方法,其特征在于,基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,包括:基于所述区块链对应的最新区块hash、当前区块时间戳、当前区块高度以及随机数据计算hash值;基于指定中签数量、所述预约码的总数量以及所述hash值确定中签因子。6.一种抽签数据处理方法,其特征在于,应用于抽签系统,所述抽签系统对应有用于抽签的区块链;所述方法包括:基于待抽签用户确定对应的预约码;将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中确定中签用户。7.根据权利要求6所述的方法,其特征在于,所述基于所述中签因子从所述待抽签用户中确定中签用户之后,还包括:将所述中签用户的信息发送至所述区块链,以使所述区块链对所述中签用户的信息进行存储。8.根据权利要求6所述的方法,其特征在于,所述基于待抽签用户确定对应的预约码,
包括:确定执行抽签的当前场次;接收所述待抽签用户的预约信息,基于所述预约信息和所述当前场次为所述待抽签用户分配对应的预约码。9.根据权利要求6所述的方法,其特征在于,所述将所述预约码的总数量发送至所述区块链,包括:确定所述预约码的总数量,并通过所述区块链对应的智能合约将所述预约码的总数量以及所述指定中签数量发送至所述区块链。10.根据权利要求6所述的方法,其特征在于,所述基于所述中签因子从所述待抽签用户中确定中签用户,包括:确定所述中签因子对应的中签预约码和所述预约码的总数量相除后的余数;确定所述预约码的总数量和所述指定中签数量的相除结果;基于所述余数以及所述相除结果,得到多个目标预约码,并将所述多个目标预约码对应的待抽签用户确定为中签用户。11.一种抽签数据处理方法,其特征在于,用于抽签的区块链的外部对应有抽签系统;所述方法包括:所述抽签系统基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送至所述区块链;所述区块链基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。12.一种抽签数据处理装置,其特征在于,应用于区块链,所述区块链的外部对应有抽签系统;包括:接收模块,用于接收所述抽签系统发送的预约码的总数量;其中,所述预约码是所述抽签系统基于待抽签用户确定的对应号码;确定模块,用于基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子;发送模块,用于将所述中签因子发送至所述抽签系统,以使所述抽签系统基于所述中签因子从所述待抽签用户中确定中签用户。13.一种抽签数据处理装置,其特征在于,应用于抽签系统,所述抽签系统对应有用于抽签的区块链;包括:第一确定模块,用于基于待抽签用户确定对应的预约码;发送模块,用于将所述预约码的总数量发送至所述区块链,以使所述区块链基于指定中签数量和所述预约码的总数量利用随机算法通过所述区块链的hash值确定中签因子;第二确定模块,用于接收所述区块链发送的所述中签因子,并基于所述中签因子从所述待抽签用户中确定中签用户。14.一种抽签数据处理系统,其特征在于,包括:用于抽签的区块链以及所述区块链的外部对应的抽签系统;所述抽签系统用于基于待抽签用户确定对应的预约码,并将所述预约码的总数量发送
至所述区块链;所述区块链用于基于指定中签数量和所述预约码的总数量,利用随机算法通过所述区块链的hash值确定中签因子,并将所述中签因子发送至所述抽签系统;所述抽签系统还用于基于所述中签因子从所述待抽签用户中确定中签用户。15.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至11任一项所述的方法的步骤。16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至11任一项所述的方法。

技术总结


本公开提供了一种抽签数据处理方法、装置以及系统,涉及区块链技术领域,缓解了区块链的数据处理量较大导致区块链的运行压力较大的技术问题。该方法包括:接收抽签系统发送的预约码的总数量;其中,预约码是抽签系统基于待抽签用户确定的对应号码;基于指定中签数量和预约码的总数量,利用随机算法通过区块链的hash值确定中签因子;将中签因子发送至抽签系统,以使抽签系统基于中签因子从待抽签用户中确定中签用户。确定中签用户。确定中签用户。


技术研发人员:

赖奕宇 王挺 杜茂兵 曹崇瑞

受保护的技术使用者:

网易(杭州)网络有限公司

技术研发日:

2022.10.11

技术公布日:

2022/12/9

本文发布于:2024-09-24 07:18:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/31768.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   区块   用户   因子
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议