一种目标用户筛选方法及装置与流程

文档序号:20931520发布日期:2020-06-02 19:06阅读:355来源:国知局
一种目标用户筛选方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种目标用户筛选方法及装置。



背景技术:

通常,会有从多个用户中筛选出目标用户的需要,例如,摇号、抽奖等场景,这些场景下可靠性和公平公正是非常重要的。

现有技术中,目标用户筛选方法,主要是通过人工抽签,或者通过计算机摇号系统来筛选和抽取目标用户,但是现有技术中的方式,人工抽签效率较低,并且人为因素不可避免,而计算机摇号系统方式,通过产生一次随机数来抽取目标用户,可靠性较低,容易被人为操纵,并且计算机摇号系统的后台仅归属于一方,通常为主办方,因此也更增加了容易被人为操纵的可能性,缺乏完全信任。



技术实现要素:

本发明实施例提供一种目标用户筛选方法及装置,以解决现有技术中目标用户筛选容易被人为操纵,可靠性较低的问题。

本发明实施例提供的具体技术方案如下:

本发明一个实施例提供了一种目标用户筛选方法,用于区块链系统中,所述区块链系统包括中心节点和多个用户节点,包括:

获得所述区块链系统达成共识后的n个随机数的排序结果,其中,所述n的大小取值为用户节点的数目;

获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;

按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

结合本发明的一个实施例,所述n个随机数的排序结果的共识方式为:

通过中心节点生成n个随机数的排序结果,并将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给所述区块链系统中各用户节点,以使各用户节点和中心节点根据预设共识机制而达成共识的。

结合本发明的一个实施例,获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间时,还包括:获得所述区块链系统达成共识后的在预设时间段内各参与用户的明文地址;其中,所述明文地址为注册时获得的不同的随机数;

所述各参与用户的参与时间和明文地址的共识方式为:

通过任一用户节点获取到各参与用户的参与时间和明文地址,并发送给所述区块链系统中其它节点,以使在所述预设时间段的结束时间后,各用户节点和中心节点根据预设共识机制而达成共识的。

结合本发明的一个实施例,通过任一用户节点获取到参与用户的参与时间和明文地址,具体包括:

若确定用户在预设时间段内通过私钥密码登录,则确定出所述用户为参与用户,并记录获取到的参与用户的参与时间和明文地址的;其中,每个用户还对应一个注册时获得的公钥地址和私钥密码。

结合本发明的一个实施例,根据各参与用户的参与时间,分别获得每个用户的参与分数,具体包括:

分别确定各参与用户的参与时间与所述预设时间段的开始时间的时间间隔,并确定各时间间隔的平均时间间隔;

为未参与的用户随机指定参与时间;其中,随机指定的参与时间在所述预设时间段之间;

分别根据各用户的参与时间与所述预设时间段的开始时间的时间间隔,以及所述平均时间间隔,获得每个用户的参与分数。

结合本发明的一个实施例,按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户,具体包括:

获取所述n个随机数的排序结果中前预设数目个随机数;

分别根据获得的前预设数目个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,并若确定筛选出的用户为参与用户,则将筛选出的用户作为目标用户,若确定筛选出的用户为未参与用户,则从所述随机数的排序结果中获取前预设数目的下一个随机数,并根据下一个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,直至筛选出所述预设数目个目标用户。

本发明另一个实施例提供了一种目标用户筛选装置,所述装置应用于区块链系统,所述区块链系统包括中心节点和多个用户节点,该装置包括:

第一获得模块,用于获得所述区块链系统达成共识后的n个随机数的排序结果,其中,所述n的大小取值为用户节点的数目;

第二获得模块,用于获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间;

用户排序模块,用于根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;

筛选模块,用于按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

结合本发明另一个实施例,进一步包括:

第一共识模块,用于通过中心节点生成n个随机数的排序结果后,将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给所述区块链系统中各用户节点,以使各用户节点和中心节点根据预设共识机制而达成共识的。

结合本发明另一个实施例,所述第二获得模块进一步用于:获得所述区块链系统达成共识后的在预设时间段内各参与用户的明文地址;其中,所述明文地址为注册时获得的不同的随机数;

