一种基于区块链的随机对象选取方法和装置与流程

文档序号:16902247发布日期:2019-02-19 18:07阅读:184来源:国知局
一种基于区块链的随机对象选取方法和装置与流程

本说明书涉及数据处理技术领域,尤其涉及一种基于区块链的随机对象选取方法和装置。



背景技术:

随机对象选取常用在计算机随机分配资源、随机分配任务或其他任意所需的业务场景下,基于一台计算机或服务器的随机对象选取方法难以确保随机选取过程的公平性和可验证性,因为一台计算机或服务器所施行的选取方法极易被人为操控,难以做到真正的“随机”选取,而且外界在事中和事后都难以监测和验证其施行的选取方法是否没有被操控。



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种基于区块链的随机对象选取方法及装置、电子设备。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种基于区块链的随机对象选取方法,应用于包含多个参选对象节点的区块链,所述方法包括:

接收多个参选对象节点在第一时段内向所述区块链的分布式数据库发布的参选交易,所述参选交易基于所述参选对象节点确定的对象参考数生成;

根据预设的计算规则,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,其中,所述指定事件的特征值为根据预设的映射算法,对发生在所述第一时段之后的指定事件计算所得的特征值,所述指定事件的特征值在所述指定事件发生之前不可被预知;

根据预设的选取规则,基于所述多个参选对象节点对应的值选取参选对象节点。

根据本说明书一个或多个实施例的第二方面,提出了一种基于区块链的随机对象选取装置,应用于包含多个参选对象节点的区块链,所述装置包括:

接收单元,接收多个参选对象节点在第一时段内向所述区块链的分布式数据库发布的参选交易,所述参选交易基于所述参选对象节点确定的对象参考数生成;

计算单元,根据预设的计算规则,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,其中,所述指定事件的特征值为根据预设的映射算法,对发生在所述第一时段之后的指定事件计算所得的特征值,所述指定事件的特征值在所述指定事件发生之前不可被预知;

选取单元,根据预设的选取规则,基于所述多个参选对象节点对应的值选取参选对象节点。

相应的,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述基于区块链的随机对象选取方法所述的步骤。

本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述基于区块链的随机对象选取方法所述的步骤。

由以上技术方案可见,本说明书提供的基于区块链的随机对象选取方法及装置,依赖于参选对象提供的对象参考数和之后发生的、不可被预测的、指定事件的特征值进行计算,从而保证了选取过程免除了人为操纵、更改结果的可能性:基于区块链技术的分布式数据库存储机制,参选对象所选择发布的对象参考数被去中心化地记录或存证在区块链的所有节点中,且基于区块链的共识机制,每个参选对象所发布的对象参考数不会在提供后被篡改,防止选取过程通过修改参选对象的对象参考数进行操控;进一步地,指定事件只有在对象参考数提供阶段结束后才会发生,且其特征值在指定事件发生前是不可预测的,这样参选对象无法基于预设的规则和该特征值进行预测算以选取合适的对象参考数,从而保证该对象参考数的提供是真正随机的,进而保证了整个随机对象选取过程的随机性和公平性,而且事中和事后外界都可以监测和验证过程中的每一步。

附图说明

图1为本说明书所提供的一实施例所示的基于区块链的随机对象选取方法的流程图;

图2为本说明书一示例性实施例提供的随机对象选取方法的过程示意图;

图3为本说明书所提供的一实施例提供的基于区块链的随机对象选取装置的示意图;

图4为运行本说明书所提供的基于区块链的随机对象选取装置实施例的一种硬件结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

如图1所示,本说明书一示意性实施例提供了一种基于区块链的随机对象选取方法,应用于包含多个参选对象节点的区块链,所述方法包括:

步骤102,接收多个参选对象节点在第一时段内向所述区块链的分布式数据库发布的参选交易,所述参选交易基于所述参选对象节点所选择的对象参考数生成。

