具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请实施例提供的业务执行过程的示意图,具体包括以下步骤:
S101:业务平台接收终端针对业务发送的资格获取请求。
在本申请实施例中,各用户可通过自身所持有的终端,向业务平台发送获取执行业务的资格获取请求。其中,用户可以在查看到业务平台发布业务资格获取活动开始的信息时,通过终端向业务平台发送获取执行业务的资格获取请求;也可以是业务平台在业务资格获取活动开始时,向用户的终端发送提示信息,终端在接收到该提示信息后,可将资格获取请求发送至业务平台中;抑或是业务平台可以在业务资格获取活动开始之前的一段设定时间内,向用户的终端发送业务资格获取活动将要开始的提示,以使用户的终端在监测到当前时间到达业务资格获取的开始时间时,向业务平台发送获取执行业务的资格获取请求。
上述提到的业务资格获取活动开始的时间可以理解为业务平台允许用户向其发送获取执行该业务的资格获取请求的时间。例如,假设一项商品秒杀的活动(即业务)在上午8点钟开始,当到达上午8点钟时,用户方可向业务平台发送获取秒杀该商品资格的资格获取请求,其中,这里提到的上午8点钟即为业务资格获取活动开始的时间。
当然,在本申请实施例中,用户也可以通过终端中安装的客户端向业务平台发送上述资格获取请求。例如,终端监测到用户对该客户端执行了指定操作(如监测到用户点击了该客户端的图标或是接收到用户启动该客户端的语音信息等)时,可启动该客户端,以使该客户端将操作界面展示给用户。用户在该操作界面上查看到上述业务的资格获取活动开始时,可在该操作界面编辑相应的资格获取请求,而客户端在监测到用户在该操作界面上执行了指定的输入操作时,则可生成相应的资格获取请求,并在监测到用户执行了将该资格获取请求发送至业务平台的指定操作时,则可通过终端将该资格获取请求发送至业务平台,而业务平台也将相应的接收到终端发送过来的资格获取请求。
S102:根据所述资格获取请求,向所述终端返回资格获取规则以及结果生成规则。
业务平台在接收到终端发送的资格获取请求后,可确定出该资格获取请求所针对的业务,继而向终端返回该业务所对应的资格获取规则以及结果生成规则。
其中,业务平台在接收到上述资格获取请求后,可进一步的确定出该资格获取请求所包含的业务标识,进而根据确定出的业务标识,确定出该资格获取请求所针对的业务。
在本申请实施例中,不同的业务可以对应不同的资格获取规则以及结果生成规则,而资格获取规则规定了用户如何才能获取到执行业务的资格。比如说,对于商品秒杀的业务来说,该业务所对应的资格获取规则规定了后续各终端保存的针对该业务的区块链中,位于该区块链中的哪几个区块是符合资格获取规则的区块,换句话说,在参与该业务资格获取活动的用户中,哪些用户通过终端生成的区块是符合资格获取规则的。
其中,资格获取规则中可以直接规定业务所对应的区块链中到底哪几个区块是符合资格获取规则的。例如,资格获取规则可以直接规则在该业务对应的区块链中,位于第4、第58、第123、第356的这4个区块是符合资格获取规则的区块,换句话说,通过终端生成这4个区块的用户能够获取到执行该业务的资格。
资格获取规则也可规定确定区块链中哪几个区块符合资格获取规则的条件。例如,假设资格获取规则规定在区块链中排序标号为16倍数的区块为符合该资格获取规则的区块,所以,对于包含有160个区块的区块链来说,符合该资格获取规则的区块为:第16、32、48、64、80、96、112、128、144和160这10个区块。
当然,资格获取规则中也可以规定其他形式的条件,用以确定在上述业务对应的区块链中哪几个区块为符合资格获取规则的区块,在此就不一一举例说明了。而在本申请实施例中,资格获取规则也可通过时间的维度,来规定业务对应的区块链中,哪几个区块是符合资格获取规则的。
例如,假设上述业务对应的资格获取规则中规定了在07:45:45~07:46:45、07:50:30~07:51:30以及08:00:28~08:01:28这三个时间段内生成的区块是符合资格获取规则的,所以,该业务对应的区块链中,只有生成时间位于这三个时间段内的区块才是符合资格获取规则的。换句话说,用户通过终端生成的写入到业务对应区块链的区块只有生成时间位于这三个时间段内,该用户才能够获取到执行该业务的资格。
当然,上述资格获取规则除了以区块的生成时间为维度来规则符合资格获取规则的区块外,还可以通过其他的时间维度来规定。如,资格获取规则可以规定与前一区块的生成时间之差小于设定时间的区块为符合资格获取规则的区块,或是,连续设定个数的区块的生成时间之和小于设定时间时,则这几个区块为符合资格获取规则的区块。除此之外,资格获取规则也可以按照其他的时间维度来规定区块符合资格获取规则的条件,在此就不一一举例说明了。
资格获取规则除了可以按照时间的维度来确定符合资格获取规则的区块外,还可以按照其他的维度来规定。例如,上述业务对应的区块链中,各区块包含有用户标识,该用户标识是指用户通过终端生成区块时所使用的用户标识(如用户账号、身份证号等),所以,资格获取规则可以规定在区块链中,用户标识满足设定条件的区块为符合资格获取规则的区块。
资格获取规则除了可以按照上述几个维度来确定符合资格获取规则的区块外,还可以通过其他的维度来规定,在此就不一一举例说明了。
在本申请实施例中,业务平台在接收到终端发送的资格获取请求后,除了需要向终端返回相应的资格获取规则外,还可向终端返回结果生成规则。对于不同的业务来说,结果生成规则可以是不同的。该结果生成规则可以规定终端应该如何生成发送至其他终端进行共识的预处理块。
通常来说,该结果生成规定可以根据工作量证明(Proof Of Work,POW)来进行制定,即,该结果生成规则可以规定,终端需要生成通过计算,得到满足设定条件的待验证结果。如,假设该结果生成规则规定终端需要得出一个数值(该数值即为待验证结果),该数值所要满足的设定条件为:将该数值进行Hash转化后,得出的一串Hash值的前6位应为0,所以,终端后续只有在得出的数值经过Hash转化后,Hash值前6位为0的才能够有资格通过其他终端的共识。当然,结果生成规则也可通过其他的方式来制定,在此就不一一举例说明了。
需要说明的是,在本申请实施例中,对于同一业务来说,业务平台每次开始该业务的资格获取活动(这里指的资格获取活动是指业务平台开始接收终端发送的资格获取请求到开始确定哪些用户获取到执行该业务的资格的开始时间为止的这段过程)时,向各终端发送的结果生成规则可以不同。例如,假设业务平台举办了多个针对同一商品的秒杀活动(即相同的业务),而对于每次举办的该商品的秒杀活动来说,业务平台向各终端发送的结果生成规则可以均不相同,即,每次该商品的秒杀活动均对应有一个结果生成规则,而每次秒杀活动的结果生成规则可以均不相同。
在本申请实施例中,每次业务(同一业务)所对应的结果生成规则可以由业务平台的运维人员根据实际需求来进行设定,也可以由业务平台自行进行设定。其中,业务平台设定结果生成规则时,可以依据上一次业务的资格获取活动期间,区块链(该业务对应的区块链)中的每个区块的平均生成时间来设定。
例如,业务平台若发现上一次业务的资格获取活动期间,区块链中的每个区块的平均生成时间过长时,则可将此次业务对应的结果生成规则中所规定的终端得到满足设定条件的数值的难度适当的降低。而若业务平台发现上一次业务的资格获取活动期间,区块链中的每个区块的平均生成时间过短,则可将此次业务对应的结果生成规则中所规定的终端得到满足设定条件的数值的难度适当的提高。
其中,业务平台可以通过一个预设的调整策略,来根据之前业务资格获取活动期间,所产生的区块链中的区块的平均生成时间来调整此次业务资格获取活动对应的结果生成规则。这里提到的预设的调整策略可以表的形式来呈现,也可以公式或算法的形式来呈现。
业务平台除了可以通过上述方式调整每次业务(这里提到的每次业务均为同一业务)对应的结果生成规则外,还可以通过其他方式来调整。如,业务平台可以根据针对此次业务资格获取活动所规定的获取执行此次业务的用户人数,来对此次业务对应的结果生成规则进行调整;或是可以根据此次业务的资格获取活动所持续的预计时间,来调整此次业务对应的结果生成规则。当然还可以通过其他的方式来对该业务对应的结果生成规则进行调整,在此就不一一举例说明了。
业务平台也可以结合多种方式来对上述业务对应的结果生成规则进行调整,而无论是以单独方式对该结果生成规则进行调整,还是结合多种方式来调整结果生成规则,业务平台均可通过预设的调整策略来实现。
终端在接收到业务平台返回的资格获取规则以及结果生成规则后,可将该资格获取规则进行保存。其中,终端保存该资格获取规则的目的在于,终端可以通过获取到的资格获取规则,对后续业务平台所公布出的获取执行上述业务的用户进行资格验证。
终端在获取到结果生成规则后,可以根据该结果生成规则,生成相应的待验证结果。例如,假设终端获取到的结果生成规则中规定,终端生成的一个数值(即待验证结果)需要满足该数值经过Hash转化得到前5位为0的一串Hash数。此时,终端将根据该结果生成规则,通过消耗计算资源所经过逐次的运算,得出符合该结果生成规则的一个数值(即待验证结果)。
终端在得到上述待验证结果后,可将该待验证结果、该待验证结果的生成时间以及用户标识打包成一个预处理块。其中,这里提到的用户标识是用于后续业务平台确定有资格执行业务的用户的依据,而该用户标识则可以是终端根据用户在编译上述资格获取请求时确定出,或是在终端中输入的用户信息确定的。
例如,假设该用户标识为用户账号时,则终端在发送上述资格获取请求时,可确定出用户发送该资格获取请求所基于的用户账号,进而在生成上述预处理块时,可将该用户账号作为用户标识打包在该预处理块中。
当然,上述用户标识除了可以是用户账号外,还可以是诸如身份证号、指纹码(将用户指纹进行数据转化得到的一串字符)、用户昵称(该用户昵称需要具有唯一性)等。而终端除了可将用户标识携带在上述预处理块中外,还可将终端的终端标识携带在该预处理块中。相应的,业务平台在确定获取执行业务的资格时,可根据区块链中的区块确定出在参与此次业务的资格获取活动中,哪些终端具备获取执行该业务的资格。其中,这里提到的终端标识可以是诸如终端序列号、蓝牙地址、媒体访问控制(Media Access Control,MAC)地址等能够唯一标识终端的标识信息。
终端得到上述预处理块后,可将该预处理块发送至其他参与此次业务资格获取活动的其他终端中,以使其他终端对该预处理块进行共识。具体的,其他终端可对该预处理块中包含的待验证结果进行共识,并在确定出该待验证结果通过共识后,将该预处理块写入到本地保存的针对该业务的区块链中。
在本申请实施例中,终端在向业务平台发送上述资格获取请求时,业务平台可获取到该终端的地址,并将该地址进行保存。同样,对于参与此次业务资格获取活动的所有终端来说,业务平台需要获取到这些终端的地址,进而使终端可能根据业务平台所获取到的地址,将上述预处理块发送至其他终端进行共识,如图2所示。
图2为本申请实施例提供的业务平台获取终端的地址的示意图。
在图2中,终端在向业务平台发送上述资格获取请求时,业务平台将获取到该终端的地址,并将其进行保存。其中,该地址可以是终端主动向业务平台提供的,即,终端可将该地址携带在该资格获取请求中,业务平台通过对该资格获取请求的解析,可以获取到该终端的地址并保存。
当然,终端的地址可以是业务平台主动从终端中获取的,如,业务平台在接收到终端发送的上述资格获取请求后,可向终端发送一个地址询问请求,终端在接收到该地址询问请求后,可将自身的地址返回给业务平台。
对于每个参与到此次业务资格获取活动中的终端来说,业务平台均可以获取到这些终端的地址,并将这些地址进行保存。这样一来,终端后续将上述预处理块发送至其他终端的过程中,可将该预处理块先发送至业务平台中,再由业务平台根据获取到的终端的地址,将该预处理块发送至其他终端中进行共识。当然,终端也可以从业务平台中获取到该业务平台获取到的各终端的地址(即当前时刻已参与到此次资格获取活动中的各终端的地址),而后在通过获取到的各地址,将该预处理块发送至其他终端中进行共识。
其中,业务平台将上述预处理块发送至其他终端的过程中,是将该预处理块发送至此刻已参与到业务资格获取活动中的终端。这是因为,在实际应用中,各用户通常是陆续参与到业务资格获取活动中的,所以,业务平台此刻只能获取到当前时刻已参与到业务资格获取活动中各终端的地址(即此刻已向业务平台发送上述资格获取请求的终端的地址)。
当然,若该业务的资格获取活动支持预约的话,业务平台除了可将上述预处理块发送至此刻已参与到该业务资格获取活动中的终端外,还可发送至此刻未参与到该目标资格获取活动,但是提前预约参与此次业务资格获取活动中的终端。相应的,对于预约此次业务资格获取活动的终端来说,这些终端在进行预约的过程中,需要将自身的地址发送至业务平台中进行保存,以使业务平台可通过获取到的这些地址,将上述预处理块发送至参与预约此次业务资格获取活动中的终端。
对于每个参与到此次业务资格获取活动中的终端来说,终端在接收到上述预处理块后,可对该预处理块中包含的待验证结果进行共识,并在确定出该待验证结果通过共识后,将该预处理块作为区块存储在该业务对应的区块链中。其中,终端可以各区块的生成时间将各区块写入到该业务对应的区块链中,如图3所示。
图3为本申请实施例提供的业务对应的区块链的示意图。
对于参与上述预处理块共识的每个终端来说,终端确定上述预处理块通过共识后,可按照预处理块中待验证结果的生成时间,将该预处理块作为区块写入到上述业务对应的区块链中。其中,对于该区块链中的每个区块来说,该区块中包含有通过终端生成该区块(预处理块通过共识后可以成为区块)的用户的用户标识。这样一来,后续业务平台从该区块链中确定出符合资格获取规则的至少一个区块后,可以根据区块中包含的用户标识,最终确定出获取执行该业务资格的用户。
需要说明的是,在本申请实施例中,终端除了可以按照上述待验证结果的生成时间,将通过共识的预处理块(通过共识的预处理块也称为区块)写入到上述业务的区块链中,也可以按照预处理块通过共识的时间顺序,将预处理块作为区块写入到区块链中,还可以按照预处理块的生成时间,来将通过共识的预处理块作为区块写入到区块链中。当然,参与共识的终端也可以按照其他的标准将通过共识的预处理块作为区块写入到区块链中,在此就不一一举例说明了。
S103:当确定所述业务满足预设条件时,从至少一个终端中获取区块链,并从所述区块链中选择符合所述资格获取规则的至少一个区块。
业务平台在确定符合上述资格获取规则的区块时,可以对上述业务是否满足预设条件进行监测,当确定该业务满足预设条件时,则可从参与业务资格获取活动的至少一个终端中获取该业务对应的区块链,以从区块链中确定出符合上述资格获取规则的至少一个区块。
其中,这里提到的预设条件可以是:监测上述业务是否到达该业务所规定的设定时间,而这里提到的设定时间可以是指该业务资格获取活动的资格参与时间的截止时间,这里提到的截止时间可以理解成业务的资格获取活动有起始时间和截止时间,截止时间即为业务平台不再接收或受理终端发送的资格获取请求时的时间,业务的资格参与时间也可以理解为业务平台开始确定能够获取执行业务资格的用户的起始时间,起始时间和截止时间之间这一时间段即为该业务的资格参与时间。所以,业务平台确定出该业务满足预设条件可以是指确定当前时刻已到达该业务的资格参与时间的截止时间。
当然,在本申请实施例中,上述提到的设定时间除了可以是上述业务资格获取活动的截止时间外,还可以是其他的时间。如,上述设定时间也可以是指上述业务对应的区块链中一个指定的区块生成时间,相应的,上述提到的确定该业务满足预设条件则可以是业务平台从终端中获取到该业务的区块链,并确定出该区块链中当前时刻位于最后的区块的生成时间(该生成时间包含在区块中),当确定该区块的生成时间已到达该业务所规定的设定时间时,则确定该业务满足预设条件。除此之外,上述设定时间也可以其他形式的时间,在此就不一一举例说明了。
在本申请实施例中,上述提到的预设条件中也可以是指上述业务规定的区块数量。相应的,业务平台确定该业务满足预设条件可以是指:业务平台从参与该业务资格获取活动的至少一个终端获取到该业务对应的区块链中,可以确定出该区块链中所包含的区块的数量,当确定出该区块链中包含的区块的数量不小于该业务规定的区块数量时,则可以确定出该业务满足预设条件。
上述业务的预设条件除了可以上述两种预设条件外,还可以是其他的预设条件。例如,该业务的预设条件可以是:参与此次业务资格获取活动的终端的数量是否已满足该业务所规定的终端数量,换句话说,业务平台接收到的终端发送的上述资格获取请求的数量是否达到了该业务所规定的数量(通常终端只向业务平台发送一次资格获取请求)。相应的,业务平台当确定出向该业务平台发送针对此次业务资格获取活动的资格获取请求的终端数量已满足该业务所规定的终端数量时,则可确定出该业务满足预设条件。
当然,业务的预设条件也可以是其他形式的预设条件,业务平台的运维人员可以根据实际需求来设定不同的预设条件,在此就不一一举例说明了。
当业务平台确定上述业务满足预设条件时,可以从参与此次业务资格获取活动的至少一个终端中获取到该业务对应的区块链,继而从该区块链中确定出符合上述资格获取规则的至少一个区块。
其中,业务平台可以从参与此次业务资格获取活动中的多个终端中获取各终端保存的该业务对应的区块链,并从获取到的各区块链中挑选出一个主链,继而从该主链中包含的区块中选择出符合上述资格获取规则的区块。其中,这里提到的主链可以是指最长链。
业务平台选取最长链的目的在于,在实际应用中,对于不同终端保存的针对上述业务的区块链来说,最长链中记录的此次业务资格获取活动中所生成的区块往往是最为完整的,所以,业务平台从该最长链中确定符合资格获取规则的区块也是最有效的,即,不会存在诸如漏选等情况发生。
当然,对于上述业务对应的区块链中可能出现多个侧链的情况来说,上述业务平台在获取到上述业务对应的区块链后,可从多个侧链中选取出一个主链,进而在后续的过程中,从选取出的主链中选择出符合上述资格获取规则的至少一个区块。其中,选取主链的方式同样可以是从该区块链中的众多侧链中选取出一个长度最长(即区块数量最多)的最长链作为主链。
需要说明的是,在本申请实施例中,选取主链的方式除了上述说明的选取最长链的方式外,还可以通过其他的方式来选取。如,业务平台从各终端中获取到针对上述业务的各区块链后,可针对每个区块链,确定出该区块链中在本次资格获取活动期间起始块(即该区块链所记录的本次资格获取活动开始后产生的第一个区块)和截止块(即该区块链所记录的本次资格获取活动开始后产生的最后一个区块)的生成时间。而后,业务平台可将各区块链中,该起始块和截止块的生成时间最接近本次资格获取活动起始时间和截止时间的区块链作为主链(资格获取活动的起始时间和截止时间即为上述提到的资格参与时间的起始时间和截止时间)。
上述说明的确定主链的方式对于上述提到的区块链中可能出现多个侧链的情况来说也同样适用,即,确定出每个侧链中所包含的起始块和截止块(这里提到的起始块和截止块是指每条侧链中,该侧链所记录的本次资格获取活动的起始块和截止块)的生成时间,继而从各侧链中选取出一个起始块和截止块的生成时间与上述资格获取活动的起始时间和截止时间最为接近的侧链作为主链。当然,确定主链的方式还可以有其他的方式,在此就不一一举例说明了。
业务平台从获取到的针对上述业务的区块链后,可从该区块链中包含的各区块中确定出符合上述资格获取规则的至少一个区块。具体的确定方式可以是:业务平台可以针对该区块链中包含的每个区块,确定出该区块在该区块链中的位置,而后,业务平台可进一步的确定出该区块所处的位置是否为该资格获取规则所规定的符合资格获取规则的区块在区块链中所处的位置,若是,则确定出该区块为符合该资格获取规则的区块。
例如,假设该业务对应的资格获取规则规定区块链(或最长链)中第3、第19、第44、第88(第3、第19、第44、第88即为该资格获取规则所规定的符合资格获取规则的区块在区块链中所处的位置)这4个区块为符合资格获取规则的区块,则业务平台可从该区块链(或最长链)中选取这4个区块,继而将这4个区块确定为符合该资格获取规则的区块,并在后续过程中,将这4个区块中包含的用户标识所对应的用户确定为获取执行此次业务资格的用户。
当然,上述资格获取规则除了以区块在区块链中所处的位置来规定符合资格获取规则的区块外,也可以按照其他的方式来进行规定。如,该资格获取规则可以按照区块入链的时间来规定区块链中的区块是否符合该资格获取规则,或是,资格获取规则可以按照区块的生成时间(也可以理解成预处理块的生成时间)来规定区块链中的区块是否符合该资格获取规则。当然也可以采用其他的方式进行规定,在此就不一一举例说明了。
在本申请实施例中,上述业务在终端均对应有一个区块链,该区块链中包含有业务资格获取活动期间,各终端根据上述结果生成规则所生成的预处理块(通过共识后也可以称之为区块)。然而,在实际应用中,上述业务资格获取活动可能并不只是举行一次,业务平台可能针对同种业务举办多次该业务的资格获取活动。所以,终端中往往记录有业务所有资格获取活动期间所产生的区块。
而为了使业务平台能够从该业务对应的区块链中准确的确定出在此次业务资格获取活动期间所产生的区块中,哪些(或哪个)区块是符合上述资格获取规则的区块,业务平台需要根据区块链中区块包含的待验证结果的生成时间(或是区块的生成时间,其中,区块的生成时间也可以理解成预处理块的生成时间),确定出在此次业务资格获取活动期间,哪些区块是在此期间生成的。换句话说,业务平台需要从该区块链中确定出哪些(或哪个)区块是在此次业务的资格参与时间段内生成的。
因此,在本申请实施例中,业务平台可从获取到的上述区块链中,确定出该区块链中包含的各区块,并进一步的确定出各区块中所包含的待验证结果的生成时间。而后,业务平台可根据确定出的各区块中包含的待验证结果的生成时间,从这些区块中确定出在上述业务所规定的设定时间段内所生成的区块。其中,这里提到的该业务所规定的设定时间段可以指该此次业务资格获取活动的资格参与时间。
业务平台可从获取到的该业务对应的区块链中,查看哪些(或哪个)区块中包含的待验证结果的生成时间是指此次业务的资格参与时间段内生成的,进而将这些区块确定为此次业务资格获取活动期间,终端根据上述结果生成规则所生成的区块。
当然,上述说明的该业务规定的设定时间段除了可以是资格参与时间外,还可以是其他的时间段,该设定时间段可由业务平台的运维人员根据实际需求来进行设定,在此就不一一举例说明了。
除了通过区块中包含的待验证结果的生成时间来确定上述业务对应的区块链中,哪些(或哪个)区块是在此次业务资格获取活动期间生成的外,还可以通过区块中包含的其他信息来确定。例如,假设终端在生成预处理块中,还将从业务平台获取到的结果生成规则(或资格获取规则)的标识信息携带在该预处理块中。其中,每次业务资格获取活动所对应的业务可以是同一业务,但是,每次业务资格获取活动所对应的结果生成规则(或资格获取规则)可以是不同的,相应的,不同的结果生成规则(或资格获取规则)可以对应不同的标识信息。基于此,若终端也将此次业务资格获取活动所对应的结果生成规则(或资格获取规则)的标识信息携带在预处理块中,则业务平台后续也可通过区块中(预处理块一定通过共识则将成为区块写入到该业务对应的区块链中)包含的结果生成规则(或资格获取规则)的标识信息,确定出哪些(或哪个)区块是属于此次业务资格获取活动的区块。
除此之外,业务平台也可通过其他的方式来确定出此次业务资格获取活动所对应的区块。如,针对同一业务所举办的不同资格获取活动,每次业务资格获取活动均对应有一个活动标识,终端在生成上述预处理块时,可将该活动标识携带在该预处理块中。这样一来,业务平台后续可通过区块(预处理块通过共识后则作为区块写入到该业务对应的区块链中)中包含的活动标识,确定出哪些(或哪个)区块是在此次业务资格获取活动期间生成的。当然,还可以通过其他的方式确定出在此次业务资格获取活动期间所生成的区块,在此就不一一举例说明了。
需要说明的是,在本申请实施例中,业务平台在从参与此次业务资格获取活动中的至少一个终端获取该业务对应的区块链时,由于终端在向业务平台发送上述资格获取请求时,业务平台可获取到终端的地址。所以,业务平台可通过先前获取到的至少一个地址,从参与此次业务资格获取活动中的至少一个终端中获取到该业务对应的区块链,进而从该区块链中确定出符合上述资格获取规则的至少一个区块。
S104:针对所述至少一个区块中包含的用户标识执行所述业务。
业务平台从获取到的上述业务对应的区块链中,确定出符合上述资格获取规则的至少一个区块后,可根据区块中包含的用户标识,确定出获取执行该业务资格的用户,进而针对确定出的用户执行上述业务。其中,获取到执行该业务资格的用户是指可以通过该业务平台对该业务进行执行的用户。
与此同时,业务平台还可将符合上述资格获取规则的至少一个区块中包含的用户标识进行公布,以使其他参与到此次业务资格获取活动中的用户能够通过终端查看到业务平台所公布出的结果。并且,用户查看到业务平台所公布出的结果后,可通过终端来对该结果进行验证,以确定业务平台所公布出的结果是否为真实有效的结果。
其中,终端在获取到业务平台所公布的获取执行上述业务资格的用户的用户标识后,可根据自身保存的该业务的区块链,以及先前从业务平台中获取的资格获取规则,从该区块链中确定出符合该资格获取规则的至少一个区块,并进一步确定出所述至少一个区块所包含的用户标识。终端可将自身确定出的有权获取到执行该业务资格的用户的用户标识,与从业务平台中获取到的用户标识进行对比。当确定自身确定出的用户标识与业务平台公布出的用户标识一致时,则可确定出业务平台所公布出的结果是真实有效的,若否则可认定业务平台在此次业务资格获取活动中存在弄虚作假的行为。
从上述方法可以看出,由于各终端可将根据结果生成规则生成的待验证结果写入到业务对应的区块链中,这样,各终端均可通过自身保存的针对该业务的区块链,查看到其他终端所生成的区块。并且,业务平台可将如何能够获取执行该业务的资格获取规则下发至各终端中,从而使得终端根据获取到的资格获取规则以及自身保存的针对该业务的区块链,对业务平台公布的结果进行验证。对于用户而言,有效的防止了业务平台在确定获取执行该业务的用户的过程中存在徇私舞弊的行为,从而保障了用户的权益不受侵害。而对于业务平台而言,则向用户提供的一种有效的验证方式,从而提高了自身的公信力。
需要说明的是,在本申请实施例中,管理参与此次业务资格获取活动的各终端的地址也可由一个专门的服务中心来进行负责,如图4所示。
图4为本申请实施例提供的服务中心管理地址的示意图。
在本申请实施例中,对于参与此次业务资格获取活动的每个用户来说,该用户通过终端在向业务平台发送上述资格获取请求的时候,可以先向终端的地址发送至该服务中心,相应的,服务中心在接收到终端发送的地址后,可将该地址进行保存。
当然,服务中心也可以主动获取该终端的地址。具体的,终端可先将上述资格获取请求发送至服务中心,由服务中心将该资格获取请求发送至业务平台中,服务中心在接收到终端发送的资格获取请求后,可向终端发送地址的询问消息,以使终端在接收到该询问消息后,将自身的地址主动发送至服务中心中。服务中心也可以在接收到终端发送的资格获取请求后,主动从该终端中获取到相应的地址并保存。除此之外,终端也可将自身的地址携带在该资格获取请求中发送至服务中心,服务中心通过对该资格获取请求的解析,获取到该终端的地址。
而在预处理块的共识过程中(或称之为待验证结果的共识过程),终端可从服务中心中获取到当前时刻参与到此次业务资格获取活动中的各终端(若此次业务资格获取活动可以提前预约,则这些终端中也包含有参与预约的终端)的地址,继而将自身生成的预处理块发送至这些地址所对应的终端中进行共识。
当然,终端也可将该预处理块发送至服务中心中,而服务中心则可根据获取到的当前时刻参与此次业务资格获取活动的终端的地址,将预处理块发送至各地址所对应的终端中进行共识。
需要说明的是,在本申请实施例中,无论是业务平台还是服务中心,也可不保存参与此次业务资格获取活动的终端的地址,而是将参与此次业务资格获取活动的用户的用户标识(如用户账号等)进行保存。这样一来,无论是业务平台还是服务中心,后续可根据先前获取到的各用户标识(当前时刻参与此次业务资格获取活动的用户的用户标识),将预处理块发送至当前用户通过用户标识参与此次业务资格获取活动所使用的终端中。
当然,业务平台或是服务中心也可将先前获取到的当前时刻参与此次业务资格获取活动的用户的用户标识发送至终端,以使终端通过获取到的各用户标识,将自身生成的预处理块发送至当前用户通过这些用户标识参与此次业务资格获取活动所使用的终端中。
在上述步骤S104中,对于每个终端来说,当该终端根据自身保存的上述业务对应的区块链以及从业务平台获取的资格获取规则,确定出业务平台所公布的结果不是真实有效的结果时(即业务平台所公布出的至少一个用户标识所对应的用户不具备获取执行该业务的资格),则可联合向第三方公正结构发起针对业务平台此次业务资格获取活动存在弄虚作假行为的通知。换句话说,对于参与此次业务资格获取活动的每个终端来说,当该终端确定出业务平台所公布的结果不是真实有效的结果时,则可向第三方公正结构发起针对业务平台此次业务资格获取活动存在弄虚作假行为的通知。
而第三方公正结构当确定接收到的针对业务平台此次业务资格获取活动存在弄虚作假行为的通知达到设定数量时,则可认定业务平台针对此次业务资格获取规则所公布出的结果缺乏真实性,继而认定业务平台所公布出的结果作废,并可向该业务平台进行责任追究。
在本申请实施例中,终端也可将根据上述业务平台下发的结果生成规则得到的待验证结果向发送至共识网络中的各终端(即当前时刻参与到上述目标业务资格获取活动中的终端)进行共识,待该待验证结果通过共识后,再将该待验证结果写入到包含有用户标识的区块中发送至共识网络中的各终端中。而各终端则可将该区块写入到该目标业务所对应的区块链中。
上述业务平台在接收到各终端发送的业务资格获取请求时,可能会出现短时间内接收大量业务资格获取请求的情况出现。所以,业务平台在接收到一部分业务资格获取请求后,也可不立即将上述资格获取规则以及结果生成规则返回给各终端,而是将这些业务资格获取请求随机分成若干批次,而后,每经过设定的时间间隔,向一个批次的业务资格获取请求所对应的各终端返回相应的资格获取规则以及结果生成规则。
此举的目的在于,在实际应用中,区块链中后一个区块的区块头中包含有前一个区块的头Hash,继而通过这种方式将各区块首尾连接起来。而由于上述业务平台在目标业务资格获取活动开始时,可能短时间内接收到大量的由各终端发送的业务资格获取请求。而各终端根据业务平台返回的结果生成规则,得到相应待验证结果以及待验证块时,待验证块中包含的前一区块的头Hash可能均为同一区块的头Hash,从而导致大量侧链的出现。
为了有效的降低侧链的出现,在本申请实施例中,业务平台在接收到大量的业务资格获取请求后,可先不立即向各终端返回相应的资格获取规则以及结果生成规则,而是将这些业务资格获取请求随机进行分组,并每隔设定时间间隔后,向一组业务资格获取请求所对应的终端返回相应的资格获取规则以及结果生成规则。这样一来,最先接收到业务平台返回资格获取规则以及结果生成规则的一个批次的终端可能会由于时间的优势将自己生成的、通过共识的区块最先写入到区块链中,而下一个批次的终端根据结果生成规则生成待验证块时,很可能是基于前一批次所生成的区块来得到的。换句话说,每个批次中各终端所生成的区块中将很可能包含有前一批次中各终端所生成的区块的头Hash,这样则可在一定程度上降低侧链的出现以及复杂度。
对于出现侧链长度均相同的情况来说,后续终端需要在侧链基础上将自己生成、通过共识的区块写入到区块链中时,可随机从这些侧链中选取一个侧链,进而在生成预处理块时,将该侧链当前最后一个区块的头Hash写入到该预处理块中。这样一来,当该预处理块通过共识时,各终端(当前已参与到此次资格获取活动中的各终端,可以包括提前预约的)可根据该预处理块中包含的上一个区块的头Hash,确定出该头Hash对应的区块所位于侧链,进而将该预处理块作为区块写入到该侧链中。
在本申请实施例中,当前时刻参与到此次资格获取活动中的各终端在对某一终端所发送的预处理块进行共识时,一旦确定该预处理块通过共识后,除了可将该预处理块作为区块写入到上述业务对应的区块链中外,还可将在对该预处理块进行共识的过程中,其他终端以及自身所发送的预处理块进行忽略(或删除),进而使其他终端以及自身重新根据从业务平台获取到的结果生成规则生成相应的待验证结果,并将该待验证结果携带在重新生成的预处理块中发送至共识网络中的各终端中进行共识。这样可以进一步的降低在区块链中产生侧链的可能。
而由于在本次资格获取活动中,各终端所获取的结果生成规则至始至终可以一个结果生成规则。所以,各终端对预处理块进行共识时,除了需要对该预处理块中所包含的待验证结果进行验证以确定该待验证结果是否符合该结果生成规则外,还可以验证该待验证结果是否与之前共识过程中预处理块中包含的待验证结果是否为同一结果,以及验证该待验证结果的生成时间与之前共识过程中预处理块中包含的待验证结果的生成时间之间的时间间隔是否满足设定的时间间隔。若验证该待验证结果与之前共识过程中预处理块中包含的待验证结果为同一结果,且该待验证结果的生成时间与之前共识过程中预处理块中包含的同一待验证结果的生成时间之间的时间间隔未满足设定的时间间隔时,则可认定生成该待验证结果的终端存在抄袭行为,即,该待验证结果并不是该终端通过消耗一定计算资源和时间而得来的,而是可能直接从之前通过共识的区块中获取到的。这样一来,该待验证结果所属的预处理块也将无法通过共识网络中各终端的共识。
还需要说明的是,为了能够清楚、详细的说明本申请所提供的业务执行的过程,本申请实施例中以秒杀商品的具体场景来对业务执行过程中所涉及的一些内容进行了举例说明。然而,本申请实施例所提供的业务执行方式并不仅仅限于上述秒杀商品的场景中,也适用于类似秒杀商品的其他场景,如商品抽奖、汽车摇号等,这些场景中所涉及的业务执行过程与本申请所提供的业务执行过程基本相同,在此就不进行详细说明了。
以上为本申请实施例提供的业务执行方法,基于同样的思路,本申请实施例还提供两种业务执行的装置,如图5、6所示。
图5为本申请实施例提供的一种业务执行的装置示意图,具体包括:
接收模块501,接收终端针对业务发送的资格获取请求;
返回模块502,根据所述资格获取请求,向所述终端返回资格获取规则以及结果生成规则,以使所述终端生成与所述结果生成规则相对应的待验证结果,并将包含所述待验证结果以及用户标识的预处理块进行共识,以及当通过共识后,将所述预处理块作为区块写入到区块链中;
获取模块503,当确定所述业务满足预设条件时,从至少一个终端中获取区块链,并从所述区块链中选择符合所述资格获取规则的至少一个区块;
执行模块504,针对所述至少一个区块中包含的用户标识执行所述业务。
所述获取模块503,当确定当前时刻到达所述业务的设定时间时,则确定所述业务满足预设条件;和/或
从至少一个终端中获取对应所述业务的区块链,确定所述区块链中包含的区块的数量,当确定所述数量不小于所述业务规定的区块数量时,则确定所述业务满足预设条件。
所述获取模块503,从所述区块链中选取出主链;从所述主链中选择符合所述资格获取规则的至少一个区块。
所述获取模块503,将所述区块链中的最长链选取为所述主链。
所述获取模块503,针对所述区块链中的每个区块,确定该区块在所述区块链中的位置;当确定该区块在所述区块链中的位置位于所述资格获取规则所规定的位置时,确定该区块为符合所述资格获取规则的区块。
所述预处理块中包含有待验证结果的生成时间;
所述获取模块503,所述获取模块,根据所述区块链中各区块所包含的待验证结果的生成时间,确定在所述业务规定的设定时间内所生成的至少一个区块;从确定出的至少一个区块中选择符合所述资格获取规则的至少一个区块。
所述执行模块504,将所述至少一个区块包含的用户标识进行公布。
图6为本申请实施例提供的另一种业务执行的装置示意图,具体包括:
发送模块601,向业务平台发送针对业务的资格获取请求;
第一接收模块602,接收所述业务平台根据所述资格获取请求返回的资格获取规则以及结果生成规则;
结果生成模块603,根据所述结果生成规则,生成相对应的待验证结果;
预处理块生成模块604,生成包含有所述待验证结果以及用户标识的预处理块,并将所述预处理块发送至其他终端,以使所述其他终端对所述预处理块进行共识;
写入模块605,当确定所述预处理块通过所述其他终端的共识后,将所述预处理块作为区块写入到所述装置包含的区块链中;
第二接收模块606,当接收到所述业务平台发送的资格确认信息时,则将自身保存的所述区块链发送至所述业务平台,以使所述业务平台从所述区块链中选择符合所述资格获取规定的至少一个区块,并针对所述至少一个区块中包含的用户标识执行所述业务。
所述预处理块生成模块604,根据所述结果生成规则,生成相应的待验证结果;生成包含有所述待验证结果、用户标识以及所述待验证结果的生成时间的预处理块。
所述预处理块生成模块604,从业务平台中获取其他终端的地址,所述其他终端的地址是所述业务平台接收其他终端发送的针对所述业务的资格获取请求时,从其他终端中获取到的;根据获取到的其他终端的地址,将所述预处理块发送至其他终端中。
所述装置还包括:
验证模块607,获取所述业务平台公布的至少一个用户标识;根据所述区块链以及所述资格获取规则,验证所述至少一个用户标识对应的用户是否具有执行所述业务的资格。
在本申请实施例中,业务平台在接收到各终端发送的针对业务的资格获取请求后,可分别向各终端返回资格获取规则以及结果生成规则,对于每个终端来说,该终端可根据业务平台返回的结果生成规则,生成相应的待验证结果,而后再将该待验证结果以及使用该终端的用户的用户标识携带在预处理块中发送至其他终端,并在确定该预处理块通过其他终端的共识后,将该预处理块作为区块写入到自身保存的针对业务的区块链中。而业务平台在确定能够获取执行业务的资格的用户时,可从至少一个终端中获取到针对该业务的区块链,并根据获取到的区块链,确定符合资格获取规则的区块,继而根据区块中包含的用户标识,针对该用户标识对应的用户执行该业务。由于各终端可将根据结果生成规则生成的待验证结果写入到业务对应的区块链中,这样,各终端均可通过自身保存的针对该业务的区块链,查看到其他终端所生成的区块。并且,业务平台可将如何能够获取执行该业务的资格获取规则下发至各终端中,从而使得终端根据获取到的资格获取规则以及自身保存的针对该业务的区块链,对业务平台确定出的能够执行该业务的用户的用户标识进行验证。对于用户而言,有效的防止了业务平台在确定获取执行该业务的用户的过程中存在徇私舞弊的行为,从而保障了用户的权益不受侵害。而对于业务平台而言,则向用户提供的一种有效的验证方式,从而提高了自身的公信力。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。