还包括:

第二共识模块,用于通过任一用户节点获取到各参与用户的参与时间和明文地址,并发送给所述区块链系统中其它节点,以使在所述预设时间段的结束时间后,各用户节点和中心节点根据预设共识机制而达成共识的。

结合本发明另一个实施例,通过任一用户节点获取到的参与用户的参与时间和明文地址时,第二共识模块具体用于:

若确定用户在预设时间段内通过私钥密码登录,则确定出所述用户为参与用户,并记录获取到的参与用户的参与时间和明文地址的;其中,每个用户还对应一个注册时获得的公钥地址和私钥密码。

结合本发明另一个实施例,根据各参与用户的参与时间,分别获得每个用户的参与分数时,所述用户排序模块具体用于:

分别确定各参与用户的参与时间与所述预设时间段的开始时间的时间间隔,并确定各时间间隔的平均时间间隔;

为未参与的用户随机指定参与时间;其中,随机指定的参与时间在所述预设时间段之间;

分别根据各用户的参与时间与所述预设时间段的开始时间的时间间隔,以及所述平均时间间隔,获得每个用户的参与分数。

结合本发明另一个实施例,按照所述n个随机数的排序结果,从排序后的用户中筛选出相应排名的目标用户,直至筛选出预设数目个目标用户时,筛选模块具体用于:

获取所述n个随机数的排序结果中前预设数目个随机数;

分别根据获得的前预设数目个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,并若确定筛选出的用户为参与用户,则将筛选出的用户作为目标用户,若确定筛选出的用户为未参与用户,则从所述随机数的排序结果中获取前预设数目的下一个随机数,并根据下一个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,直至筛选出所述预设数目个目标用户。

本发明另一个实施例提供了一种电子设备,包括:

至少一个存储器,用于存储程序指令;

至少一个处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行上述任一种目标用户筛选方法。

本发明另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种目标用户筛选方法的步骤。

本发明实施例中,目标用户筛选方法用于区块链系统中,所述区块链系统包括中心节点和多个用户节点,包括:获得所述区块链系统达成共识后的n个随机数的排序结果;其中,所述n的大小取值为用户节点的数目;获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户,这样,采用区块链技术,将随机数的排序结果、参与用户的参与时间等信息保存在区块链系统中,并可以全网达成共识,不能篡改,安全性和可靠性更高,公开透明,为目标用户筛选提供了更为可靠的信息依据,从而根据达成共识后的这些信息,进行排序和比对,筛选出目标用户,提高了可靠性,结果难以被人为操纵,更加公平公正,也解决了信任问题。

附图说明

图1为本发明实施例中目标用户筛选系统结构示意图;

图2为本发明实施例中一种目标用户筛选方法流程图;

图3为本发明实施例中另一种目标用户筛选方法流程图;

图4为本发明实施例中目标用户筛选装置结构示意图;

图5为本发明实施例中电子设备结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本发明实施例的理解,下面先对几个概念进行简单介绍:

区块链:是由节点参与的分布式数据库系统,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,特点是不可更改,不可伪造。其中,共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。

分布式系统:建立在网络之上的软件系统,一组独立的计算机对外呈现出一个整体。

通常,平台从多个用户中筛选目标用户时,可以通过人工抽签,或者计算机后台摇号,人工抽签是人工直接从多个用户中抽取预设数目个目标用户,人工操作的人为因素不可避免,效率和可靠性较低,并且计算机后台摇号抽取,实现方法比较简单,通常通过产生一次随机数,根据随机数从中抽取目标用户,可靠性较低,容易被人为操纵,并且计算机摇号系统的后台仅归属于一方,通常为主办方,因此也更增加了容易被人为操纵的可能性,缺乏完全信任。

本发明实施例中,主要采用两次随机方法,一次是获得随机数的排序结果,一次是获得排序后的用户,具体为,在预设时间段的开始时间之前的预设时间内,生成随机数并进行排序,获得随机数的排序结果,然后在活动开始后,获得在活动的预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得各用户的参与分数,获得排序后的用户,最后,根据排序后的用户和随机数的排序结果,从排序后的用户筛选出预设数目的目标用户。经过两次随机排序方法,可靠性更高,并且第二次排序中的参与分数,是根据所有用户的参与时间计算得到的,需要用到所有用户的参与时间,降低了作弊的可能性,可靠性更高。