上述实施例所述的区块链,具体可指一个各节点通过共识机制达成的、具有分布式数据存储结构的p2p网络系统,该区块链内的数据分布在时间上相连的一个个“区块(block)”之内,后一区块包含前一区块的数据摘要,且根据具体的共识机制(如pow、pos、dpos或pbft等)的不同,达成全部或部分节点的数据全备份。本领域的技术人员熟知,由于区块链系统在相应共识机制下运行,已收录至区块链数据库内的数据很难被任意的节点篡改,例如采用pow共识的区块链,至少需要全网51%算力的攻击才有可能篡改已有数据,因此区块链系统有着其他中心化数据库系统所法比拟的保证数据安全、防攻击篡改的特性。由此可知,在本说明书所提供的实施例中,被收录至区块链的分布式数据库中的数据不会被攻击或篡改,从而保证了所述参选对象节点所选择的对象参考数的真实性。

上述实施例所述的参选对象节点可以为参与本说明书所述的随机对象选取过程的区块链节点、区块链轻节点,还可以为与区块链的节点连接的其他设备终端或客户端,在本说明书中不作限定。另外,为方便描述本说明书各实施例提供的随机对象选取方法所基于的区块链技术,本说明书所述的“区块链节点”或“节点”可以包括区块链网络中的节点设备、轻节点设备、其他设备终端或客户端,以下不再赘述。

上述实施例所述的参选对象节点确定的对象参考数可以是参选对象确定或选取的任意数值,在本说明书中不作限定。参选交易基于上述对象参考数生成,在本说明书中所描述的交易(transaction),是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,本说明书的上述实施例所述的发布至上述区块链中的、基于对象参考数生成的参与本次随机对象选取过程的一笔或多笔数据,上述参选交易还可以有着既定的数据内容格式,在本说明书中不作限定。

上述实施例所述的第一时段,可以为有着具体物理起始时刻和物理结束时刻的一段物理时间,也可以为以具有逻辑先后顺序的两个事件所确定的起始时刻和解决时刻的一段逻辑时间,更可兼而有之,在本说明书中不作限定。例如,第一时段可以表示为从2018年1月1日零时起至2018年6月30日24时止,也可以表示为从比特币区块链高度为10000的区块的生成时刻起至比特币区块链高度为20000的区块的生成时刻止,等等。

在本说明书示出的一实施例中,上述参选交易可包括参选对象发布的对象参考数的明文,由于区块链中各个节点设备发布至区块链的交易是公开透明的,上述实施方案通常用于即使得知其他参选对象节点的对象参考数,也不会对自身提供的对象参考数产生任何影响的计算及选取规则中。

在本说明书示出的又一实施例中,由于区块链上的发布的交易可以被区块链的多个或所有节点查看,为防止一参选对象发布的对象参考数被其他参选对象通过区块链获知,以使其他对象参考数根据所述一参选对象发布的对象参考数,修改本节点尚未发布的对象参考数,而在发布对象参考数的过程中引起不公平现象的发生,可将上述第一时段划分为至少两个阶段。

在所述第一时段的第一分时段,参选对象节点向上述区块链的分布式数据库发布第一参选交易,该第一参选交易包含加密后的对象参考数;发布在区块链上的对象参考数密文即使被其他参选对象节点获知,其他参选对象节点也不能得知对象参考数的实际的值,从而保证发布对象参考数阶段的公平性。

在所述第一时段的第二分时段,参选对象节点向上述区块链的分布式数据库发布第二参选交易,该第二参选交易包含解密后的对象参考数,用以公开自身节点在第一分时段发布的加密的对象参考数;且所述第二分时段为所述第一分时段结束后的时段,在该第二分时段,各参选对象节点已经不可以再发送第一参选交易,因此,有效防止了参选对象节点依据其他参选对象节点公开的对象参考数而修改自身尚未发布的对象参考数的现象发生;所述加密后的对象参考数可被所述解密后的对象参考数证明,保证了参选对象在第二分时段发布的解密后的对象参考数确实为第一分时段发布的加密的对象参考数,防止参选对象在第二分时段篡改自身在第一分时段发布的对象参考数。

