一种业务执行的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种业务执行的方法及装置。
背景技术
随着计算机技术的不断发展,多种新兴的业务模式相继面世,这些新兴的业务模式不但为用户的业务执行提供了便利,其模式的创新也为用户在执行业务的过程中带来了全新的体验。
当前,在这些新兴的业务模式中,一些诸如限时抢购等业务尤为受到人们的关注与欢迎,用户可以在业务规定的指定时间内,通过争抢的方式以低廉的价格获取到执行该业务的资格。
具体的,在实际应用中,当业务平台监测到当前时刻到达业务预设的时刻时,将向各用户开放参与该业务资格获取活动的窗口。相应的,各用户在此时可以向业务平台发送针对该业务的资格获取请求,而业务平台可以从发送资格获取请求的各用户中选取若干个用户,并将执行该业务的资格发放给选取出的用户。
例如,在一项秒杀商品活动(这里提到的秒杀商品即为业务平台向用户提供的业务)中,各用户通过终端查看到秒杀商品活动开始时(即到达上述业务预设的时刻),向提供秒杀商品活动的业务平台发送秒杀商品请求(即上述的资格获取请求),而该业务平台则将向最先发送秒杀商品请求的前若干名用户发放能够成功秒杀商品的资格(即将执行业务的资格进行发放)。当然,业务平台也可以在秒杀商品活动开始后,先不断的接收各用户发送的秒杀商品请求,而在到达接收秒杀商品请求的截止时间时,从这段时间内发送秒杀商品请求的各用户中随机选取若干名用户,将秒杀商品的资格发放给选取出的这些用户。
然而,通常情况下,当上述预设的时刻到达时,业务平台瞬间将接收到大量用户针对该业务发送的资格获取请求,使得业务平台在这段时间将面临大量的访问压力,从而可能引发业务平台出现运行故障,进而降低业务的执行效率。
发明内容
本申请实施例提供一种业务执行的***,用以解决现有技术业务平台在预设的时刻到达时所面临的访问压力较大的问题。
本申请实施例提供了一种业务执行的方法,包括:
节点持续生成第一区块并存储在区块链中,以及将所述区块链提供给获取到区块生成规则的终端;
终端从业务平台中获取所述区块生成规则,并根据所述区块链,生成与所述区块生成规则相匹配的预处理块;
终端通过其他终端以及所述节点,对所述预处理块进行共识,并当确定所述预处理块通过共识后,将所述预处理块作为第二区块存储在所述区块链中;
所述业务平台当确定满足预设条件时,从至少一个终端或至少一个节点中获取当前时刻所述区块链的全部或部分;
所述业务平台根据预设的时刻,从获取的当前时刻所述区块链中确定第一区块,并根据确定的第一区块选择第二区块;
所述业务平台根据选择出的第二区块中包含的用户标识执行业务。
本申请实施例提供一种业务执行的方法,用以解决现有技术业务平台在预设的时刻到达时所面临的访问压力较大的问题。
本申请实施例提供了一种业务执行的方法,节点持续生成第一区块并存储在区块链中,以及将所述区块链提供给获取到区块生成规则的终端,包括:
业务平台接收终端发送的资格获取请求;
根据所述资格获取请求,向所述终端返回区块生成规则,以使所述终端根据所述区块链以及所述区块生成规则生成第二区块并存储在所述区块链中;
当确定满足预设条件时,从至少一个终端或至少一个所述节点中获取当前时刻所述区块链的全部或部分;
根据预设的时刻,从获取的当前时刻所述区块链中确定第一区块,并根据确定的第一区块选择第二区块;
根据选择出的第二区块中包含的用户标识执行业务。
本申请实施例提供一种业务执行的装置,用以解决现有技术业务平台在预设的时刻到达时所面临的访问压力较大的问题。
本申请实施例提供了一种业务执行的装置,节点持续生成第一区块并存储在区块链中,以及将所述区块链提供给获取到区块生成规则的终端,包括:
接收模块,接收终端发送的资格获取请求;
返回模块,根据所述资格获取请求,向所述终端返回区块生成规则,以使所述终端根据所述区块链以及所述区块生成规则生成第二区块并存储在所述区块链中;
获取模块,当确定满足预设条件时,从至少一个终端或至少一个所述节点中获取当前时刻所述区块链的全部或部分;
选择模块,根据预设的时刻,从获取的当前时刻所述区块链中确定第一区块,并根据确定的第一区块选择第二区块;
执行模块,根据选择出的第二区块中包含的用户标识执行业务。
本申请实施例提供一种业务执行的方法,用以解决现有技术业务平台在预设的时刻到达时所面临的访问压力较大的问题。
本申请实施例提供了一种业务执行的方法,节点持续生成第一区块并存储在区块链中,以及将所述区块链提供给获取到区块生成规则的终端,包括:
终端向业务平台发送资格获取请求,以使所述业务平台向所述终端返回区块生成规则;
根据所述区块链以及所述区块生成规则,生成预处理块;
通过其他终端以及所述节点,对所述预处理块进行共识,并将通过共识的所述预处理块作为第二区块存储在所述区块链中;
当接收到所述业务平台发送的资格确认信息时,将所述终端自身保存的当前时刻所述区块链发送至所述业务平台,以使所述业务平台根据当前时刻所述区块链中的第一区块和第二区块执行业务。
本申请实施例提供一种业务执行的装置,用以解决现有技术业务平台在预设的时刻到达时所面临的访问压力较大的问题。
本申请实施例提供了一种业务执行的装置,节点持续生成第一区块并存储在区块链中,,以及将所述区块链提供给获取到区块生成规则的所述装置,包括:
发送模块,向业务平台发送资格获取请求,以使所述业务平台向所述装置返回区块生成规则;
生成模块,根据所述区块链以及所述区块生成规则,生成预处理块;
共识模块,通过其他终端以及所述节点,对所述预处理块进行共识,并将通过共识的所述预处理块作为第二区块存储在所述区块链中;
接收模块,当接收到所述业务平台发送的资格确认信息时,将所述装置自身保存的当前时刻所述区块链发送至所述业务平台,以使所述业务平台根据当前时刻所述区块链中的第一区块和第二区块执行业务。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
在本申请实施例中,业务平台在接收到终端发送的资格获取请求后,即可向终端返回区块生成规则,而并不是只有在到达预设的时刻时,才会向终端返回区块生成规则,所以,即使终端在预设的时刻之前,向业务平台发送资格获取请求,业务平台依然会将区块生成规则返回给终端。换句话说,业务平台可以在时间上将参与该业务资格获取的用户进行分离,可以使一部分用户在预设的时刻之前,获取到区块生成规则,进而在预设的时刻到达时,根据获取到的区块生成规则,参与该业务。
并且,由于业务平台在选取执行业务的用户时,可以以区块链中包含的第一区块作为时间基准,选择第二区块,并根据选择出的第二区块,确定执行业务的用户。这样一来,即使各终端可以在不同的时间点获取到该区块生成规则,但是为了能够执行业务,这些终端需要根据第一区块这一时间基准来生成符合区块生成规则的第二区块。所以,通过这种方式,不仅能够极大的缓解了业务平台在预设的时刻到达时所面临的访问压力,保障了预设的时刻到达后业务平台的正常运行,还能够保证若用户通过终端能够执行该业务,则即使通过终端在预设的时刻之前就已经获取到了区块生成规则,也需要在预设的时刻到达时才开始生成符合区块生成规则的第二区块,从而保证了业务执行的公平性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的业务执行的***示意图;
图2为本申请实施例提供的业务执行过程的示意图;
图3为本申请实施例提供的区块链中在业务规定的预设的时刻之后所生成的部分的示意图;
图4为本申请实施例提供的一种业务执行的装置示意图;
图5为本申请实施例提供的另一种业务执行的装置示意图。
具体实施方式
在本申请实施例中,业务平台、至少一个节点以及至少一个终端可以构成用于业务执行的***,如图1所示。
图1为本申请实施例提供的业务执行的***示意图。
在图1所示的***中,业务平台可向用户提供所要执行的业务,并在接收到用户通过终端发送针对业务的资格获取请求时,向终端返回相应的区块生成规则,以使接收到该区块生成规则的终端能够有机会执行该业务。业务平台后续需要从发送资格获取请求的至少一个终端,或是节点中获取到区块链,并从该区块链中确定出执行该业务的用户。
上述***中可以存在至少一个节点,这些节点可以组成一个小型的共识网络,每个节点可以持续不断的生成预处理块,并将自己生成的预处理块发送至这一小型的共识网络中进行共识。一旦确定自己所生成的预处理块通过共识后,则可将该预处理块作为第一区块存储在自身所保存的区块链中。
该***中的节点所起到的作用是为了向参与此次业务的资格获取活动的各终端,以及业务平台提供一个时间基准,使得各终端即使是在不同的时间点从业务平台获取到区块生成规则,也需要基于同一时间基准,生成符合该区块生成规则的第二区块,从而尽可能的保证了各用户参与到此次业务执行的公平性。而节点通过生成第一区块而组成的区块链为什么能够起到时间基准的作用,将在后续进行说明。
在上述***中,用户若要参与此次业务的资格获取活动中,可通过自己所持有的终端向业务平台发送针对该业务的资格获取请求,并可根据业务平台返回的区块生成规则以及从节点获取到的上述区块链,生成符合该区块生成规则的预处理块。其中,为了有效的缓解业务平台在预设的时刻到达时所面临的访问压力,在本申请实施例中,终端可以在任意时间点向业务平台发送资格获取请求。如,终端可以在预设的时刻到达之前,向业务平台发送资格获取请求,也可以在预设的时刻到达时,向业务平台发送资格获取请求,抑或是在预设的时刻之后,向业务平台发送资格获取请求。而业务平台无论在何时,只要接收到终端发送的资格获取请求,即可向终端返回区块生成规则。
上述区块链中包含的各第一区块是节点通过持续不断生成预处理块而得到的,即,节点生成的预处理块一旦通过共识,即可作为第一区块存储在该区块链中。其中,节点并不是针对该业务而生成第一区块的,该第一区块可以理解成一个普通的区块,该第一区块中可以不包含有任何关于业务的数据。
而上述提到的第二区块是由终端通过生成预处理块而得到的,即,终端根据上述区块链以及区块生成规则生成的预处理块一旦通过共识,则可作为第二区块存储在该区块链中。其中,该第二区块是终端针对上述业务而生成的,换句话说,该第二区块中可以包含有关于业务的数据,如用户标识等。这里的“第一”和“第二”仅用于区分不同的区块,没有特殊含义。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了方便对本申请实施例所提供的业务执行方法进行说明,下面将以秒杀商品为场景来详细说明整个业务执行的过程。
图2为本申请实施例提供的业务执行过程的示意图,具体包括以下步骤:
S201:终端向业务平台发送资格获取请求,以使所述业务平台向所述终端返回区块生成规则。
在本申请实施例中,用户执行秒杀商品业务的过程可以大致分为以下两个阶段:
一、资格获取阶段:在这一阶段中,想要执行该业务的用户可以通过自己所持有的终端向业务平台发送针对此次业务的资格获取请求,而在这一阶段中,业务平台在接收到终端发送的资格获取请求时,将向终端返回区块生成规则,以使获取到区块生成规则的终端能够有机会执行该业务,即有机会秒杀到商品;
二、资格确定阶段,在资格获取阶段过后,业务平台需要按照一定的方式,从在资格获取阶段中发送资格获取请求的用户中选取出能够执行该业务的用户,并将确定出的能够执行该业务的用户(成功秒杀商品的用户)进行公布。
为了缓解业务平台在业务预设的时刻到达时所面临的访问压力,保障业务平台的正常运行,在本申请实施例中,业务平台只要接收到终端发送的资格获取请求,即可向终端返回区块生成规则。换句话说,无论用户通过终端在该业务预设的时刻之前向业务平台发送资格获取请求,还是在该预设的时刻到达时向业务平台发送资格获取请求,抑或是在该预设的时刻之后,向业务平台发送资格获取请求,终端均可从业务平台中获取到区块生成规则。这样一来即可将各终端向业务平台发送资格获取请求的时间点进行离散,从而有效的缓解了业务平台在预设的时刻到达时所面临的访问压力。其中,这里提到的预设的时刻可以指该业务的资格获取阶段的开始时间,即,秒杀商品活动的开始时间,当该预设的时刻到达时,用户可以参与到该秒杀商品的活动中。
需要说明的是,终端在上述预设的时刻(即秒杀商品活动的开始时间)到达之前,获取到区块生成规则,并不算是已经参与到该秒杀商品活动中,只有当该预设的时刻到达时,该终端才真正意义上算是参与到该秒杀商品活动中。
在本申请实施例中,终端在上述预设的时刻到达之前,向上述业务平台发送针对该业务(秒杀商品活动)的资格获取请求的具体方式可以是:该业务平台可以在该预设的时刻之前,将关于该业务的信息发布在该业务平台中。当用户启动终端中对应该业务平台的客户端时,使得终端将触发向该业务平台发送针对该业务的资格获取请求,进而使得该业务平台可以根据终端发送的该资格获取请求,向该终端返回相应的区块生成规则。
除此之外,当用户启动终端中对应上述业务平台的客户端时,也可以通过在该客户端中执行指定操作,以使终端在监测到用户执行了该指定操作后,向该业务平台发送针对该业务的资格获取请求。例如,假设用户启动终端中的客户端后,该客户端可以向用户显示关于该秒杀商品活动的信息以及操作控件,当终端监测到用户点击了该客户端中的参与控件时,则可向业务平台发送针对该秒杀商品活动的资格获取请求。
当然,在本申请实施例中,终端向上述业务平台发送针对该业务的资格获取请求的触发方式除了上述说明的两种情况外,还可以是其他的触发方式。例如,客户端在运行的情况下,当终端监测到客户端中发布了关于上述业务(秒杀商品活动)的信息时,可以在该业务预设的时刻到达之前,主动向业务平台发送针对该业务的资格获取请求。其中,终端可以在该预设的时刻之前的任意一个时刻,向业务平台发送针对该业务的资格获取请求,也可以在该预设的时刻之前,距离该预设的时刻设定时长的一个时刻,向业务平台发送针对该业务的资格获取请求。
再例如,业务平台也可以按照一定的条件,选择能够参与到此次秒杀商品活动中的用户,如,业务平台可以将会员等级达到设定等级的用户确定为能够有机会参与该秒杀商品活动的用户,并主动通过用户账号向这些用户发送是否需要参与该秒杀商品活动的询问消息。而终端监测到用户在查看到该询问消息,确定参与该秒杀商品活动时,则可向业务平台发送针对该秒杀商品活动的资格获取请求,相应的,业务平台也可以向该终端返回相应的区块生成规则。除此之外还有其他的触发方式,在此就不一一举例说明了。
S202:根据所述区块链以及所述区块生成规则,生成预处理块。
在本申请实施例中,当终端在确定该预设的时刻到达时,可以从预设的至少一个节点中获取节点当前时刻存储的区块链,进而根据该区块链生成符合该区块生成规则的预处理块。
在本申请实施例中,终端在确定该业务预设的时刻到达时,需要从预设的至少一个节点获取区块链的目的在于:由于终端可以在该预设的时刻之前,从业务平台获取到针对该业务(秒杀商品活动)的区块生成规则,所以,终端也可以在获取到该区块生成规则后,立即开始生成符合该区块生成规则的预处理块。这样一来,该终端有可能在该预设的时刻之前,就已经将符合该区块生成规则的预处理块生成完毕,等到该预设的时刻到达时,直接将生成的预处理块发送至共识网络中进行共识。换句话说,相比于在预设的时刻之后获取到该区块生成规则的终端,在该预设的时刻之前优先获取到该区块生成规则的终端可以通过“先获取先生成”的方式,优先将自己所生成的符合该区块生成规则的预处理块发送至共识网络中进行共识。
但是,对于在该预设的时刻之后获取到上述区块生成规则的其他终端来说,在不考虑终端实际计算能力的情况下,这些终端获取该区块生成规则的时间就已经晚于在预设的时刻之前获取该区块生成规则的终端。所以,这些在预设的时刻之后获取该区块生成规则的终端生成预处理块的时间也很可能会晚于在预设的时刻之前获取该区块生成规则的终端。相应的,将自己所生成的预处理块发送至共识网络中进行共识的时间也将会晚于在预设的时刻之前获取该区块生成规则的终端。
所以,若无法保证各终端(无论是在上述预设的时刻之前获取到区块生成规则的终端,还是在该预设的时刻之后获取到该区块生成规则的终端)尽可能在同一时间(或同一时间基准)开始生成符合该区块生成规则的预处理块,则先获取到该区块生成规则的终端可以通过上述说明的“先获取先生成”的方式,有很大几率先生成符合该区块生成规则的预处理块,从而在一定程度上提高了自己执行该业务的几率(即秒杀到商品的几率),这样将会造成该业务执行中的公平性缺失。
为了有效的解决上述问题,在本申请实施例中,可以预设至少一个节点,这些节点可以随着时间的推移,持续不断的生成预处理块,并将通过共识的预处理块作为第一区块存储在自身的区块链中。换句话说,这些节点相当于组成了一个小型的共识网络,对于每个节点来说,该节点可以不断的生成非业务的预处理块,并将生成的预处理块发送至这个小型的共识网络中进行共识。该预处理块一旦通过这个小型共识网络的共识后,这个小型共识网络中的各节点也可该预处理块作为第一区块存储在自身的区块链中。
其中,节点生成的第一区块之所以能够起到时间基准的原因在于,在实际应用中,区块链中每个区块都包含有上一个区块的头Hash,所以,当终端能够基于这些节点存储的区块链来生成符合上述区块生成规则的预处理块时,若该终端在该业务预设的时刻之前,生成符合区块生成规则的预处理块,则该预处理块所包含的上一区块的头Hash所对应的区块(该区块可能是第一区块,也可能是第二区块)必然是该区块链中位于该预设的时刻之前所生成的区块。所以,该预处理块一旦通过共识,则也将必然会接在该区块之后,而这些节点依然会不断的生成预处理块,并将通过共识的预处理块作为第一区块接在该预处理块(终端生成的)之后。
所以,业务平台为了降低在预设的时刻之前获取到上述区块生成规则的终端相比于在预设的时刻之后获取到该区块生成规则的终端,能够有更大的几率执行该业务(秒杀到商品)的情况出现,业务平台在确定能够执行该业务的用户时,可从各终端(此时已获取到区块生成规则的终端)或是上述节点获取到的区块链,并以该预设的时刻为分界线,截取后一部分的区块链,作为确定哪些用户能够有机会执行该业务的区块链。
这样一来,若终端在该业务预设的时刻之前,就已经将符合该区块生成规则的预处理块生成完毕,则由于该预处理块包含的上一个区块的头Hash所对应的区块是位于区块链中预设的时刻之前所生成的区块中,所以,即使该终端等到该预设的时刻到达时,再将该预处理块发送至共识网络中进行共识,该预处理块通过共识后也必然会作为第二区块接在该区块(即上一个区块)之后,从而使得该第二区块将有极大的可能落入到该区块链中预设的时刻之前的那部分中。相应的,业务平台在资格确认阶段中只需将区块链中预设的时刻之前的那部分不予考虑,即可使得该终端之前所做的处理付诸东流。
因此,在预设的时刻之前获取到区块生成规则的终端若要执行该业务,则需要在确定当前时刻到达该业务预设的时刻时,从预设的这些节点获取到节点当前时刻存储的区块链,进而使得终端根据该区块链所生成的符合区块生成规则的预处理块,才有可能在通过共识后,被业务平台选中,生成该预处理块的终端也将有几率(也即持有该终端的用户)能够执行该业务(即秒杀到商品)。
在本申请实施例中,终端从预设的至少一个节点获取到当前时刻节点存储的区块链后,可以进一步的确定出当前时刻该区块链中位于最后一个区块的区块特征值,继而根据该区块特征值,用户标识以及调整参数,生成符合上述区块生成规则的待验证特征值,进而根据生成的待验证特征值、该用户标识、该区块特征值以及该调整参数,生成符合该区块生成规则的预处理块。
上述提到的特征值(无论是区块特征值还是待验证特征值)能够唯一标识区块,保证区块链中区块的唯一性。其中,这里提到的区块特征值可以理解成上一个区块的头Hash,而待验证特征值可以理解成该预处理块的头Hash。在本申请实施例中,区块特征值除了可以Hash值的形式存在外,还可以以其他的形式出现,如,若采用信息摘要算法5(Message-Digest Algorithm 5,MD5),则该区块特征值可以以MD5值的形式出现,当然相应的,待验证特征值也应以MD5值的形式出现。特征值具体形式可以通过具体采用何种非对称加密算法来决定,只需保证得出的特征值具有唯一性即可。
上述提到的用户标识是指用户通过终端生成预处理块时所使用的用户标识(如用户账号、身份证号等)。由于业务平台后续需要通过区块链中第二区块包含的用户标识,确定出能够执行该业务的用户(即成功秒杀到商品的用户),所以,终端在生成该预处理块时需要将用户标识作为预处理块中包含的内容写入到预处理块中。
上述提到的调整参数用于使终端根据区块特征值、用户标识、调整参数生成的待验证特征值符合区块生成规则。例如,假设该区块生成规则规定终端生成的待验证特征值需要满足前8位是0的Hash值,则若终端根据区块特征值(即上一个区块的Hash值)、用户标识以及一个随机选取的调整参数,生成的待验证特征值不满足这一规定,则终端可以通过不断调整该该调整参数,使得经过若干次的调整后,终端能够根据区块特征值、用户标识以及该调整参数,得到前8位是0的待验证特征值。
终端在生成符合上述区块生成规则的待验证特征值后,可以进一步的根据生成的待验证特征值、用户标识、区块特征值以及最终得到的调整参数,生成符合该区块生成规则的预处理块,进而在后续过程中,将该预处理块发送至共识网络中进行共识。
S203:通过其他终端以及所述节点,对所述预处理块进行共识,并将通过共识的所述预处理块作为第二区块存储在所述区块链中。
终端在生成符合上述区块生成规则的预处理块后,可将该预处理块发送至共识网络中,以通过共识网络对该预处理块进行共识。其中,该共识网络中可以由当前时刻已获取到区块生成规则的各终端(即当前时刻已参与到秒杀商品活动中的各用户所持有的终端)以及上述预设的至少一个节点来组成。因此,终端将该预处理块发送至共识网络的过程中,可以先从业务平台中获取到当前时刻已获取到区块生成规则的各终端的地址,进而通过获取到的地址,将该预处理块发送至各终端进行共识。
而对于节点来说,这些节点的地址可以事先写入到终端中(或是终端安装的客户端中),终端可直接通过其自身保存的节点的地址,将预处理块发送至这些节点中,以使这些节点以及当前时刻已获取到区块生成规则的各终端对该预处理块进行共识。当然,终端也可以从业务平台中获取到这些节点的地址。
当该预处理块通过共识网络的共识后,各终端(当前时刻已获取到区块生成规则的各终端)以及上述至少一个节点可将该预处理块作为第二区块存储在自身存储的区块链中。
需要说明的是,上述预设的至少一个节点在该业务预设的时刻到达后,可以参与到各终端(即获取到区块生成规则的终端)生成的各预处理块的共识工作中。而在此过程中,这些节点依然可以持续不断的生成预处理块,并将这些预处理块发送至共识网络中进行共识。其中,对于每个节点来说,该节点在该业务的资格获取阶段中所生成的预处理块可以只发送至其余的节点来进行共识,而不将该预处理块发送至当前时刻已获取到区块生成规则的各终端。
当然,当到达该业务预设的时刻时,上述业务平台可以向这些预设的节点发送消息,已通知这些节点暂时停止生成预处理块,并加入到对获取到区块生成规则的各终端所生成的预处理块的共识工作中。相应的,在该业务的资格获取阶段中,接入到区块链中的区块将全部由获取到区块生成规则的各终端来生成。
S204:当接收到所述业务平台发送的资格确认信息时,将所述终端自身保存的当前时刻所述区块链发送至所述业务平台,以使所述业务平台根据当前时刻所述区块链中的第一区块和第二区块执行业务。
业务平台在确定该业务满足预设条件时,可从至少一个终端或是至少一个节点中获取到当前时刻终端或是节点所存储的区块链,并从该区块链中确定出能够执行该业务的用户。
其中,这里提到的预设条件可以是:监测当前时刻是否已经到达了该业务规定的资格获取阶段的截止时间(即参与秒杀商品活动的截止时间)。业务平台在确定出当前时刻已到达该业务规定的资格获取阶段的截止时间时,可以确定出该业务已经满足该预设条件,进而从当前时刻已获取到区块生成规则的至少一个终端或是上述预设的至少一个节点中获取到当前时刻所对应的区块链。
除此之外,这里提到的预设条件也可以是:监测该区块链中区块的数量是否已经达到了该业务所规定的设定数量。业务平台可以时刻对各终端(获取到区块生成规则的终端)或是节点中存储的区块链的区块数量进行监测。当监测到该区块链中的区块数量已到达该业务所规定的设定数量时,则可以确定出该业务满足该预设条件,进而从各终端或是节点中获取该区块链。其中,这里提到的该业务所规定的设定数量可以指:该区块链中的总区块数量,也可以指在该业务预设的时刻之后接入到该区块链中的区块的数量。当然,这里提到的预设条件也可以以其他形式存在,预设条件的具体内容可以由业务平台的工作人员进行设定,在此就不一一举例说明了。
业务平台在获取上述区块链的过程中,可以向各终端(获取到区块生成规则的各终端)或是上述节点发送资格确认信息,使得当各终端或是节点接收到该资格确认信息时,可将自身保存的当前时刻对应的区块链发送至该业务平台中,以使该业务平台可以从该区块链中确定能够执行该业务的用户。
终端或节点在接收到该资格确定信息后,可将当前时刻自身保存的区块链的全部发送至业务平台中,也可将该区块链的部分发送至业务平台中。其中,终端或节点向业务平台发送的该区块链的部分可以是指该区块链中在业务到达上述预设的时刻后生成的部分,如,秒杀商品活动开始后,各终端或节点将通过共识的预处理块以第一区块或第二区块的形式存储在区块链中所组成的部分,如图3所示。
图3为本申请实施例提供的区块链中在业务规定的预设的时刻之后所生成的部分的示意图。
在图3中,区块链中包含有两种区块,一种区块是由节点生成的第一区块,用A来进行表示,另一种区块是由终端生成的第二区块,用B来表示。该区块链可以分为两个部分,一个部分是在上述业务规定的预设的时刻之前所形成的区块链,这部分可以称之为第一部分,在第一部分中,大部分的区块均是由节点所生成的第一区块(即A区块)来组成的。该区块链的另一个部分是指在该区块链的第一部分之后,所形成的一部分区块链,即,在业务规定的预设的时刻到达后,终端或节点通过生成预处理块所组成的一部分区块链,这部分区块链可以称之为第二部分。在第二部分中,一部分区块是由节点通过生成第一区块(即A区块)而得到的,另一部分是由终端通过生成第二区块(即B区块)得到的。
基于此,终端或节点在接收到业务平台发送的资格确认信息后,可将该区块链中的第二部分发送至业务平台,而业务平台则可以根据获取到的这部分区块链,确定出执行该业务的用户。
当然,终端或节点也可在该区块链中的第一部分中随机选择一处进行截取,并将截取的后半部分(包含部分第一部分以及整个第二部分)的区块链发送至业务平台中。
业务平台获取到上述区块链后,可以根据预设的时刻,从该区块链中确定出一个第一区块,并根据确定出的该第一区块从该区块链中选择第二区块。具体的,在申请实施例中,每个第一区块中可包含有该第一区块的生成时间,由于区块链中各区块都是按照时间顺序依次相连的,所以,业务平台可以从该区块链中确定出各第一区块的生成时间,并进一步的确定出生成时间距离该预设的时刻最近的第一区块,继而将该第一区块确定为标记区块。
需要说明的是,在本申请实施例中,业务平台在确定标记区块时,可以以预设的时刻为界限,将获取到的区块链一分为二,前一部分中包含的各区块均为在预设的时刻之前生成的区块(如图3中第一部分包含的区块),后一部分为在预设的时刻之后生成的区块(如图3中第二部分包含的区块)。业务平台可以从后一部分中确定出生成时间距离该预设的时刻最近的第一区块,并将该第一区块确定为标记区块。
业务平台确定出该标记区块后,可从该区块链中选择位于该标记区块之后的至少一个第二区块,进而根据选择出的至少一个第二区块中包含的用户标识,确定出能够执行该业务的用户(有机会能够秒杀到商品的用户)。其中,业务平台可以先选择出位于该标识区块之后的各第二区块(这里提到的第二区块是指在资格获取阶段中各终端生成的区块)。而后按照该区块链中各区块的排列顺序,将排在最前面的设定数量的第二区块选择出来,进而根据这些设定数量的第二区块中包含的用户标识,确定出执行该业务的用户(即确定出成功秒杀到商品的用户)。
业务平台也可以在确定出上述标记区块后,按照该区块链中各区块的排列顺序,直接选择出位于该标记区块之后的设定数量的区块。其中,业务平台在选择设定数量的区块时,可以每遇到一个区块,即确定该区块是第一区块还是第二区块,当该区块为第一区块时,则不选择该第一区块,并跳转到下一区块,而当确定该区块为第二区块时,则选出该区块。换句话说,业务平台需要通过这种方式,从标识区块之后选择出最靠前的设定数量的第二区块。
业务平台从该区块链中选择出设定数量的第二区块后,可进一步确定出这些第二区块包含的用户标识,进而确定出能够执行该业务的用户。
需要说明的是,在本申请实施例中,业务平台从各终端或是节点获取到上述区块链后,可以从区块链中确定出一条主链,并依据该主链,确定出能够执行该业务的用户。在本申请实施例中,业务平台可以从获取到的区块链中确定出一条最长链,并将该最长链确定为主链。
相应的,业务平台从获取到的区块链中确定出主链后,从该主链中确定出的生成时间距离该预设的时刻最近的第一区块,并将该第一区块确定为标记区块。而后,业务平台按照各区块在该主链上的排列顺序,从该主链中选择出位于该标记区块之后的设定数量的第二区块,继而根据选择出的这些第二区块包含的用户标识,确定出执行该业务的用户。
当然,在本申请实施例中,业务平台中的工作人员可以针对上述业务设置一个资格获取规则,该资格获取规则可以规定用户如何才能有机会执行该业务。比如说,对于秒杀商品的业务来说,该业务所对应的资格获取规则规定了后续各终端保存的区块链中,位于该区块链中的哪几个区块是符合资格获取规则的区块。换句话说,在获取到区块生成规则的用户中,哪些用户通过终端生成的区块是符合资格获取规则的。
业务平台的工作人员可以结合具体的实际情况,针对上述业务制定出多种资格获取规则,使得业务平台后续可以根据该资格获取规则,从获取到的区块链中确定出符合该资格获取规则的第二区块,而并不仅仅局限于将位于区块链中标记区块之后的最靠前的设定数量第二区块作为确定“获奖”用户的依据(“获奖”用户即指成功秒杀到商品的用户)。这样一来,在该业务预设的时刻到达后,后获取到区块生成规则的用户也将有机会执行该业务,从而使得该业务给用户带来了更好的用户体验。
在本申请实施例中,业务平台在接收到终端发送的针对该业务的资格获取请求后,可向该终端返回该业务对应的区块生成规则以及上述资格获取规则,终端在获取到资格获取规则后,可将该资格获取规则进行保存。当然,业务平台也可将区块生成规则和资格获取规则分开发送给终端。例如,业务平台在接收到终端发送的资格获取请求后,可仅将区块生成规则返回给终端,而资格获取规则可在一个统一的时间段发送至各终端中。
终端保存该资格获取规则的目的在于,业务平台在资格确认阶段中确定出至少一个能够执行该业务的用户后,可以将选择出的至少一个第二区块包含的用户标识(即能够执行该业务的用户的用户标识)进行公布。相应的,终端可以通过其自身保存的资格获取规则,对业务平台所公布的用户标识进行验证,以确定这些用户标识所对应的用户是否具备执行该业务的资格。
从上述方法中可以看出,由于业务平台可以在时间上将参与该业务资格获取的用户进行分离,可以使一部分用户在预设的时刻之前,获取到区块生成规则,进而在预设的时刻到达时,根据获取到的区块生成规则,参与该业务。并且,由于业务平台在选取执行业务的用户时,可以以区块链中包含的第一区块作为时间基准,选择第二区块,并根据选择出的第二区块,确定执行业务的用户。这样一来,即使各终端可以在不同的时间点获取到该区块生成规则,但是为了能够执行业务,这些终端需要根据第一区块这一时间基准来生成符合区块生成规则的第二区块。
所以,通过这种方式,不仅能够极大的缓解了业务平台在预设的时刻到达时所面临的访问压力,保障了预设的时刻到达后业务平台的正常运行,还能够保证若用户通过终端能够执行该业务,则即使通过终端在预设的时刻之前就已经获取到了区块生成规则,也需要在预设的时刻到达时才开始生成符合区块生成规则的第二区块,从而保证了业务执行的公平性。
需要说明的是,业务平台可以在监测到当前时刻到达上述业务预设的时刻时,从节点中获取到区块链,并确定出当前时刻位于该区块链中最后的一个区块,继而将该区块确定为标记区块。而后,业务平台当监测到该业务满足预设条件时,可从节点或是终端中获取到此时的区块链,并确定出此时的区块链中,位于该标记区块之后的各区块。业务平台可以通过标记区块之后的各区块,确定出执行该业务的用户。其中,这里提到的标识区块与上述标记区块不同的一点在于,上述标记区块由第一区块确定出的。而这里由于业务平台在预设的时刻所获取到的区块链中,位于该区块链中的最后一个区块可能是第一区块,也可能是第二区块。所以,这里提到的标记区块可以是由第一区块得到的,也可以是由第二区块得到的。
上述说明的业务执行方法除了可以运用到秒杀商品的场景中,也可以运用到诸如汽车摇号、抽奖等业务场景中来。在此就不一一举例说明了。相应的,由于该业务执行的方式可以适用于多个类似秒杀商品的业务场景,所以,上述提到的预设的时刻还可以指其他时间。如,该预设的时刻也可以是业务的资格获取阶段的截止时间,相应的,业务平台在监测到当前时刻到达该预设的时刻时,可以确定出生成时间距离该预设的时刻最近的第一区块,并将确定出的第一区块确定为标记区块。而后,业务平台可进一步的确定出该区块链中位于该标记区块之前的各第二区块,并按照各第二区块在区块链中的排列顺序,将这些第二区块中最靠近该标记区块的设定数量的第二区块选取出来,以通过这些选取出的各第二区块,确定出执行该业务的用户。
还需说明的是,在本申请实施例中,各终端或是节点可能会在同一时刻生成预处理块,但是,各预处理块通过共识的时间则不尽相同。基于此,各终端或是节点在对终端生成的预处理块进行共识时,可以在确定出预处理块共识通过后,对该预处理块打上一个时间戳,这个时间戳表明了该预处理块通过共识的时间。这样一来,后续各终端或节点将携带有时间戳的各预处理块作为第二区块存储在该区块链中时,可以按照时间顺序,将各第二区块进行排序,从而使得各第二区块尽可能的排列在一条链上,进而降低了区块链中产生支链的可能。当然,节点所生成的预处理块一旦通过共识后,也可在该预处理块打上一个时间戳,并将该预处理块按照时间顺序,以第一区块的形式存储在区块链中。
以上为本申请实施例提供的业务执行方法,基于同样的思路,本申请实施例还提供两种业务执行的装置,如图4、5所示。
图4为本申请实施例提供的一种业务执行的装置示意图,具体包括:
接收模块401,接收终端发送的资格获取请求;
返回模块402,根据所述资格获取请求,向所述终端返回区块生成规则,以使所述终端根据所述区块链以及所述区块生成规则生成第二区块并存储在所述区块链中;
获取模块403,当确定满足预设条件时,从至少一个终端或至少一个所述节点中获取当前时刻所述区块链的全部或部分;
选择模块404,根据预设的时刻,从获取的当前时刻所述区块链中确定第一区块,并根据确定的第一区块选择第二区块;
执行模块405,根据选择出的第二区块中包含的用户标识执行业务。
所述选择模块404,确定所述区块链中各第一区块的生成时间;确定生成时间距离所述预设的时刻最近的第一区块,并将其确定为标记区块;从获取的当前时刻所述区块链中选择位于所述标记区块之后的第二区块。
所述选择模块404,按照当前时刻所述区块链中各区块的排列顺序,从当前时刻所述区块链中选择位于所述标记区块之后的设定数量的第二区块。
图5为本申请实施例提供的另一种业务执行的装置示意图,具体包括:
发送模块501,向业务平台发送资格获取请求,以使所述业务平台向所述装置返回区块生成规则;
生成模块502,根据所述区块链以及所述区块生成规则,生成预处理块;
共识模块503,通过其他终端以及所述节点,对所述预处理块进行共识,并将通过共识的所述预处理块作为第二区块存储在所述区块链中;
接收模块504,当接收到所述业务平台发送的资格确认信息时,将所述装置自身保存的当前时刻所述区块链发送至所述业务平台,以使所述业务平台根据当前时刻所述区块链中的第一区块和第二区块执行业务。
所述生成模块502,确定所述区块链最后一个区块的区块特征值;确定调整参数,以使通过所述调整参数、所述区块特征值以及用户标识生成的待验证特征值符合所述区块生成规则;根据所述待验证特征值、所述区块特征值、所述调整参数以及所述用户标识,生成所述预处理块。
在本申请实施例中,业务平台在接收到终端发送的资格获取请求后,即可向终端返回区块生成规则,而并不是只有在到达预设的时刻时,才会向终端返回区块生成规则,所以,即使终端在预设的时刻之前,向业务平台发送资格获取请求,业务平台依然会将区块生成规则返回给终端。换句话说,业务平台可以在时间上将参与该业务资格获取的用户进行分离,可以使一部分用户在预设的时刻之前,获取到区块生成规则,进而在预设的时刻到达时,根据获取到的区块生成规则,参与该业务。
并且,由于业务平台在选取执行业务的用户时,可以以区块链中包含的第一区块作为时间基准,选择第二区块,并根据选择出的第二区块,确定执行业务的用户。这样一来,即使各终端可以在不同的时间点获取到该区块生成规则,但是为了能够执行业务,这些终端需要根据第一区块这一时间基准来生成符合区块生成规则的第二区块。所以,通过这种方式,不仅能够极大的缓解了业务平台在预设的时刻到达时所面临的访问压力,保障了预设的时刻到达后业务平台的正常运行,还能够保证若用户通过终端能够执行该业务,则即使通过终端在预设的时刻之前就已经获取到了区块生成规则,也需要在预设的时刻到达时才开始生成符合区块生成规则的第二区块,从而保证了业务执行的公平性。
在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、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。