并且,本发明实施例中,还采用区块链技术,区块链系统包括中心节点和多个用户节点,每个用户对应一个用户节点,生成的随机数排序结果,以及参与时间等信息,都可以保存在区块链系统中并进行同步共识,无法篡改,被人为操纵的可能性很小,极大提高了可靠性,更加公平公正,也解决了信任问题。

参阅图1所示,为本发明实施例中目标用户筛选系统结构示意图,即目标用户筛选方法的应用场景架构,目标用户筛选方法应用于该目标用户筛选系统,目标用户筛选系统为一个区块链系统,该区块链系统包括中心节点和多个用户节点,每个用户节点对应一个用户,如图1所示,以包括4个用户节点进行示例说明。

其中,中心节点可以认为是中心管理服务器,用户节点可以为各用户对应的后台服务器。

针对每个用户节点,用户在平台,即该系统中注册后,就成为区块链系统中的用户,并且本发明实施例中,每个用户对应一个注册时获得的明文地址,该明文地址可以为注册时获得的不同的随机数。例如,随机数取值为1-n中的值。

并且,该用户还对应一个注册时获得的公钥地址和私钥密码,可以用于用户在活动开始后来参与该活动。

中心节点或用户节点可以为服务器,节点与节点之间可以通过互联网相连,实现相互之间的通信。可选地,上述的互联网使用标准通信技术和/或协议。互联网通常为因特网、但也可以是任何网络,包括但不限于局域网(localareanetwork,lan)、城域网(metropolitanareanetwork,man)、广域网(wideareanetwork,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言(hypertextmark-uplanguage,html)、可扩展标记语言(extensiblemarkuplanguage,xml)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(securesocketlayer,ssl)、传输层安全(transportlayersecurity,tls)、虚拟专用网络(virtualprivatenetwork,vpn)、网际协议安全(internetprotocolsecurity,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。

基于上述目标用户筛选系统,在进行目标用户筛选时,本发明实施例中,提供了一种可能的实施方式,获得区块链系统达成共识后的n个随机数的排序结果;其中,n的大小取值为用户节点的数目;获得区块链系统达成共识后的在预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;按照n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

这样,采用区块链技术,中心节点和所有用户节点组成一个区块链系统,随机数的排序结果、参与时间等所有数据和记录都可以保存在区块链系统中,无法篡改,难以被人为操纵,从而根据区块链系统保存的随机数的排序结果和基于参与分数排序后的用户,筛选目标用户,更加可靠,也更加公平公正,提升了信任。并且本发明实施例中,采用两次随机方法,来筛选目标用户,更加可靠和公平,其中,参与分数计算时需要根据所有用户的参与时间,所有用户的参与时间参与计算,难以作弊,提高了可靠性。

需要说明的是,本发明实施例中可以由中心节点或用户节点来执行本发明实施例中的目标用户筛选方法,这是因为,区块链系统中所有节点可以通过共识同步最后获得相同的随机数的排序结果和参与用户的参与时间等信息,因此,都可以基于随机数的排序结果和参与用户的参与时间,最后筛选出目标用户。

进一步地,本发明实施例中基于区块链技术,各节点实现信息共识和同步,提供了可能的实施方式,具体可以分为以下两个方面:

第一方面:n个随机数的排序结果的共识方式为:通过中心节点生成n个随机数的排序结果,并将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给区块链系统中各用户节点,以使各用户节点和中心节点根据预设共识机制而达成共识的。

其中,生成n个随机数的排序结果,具体包括:为每个随机数生成一个随机分数,根据随机分数的大小,对这n个随机数进行排序。

当然,也可以采用其它方式,对n个随机数进行排序,本发明实施例中并不进行限制。

在初始用户注册后,需要根据注册的用户的数目,生成随机数,例如有n个注册的用户,则生成n个随机数,以及为每个随机数生成随机分数并进行排序,生成随机数的排序结果,这时,需要有一个统一的中心来为统一管理所有的用户节点,并为注册的用户分配随机数和随机分数等,并且也为了可靠性,因此,n个随机数的排序结果生成过程需要由中心节点执行。

也就是说,随机数的排序结果主要是中心节点初始生成,并扩散到区块链系统中其它节点,这样,区块链网络中所有节点都可以接收到随机数的排序结果,并保存到内存中,等待新一轮的共识。

具体地:1)中心节点根据各随机分数大小顺序,对随机数进行排序,获得n个随机数的排序结果。

其中,各用户的随机分数是为各随机数随机分配的。

其中,随机分数的生成方法,本发明实施例中并不进行限制。

例如,在某活动开始前指定的截止时间内,在系统平台上进行注册,成为区块链系统的用户,这时会根据注册的用户的数目,生成n个随机数,例如,可以依次为1-n的数字。进而在注册的截止时间后,根据注册的用户数量,分别随机为这n个随机数再生成随机分数,进而对随机数进行排序。

例如,有5个注册的用户,则生成的随机数分别为1、2、3、4、5,并相应的随机分数分别为0.5、0.8、0.6、0.2、0.3,则根据随机分数从大到小进行排序,获得随机数的排序结果为:2、3、1、5、4。

本发明实施例中,根据随机分数对随机数进行排序时,可以按照随机分数从大到小的顺序进行排序,也可以按照从小到大的顺序进行排序,对此并不进行限制。

然后,将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给区块链系统中各用户节点。

最后,区块链系统中各用户节点和中心节点根据预设共识机制,对n个随机数的排序结果达成共识。

其中,共识机制的基本原理是:区块链系统中所有节点会收集一段时间内接收到的随机数的排序结果和生成随机数的排序结果的时间等信息,并整合在一起,形成存储的区块结构,并扩散至区块链系统;任意一个节点接收到其它节点发送的信息后,会将其与自身保存的信息进行比较,并再向区块链系统中其它节点发送一份确认的信息集合至区块链系统。这样,通过区块链系统中各节点的扩散迭代,最终所有节点中的信息达成一致,从而各个节点保存的随机数的排序结果和生成随机数的排序结果的时间都是相同的。

例如,以时间为单位将一定时间内产生的数据打包成集合,通过区块链系统扩散,这样,每个节点都会收到多份集合,每个集合中包含了若干个数据,例如一个集合中包括数据1、数据2、数据3和数据4,分别为:

数据1:[hash11,hash12,hash13,hash14…hash1n]

数据2:[hash21,hash22,hash23,hash24…hash2n]

数据3:[hash31,hash32,hash33,hash34…hash3n]

数据4:[hash41,hash42,hash43,hash44…hash4n]

每个节点针对集合中的每个数据,进行判断,分别将不同数据中相应位置的哈希(hash)值进行比对,获得相同hash值占比大于预设比例的作为共识值,例如预设比例为50%,然后将确认的各共识值扩散至区块链系统,这样,通过多轮迭代,实现区块链系统全网统一。

第二方面:各参与用户的参与时间和明文地址的共识方式为:通过任一用户节点获取到各参与用户的参与时间和明文地址,并发送给区块链系统中其它节点,以使在预设时间段的结束时间后,各用户节点和中心节点根据预设共识机制而达成共识的。

其中,通过任一用户节点获取到参与用户的参与时间和明文地址,具体包括:若确定用户在预设时间段内通过私钥密码登录,则确定出用户为参与用户,并记录获取到的参与用户的参与时间和明文地址的;其中,每个用户还对应一个注册时获得的公钥地址和私钥密码。

本发明实施例中,将该预设时间段内通过私钥密码登录的,即确认为参与用户,从而可以确定出各个参与用户,并获得参与用户的参与时间和明文地址,预设时间段的结束时间后,可以通过区块链系统的共识机制,进行共识,使得各个节点存储并同步所有参与用户的参与时间和明文地址,这里的共识机制和上述随机数的排序结果共识过程原理是一样的。

也就是说,每次筛选目标用户时,区块链系统中各节点中可以保存和同步当前生成的随机数的排序结果和对应的时间,以及在活动的预设时间段内参与用户的参与时间和明文地址,从而可以为筛选目标用户提供可靠的计算依据。

值得说明的是,本发明实施例中的系统结构图是为了更加清楚地说明本发明实施例中的技术方案,并不构成对本发明实施例提供的技术方案的限制,并且,本发明实施例中,可以但不限于应用于摇号、抽奖等应用场景,对于其它的系统结构架构和业务应用,本发明实施例提供的技术方案对于类似的问题,同样适用。

本发明各个实施例中,以目标用户筛选方法用于图1所示的中心节点或任意一个用户节点为例进行示意性说明。

为了解决现有技术中目标用户筛选容易被人为操纵,可靠性较低的问题,本发明实施例中,采用区块链技术和两次随机排序技术,提供了一种目标用户筛选方法,该目标用户筛选方法用于区块链系统中,区块链系统包括中心节点和多个用户节点,参阅图2所示,为本发明实施例中,目标用户筛选方法的流程图,该方法包括:

步骤200:获得区块链系统达成共识后的n个随机数的排序结果;其中,n的大小取值为用户节点的数目。

例如,注册的有10个用户,则生成10个1-10之间的不同的随机数,对这10个随机数进行排序,例如随机数的排序结果为:3、6、1、10、8、4、5、2、9、7。

进一步地,每个用户还对应一个注册时获得的公钥地址和私钥密码,例如,用户在某摇号平台上注册,会拥有账户,并设置密码,可以认为账户地址和用户设置的密码即是公钥地址和私钥密码。

同时,在用户注册时,还为用户分配一个明文地址,用于标识用户,该明文地址为注册时获得的不同的随机数,是随机连续为用户进行分配的。

步骤210:获得区块链系统达成共识后的在预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序。

执行步骤210时,具体包括:

首先,获得区块链系统达成共识后的在预设时间段内各参与用户的参与时间。

其中,参与时间,例如为登录时间或点击参与功能的点击时间等,本发明实施例中并不进行限制。

进一步地,还包括:获得区块链系统达成共识后的在预设时间段内各参与用户的明文地址,其中,明文地址为注册时获得的不同的随机数。

这样,主要是为了可以根据明文地址来作为用户标识,从而来确定注册的用户中的参与用户和未参与用户。

其中,本发明实施例中参与用户的确定方式为:若确定用户在预设时间段内通过私钥密码登录,则确定出该用户为参与用户。

例如,某摇号活动的活动时间为从t1-t2时间,在该时间段内,用户通过账户地址,输入相应的私钥密码进行登录,即认为该用户完成了摇号操作,为参与用户。

例如,注册的10个用户中有8个用户为参与用户,则获得这8个参与用户的参与时间,对于其余两个未参与的用户,分别在预设时间段之间为其随机生成一个参与时间。

然后,根据各参与用户的参与时间,分别获得每个用户的参与分数。

具体地:

1)分别确定各参与用户的参与时间与预设时间段的开始时间的时间间隔,并确定各时间间隔的平均时间间隔。