在上述实施例中,当参选对象节点所确定的对象参考数为一个或多个随机数时,本领域的技术人员很容易想到,上述第一参选交易所包含的加密后的对象参考数可以为基于上述一个或多个随机数的pedersen承诺,上述第二参选交易所包含的解密后的对象参考数即可为上述一个或多个随机数。

步骤104,根据预设的计算规则,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,其中,所述指定事件的特征值为根据预设的映射算法,对发生在第一时段之后的指定事件计算所得的特征值,所述指定事件的特征值在所述指定事件发生之前不可被预知。

上述实施例所述的多个参选对象节点对应的值,是用于对上述多个参选对象进行选择时所依据的参考值,本说明书并不限定上述预设的计算规则的具体算法。

上述实施例所述的指定事件为发生在第一时段结束后的一指定事件,为防止该指定事件对应的特征值具有逻辑可知性而使上述预设的计算规则丧失随机性和公平性,由该指定事件依据预设的映射算法算出的特征值,在该指定事件发生之前是不可被预知的。例如,当一区块链的出块速率维持为非常稳定的值,那一固定时段后该区块链的区块高度即为可以预知的值,则上述区块高度便不可以作为指定事件的特征值;虽然该区块高度值可以预知,但该区块的区块哈希值却是不可被预知的,因此指定固定时段后新生区块的哈希值、或指定高度的未来新生区块的哈希值均可以作为该指定事件的特征值参与到上述对多个参选对象节点对应的值的计算中。

本说明书并不限定上述指定事件的类型,例如指定事件可以是某区块链在上述第一时段之后新生的区块,也可以是第一时段之后发生的彩票中奖号码,还可以是第一时段之后某医院的新生儿出生率等任何预设的计算规则规定的指定事件。本说明书也不限定上述指定事件的特征值的计算方法,例如可以是哈希等数学摘要算法、同比或环比增长率等,只要满足上述指定事件的特征值是根据预设的映射算法,对发生在第一时段之后的指定事件计算所得的、在所述指定事件发生之前不可被预知的特征值,即可至少由上述指定事件的特征值的随机性与公平性,确保上述预设的计算规则的随机性和公平性。

步骤106,根据预设的选取规则,基于所述多个参选对象节点对应的值选取参选对象节点。

本说明书中并不限定上述预设的具体选取规则,可以基于上述多个参选对象节点对应的值选择最大的、或最小的、或中间值、或任一排位的值等对应的参选对象节点,由于本说明书所提供的上述实施例,至少由上述指定事件的特征值随机性与公平性,确保上述预设的计算规则的随机性和公平性,则基于上述计算规则进行选取的选取规则,也具有了相应的随机性和公平性。

在本说明书提供的一实施例中,上述步骤104和106所述的、根据预设的计算规则,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,和根据预设的选取规则,基于所述多个参选对象节点对应的值选取参选对象节点的过程,可以由部署在接收参选交易的区块链上的智能合约来执行完成。

智能合约是被区块链的各节点共识、且发布在区块链的分布式数据库内的一段计算机程序,这种程序经调用而自主地执行全部或部分和合约相关的操作,并产生相应地可以被验证的证据,来说明执行合约操作的有效性。在部署智能合约之前,与合约相关的所有条款的逻辑流程就已经被制定好了。智能合约通常具有一个用户接口,以供用户与已制定的合约进行交互,这些交互行为都严格遵守此前制定的逻辑。得益于密码学技术,这些交互行为能够被严格地验证,以确保合约能够按照此前制定的规则顺利执行,从而防止出现违约行为。

因此,上述步骤104和106的过程包括:调用发布在所述区块链上的智能合约,执行所述智能合约中声明的与所述计算规则和所述选取规则对应的执行程序,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,并基于所述多个参选对象节点对应的值选取参选对象节点。

