具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在对本申请实施例提供的技术方案进行详细介绍之前,这里先对本申请实施例涉及的实施环境以及应用场景进行简单介绍。
请参阅附图1,为本申请实施例提供的实施环境涉及的装置的示意图。实施环境涉及的装置包括:第一节点11、至少一个备份节点12以及至少一个非备份节点13。
第一节点11、至少一个备份节点12以及至少一个非备份节点13组成的网络节点集合为一个区块链网络。
本申请实施例中以网络节点集合中任一节点为第一节点为例进行说明。备份节点12和非备份节点13都是针对第一节点命名的。上述备份节点12为网络节点集合中任一节点。上述非备份节点13为网络节点集合中任一节点。本申请实施例中将不是第一节点的备份节点的节点称为非备份节点。
其中,第一节点11可以通过无线网络与备份节点12建立连接并通信;第一节点11可以通过无线网络与非备份节点13建立连接并通信。备份节点12可以通过无线网络与非备份节点13建立连接并通信。
图1仅仅是一种示例,实际应用中备份节点12、非备份节点13的数量可以按照实际需求设定。图1中示出了四个备份节点12、两个非备份节点13。
在一可选实现方式中,第一节点11可能作为其他节点(其他节点为网络节点集合中除第一节点外的任一节点)的备份节点。
本申请实施例提及的每个节点均属于上述网络节点集合。
第一节点11可以存储有第一区块链14,第一区块链包括至少一个区块,图1中示出的第一区块链14包括区块111、区块112,…,以及区块11N,其中,N为大于或等于1的正整数。第一区块链14中每一区块由表征第一节点11存储的电子资源的数目变化的变更信息组成。
第一节点11的每一个备份节点12也都存储有第一区块链14。但是,非备份节点13不存储第一区块链14。
可以理解的是,第一节点11、备份节点12、非备份节点13为网络节点集合中任一节点,这三者的身份是可以互换的。例如,若网络节点集合包括:节点A、节点B、节点C、节点D、节点E和节点F,假设,节点A的备份节点包括节点B、节点C以及节点D;节点B的备份节点包括节点A、节点C以及节点F,若将节点A作为第一节点11,那么,节点B、节点C以及节点D为备份节点12,节点E和节点F为非备份节点13;若将节点B作为第一节点11,那么,节点A、节点C以及节点F为备份节点12,节点D以及节点E为非备份节点13。
综上,网络节点集合中任一节点不包括目标全区块链,以任一节点为备份节点12为例,备份节点12仅存储由包括表征备份节点12存储的电子资源的数目变化的变更信息组成的区块链以及备份节点12作为其他节点(例如第一节点)的备份节点对应的区块链(例如,第一区块链)。因此,降低了对节点存储空间的要求。
本申请实施例中,目标全区块链包括网络节点集合中所有节点分别对应的表征电子资源的数目变化的变更信息。
可选的,若第一节点为第二节点的备份节点,那么,第一节点存储有第二区块链15,第二区块链包括至少一个区块,图1中示出的第二区块链15包括区块211、区块212、区块213,…,以及区块21M,其中,M为大于或等于1的正整数。
第二区块链15中每一区块由表征第二节点存储的电子资源的数目变化的变更信息组成。
可选的,第一节点还可以作为网络节点集合中一个或多个节点的备份节点,假设第一节点为网络节点集合中Q个节点的备份节点,那么,第一节点存储有Q+1个区块链,其中,Q个区块链是第一节点作为备份节点存储的Q个节点分别对应的区块链,1个区块链是第一节点自己的第一区块链。Q为大于或等于1的正整数。
其中,一个节点对应的区块链仅包括表征该节点存储的电子资源的数目变化的变更信息。
综上,在第一节点的存储空间中,不同区块链对应的节点不同,假设第二节点发起转移交易,第一节点作为验证节点,第一节点可以仅仅基于第二区块链进行验证,与第一节点基于目标全区块链进行验证相比,更加快速。
在一可选实施例中,网络节点集合包含的任一节点对应的电子设备可以为任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、平板电脑、掌上电脑、个人计算机、可穿戴设备、智能电视、摄像头等。
在一可选实施例中,网络节点集合包含的任一节点对应的电子设备可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者,是一个云计算服务中心。
结合上述实施环境下面对本申请实施例涉及的应用场景进行说明。
本申请实施例提供的技术方案可以应用于以下两种应用场景。
第一种应用场景:第一节点11检测到目标信息后,将基于所述目标信息得到的第一区块关联至第一区块链。第一节点11将所述第一区块分别发送至至少一个备份节点,以使得备份节点将第一区块关联至自身存储的第一区块链。
其中,目标信息表征所述第一节点具有的电子资源的数目发生变更。
在一可选实施例中,区块链网络还包括服务器,服务器可以与网络节点集合中每一节点进行通信。
在一可选实施例中,目标信息可以是由服务器检测到并发送至第一节点11;在一可选实施例中,目标信息可以是由网络节点集合包含的任一节点检测到并发送至第一节点;在一可选实施例中,目标信息可以是由第一节点自己检测到的。
在一可选实施例中,第一区块可以是由服务器生成,并发送至第一节点的;在一可选实施例中,第一区块可以是由网络节点集合包含的任一节点生成,并发送至第一节点的;在一可选实施例中,第一区块可以是由网络节点集合包含的任一节点生成,并通过服务器发送至第一节点的;在一可选实施例中,第一区块可以是由第一节点自己生成的。
可选的,上述服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者,是一个云计算服务中心。
第二种应用场景:服务器检测到目标信息后,将基于所述目标信息得到的第一区块分别发送至第一节点以及至少一个备份节点,以使得第一节点将第一区块关联至自身存储的第一区块链,备份节点将第一区块关联至自身存储的第一区块链。
在一可选实施例中,区块链网络还包括服务器,服务器可以与网络节点集合中每一节点进行通信。
可选的,上述服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者,是一个云计算服务中心。
在一可选实施例中,目标信息可以是由服务器检测到的;在一可选实施例中,目标信息可以是由网络节点集合包含的任一节点检测到,并发送至服务器的;在一可选实施例中,目标信息可以是由第一节点自己检测到,并发送至服务器的。
下面对本申请实施例提供的技术方案进行详细说明。
如图2所示,为本申请实施例提供的电子资源处理方法的一种实现方式的流程图,该方法可以应用于第一节点或服务器,该方法包括:
步骤S201:若检测到目标信息,将基于所述目标信息得到的第一区块关联至第一节点存储的第一区块链。
其中,所述目标信息表征所述第一节点具有的电子资源的数目发生变更;所述第一区块链由包含表征所述第一节点具有的电子资源的数目变化的变更信息的至少一个区块组成。
可选的,本申请实施例提供的电子资源处理方法可以应用于服务器,步骤“将基于所述目标信息得到的第一区块关联至第一节点存储的第一区块链”是指服务器将第一区块发送至第一节点,以使得第一区块关联至第一节点存储的第一区块链。
可选的,申请实施例提供的电子资源处理方法可以应用于第一节点,第一节点获得第一区块后,可以存储至自身的第一区块链。
在一可选实施例中,导致第一节点具有的电子资源的数目发生变更的情况有多种,本申请实施例提供但不限于以下五种情况。
第一种情况:若检测到所述第一节点发起的转移交易可执行,确定检测到所述目标信息。
本申请实施例提及的转移交易是指将发起转移交易的节点具有的电子资源转移至所述网络节点集合中另一节点的操作。
可选的,上述“发起转移交易的节点”与“另一节点”为不同的节点。
所述转移交易可执行表征至少第三预设数目个共识节点均验证所述转移交易的交易有效,所述第一预设数目个备份节点包括所述第三预设数目个共识节点。
在一可选实施例中,确定转移交易是否可执行的过程包括(本申请实施例将确定转移交易是否可行的过程成为共识算法):
步骤一:第一节点主动发起转移交易。
步骤二:服务器可以从第一节点对应的共识节点中选择一个节点作为验证节点。
该验证节点为验证转移交易是否有效的第一个节点。
步骤三:验证节点验证转移交易是否有效,若转移交易有效,则将所述转移交易发送至第一节点对应的共识节点。
在一可选实施例中,步骤三的实现方式可以为:验证节点验证转移交易是否有效,若转移交易有效,将验证结果反馈至服务器,服务器将所述转移交易发送至第一节点对应的共识节点;或者,验证节点验证转移交易是否有效,若转移交易有效,验证节点将所述转移交易发送至第一节点对应的共识节点。
步骤四:针对每一共识节点,共识节点验证转移交易是否有效,并将验证结果反馈至验证节点或服务器。
步骤五:验证节点或服务器检测到至少第三预设数目个共识节点均验证所述转移交易的操作有效,确定检测到转移交易可执行。
在一可选实施例中,验证节点或服务器可以将转移交易可执行的信息发送至第一节点,或者,将目标信息发送至第一节点。
在一可选实施例中,由于仅第一节点以及备份节点12存储有第一区块链,在进行验证转移交易是否有效的过程中,需要基于第一区块链进行验证,因此,第一节点对应的共识节点属于第一节点对应的备份节点。
在一可选实施例中,第一节点对应的第一预设数目个备份节点包括第一节点对应的所有共识节点。
可选的,上述第三预设数目可以为第一节点对应的所有共识节点的总数目;可选的,上述第三预设数目可以为大于或等于第一节点对应的所有共识节点的总数目的51%的任意正数。
在一可选实施例中,第一节点对应的共识节点可以不属于第一节点对应的备份节点,例如,第一节点对应的共识节点为非备份节点13,由于非备份节点13未存储第一区块链,所以非备份节点13在进行验证转移交易是否有效之前,需要从第一节点或第一预设数目个备份节点12中的至少一节点中获得第一区块链。
在一可选实施例中,为了防止第一节点的作弊行为,例如,更改第一区块链中的内容,非备份节点13可以从第一节点或第一预设数目个备份节点12中的多个节点中获得第一区块链,并进行比较,若一致,则基于第一区块链验证转移交易是否有效。
第二种情况:若检测到所述第一节点因执行第一事件被扣除电子资源,确定检测到所述目标信息。
在一可选实施例中,第一事件可以智能合约的形式表现。
在一可选实施例中,第一事件可以为第一节点主动发起转移交易;或者,第一节点举报任一节点有不当行为,或者,第一节点举报任一节点不当行为失败,或者,第一节点执行不当行为。
可选的,节点的不当行为包括但不限于:该节点伪造多个不同通信地址分别主动发起转移交易;或,在不同节点连续至少两次转移交易过程中,该节点均作为验证节点;或,在同一节点连续至少两次转移交易过程中,该节点均作为验证节点;或,节点存在作弊行为。
下面以第一节点为例,说明如何确定节点存在作弊行为:备份节点12可以每隔目标时间从第一节点中获得第一区块链,并与自身存储的第一区块链进行比较,若不一致,则第一节点存在作弊行为。
目标时间的具体值可以基于实际情况而定,这里不进行限定。
在一可选实施例中,第一节点执行不当行为可以是其他节点举报的,也可以是服务器检测到的。
在一可选实施例中,在第一节点执行举报任一节点有不当行为之前,需要先扣除相应数目的电子资源,以防止第一节点虚假举报。
在一可选实施例中,在第一节点执行举报任一节点有不当行为之前,不需要扣除相应数目的电子资源,但是若后期验证是虚假举报,即举报任一节点不当行为失败,则需要扣除相应数目的电子资源。
在一可选实施例中,第一节点主动发起转移交易,需要支付手续费,所以需要扣除相应数目的电子资源。
在一可选实施例中,第一节点因主动发起转移交易,被扣除的手续费,可以支付给验证节点。
在一可选实施例中,第一节点主动发起转移交易,可以无需支付手续费,给验证节点奖励的电子资源可以为服务器生成的电子资源。
在一可选实施例中,若第一节点执行不当行为,以扣除相应数目的电子资源的方式对第一节点进行惩罚。
第三种情况:若检测到所述第一节点因执行第二事件被分配电子资源,确定检测到所述目标信息。
在一可选实施例中,第二事件可以智能合约的形式表现。
在一可选实施例中,第二事件可以为第一节点加入网络节点集合,或,第一节点通过实名制认证,或,第一节点成功举报任一节点有不当行为。
可以理解的是,节点作为区块链网络的重要组成部分,承担着通讯、共识、存储等重要角色,节点的数量直接影响了区块链网络的稳定性,所以,在一可选实施例中,对于新加入区块链网络的节点,会分配相应数目的电子资源,以示奖励。
在一可选实施例中,若节点通过实名制认证,也可以为节点分配相应数目的电子资源。
可选的,上述实名制认证可以为基于身份证和/或生物特征信息进行实名制认证,可选的,上述实名制认证可以为KYC(Know Your Custome,了解你的客户)认证。
在一可选实施例中,若第一节点成功举报节点A有不当行为,可以扣除节点A的相应数目的电子资源,以对节点A进行惩罚,可选的,可以将扣除的节点A的相应数目的电子资源分配给第一节点,以对第一节点进行奖励。
在一可选实施例中,若第一节点成功举报节点A有不当行为,服务器可以生成相应数目的电子资源,并分配给第一节点。
第四种情况:若检测到所述第一节点因作为验证节点被分配电子资源,确定检测到所述目标信息;所述验证节点是指验证转移交易是否有效的第一个节点。
可选的,第四种情况涉及的转移交易可以是第一节点发起的,也可以是网络节点集合中除第一节点外的任一节点发起的。
在一可选实施例中,若其他节点A主动发起转移交易,第一节点被选作验证节点,即第一节点为验证节点,第一节点是节点A对应的多个共识节点中贡献最大的节点,可选的,本申请实施例中仅对作为验证节点的节点进行奖励。
在一可选实施例中,本申请实施例还可以对参与共识算法所有的共识节点都进行奖励,可选的,对参与共识算法所有的共识节点奖励的电子资源的数目相同;可选的,对验证节点奖励的电子资源的数目大于奖励其他共识节点的电子资源的数目。
在一可选实施例中,上述分配给第一节点的电子资源可以是服务器生成的,或者,上述分配给第一节点的电子资源可以是主动发起转移交易的节点A支付的手续费。
第五种情况:若检测到所述网络节点集合中任一节点将自身具有的电子资源转移至所述第一节点,确定检测到所述目标信息。
可以理解的是,网络节点集合中任一节点可以将自身存储的电子资源转移至第一节点。
步骤S202:将所述第一区块分别发送至第一预设数目个备份节点,以使得所述第一区块关联至所述第一预设数目个备份节点分别存储的所述第一区块链。
其中,所述第一预设数目个备份节点为网络节点集合包含的第二预设数目个节点中与所述第一节点的地理位置最近的所述第一预设数目个节点;所述第一预设数目小于所述第二预设数目;所述网络节点集合中除所述第一节点以及所述第一预设数目个备份节点外的节点不存储所述第一区块链;所述网络节点集合是由所述第一节点以及所述第一节点能够遍历到的各节点组成的。
可选的,第一预设数目为大于或等于1的正整数。
假设,网络节点集合包括:节点A、节点B、节点C以及节点D,假设,节点A的地理位置与节点B的地理位置的距离为距离1,节点A的地理位置与节点C的地理位置的距离为距离2,节点A的地理位置与节点D的地理位置的距离为距离3,节点B的地理位置与节点C的地理位置的距离为距离4,节点B的地理位置与节点D的地理位置的距离为距离5,节点C的地理位置与节点D的地理位置的距离为距离6。假设各距离的大小关系为:距离1<距离2<距离3<距离4<距离5<距离6;假设第一预设数目为2,那么,对于节点A而言,节点B和节点C为距离节点A的地理位置最近的两个节点。对于节点B而言,节点A和节点C为距离节点B的地理位置最近的两个节点;对于节点C而言,节点A与节点B为距离节点C的地理位置最近的两个节点;对于节点D而言,节点A与节点B为距离节点D的地理位置最近的两个节点。
本申请实施例提供了一种电子资源处理方法,针对于区块链网络中任一节点而言,本申请实施例中将该节点称为第一节点,若检测到目标信息,将基于目标信息得到的第一区块关联至第一节点存储的第一区块链;目标信息表征第一节点具有的电子资源的数目发生变更;第一区块链由包含表征所述第一节点具有的电子资源的数目变化的变更信息的至少一个区块组成,即第一区块链不包含与第一节点不相关的电子资源的数目发生变更的信息;将第一区块分别发送至第一预设数目个备份节点,以使得第一区块关联至第一预设数目个备份节点分别存储的第一区块链。每个备份节点都存储有第一区块链,网络节点集合中除第一节点以及第一预设数目个备份节点外的节点不存储第一区块链,也就是仅仅第一节点以及其备份节点存储第一区块链,即仅网络节点集合中部分节点存储第一区块链,即对于网络节点集合中任一节点而言,不存储网络节点集合包含的所有节点分别对应的包含电子资源的数目变化的变更信息,仅存储网络节点集合包含的部分节点分别对应的包含电子资源的数目变化的变更信息,从而降低了对作为节点的电子设备的存储空间的要求。
可以理解的是,第一节点也可以作为网络节点集合中其他节点(例如第二节点)的备份节点,基于此,上述电子资源处理方法实施例中还可以包括以下步骤:若获得第二区块,将所述第二区块关联至所述第一节点存储的第二区块链。
其中,所述第二区块包含表征第二节点具有的电子资源的数目变化的变更信息;其中,所述第二区块链由包含表征所述第二节点具有的电子资源的数目变化的变更信息的至少一个区块组成;所述第二节点属于所述网络节点集合,所述第一节点为所述第二节点的备份节点;所述第一区块链与所述第二区块链不同。
可选的,上述方法可以应用于第一节点或服务器,若应用于服务器,步骤“将所述第二区块关联至所述第一节点存储的第二区块链”是指服务器将第二区块发送至第一节点。若应用于第一节点,步骤“将所述第二区块关联至所述第一节点存储的第二区块链”是指第一节点自己将第二区块关联至第二区块链。
在第一节点的存储空间中,不同区块链对应的节点不同,假设第二节点发起转移交易,第一节点作为验证节点,第一节点可以仅仅基于第二区块链进行验证,与第一节点基于目标全区块链进行验证相比,更加快速。
在一可选实施例中,步骤S202的实现方式有多种,本申请实施例提供但不限于以下三种。
第一种实现方式:从所述网络节点集合中确定所述第一预设数目个备份节点;将所述第一区块分别发送至所述第一预设数目个备份节点。
在第一种实现方式中,在每次执行步骤将所述第一区块分别发送至所述第一预设数目个备份节点之前,都需要执行步骤从所述网络节点集合中确定所述第一预设数目个备份节点。
由于执行步骤从所述网络节点集合中确定所述第一预设数目个备份节点的时间较长,第一种实现方式增加了电子资源处理方法的执行时间。
第二种实现方式:将所述第一区块分别发送至预先得到的所述第一预设数目个备份节点。
在第二种实现方式中,可以预先得到第一预设数目个备份节点,在第二种实现方式中可以仅执行一次得到第一预设数目个备份节点步骤。相比对第一种实现方式缩短了电子资源处理方法的执行时间。
可以理解的是,由于可能有节点退出网络节点集合即区块链网络,也可能有新的节点加入网络节点集合即区块链网络,若仅执行一次得到第一预设数目个备份节点步骤,若有备份节点退出网络节点集合,那么,就无法维持第一预设数目个备份节点存储第一节点的第一区块链。
可以通过以下方式实现维持第一预设数目个备份节点存储第一节点的第一区块链。
第三种实现方式:每隔第一预设时间从所述网络节点集合中确定所述第一预设数目个备份节点;将所述第一区块分别发送至预先得到的所述第一预设数目个备份节点。
步骤“每隔第一预设时间从所述网络节点集合中确定所述第一预设数目个备份节点”可以在步骤S201之前执行,也可以与步骤S201同时执行;可以在步骤S202之前执行,也可以与步骤S202同时执行,也可以在步骤S202之后执行。
本申请实施例中执行“从所述网络节点集合中确定所述第一预设数目个备份节点”的频次可能小于或等于或大于执行步骤S201至步骤S202的频次。
第一预设时间可以基于实际情况而定,本申请实施例对此不进行限定。
在一可选实施例中,“从所述网络节点集合中确定所述第一预设数目个备份节点”的实现方式有多种,本申请实施例提供但不限于以下几种。
第一种实现方式:获取所述网络节点集合包含的各节点分别对应的地理位置;基于所述第一节点的地理位置分别与各节点的地理位置的距离,确定地理位置距离第一节点最近的第一预设数目个备份节点。
第二种实现方式包括步骤一至步骤五。
步骤一:从所述网络节点集合中,确定距离所述第一节点的地理位置最近的至少一个第三节点。
步骤二:将所述至少一个第三节点确定为备份节点。
步骤三:针对每一第i节点,从所述网络节点集合中,确定距离所述第i节点的地理位置最近的第i+1节点;以得到至少一个第i节点对应的第i+1节点,i为大于或等于3的正整数。
步骤四:将所述至少一个第i节点对应的第i+1节点确定为备份节点。
步骤五:若已得到的备份节点的数目小于第一预设数目,将i+1赋值给i,返回步骤三。
上述“将i+1赋值给i”是为了描述方便,并不是限定本申请实施例一定包含这个步骤。
为了本领域技术人员更加理解“从所述网络节点集合中确定所述第一预设数目个备份节点”的第二种实现方式,下面结合DHT((Distributed Hash Table,分布式哈希表)分布式网络进行说明。
本申请实施例中第二种实现方式可以通过DHT分布式网络中的Chord算法,或,CAN算法,或,Pastry算法,或,Kademlia算法实现。下面以Chord算法为例进行说明。
本申请实施例中称Chord算法涉及的Chord环为带弦环。如图3所示,为本申请实施例提供的网络节点集合中各节点在带弦环中的布局图。
可选的,网络节点集合包括的第二预设数目个节点按照节点标识由小到大顺时针布局在带弦环31中(或者,第二预设数目个节点按照节点标识由大到小顺时针布局在带弦环中)。对于带弦环31中布局的任一节点,所述节点的直接前序节点为所述带弦环中以所述节点为起点逆时针的第一个节点;所述节点的直接后继节点为所述带弦环中以所述节点为起点顺时针的第一个节点;所述节点的节点标识是基于所述节点的通信地址得到的。
在一可选实施例中,带弦环31可以为一个大小为2m的环,m的取值可以为任意正整数,可选的,m=160-1。
在一可选实施例中,节点的节点标识是基于所述节点的通信地址得到的。
可选的,通信地址可以为IP地址。可选的,节点的节点标识可以是将通信地址进行哈希运算得到的。不同节点的节点标识不同。
由于节点的节点标识是基于通信地址得到的,通信地址一定程度上可以表征节点的地理位置,本申请实施例中,一个节点的直接后继节点以及直接前序节点为距离所述节点地理位置最近的两个节点。
假设网络节点集合包括9个节点,这9个节点的节点标识分别为:节点Node1、节点Node8、节点Node14、节点Node21、节点Node32、节点Node38、节点Node42、节点Node48、节点Node51、节点Node56。
对于节点Node1而言,节点Node1的直接前序节点为节点Node56,直接后继节点为节点Node8;对于节点Node8而言,节点Node8的直接前序节点为节点Node1,直接后继节点为Node14;对于节点Node56而言,节点Node56的直接前序节点为节点Node51,直接后继节点为节点Node1。
如图4所示,为本申请实施例提供的从所述网络节点集合中确定所述第一预设数目个备份节点的一种实现方式的流程图,该方法包括:
步骤S401:获取所述第一节点的直接前序节点k以及直接后继节点j。
其中,k为大于或等于1的正整数,j为大于或等于1的正整数。
在“从所述网络节点集合中确定所述第一预设数目个备份节点”的第二种实现方式中,至少一个第三节点包括两个第三节点,其中,一个第三节点为所述第一节点的直接前序节点,另一个第三节点为所述第一节点的直接后继节点。
假设第三节点为节点Node32,第三节点的直接前序节点为节点Node21,直接后继节点为节点Node38。
在一可选实施例中,步骤S401的实现方式有多种,本申请实施例提供但不限于以下几种。
第一种:第一节点存储的路由表中记录的第一节点的直接前序节点和直接后继节点均未改变。仍以图3为例,假设第一节点为节点Node42,第一节点存储的路由表中,第一节点的直接前序节点为节点Node38,直接后继节点为节点Node48。步骤S401包括:
步骤A1:第一节点基于路由表得到直接前序节点,假设为节点Node38。
步骤A2:第一节点向节点Node38发送其直接后继节点是不是第一节点。
步骤A3:若节点Node38反馈的其直接后继节点为第一节点,确定第一节点的直接前序节点为节点Node38。
步骤A4:第一节点基于路由表得到直接后继节点,假设为节点Node48。
步骤A5:第一节点向节点Node48发送其直接前序节点是不是第一节点。
步骤A6:若节点Node48反馈的其直接前序节点为第一节点,确定第一节点的直接后继节点为节点Node48。
步骤A1至步骤A3,与步骤A4至步骤A5是并列的方案,没有执行顺序的限制。
第二种:第一节点存储的路由表中,记录的第一节点的直接前序节点和/或直接后继节点存在退出网络节点集合的情况。
下面以第一节点存储的路由表中记录的第一节点的直接后继节点退出网络节点集合为例进行说明。假设第一节点为节点Node8,第一节点存储的路由表中,第一节点的直接后继节点为节点Node14,假设节点Node14退出了网络节点集合。可选的,步骤S401包括:
步骤B1:第一节点基于路由表得到直接后继节点,假设直接后继节点为节点Node14。
仍以图3为例,第一节点的路由表可以如表1所示。
表1节点Node8的路由表
<![CDATA[Node8+2<sup>0</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>1</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>2</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>3</sup>]]> |
Node21 |
<![CDATA[Node8+2<sup>4</sup>]]> |
Node32 |
<![CDATA[Node8+2<sup>5</sup>]]> |
Node42 |
步骤B2:第一节点向节点Node14询问其直接前序节点是不是自己,若未接收到节点Node14的回复,确定节点Node14已退出网络节点集合。
步骤B3:第一节点基于路由表得到除节点Node14外距离自身最近的后继节点Node21。
本申请实施例中,将以第一节点为起点逆时针方向的第一个节点称为第一节点的直接前序节点,称第二个节点或第二个节点以后的节点为第一节点的前序节点。
本申请实施例中,将以第一节点为起点顺时针方向的第一个节点称为第一节点的直接后继节点,称第二个节点或第二个节点以后的节点为第一节点的后继节点。
步骤B4:第一节点向节点Node21询问其直接前序节点是不是自己,若接收到节点Node21反馈的其直接前序节点为节点Node14(或者,节点Node21反馈的其直接后前序点为第一节点),那么确定节点Node21为第一节点的直接后继节点。
可选的,若节点Node21反馈的其直接前序节点为节点Node14,第一节点可以向节点Node21发送通知,以使得节点Node21将自身存储的路由表中的直接前序节点更变为节点Node8。
可选的,第一节点更新自己的路由表。
下面以第一节点存储的路由表中记录的第一节点的直接前序节点退出网络节点集合为例进行说明。第一节点为节点Node8,第一节点存储的路由表中第一节点的直接前序节点为节点Node1,假设节点Node1退出网络节点集合,步骤S401包括:
步骤C1:第一节点基于路由表得到直接前序节点,假设直接前序节点为节点Node1。
仍以图3为例,第一节点存储的路由表可以如表2所示。第一节点存储的路由表包括:第一节点的至少一个前序节点以及至少一个后继节点。
表2节点Node8的路由表
<![CDATA[Node8+2<sup>0</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>1</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>2</sup>]]> |
Node14 |
<![CDATA[Node8+2<sup>3</sup>]]> |
Node21 |
<![CDATA[Node8+2<sup>4</sup>]]> |
Node32 |
<![CDATA[Node8+2<sup>5</sup>]]> |
Node42 |
<![CDATA[Node8-2<sup>0</sup>]]> |
Node8 |
<![CDATA[Node8-2<sup>3</sup>]]> |
Node1 |
<![CDATA[Node8-2<sup>5</sup>]]> |
Node56 |
步骤C2:第一节点向节点Node1询问其直接后继节点是不是自己,若未接收到节点Node1的回复,确定节点Node1已退出网络节点集合。
步骤C3:第一节点基于路由表得到除节点Node1外距离自身最近的前序节点Node56。
步骤C4:第一节点向节点Node56询问其直接后继节点是不是自己,若接收到节点Node56反馈的其直接后继节点为节点Node1(或者,节点Node56反馈的其直接后继节点为第一节点),那么确定节点Node56为第一节点的直接前序节点。
可选的,若节点Node56反馈的其直接后继节点为节点Node1,第一节点可以向节点Node56发送通知,以使得节点Node56将自身存储的路由表中的直接后继节点变更为节点Node8。
可选的,第一节点更新自己的路由表。
第三种:有新的节点插入至第一节点和第一节点存储的路由表中的直接前序节点之间,和/或,有新的节点插入至第一节点和第一节点存储的路由表中的直接后继节点之间。下面以有新的节点插入至第一节点和第一节点存储的路由表中的直接后继节点之间为例进行说明。
假设第一节点为节点Node21,第一节点存储的路由表中第一节点的直接后继节点为节点Node32,若插入的新的节点为节点Node26。
在新的节点Node26插入至网络节点集合的过程中,节点Node26会通知其直接后继节点即节点Node32,节点Node32得到通知后,节点Node32会将自身存储的路由表中直接前序节点由节点Node21变更为节点Node26。
节点Node26修改自己存储的路由表,将路由表中直接后继节点设置为节点Node32。
基于上述内容,步骤S401包括:
步骤D1:第一节点基于路由表获得其直接后继节点,例如节点Node32。
步骤D2:第一节点询问节点Node32的直接前序节点是否为第一节点。
步骤D3:若节点Node32反馈其直接前序节点为节点Node26,第一节点将自身存储的路由表中的直接后继节点由节点Node32变更为节点Node26,确定节点Node26为自己的直接后继节点。
步骤D4:第一节点通知节点Node26,以使得节点Node26将第一节点设置为节点Node26的直接前序节点。
下面以有新的节点插入至第一节点和第一节点存储的路由表中的直接前序节点之间为例进行说明。
假设第一节点为节点Node32,新的节点为节点Node26,假设,第一节点存储的路由表中记录的直接前序节点为节点Node21。由于节点Node26在插入第一节点和第一节点存储的路由表中的直接前序节点Node21之间的过程中,会通知其直接后续节点Node32,以使得节点Node32将自身存储的路由表中的直接前序节点更新为节点Node26。
所以若有新的节点插入至第一节点和第一节点存储的路由表中的直接前序节点之间,那么,可以直接基于第一节点的路由表得到第一节点的直接前序节点,可参见步骤A1至步骤A3,这里不再赘述。
步骤S402:将所述直接前序节点k确定为前序备份节点,将直接后继节点j确定为后继备份节点。
步骤S403:获取直接前序节点k的直接前序节点k+1;将所述直接前序节点k+1确定为前序备份节点。
直接前序节点Node21的直接前序节点为节点Node14。直接后继节点Node38的直接后继节点为节点Node42。
可以理解的是,直接前序节点k存储的路由表中记录的直接前序节点k的直接前序节点A可能存在退出的情况,或者,有新的节点插入至直接前序节点k与直接前序节点A之间的情况,针对这两种情况,可以参见针对步骤S401的描述,这里不再赘述。
步骤S404:若已经得到的前序备份节点的数目小于第一数值,执行k+1赋值给k,返回步骤S403,若得到的前序备份节点的数目等于第一数值,结束。
步骤S405:获取直接后继节点j的直接后继节点j+1;将所述直接后继节点j+1确定为后继备份节点。
可以理解的是,直接后继节点j存储的路由表中记录的直接后继节点j的直接后继节点B可能存在退出的情况,或者,有新的节点插入至直接后继节点j与直接后继节点B之间的情况,针对这两种情况,可以参见针对步骤S401的描述,这里不再赘述。
可选的,本申请实施例中,备份节点包括前序备份节点以及后继备份节点。
可选的,本申请实施例中,备份节点包括前序备份节点。
可选的,本申请实施例中,备份节点包括后继备份节点。
步骤S406:若已经得到的后继备份节点的数目小于第二数值,执行j+1赋值给j,返回步骤S405,若得到的后继备份节点的数目等于第二数值,结束。
其中,第一数值与第二数值之和等于第一预设数目,可选的,第一数值可以等于第二数值,或者,第一数值大于第二数值,或者,第一数值小于第二数值。
步骤S404与步骤S405没有先后执行顺序。
在一可选实施例中,若存在新插入至网络节点集合的节点作为第一节点的备份节点,或者,若存在由非备份节点转换至备份节点的节点,假设统称为新目标节点,那么,需要第一节点或任一备份节点将第一区块链发送至新目标节点;或者,服务器将第一区块链发送至新目标节点。
在一可选实施例中,节点存储的电子资源的数目发生变更的情况可能发生在一种或多种应用场景中,本申请实施例中,在不同应用场景下流通的电子资源具有的标识不同;同一应用场景下流通的电子资源具有的标识相同。
可选的,针对每一应用场景,将具有应用场景对应的标识的电子资源称为该应用场景的原生电子资源,例如原生Token。可选的,将可以在不同应用场景进行流通的电子资源称为非原生电子资源,例如非原生Token。
在一可选实施例中,网络节点集合中任一节点可以包括非原生电子资源和/或至少一个应用场景对应的原生电子资源。
在一可选实施例中,可以基于生成原生电子资源的难易程度,和/或,得到奖励原生电子资源的难易程度,和/或,使用原生电子资源的方式对应用场景进行划分。
在一可选实施例中,可以被划分为支付应用场景、内容分发应用场景等等。
其中,支付应用场景是指网络节点集合包含的各节点可以基于互联网进行网络支付的应用场景。
内容分发应用场景是指网络节点集合包含的各节点可以在网络,例如微博或浏览器上发表内容(例如,文字、图片或视频)的应用场景。
在一可选实施例中,若不同应用场景下的原生电子资源可以通用,或者,并不设置应用场景这一概念,那么第一区块包括的信息包括:表征电子资源的来源的第一信息、表征电子资源的去向的第二信息、表征电子资源的转移数目的第三信息。
在一可选实施例中,若不同应用场景下的原生电子资源不可以通用,那么,第一区块存储的信息包括:表征电子资源的来源的第一信息、与所述第一信息对应的应用场景的第一标识、表征电子资源的去向的第二信息、与所述第二信息对应的应用场景的第二标识、表征电子资源的转移数目的第三信息。
本申请实施例中称电子资源的数目发生一次变更为一次交易。
在一可选实施例中,第二信息可以为接收电子资源的节点对应的账号。
在一可选实施例中,电子资源的来源可以有几下几种情况:第一种情况,执行第二事件被奖励电子资源,服务器或其他节点(可以参见对第二事件的说明确定其他节点为哪个节点,这里不再赘述)作为电子资源的来源;第二种情况,作为验证节点被奖励电子资源,服务器或主动发起转移交易的节点作为电子资源的来源;第三种情况,自己主动发起转移交易时,自身作为电子资源的来源;第四种情况,其他节点将自身存储的电子资源转移给第一节点,其他节点作为电子资源的来源;第五种,执行第一事件被扣除电子资源,自身作为电子资源的来源。
在一可选实施例中,电子资源的去向可以有以下几种情况:第一种情况,执行第二事件被奖励电子资源,自身作为电子资源的去向;第二种情况,作为验证节点被奖励电子资源,自身作为电子资源的去向;第三种情况,自己主动发起转移交易时,接收电子资源的节点为电子资源的去向;第四种情况,其他节点将自身存储的电子资源转移给第一节点,第一节点作为电子资源的去向;第五种情况,执行第一事件被扣除电子资源,服务器或其他节点(可以参见对第一事件的说明确定其他节点为哪个节点,这里不再赘述)作为电子资源的去向。
在一可选实施例中,若交易不是将一个应用场景的电子资源兑换成另一应用场景的电子资源的兑换交易,那么,交易包括的第一标识与第二标识相同。若交易是兑换交易,那么,交易包括的第一标识与第二标识不相同。
其中,第一标识是指第一信息对应的电子资源具有的标识,第二标识是指第二信息对应的电子资源具有的标识。
在一可选实施例中,若交易不是兑换交易,那么表征电子资源的转移数目的第三信息即为电子资源的转移数目。若交易为兑换交易,那么表征电子资源的转移数目的第三信息包括:第一信息对应的兑换数目以及第二信息对应的兑换所得数目。
本申请实施例中,将第一信息对应的应用场景的标识称为第一标识,将第二信息对应的应用场景的标识称为第二标识,并不是限定第一标识是哪个具体标识,也不限定第二标识是哪个具体标识。
本申请实施例中,第一节点为网络节点集合中任一节点,第一区块为第一区块链中任一区块。那么,第一区块存储的信息代表了网络节点集合中任一节点存储的任一区块链中任一区块存储的信息。
下面结合具体例子对第一区块存储的信息进行说明。
可选的,第一区块存储的信息包括:txnIn、txnOut、timestamp;其中,txnIn包括第一信息,txnOut包括第二信息以及第三信息,timestamp是指此次交易的交易时间。
可选的,txnIn还包括解锁脚本;txnOut还包括锁定脚本。
上述解锁脚本用于通过私钥解锁txnIn,并使用txnIn作为此次交易的输入。
上述锁定脚本对应解锁脚本,在锁定脚本中,通过私钥对此次交易的输出进行锁定。当此次交易的输出作为下一次交易的输入时,需要通过私钥来解锁,即通过上述解锁脚本来实现。
在一可选实施例中,第一区块存储的信息还包括:txnHash。
可选的,txnHash是第一区块的前一区块包含的txnHash、所述第一区块存储的txnIn、所述第一区块存储的txnOut以及所述第一区块存储的timestamp进行哈希运算得到的。
可选的,若不同应用场景下的原生电子资源不可以通用,txnIn还包括第一标识;txnOut还包括第二标识。
为了本领域技术人员更加理解本申请实施例提供的上述任一区块存储的信息的结构,下面举例进行说明。
如图5所示,为本申请实施例提供的区块存储的信息的一种结构示意图。
图5是以若不同应用场景下的原生电子资源可以通用,或者,并不设置应用场景这一概念为前提的。图5未示出timestamp和txnHash。
图5示出的3个交易表格可以是存储在一个区块中,或者,3个交易表格分别存储在不同的区块中,或者,3个交易表格存储在两个区块中,本申请实施例对此不作限定。这里示出3个交易表格仅是为了能够对本申请实施例提供的区块存储的信息进行详细说明。
图5最上方的表格是奖励交易#1001,假设小明基于相应节点执行第二事件得到5个电子资源,第一信息为执行第二事件所得;第二信息为小明的账号;第三信息为5个电子资源。
图5中间的表格是普通交易#2001,小明转账2个电子资源给小张,剩下3个转到自己账户。那么,对于小张而言,第一信息为#1001,第二信息为小张的账号;第三信息为2个电子资源;对于小明而言,第一信息为#1001,第二信息为小明的账号;第三信息为3个电子资源。
图5最下方的表格是普通交易#3001,小明和小张各转两个电子资源给小红,小红的账户得到4个电子资源,小明的账户还剩1个电子资源。那么,对于小红的账户而言,第一信息为#2001(1)以及#2001(2);第二信息为小红的账号;第三信息为4个电子资源;对于小明的账户而言,第一信息为#2001(2),第二信息为小明的账号,第三信息为1个电子资源。
其中,#2001(1)是指交易#2001的第一项;#2001(2)是指交易#2001的第二项。
如图6所示,为本申请实施例提供的区块存储的信息的另一种结构示意图。
图6是以不同应用场景下的原生电子资源不可以通用为前提的。图6未示出timestamp和txnHash。
图6示出的3个交易表格可以是存储在一个区块中,或者,3个交易表格分别存储在不同的区块中,或者,3个交易表格存储在两个区块中,本申请实施例对此不作限定。这里示出3个交易表格仅是为了能够对本申请实施例提供的区块存储的信息进行详细说明。
图6最上方的表格是奖励交易#4001,假设在应用场景A(对应的标识为标识A)中小明基于相应节点执行第二事件得到5个电子资源,第一信息为执行第二事件所得,第一信息对应的第一标识为标识A;第二信息为小明的账号,第二信息对应的第二标识为标识A;第三信息即为转移数目为5个电子资源。
图6中间的表格是兑换交易#5001,小明将应用场景A(对应的标识为标识A)的3个电子资源兑换成应用场景B(对应的标识为标识B)的1个电子资源。那么,第一信息为#4001,第一信息对应的兑换数目为3个电子资源,所述第一信息对应的第一标识为标识A,第二信息为小明的账户,第二信息对应的兑换所得数目为1个电子资源,所述第二信息对应的第二标识为标识B,即兑换所得的这一个电子资源具有标识B。
小明将剩下的应用场景A的2个电子资源转到自己账户,那么,第一信息为#4001,第一信息对应的第一标识为标识A;第二信息为小明的账号,第二信息对应的第二标识为标识A;第三信息即为转移数目为2个电子资源。
图6最下方的表格是普通交易#6001,小明将应用场景B的1个电子资源转移给小红。那么,第一信息为#5001(1),第一信息对应的第一标识为标识B,第二信息为小红的账户,第二信息对应的第二标识为标识B,第三信息即为转移数目为1个电子资源。
小明将应用场景A对应的1个电子资源转移给小张,那么,第一信息为#5001(2),第一信息对应的第一标识为标识A,第二信息为小张的账户,第二信息对应的第二标识为标识A;第三信息即为转移数目为1个电子资源。
小明的账户还剩下应用场景A的1个电子资源。那么。第一信息为#5001(2),第一信息对应的第一标识为标识A,第二信息为小明的账户,第二信息对应的第二标识为标识A;第三信息即为转移数目为1个电子资源。
结合上面区块存储信息的结构,下面对节点验证转移交易是否可行的过程进行说明。假设第二节点主动发起将自身存储的第三数值的具有第一标识的电子资源转移至第四节点的转移交易,第一节点作为验证节点。
步骤一:从所述第二节点对应的第二区块链中确定出目标第二信息,其中目标第二信息对应的应用场景的标识为第一标识且目标第二信息为所述第二节点对应的账号。
步骤二:基于第二节点对应的解锁脚本解锁目标第二信息,若解锁成功,执行步骤三,若解锁失败,确定该转移交易不可执行。
步骤三:确定所述第二节点存储的具有所述第一标识的电子资源的数目是否大于或等于所述第三数值,若是,执行步骤四,若否,确定该转移交易不可执行。
在一可选实施例中,若主动发起转移交易,需要支付手续费,假设第二节点需要支付的手续费为第四数值个电子资源,那么,步骤三可以包括:
确定所述第二节点存储的具有所述第一标识的电子资源的数目是否大于或等于所述第三数值与第四数值之和,若是,确定转移交易有效,执行步骤四,若否,确定该转移交易不可执行。
假设第二节点对应小明的账号,第四节点对应小张的账号,第三数值为1个电子资源。以图6最上方表格为例。由于小明的账号存储有具有第一标识的5个电子资源,假设第四数值为1,由于5>1+1,因此,可以执行步骤四。
步骤四:将所述第二节点主动发起的转移交易发送至第二节点对应的共识节点。
步骤五:若检测到第三预设数目个共识节点的验证结果均为转移交易有效,确定转移交易可执行。
在一可选实施例中,若第一节点执行第一事件需要扣除相应数目的电子资源,那么,在第一节点执行第一事件之前,需要执行步骤一至步骤二(该方法可以应用于服务器或第一节点):
步骤一:若检测到表征所述第一节点执行所述第一事件的第一请求,确定所述第一节点存储的具有目标标识的电子资源的资源数目;所述目标标识为所述第一事件所属应用场景对应的标识。
步骤二:若所述资源数目大于或等于第三预设数目,执行所述第一事件;所述第三预设数目为执行所述第一事件需要被扣除的电子资源的数目。
目标标识可以为任一应用场景的标识。
综上,在执行第一事件之前,先检测第一节点是否具有执行第一事件的能力,即执行第一事件需要消耗一定量的电子资源。
在一可选实施例中,不同应用场景之间的电子资源可以进行兑换,如图6所示的中间表格。在一可选实施例中,不同应用场景之间基于预设兑换规则进行电子资源的兑换。下面以两个应用场景为例进行说明,兑换方法(该方法可以应用于服务器或第一节点)包括以下步骤:基于预设兑换规则,将第一数目的具有第一目标标识的电子资源兑换成第二数目的具有第二目标标识的电子资源;其中,所述第一目标标识与所述第二目标标识不同。
其中,第一目标标识可以为任意应用场景对应的标识;第二目标标识可以为任意应用场景对应的标识。
在一可选实施例中,对于任意两个应用场景的预设兑换规则,可以基于两个应用场景得到奖励的电子资源的难易程度设置。
可选的,若应用场景A得到奖励的电子资源较应用场景B而言难。假设预设兑换规则包括兑换比例,假设应用场景A与应用场景B的兑换比例AB=应用场景A的一个电子资源/应用场景B的一个电子资源,那么,兑换比例AB大于1,即应用场景A的一个电子资源可以兑换得到应用场景B的一个以上的电子资源。
在一可选实施例中,本申请实施例提供的上述兑换方法可以发生在以下几种情况中。
第一种情况:若节点执行第一事件时,存储的具有目标标识的电子资源的资源数目小于第三预设数目,那么,可以执行将其他应用场景的电子资源转换至第一事件对应的应用场景的电子资源的兑换方法,以使得可以执行第一事件。
第二种情况:节点对应的用户想要存储某个应用场景的电子资源,可以执行上述兑换方法。
在一可选实施例中,上述兑换方法需要经过节点对应的用户同意。
在一可选实施例中,上述兑换方法可以是由服务器强制执行。例如,若第一事件为第一节点在应用场景A中执行不当行为,服务器需要扣除第一节点相应数目的具有标识A的电子资源以示惩罚,但是第一节点存储的具有标识A的电子资源的数目小于需要被扣除的数目,或者,第一节点未存储有具有标识A的电子资源,服务器可以强制将第一节点存储的其他应用场景,例如应用场景B的电子资源兑换成需要被扣除的数目的具有标识A的电子资源。
在一可选实施例中,任意两个应用场景对应的预设兑换规则包含的兑换比例可以随着实际情况改变。
在一可选实施例中,任意两个应用场景对应的预设兑换规则包含的兑换比例是固定不变的。
可以理解的是,有些节点为了获得大量的电子资源奖励,可能会伪造多个通信地址发起转移交易,例如,女巫攻击,为此,本申请实施例提供了以下方法。下面方法可以应用于第一节点或服务器。该方法包括:
步骤一:若检测到当前时间所述第一节点发起转移交易,获取在所述当前时间所属的第二预设时间内基于第一身份信息已发起的转移交易的转移次数;所述第一身份信息为所述第一节点执行实名制认证后的身份信息。
可选的,第二预设时间可以为1个小时,或,1分钟,或1秒钟,第二预设时间可基于实际情况而定,这里不进行限定。
下面以第二预设时间为1个小时为例进行说明,假设本次第二预设时间的初始时刻为2020年6月27日14点00分,那么,第二预设时间的结束时间为2020年6月27日15点00分。假设当前时间为2020年6月27日14点30分,那么,当前时间属于初始时刻为2020年6月27日14点00分,结束时间为2020年6月27日15点00分的第二预设时间。
可以理解的是,随着时间的推移,当前时间在不断发生变化,若超过此次第二预设时间的结束时刻,例如,2020年6月27日15点00分,那么,进入下一第二预设时间,下一第二预设时间可以为:初始时刻为2020年6月27日15点00分,结束时刻为2020年6月27日16点00分。
步骤二:若所述转移次数大于或等于第三预设数目,禁止所述第一节点执行所述转移交易。
在一可选实施例中,实名制认证可以为KYC认证。每个节点在发起转移交易之前可以强制让节点进行实名制认证,这样可以监测各身份信息发起转移交易的次数;对于多个转移交易而言,无论其通信地址是什么,只要身份信息相同,就认为是同一身份信息发起的转移交易。
可选的,本申请实施例中,对于多个转移交易而言,若通信地址不同,但是身份信息相同,就认为是同一身份信息伪造多个通信地址发起转移交易。
本申请实施例中,通过限制通过同一身份信息在第二预设时间内发起转移交易的次数的方式,限制女巫攻击。
可以理解的是,有些节点为了获得大量的电子资源奖励,可能会构造海量的转移交易,例如,Ddos(Distributed denial of service attack,分布式拒绝服务攻击)攻击。在一可选实施例中,服务器可以限定同一节点不能连续两次作为转移交易的验证节点。在一可选实施例中,服务器可以限制第三预设时间内生成电子资源的数量的方式防止Ddos攻击。即第三预设时间内发起转移交易的次数越多,单笔转移交易对应的奖励越少。具体方法(该方法应用于服务器)可以包括:
步骤一:若检测到当前时间所述第一节点作为验证节点,确定所述当前时间所属的第三预设时间内已生成的电子资源的第三数目。
可选的,第三预设时间可以为1个小时,或,30分钟,或,1分钟,或1秒钟,第三预设时间可基于实际情况而定,这里不进行限定。
下面以第三预设时间为1个小时为例进行说明,假设本次第三预设时间的初始时刻为2020年6月27日14点00分,那么,第三预设时间的结束时间为2020年6月27日15点00分。假设当前时间为2020年6月27日14点30分,那么,当前时间属于初始时刻为2020年6月27日14点00分,结束时间为2020年6月27日15点00分的第三预设时间。
可以理解的是,随着时间的推移,当前时间在不断发生变化,若超过此次第三预设时间的结束时刻,例如,2020年6月27日15点00分,那么,进入下一第三预设时间,下一第三预设时间可以为:初始时刻为2020年6月27日15点00分,结束时刻为2020年6月27日16点00分。
步骤二:若所述第三数目小于第四预设数目,生成第四数目的电子资源,所述第三数目与所述第四数目之和小于或等于所述第四预设数目。
步骤三:若所述第三数目等于所述第四预设数目,禁止生成电子资源。
可选的,第四预设数目为第三预设时间内,能够生成的电子资源的最大数目。
在一可选实施例中,上述方法还包括:
步骤四:为在所述第三预设时间内作为验证节点的至少一个节点分配所述第五数目个电子资源,所述第五数目为在所述第三预设时间内生成的电子资源的总数目;所述第五数目小于或等于所述第四预设数目,所述至少一个节点包括所述第一节点。
可选的,对于每一转移交易,仅具有一个验证节点;上述步骤四提及的至少一个节点分别作为验证节点,是指至少一个节点在不同转移交易中作为验证节点。
在一可选实施例中,可以为作为验证节点至少一个节点平均分配第五数目个电子资源,假设第三预设时间内有P个节点作为验证节点,那么,每个节点得到的奖励为第五数目/P。
在一可选实施例中,可以基于作为验证节点的节点在第四预设时间内的活跃度,确定为该节点分配的电子资源的数目。
可选的,第四预设时间可以为1年,或两年,或,1个月,或2个月等等,本申请实施例并不对第四预设时间的具体值进行限定。
可选的,作为验证节点的节点在第四预设时间内活跃度越高,得到的奖励越多。
可选的,一个节点在第四预设时间内的活跃度可以包括:在第四预设时间内主动发起转移交易的次数,和/或,在第四预设时间内作为验证节点的次数。
在一可选实施例中,在以下情况中,服务器可能会生成电子资源。
第一种情况:若检测到所述第一节点执行第二事件,生成电子资源。
第二种情况:若检测到所述第一节点作为验证节点,生成电子资源;所述验证节点是指验证转移交易是否有效的第一个节点;所述转移交易为将发起转移交易的节点具有的电子资源转移至所述网络节点集合中另一节点的操作。
上述第二种情况中提及的转移交易是指第一节点发起的转移交易,或者,网络节点集合中除第一节点外的任一节点发起的转移交易。
上述本申请公开的实施例中详细描述了方法,对于本申请的方法可采用多种形式的装置实现,因此本申请还公开了一种装置,下面给出具体的实施例进行详细说明。
如图7所示,为本申请实施例提供的电子资源处理装置的示意图,该装置包括:
控制模块71,用于若检测到目标信息,将基于所述目标信息得到的第一区块关联至第一节点存储的第一区块链。
其中,所述目标信息表征所述第一节点具有的电子资源的数目发生变更;所述第一区块链由包含表征所述第一节点具有的电子资源的数目变化的变更信息的至少一个区块组成。
发送模块72,用于将所述第一区块分别发送至第一预设数目个备份节点,以使得所述第一区块关联至所述第一预设数目个备份节点分别存储的所述第一区块链。
其中,所述第一预设数目个备份节点为网络节点集合包含的第二预设数目个节点中与所述第一节点的地理位置最近的所述第一预设数目个节点;所述第一预设数目小于所述第二预设数目;所述网络节点集合中除所述第一节点以及所述第一预设数目个备份节点外的节点不存储所述第一区块链;所述网络节点集合是由所述第一节点以及所述第一节点能够遍历到的各节点组成的。
在一可选实施例中,电子资源处理装置还包括:存储模块,用于若获得第二区块,将所述第二区块关联至所述第一节点存储的第二区块链;其中,所述第二区块包含表征第二节点具有的电子资源的数目变化的变更信息;其中,所述第二区块链由包含表征所述第二节点具有的电子资源的数目变化的变更信息的至少一个区块组成;所述第二节点属于所述网络节点集合,所述第一节点为所述第二节点的备份节点;所述第一区块链与所述第二区块链不同。
在一可选实施例中,发送模块包括:第一确定单元,用于从所述网络节点集合中确定所述第一预设数目个备份节点;第一发送单元,用于将所述第一区块分别发送至所述第一预设数目个备份节点;或,第二发送单元,用于将所述第一区块分别发送至预先得到的所述第一预设数目个备份节点,其中,预先得到的所述第一预设数目个备份节点是每隔第一预设时间从所述网络节点集合中确定的。
在一可选实施例中,第一确定单元,或第二发送单元包括:第一确定子单元,用于从所述网络节点集合中,确定距离所述第一节点的地理位置最近的至少一个第三节点;第二确定子单元,用于将所述至少一个第三节点确定为备份节点;第三确定子单元,用于针对每一第i节点,从所述网络节点集合中,确定距离所述第i节点的地理位置最近的第i+1节点;以得到至少一个第i节点对应的第i+1节点,i为大于或等于3的正整数;第四确定子单元,用于将所述至少一个第i节点对应的第i+1节点确定为备份节点;触发子单元,用于将i+1赋值给i,返回第三确定子单元,直至得到所述第一预设数目个备份节点。
在一可选实施例中,所述第二预设数目个节点按照节点标识由小到大顺时针布局在带弦环中;对于所述带弦环中任一节点,所述节点的直接前序节点为所述带弦环中以所述节点为起点逆时针的第一个节点;所述节点的直接后继节点为所述带弦环中以所述节点为起点顺时针的第一个节点;所述节点的节点标识是基于所述节点的通信地址得到的;所述节点的直接后继节点以及直接前序节点为距离所述节点地理位置最近的两个节点;所述至少一个第三节点包括两个第三节点;第一确定子单元具体用于:获取所述第一节点的直接前序节点以及直接后继节点;其中,所述两个第三节点中,一个第三节点为所述第一节点的直接前序节点,另一个第三节点为所述第一节点的直接后继节点。
在一可选实施例中,电子资源处理装置还包括:第一确定模块,用于若检测到所述第一节点发起的转移交易可执行,确定检测到所述目标信息,所述转移交易为将发起转移交易的节点具有的电子资源转移至所述网络节点集合中另一节点的操作,所述转移交易可执行表征至少第三预设数目个共识节点均验证所述转移交易的交易有效,所述第一预设数目个备份节点包括所述第三预设数目个共识节点;或,第二确定模块,用于若检测到所述第一节点因执行第一事件被扣除电子资源,确定检测到所述目标信息;或,第三确定模块,用于若检测到所述第一节点因执行第二事件被分配电子资源,确定检测到所述目标信息;或,第四确定模块,用于若检测到所述第一节点因作为验证节点被分配电子资源,确定检测到所述目标信息;所述验证节点是指验证转移交易是否有效的第一个节点;或,第五确定模块,用于若检测到所述网络节点集合中任一节点将自身具有的电子资源转移至所述第一节点,确定检测到所述目标信息。
在一可选实施例中,电子资源处理装置还包括:第六确定模块,用于若检测到表征所述第一节点执行所述第一事件的第一请求,确定所述第一节点存储的具有目标标识的电子资源的资源数目;所述目标标识为所述第一事件所属应用场景对应的标识;执行模块,用于若所述资源数目大于或等于第三预设数目,执行所述第一事件;所述第三预设数目为执行所述第一事件需要被扣除的电子资源的数目。
在一可选实施例中,所述第一区块链中每一区块包括:表征电子资源的来源的第一信息、与所述第一信息对应的应用场景的第一标识、表征电子资源的去向的第二信息、与所述第二信息对应的应用场景的第二标识、表征电子资源的转移数目的第三信息;其中,不同应用场景的电子资源具有的标识不同。
在一可选实施例中,电子资源处理装置还包括:兑换模块,用于基于预设兑换规则,将第一数目的具有第一目标标识的电子资源兑换成第二数目的具有第二目标标识的电子资源;所述第一目标标识与所述第二目标标识不同。
在一可选实施例中,电子资源处理装置还包括:第一获取模块,用于若检测到当前时间所述第一节点发起转移交易,获取在所述当前时间所属的第二预设时间内基于第一身份信息已发起的转移交易的转移次数;所述转移交易为将发起转移交易的节点具有的电子资源转移至所述网络节点集合中另一节点的操作;所述第一身份信息为所述第一节点执行实名制认证后的身份信息;第二控制模块,用于若所述转移次数大于或等于第三预设数目,禁止所述第一节点执行所述转移交易。
在一可选实施例中,电子资源处理装置还包括:第一生成模块,用于若检测到所述第一节点执行第二事件,生成电子资源;和/或,第二生成模块,用于若检测到所述第一节点作为验证节点,生成电子资源;所述验证节点是指验证转移交易是否有效的第一个节点;所述转移交易为将发起转移交易的节点具有的电子资源转移至所述网络节点集合中另一节点的操作。
在一可选实施例中,第二生成模块包括:第二确定单元,用于若检测到当前时间所述第一节点作为验证节点,确定所述当前时间所属的第三预设时间内已生成的电子资源的第三数目;生成单元,用于若所述第三数目小于第四预设数目,生成第四数目的电子资源,所述第三数目与所述第四数目之和小于或等于所述第四预设数目;第三控制模块,用于若所述第三数目等于所述第四预设数目,禁止生成电子资源。
在一可选实施例中,电子资源处理装置还包括:分配模块,用于为在所述第三预设时间内作为验证节点的至少一个节点分配所述第五数目个电子资源,所述第五数目为在所述第三预设时间内生成的电子资源的总数目;所述第五数目小于或等于所述第四预设数目,所述至少一个节点包括所述第一节点。
如图8所示,为本申请实施例提供的电子设备的结构示意图。该电子设备可以为上述第一节点或区块链网络包含的服务器。该电子设备包括:存储器81,用于存储程序;处理器82,用于执行所述程序,所述程序具体用于:
若检测到目标信息,将基于所述目标信息得到的第一区块关联至第一节点存储的第一区块链;
其中,所述目标信息表征所述第一节点具有的电子资源的数目发生变更;所述第一区块链由包含表征所述第一节点具有的电子资源的数目变化的变更信息的至少一个区块组成;
将所述第一区块分别发送至第一预设数目个备份节点,以使得所述第一区块关联至所述第一预设数目个备份节点分别存储的所述第一区块链;
其中,所述第一预设数目个备份节点为网络节点集合包含的第二预设数目个节点中与所述第一节点的地理位置最近的所述第一预设数目个节点;所述第一预设数目小于所述第二预设数目;所述网络节点集合中除所述第一节点以及所述第一预设数目个备份节点外的节点不存储所述第一区块链;所述网络节点集合是由所述第一节点以及所述第一节点能够遍历到的各节点组成的。
电子设备还可以包括:通信接口83、通信总线84;在本申请实施例中,存储器81、处理器82、通信接口83、通信总线84的数量为至少一个,且存储器81、处理器81、通信接口83、通过通信总线84完成相互间的通信;
处理器82可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器81可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器。
存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一所述的电子资源处理方法。
需要说明的是,本说明书中的各个实施例中记载的特征可以相互替换或者组合。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。