即计算平均时间间隔时仅需要参与用户的参与时间信息。

2)为未参与的用户随机指定参与时间;其中,随机指定的参与时间在预设时间段之间。

3)分别根据各用户的参与时间与预设时间段的开始时间的时间间隔,以及平均时间间隔,获得每个用户的参与分数。

例如,参与分数为score(i)=f(ti–te)。

其中,f(x)函数为周期很短的周期函数,例如可以cos、sin等函数,ti是用户i的参与时间距离预设时间段的开始时间t1的时间间隔,te是所有参与用户的参与时间距离预设时间段的开始时间t1的时间间隔的平均时间间隔。

这样,本发明实施例中,根据所有用户的参与时间来计算参与分数,需要用到所有参与用户的数据,篡改的可能性较小,提高了可靠性。

最后,根据每个用户的参与分数,对每个用户进行排序。

具体地,可以根据参与分数从大到小的顺序,对每个用户进行排序;或者也可以根据参与分数从小到小的顺序,对每个用户进行排序,本发明实施例中并不进行限制。

例如,注册的10个用户,分别为用户1、用户2、用户3、用户4、…、用户10,对应的参与分数分别为0.99992、0.99411、…、0.00111(依次减小),则按照参与分数得到排序后的用户顺序为:用户1、用户2、用户3、用户4、…、用户10,每个用户对应的排序的排名为1、2、3、…、10。