在上述实施例中,通过将上述计算规则和选取规则编译部署到智能合约中,上述智能合约经由区块链的节点共识同意后才可被部署上链,即是首先从其所包含的协议或合约内容上确保了上述计算规则和选取规则的公平性。进一步地,该智能合约经调用而自主执行,且执行的结果可被该区块链上的任一节点所验证,更加保证了上述计算和选取过程的公平公正性,有效防止了中心化的随机对象选取平台依靠自身的服务器对上述的计算和选取过程不施行透明公开,而私自操纵上述随机选取过程的行为。而且,智能合约可以应区块链节点设备的调用而实时准确执行,方便快捷地进行如上的计算和选取过程。

在本说明书提供的又一实施例中,当多个参选对象节点在所述第一时段的第一分时段内向所述区块链的分布式数据库发布第一参选交易,所述第一参选交易包含加密后的对象参考数;且多个参选对象节点在所述第一时段的第二分时段内向所述区块链的分布式数据库内发布第二参选交易,所述第二参选交易包含解密后的对象参考数,所述第二分时段为所述第一分时段结束后的时段,所述加密后的对象参考数可被所述解密后的对象参考数证明时,上述步骤104和106的过程可以包括:调用发布在所述区块链上的智能合约,执行所述智能合约中声明的与所述计算规则和所述选取规则对应的执行程序,基于指定事件的特征值和所述第二参选交易对应的对象参考数,分别计算多个参选对象节点对应的值,并基于所述多个参选对象节点对应的值选取参选对象节点。

更优地,上述实施例所述的智能合约还设置有白名单,在该智能合约执行步骤104所述的计算步骤时,可基于指定事件的特征值和所述白名单所包括的参选对象节点发布的第二参选交易所对应的对象参考数,分别计算所述白名单内包含的参选对象节点对应的值,相应地,步骤106所述的选取步骤则应基于上述白名单内包含的参选对象节点对应的值实施。

本说明书并不限定上述白名单的创建条件,在执行本说明书所述的随机对象选取方法之前,可根据预设的计算规则、选取规则或其他参选规则等为智能合约的创建过滤条件,过滤条件可包括参选对象节点的身份过滤条件、时间过滤条件、对象参考数过滤条件等等,将符合过滤条件的参选对象节点的公钥、或账户地址、或其他与参选对象节点的身份相关的标识信息加入到上述白名单,基于白名单内的参选对象节点所提供的对象参考数,执行相应的计算和选取过程。另外值得注意的是,作为本说明书所提供的创建或筛选智能合约的白名单的一种特殊的实现方式,将不符合条件的参选对象加入智能合约的黑名单也应在本说明书所提供的技术方案的保护范围内;以下所述的各种筛选或过滤智能合约的白名单的方式,也都可以相应地由向智能合约的黑名单中增加参选对象而实现;或者由同时筛选或过滤白名单用户且新增黑名单用户来实现,以下不再赘述。

在一示出的实施例中,上述智能合约内还声明有交易验证程序,通过对参选对象节点发布的交易进行合法性验证来创建或筛选上述白名单。具体地,在上述区块链的任一节点设备接收多个参选对象节点在所述第一时段的第一分时段内向所述区块链的分布式数据库发布的第一参选交易之后,还包括:调用所述智能合约,执行所述智能合约中声明的交易验证程序,验证所述第一参选交易是否合法,并将不合法的第一参选交易对应的参选对象从所述智能合约的白名单中去除。

值得注意的是,上述利用智能合约对第一参选交易进行合法性验证通常是应第一参选交易的发布而自动调用的,因此通过上述合法性验证而筛选白名单的执行过程通常也发生在第一时段的第一分时段。

在又一示出的实施例中,为防止参选对象节点在第二分时段公开的对象参考数与其在第一分时段确定的对象参考数不同,上述区块链的任一节点设备在接收到多个参选对象节点在所述第一时段的第二分时段内向所述区块链的分布式数据库内发布的第二参选交易之后,还包括:调用所述智能合约,执行所述智能合约中声明的对象参考数验证程序,验证所述白名单内的参选对象所发布的第二参选交易所包含的对象参考数是否可验证所述第一参选交易所包含的对象参考数密文,并将不可验证的第二参选交易对应的参选对象从所述智能合约的白名单中去除。

类似地,上述利用智能合约对第二参选交易进行对象参考数验证通常是应第二参选交易的发布而自动调用的,因此通过上述合法性验证而筛选白名单的执行过程通常也发生在第一时段的第二分时段。

通过上述一次或多次的白名单创建或过滤过程,将最终符合各种参选规则设置、且交易内容或格式合格的参选对象甄选出来,针对白名单中的参选对象执行上述的计算及选取步骤,最终公平而随机地选择出参选对象。

为了便于理解,下面以区块链网络中的对象节点的抽奖过程为例,对本说明书的技术方案进行详细说明。本领域的技术人员熟知,本说明书所述的随机对象选取过程或方法不仅限于抽奖的业务场景,还可适用在任何基于区块链的随机对象选取以执行任务或分配资源的场景中。图2是一示例性实施例提供的一种在区块链网络中实施抽奖的示意图。如图2所示,假定有用户p1,…,pn所对应的节点设备参与本次抽奖过程,其中,本说明书中的“用户”可以表现为所登录的用户账号或用户身份公钥,上述用户账号实际可以归属于个人或组织甚至终端设备,本说明书并不对此进行限制。

参选用户设备p1,…,pn上可以运行有区块链的客户端程序,使得上述参选用户设备可作为区块链的节点,根据上述区块链所施行的具体的共识规则,参选用户节点p1,…,pn发布的交易可以经区块链上所有或多数节点的共识验证后被收录至上述区块链的分布式数据库中,且上述参选用户节点p1,…,pn发布的交易还可以触发调用部署在上述区块链中的智能合约,以执行智能合约声明的随机对象选取相关的计算或选取逻辑。上述被收录至区块链的分布式数据库中的交易、及由智能合约执行相关逻辑后的输出结果均可被上述区块链的任一节点验证,从而防止其他任何节点或设备对抽奖过程涉及到的参数篡改或对预设的计算或选取规则篡改以操纵抽奖过程。

图2所示的抽奖过程可以根据时间划分为三个阶段,且使用区块高度作为逻辑时间计时器,区块高度为t0-t1为第一阶段,区块高度t1-t2为第二阶段,区块高度t2之后为第三阶段,且在图2所示意的抽奖过程中,将区块高度为t2+h(h是一个事先规定好的非负整数,比如h可以为1)的区块的区块哈希值作为指定事件的特征值,参与到本次抽奖的计算过程中来。

步骤201,在区块高度为t0-t1的第一阶段,参选用户节点p1,…,pn向区块链的分布式数据库上发布第一参选交易j1,…,jn,该第一参选交易是基于参选用户确定的随机数而加密生成的。在本实施例中,实际具有参选资格的用户个数可以大于n,但在第一阶段结束之前,区块链的分布式数据库上收到n个参选用户节点发来的第一参选交易。

在一示出的实施方式中,上述第一参选交易是基于参选用户确定的两个随机数(ri,ri)作出的pedersen承诺——ci=rig+rih,其中,g、h为pedersen承诺的公共参数。本领域的技术人员熟知,为防止其他节点仿冒本节点进而伪造本节点发布的参选交易,参选交易通常包括本节点对参选交易内容的电子签名,及验证电子签名所需的公钥或地址等身份信息,因此,上述第一参选交易ji=(ci,pi,si),其中,pi为参选用户的公钥,si为参选用户节点i利用公钥pi对应的私钥、对包括pedersen承诺ci的交易内容所作的电子签名。

步骤202,在区块高度为t0-t1的第一阶段,智能合约对上述第一参选交易进行交易合法性验证,并根据上述验证的结果筛选白名单。