步骤220:按照n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

执行步骤220时,具体包括:

首先,获取n个随机数的排序结果中前预设数目个随机数。

然后,分别根据获得的前预设数目个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,并若确定筛选出的用户为参与用户,则将筛选出的用户作为目标用户,若确定筛选出的用户为未参与用户,则从所述随机数的排序结果中获取前预设数目的下一个随机数,并根据下一个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,直至筛选出预设数目个目标用户。

也就是说,本发明实施例中,将随机数的排序结果和排序后的用户进行对比,排除未参与用户,依次从排序后的用户中筛选出相应排名的目标用户。

其中,本发明实施例中,随机数的取值与排序后的用户的各排名之间可以设置映射关系,从而可以根据该映射关系,筛选出相应排名的目标用户。

例如,若随机数取值为1-n中的数字,即从1-n连续取值,n的大小为注册的用户数量,排序后的用户的各排名也是从1到n进行排序,即各用户的排名也是从1到n的取值,这样,随机数的取值与排名可以一一对应,即取值为1的随机数对应排名1,取值为2的随机数对应排名2,依次对应,取值为n的随机数对应排名n。

又例如,若随机数取值为连续的从10-n’,其中,(n’-10+1)等于注册的用户数量,排序后的用户的各排名是从1到n进行排序,则可以设置映射关系为取值为10的随机数对应排名1,取值为11的随机数对应排名2,依次对应,取值为n’的随机数对应排名n。

较佳的,通常设置随机数的取值为1-n中的数字。

从而,就可以根据该映射关系和获取到的前预设数目的随机数的取值,来筛选相应排名的目标用户。

例如,某抽奖活动,中奖名额为3,即预设数目为3个,即需要筛选出3个目标用户,随机数的排序结果为:3、6、1、10、8、4、5、2、9、7,排序后的用户顺序为:用户1、用户2、用户3、用户4、…、用户10,每个用户对应的排序的排名为1、2、3、…、10。取前3个随机数分别为3、6、1,则相应的从排序后的用户中筛选出排名为3、排名为6和排名为1的用户,即筛选出的用户为用户3、用户6和用户1。若用户1、用户3和用户6均为参与用户,则这三个用户即为最终筛选出的目标用户。

又例如,若确定筛选出的用户6为未参与用户,则从随机数的排序结果中取前3个的下一个,即第四个随机数10,进而从排序后的用户中筛选出排名第10的用户,为用户10,若用户10为参与用户,则最终筛选出的目标用户为用户1、用户3和用户10。

进一步地,筛选出目标用户后,还可以将筛选出的目标用户的结果同步到区块链系统中,以使区块链系统中各节点共识并保存筛选出的目标用户的结果,防止结果被篡改。

本发明实施例中,采用区块链技术,可以将所有数据和信息保存在区块链系统中,区块链系统中各节点对随机数的排序结果、在预设时间段内各参与用户的参与时间达成共识,均可以获得并保存相同的信息,无法篡改,公开透明,可靠性更高,为目标用户筛选提供了更为可靠的计算依据,在筛选目标用户时,获得区块链系统中达成共识后的n个排序结果,以及在预设时间段内各参与用户的参与时间,根据各参与用户的参与时间,分别获得每个用户的参与分数,根据每个用户的参与分数,对每个用户进行排序,从而按照n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户,这样,采用双重随机方法,即n个随机数的排序结果和根据参与分数排序后的用户,随机性更高,提高了可靠性,并且排序后的用户需要使用所有参与用户的参与时间,篡改的可能性也比较小,综上,通过区块链技术和双重随机方法,进一步提高了目标用户筛选的公平公正性,难以被人为操纵,提高了可靠性。