上述区块链上可部署有执行抽奖业务逻辑的智能合约,且该智能合约声明有对上述第一参选交易进行交易的合法性验证的逻辑程序,并随第一参选交易的发布而被调用,例如,将上述第一参选交易ji=(ci,pi,si)发送至上述智能合约的地址以调用上述智能合约。上述合法性验证可以包括:该用户是否在可参选的用户列表中,电子签名是否合法、或对象参考数的加密方式是否符合要求、或同一参选用户是否有双重提交等方面。该智能合约可预先设置具有参选资格的用户白名单,通过对第一参选交易的格式或内容的验证,执行对该用户白名单筛选过程。可选的,该智能合约还可通过本次对第一参选交易的合法性验证而首次创建白名单。本发明对该智能合约的白名单的具体设置时机和条件并不作限定。可选的,该智能合约还可将不合法的第一参选交易对应的参选用户加入到黑名单中,以作为创建或筛选白名单的一种特殊的实施方式。

在示出的一实施例中,上述智能合约的白名单内收录了合法的第一参选交易所对应的参选用户的公钥pi。

步骤203,在区块高度为t1-t2的第二阶段,参选用户pi公开其在第一阶段选择确定的的随机数(ri,ri),该公开过程可以包括:参选用户pi首先对(ri,ri)进行电子签名s'i,再向区块链的分布式数据库提交第二参选交易j'i=(pi,ri,ri,s'i)。

步骤204,在区块高度为t1-t2的第二阶段,智能合约对上述第二参选交易所包含的随机数是否可以证明上述第一参选交易的随机数密文而进行验证,并根据上述验证的结果筛选白名单。

上述区块链上部署的关于抽奖业务逻辑的智能合约还可声明有对象参考数验证程序,用以验证白名单中的参选用户所发布的第二参选交易所包含的随机数(ri,ri)是否可验证该参选用户之前所发布的第一参选交易所包含的随机数密文ci,并将不可验证的第二参选交易对应的参选用户从上述智能合约的白名单中去除。上述智能合约中声明的对象参考数验证程序可以随着第二参选交易的发布被调用,例如将第二参选交易j'i=(pi,ri,ri,s'i)发送至上述智能合约的地址以调用上述智能合约,验证同一参选用户发布的第二参选交易是否能与其发布的第一参选交易基于相同的随机数,进一步防止参选用户可能发生的错误行为而影响抽奖结果的公平性。

步骤205,在区块高度t2之后的阶段,在上述关于抽奖业务逻辑的智能合约执行完对步骤202所触发的对第二参选交易的验证后,应指定事件发生的触发或应其他指令的触发,进一步执行所述智能合约中声明的、与该抽奖的计算规则对应的执行程序。图2所述的指定事件为高度为t2+h的区块的产生,且约定该t2+h的区块的区块哈希值作为指定事件的特征值h0,上述关于抽奖业务逻辑的智能合约基于指定事件的特征值r和白名单内的参选用户pj1,…,pjm对应的随机数(rji,rji)分别计算白名单内的参选用户节点对应的值h”i。

图2所述实施例中白名单内的参选用户节点对应的值h”i的计算规则定义如下:

hi=hash(pji,rji);

h'i=hash(hi,h0);

h”i=|h'i-hi|。

步骤206,上述智能合约依据上述计算规则逐一计算h”i的值,且从h”1,…,h”m中选择符合预设的选择规则的h”k对应的参选用户pk作为中奖用户,输出该参选用户的公钥或其他身份标识,用以公布中奖用户。

本领域的技术人员熟知,本说明书提供的随机对象选取方法并不限定随机对象选取所依据的具体的计算规则或选取规则;而且,执行图2所示的抽奖过程的三个阶段所对应的智能合约既可以为同一个智能合约,也可以为不同的智能合约,在本说明书中也不作限定。

图2所示的基于本说明书所提供的随机对象选取方法的抽奖过程,依赖于参选用户提供随机数和在提供随机数阶段结束后发生的、不可被预测的指定区块的区块哈希值进行计算,利用区块链的防篡改机制保证了上述抽奖过程免于人为操纵而产生不公平的结果;而且,图2所示的抽奖过程,依赖于智能合约自主完成上述对用户提供随机数的验证、及基于指定事件的特征值和上述随机数的计算和选取过程,全程避免了人为参与,且抽奖全过程在区块链上透明可见、可被验证,更加自主、准确、公平地执行了上述的抽奖过程。