下面采用具体应用场景进行说明,采用区块链技术,实现去中心化的目标用户筛选,可靠性高,更加公平公正,解决了信任问题,参阅图3所示,为本发明实施例中另一种目标用户筛选方法流程图,具体包括:

步骤300:用户注册。

步骤301:中心节点生成随机数,进行排序,获得n个随机数的排序结果。

步骤302:将n个随机数的排序结果扩散至区块链系统中。

步骤303:区块链系统中各节点对n个随机数的排序结果达成共识。

步骤304:在预设时间段内用户登录并进行参与,用户节点获得各参与用户的参与时间。

步骤305:将各参与用户的参与时间扩散至区块链系统中。

步骤306:区块链系统中各节点对各参与用户的参与时间达成共识。

进一步地,还可以将各参与用户的明文地址扩散至全网,并达成共识。

步骤307:根据各参与用户的参与时间,获得参与分数,以及根据参与分数,对每个用户进行排序。

其中,计算参与分数和对每个用户进行排序,可以由中心节点执行,也可以由用户节点执行。

步骤308:对比n个随机数的排序结果和排序后的用户,筛选出预设数目个目标用户。

基于上述实施例,采用一个具体应用场景下的例子进行说明。

例如,某主办方想要举办某活动,通过摇号来确定中签用户。该活动于时间t1开始,并于时间t2结束,在摇号开始前需要在该主办方的摇号平台进行注册,在摇号开始前即t1之前注册的截止时间为时间t0。

首先,用户在时间t0之前在该摇号平台进行注册,并获得对应的明文地址、公钥地址和私钥密码;注册结束后,即在时间t0之后,中心节点根据注册的用户数目,生成n个随机数并为每个随机数分配一个随机分数,根据随机分数,对n个随机数进行排序,获得n个随机数的排序结果;发送到区块链系统中各用户节点,区块链系统中各用户节点和中心节点对n个随机数的排序结果进行共识和同步。

然后,在活动开始后,即在时间t1-t2期间,用户可以通过登录该摇号平台来参与活动,确定所有的参与用户和参与用户的参与时间,并区块链系统中各用户节点和中心节点进行共识和同步;根据各参与用户的参与时间,获得每个用户的参与分数,并进行排序,获得排序后的用户。

最后,将n个随机数的排序结果和排序后的用户进行比对,筛选出目标用户,即获得最后的中签用户。

基于上述实施例,参阅图4所示,本发明实施例中提供了一种目标用户筛选装置,该装置应用于区块链系统中任意一个用户节点或中心节点,该装置通过硬件或者软硬件的结合实现成为用户节点或中心节点的全部或者一部分,该区块链系统包括中心节点和多个用户节点,该装置具体包括:

第一获得模块40,用于获得所述区块链系统达成共识后的n个随机数的排序结果,其中,所述n的大小取值为用户节点的数目;

第二获得模块41,用于获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间;

用户排序模块42,用于根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;

筛选模块43,用于按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

可选的,进一步包括:

第一共识模块44,用于通过中心节点生成n个随机数的排序结果后,将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给所述区块链系统中各用户节点,以使各用户节点和中心节点根据预设共识机制而达成共识的。

可选的,所述第二获得模块41进一步用于:

获得所述区块链系统达成共识后的在预设时间段内各参与用户的明文地址;其中,所述明文地址为注册时获得的不同的随机数;

还包括:

第二共识模块45,用于通过任一用户节点获取到各参与用户的参与时间和明文地址,并发送给所述区块链系统中其它节点,以使在所述预设时间段的结束时间后,各用户节点和中心节点根据预设共识机制而达成共识的。

可选的,通过任一用户节点获取到的参与用户的参与时间和明文地址时,第二共识模块45具体用于:

若确定用户在预设时间段内通过私钥密码登录,则确定出所述用户为参与用户,并记录获取到的参与用户的参与时间和明文地址的;其中,每个用户还对应一个注册时获得的公钥地址和私钥密码。

可选的,根据各参与用户的参与时间,分别获得每个用户的参与分数时,所述用户排序模块42具体用于:

分别确定各参与用户的参与时间与所述预设时间段的开始时间的时间间隔,并确定各时间间隔的平均时间间隔;

为未参与的用户随机指定参与时间;其中,随机指定的参与时间在所述预设时间段之间;

分别根据各用户的参与时间与所述预设时间段的开始时间的时间间隔,以及所述平均时间间隔,获得每个用户的参与分数。

可选的,按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户时,筛选模块43具体用于:

获取所述n个随机数的排序结果中前预设数目个随机数;

分别根据获得的前预设数目个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,并若确定筛选出的用户为参与用户,则将筛选出的用户作为目标用户,若确定筛选出的用户为未参与用户,则从所述随机数的排序结果中获取前预设数目的下一个随机数,并根据下一个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,直至筛选出所述预设数目个目标用户。

基于上述实施例,参阅图5所示,本发明实施例中,一种电子设备的结构示意图。

本发明实施例提供了一种电子设备,该电子设备可以包括处理器510(centerprocessingunit,cpu)、存储器520、输入设备530和输出设备540等,输入设备530可以包括键盘、鼠标、触摸屏等,输出设备540可以包括显示设备,如液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)等。

存储器520可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器510提供存储器520中存储的程序指令和数据。在本发明实施例中,存储器520可以用于存储本发明实施例中目标用户筛选方法的程序。

处理器510通过调用存储器520存储的程序指令,处理器510用于按照获得的程序指令执行:

获得所述区块链系统达成共识后的n个随机数的排序结果;其中,所述n的大小取值为用户节点的数目;

获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间,并根据各参与用户的参与时间,分别获得每个用户的参与分数,并根据每个用户的参与分数,对每个用户进行排序;

按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户。

可选的,所述n个随机数的排序结果的共识方式为,处理器510进一步用于:通过中心节点生成n个随机数的排序结果,并将n个随机数的排序结果和生成n个随机数的排序结果的时间发送给所述区块链系统中各用户节点,以使各用户节点和中心节点根据预设共识机制而达成共识的。

可选的,获得所述区块链系统达成共识后的在预设时间段内各参与用户的参与时间时,处理器510还用于:获得所述区块链系统达成共识后的在预设时间段内各参与用户的明文地址;其中,所述明文地址为注册时获得的不同的随机数;

所述各参与用户的参与时间和明文地址的共识方式为,处理器510进一步用于:通过任一用户节点获取到各参与用户的参与时间和明文地址,并发送给所述区块链系统中其它节点,以使在所述预设时间段的结束时间后,各用户节点和中心节点根据预设共识机制而达成共识的。

可选的,通过任一用户节点获取到参与用户的参与时间和明文地址时,处理器510具体用于:

若确定用户在预设时间段内通过私钥密码登录,则确定出所述用户为参与用户,并记录获取到的参与用户的参与时间和明文地址的;其中,每个用户还对应一个注册时获得的公钥地址和私钥密码。

可选的,根据各参与用户的参与时间,分别获得每个用户的参与分数时,处理器510具体用于:

分别确定各参与用户的参与时间与所述预设时间段的开始时间的时间间隔,并确定各时间间隔的平均时间间隔;

为未参与的用户随机指定参与时间;其中,随机指定的参与时间在所述预设时间段之间;

分别根据各用户的参与时间与所述预设时间段的开始时间的时间间隔,以及所述平均时间间隔,获得每个用户的参与分数。

可选的,按照所述n个随机数的排序结果,从排序后的用户中筛选出位于相应排名的目标用户,直至筛选出预设数目个目标用户时,处理器510具体用于:

获取所述n个随机数的排序结果中前预设数目个随机数;

分别根据获得的前预设数目个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,并若确定筛选出的用户为参与用户,则将筛选出的用户作为目标用户,若确定筛选出的用户为未参与用户,则从所述随机数的排序结果中获取前预设数目的下一个随机数,并根据下一个随机数的取值,从排序后的用户中筛选出位于相应排名的用户,直至筛选出所述预设数目个目标用户。

基于上述实施例,本发明实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例中的目标用户筛选方法。

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

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

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

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

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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