与上述流程实现对应,本说明书的实施例还提供了一种基于区块链的随机对象选取装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的cpu(centralprocessunit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的cpu、内存以及存储器之外,网络风险业务的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。

图3所示为一种基于区块链的随机对象选取装置30,应用于包含多个参选对象节点的区块链,所述装置30包括:

接收单元302,接收多个参选对象节点在第一时段内向所述区块链的分布式数据库发布的参选交易,所述参选交易基于所述参选对象节点确定的对象参考数生成;

计算单元304,根据预设的计算规则,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,其中,所述指定事件的特征值为根据预设的映射算法,对发生在所述第一时段之后的指定事件计算所得的特征值,所述指定事件的特征值在所述指定事件发生之前不可被预知;

选取单元306,根据预设的选取规则,基于所述多个参选对象节点对应的值选取参选对象节点。

在本说明书示出的又一实施例中,所述计算单元304:

调用发布在所述区块链上的智能合约,执行所述智能合约中声明的与所述计算规则和所述选取规则对应的执行程序,基于指定事件的特征值和参选交易对应的对象参考数分别计算多个参选对象节点对应的值,并基于所述多个参选对象节点对应的值选取参选对象节点。

在本说明书示出的又一实施例中,所述接收单元302:

接收多个参选对象节点在所述第一时段的第一分时段内向所述区块链的分布式数据库发布的第一参选交易,所述第一参选交易包含加密后的对象参考数;

接收多个参选对象节点在所述第一时段的第二分时段内向所述区块链的分布式数据库内发布的第二参选交易,所述第二参选交易包含解密后的对象参考数;

其中,所述第二分时段为所述第一分时段结束后的时段,所述加密后的对象参考数可被所述解密后的对象参考数证明。

在本说明书示出的又一实施例中,所述计算单元304:

调用发布在所述区块链上的智能合约,执行所述智能合约中声明的与所述计算规则和所述选取规则对应的执行程序,基于指定事件的特征值和所述第二参选交易对应的对象参考数,分别计算多个参选对象节点对应的值,并基于所述多个参选对象节点对应的值选取参选对象节点。

在本说明书示出的又一实施例中,所述智能合约设置有白名单;

所述计算单元304:

基于指定事件的特征值和所述白名单所包括的参选对象节点发布的第二参选交易所对应的对象参考数,分别计算所述白名单内包含的参选对象节点对应的值。

在本说明书示出的又一实施例中,所述接收单元302在接收多个参选对象节点在所述第一时段的第一分时段内向所述区块链的分布式数据库发布的第一参选交易之后,还用于:

调用所述智能合约,执行所述智能合约中声明的交易验证程序,验证所述第一参选交易是否合法,并将合法的第一参选交易对应的参选对象加入到所述智能合约的白名单。

在本说明书示出的又一实施例中,所述接收单元302在接收多个参选对象节点在所述第一时段的第二分时段内向所述区块链的分布式数据库内发布的第二参选交易之后,还用于:

调用所述智能合约,执行所述智能合约中声明的对象参考数验证程序,验证所述白名单内的参选对象所发布的第二参选交易所包含的对象参考数是否可验证所述第一参选交易所包含的对象参考数密文,并将不可验证的第二参选交易对应的参选对象从所述智能合约的白名单中去除。

在本说明书示出的又一实施例中,所述指定事件的特征值为所述区块链在所述第一时段之后产生的指定区块的哈希值。

在本说明书示出的又一实施例中,所述第一时段为与所述区块链的区块高度相关的逻辑时段。

在本说明书示出的又一实施例中,所述对象参考数为随机数,所述加密后的对象参考数为基于所述随机数的pedersen承诺。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,相关之处参见方法实施例的部分说明即可,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中基于区块链的随机对象选取方法的各个步骤。对基于区块链的随机对象选取方法的各个步骤的详细描述请参见之前的内容,不再重复。

与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中基于区块链的随机对象选取方法的各个步骤。对基于区块链的随机对象选取方法的各个步骤的详细描述请参见之前的内容,不再重复。

以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。

计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

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

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