区块生成方法及计算机存储介质与流程

文档序号:17235447发布日期:2019-03-30 08:19阅读:140来源:国知局
本发明实施例涉及计算机
技术领域
:,尤其涉及一种区块生成方法及计算机存储介质。
背景技术
::区块链是一种利用了分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链分为三类,分别是:公有区块链、联盟区块链(也称联合区块链、行业区块链)、和私有区块链三种。其中,公有区块链针对的是所有人;联盟区块链针对的是某个特定的群体以及有限的第三方;私有区块链针对的是个人。对比而言,联盟区块链对安全性的要求最高,在联盟区块链中需要保证只有内部制定的预选节点才能作为记账人,具有生成新区块的权限,其他节点虽然可以参与交易,但不能过问记账过程。但是,现有的联盟区块链中,安全机制大多用于将上链的信息进行加密存储来保证上链数据的安全性,但并没有对应的安全机制来保证生成区块过程的安全性,在某些情况下,例如作为记账人的预选节点对应的ip以及公私钥被不法人员窃取,不法人员即可使用该预选节点的身份在联盟区块链中生成新区块,从而对联盟区块链中的数据安全性产生极大的威胁。技术实现要素:有鉴于此,本发明实施例提供一种区块生成方法及计算机存储介质,以解决上述问题。本发明实施例提供一种区块生成方法,应用于联盟区块链,所述联盟区块链中包括多个节点,每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥;所述区块生成方法包括:获取所述联盟区块链中的请求节点发起的区块生成请求,其中,所述区块生成请求中携带有待生成新区块的区块内容数据的签名,所述区块内容数据的签名通过所述请求节点更新后的私钥进行签名;向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名;若所述区块内容数据的签名验证通过,则使所述请求节点在所述区块生成请求在所述联盟区块链中达成共识后生成所请求的新区块。本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序应用于联盟区块链,所述联盟区块链中包括多个节点,每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥;所述可读程序包括:用于获取所述联盟区块链中的请求节点发起的区块生成请求的指令,其中,所述区块生成请求中携带有待生成新区块的区块内容数据的签名,所述区块内容数据的签名通过所述请求节点更新后的私钥进行签名;用于向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名的指令;用于若所述区块内容数据的签名验证通过,则使所述请求节点在所述区块生成请求在所述联盟区块链中达成共识后生成所请求的新区块的指令。由以上技术方案可见,本发明实施例提供的区块生成方案中,请求节点定时更新其自身的公钥、私钥,获取请求节点发起的区块生成请求后,通过向中心节点验证请求节点的公钥的有效性,可以确定请求节点的公钥是更新后的、处于存活状态的属于请求节点的公钥(即第一公钥有效),从而可以根据有效的请求节点的公钥,验证请求节点生成的区块生成请求中包括的待生成新区块的区块内容数据的签名,进而可以保证联盟区块链中生成区块过程的安全性,以提高联盟区块链的安全性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为根据本发明实施例一的一种区块生成方法的步骤流程图;图2为根据本发明实施例二的一种区块生成方法的步骤流程图;图3为根据本发明实施例三的一种区块生成方法的步骤流程图;图4为根据本发明实施例四的一种区块生成方法的步骤流程图。具体实施方式为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。下面结合本发明实施例附图进一步说明本发明实施例具体实现。实施例一参照图1,示出了根据本发明实施例一的一种区块生成方法的步骤流程图。本实施例提供的区块生成方法应用于联盟区块链,其中,所述联盟区块链中包括多个节点,每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥。其中,按照中心节点的指令定时更新自身的公钥和私钥的节点也包括中心节点自身。本实施例的区块生成方法包括以下步骤:s102、获取所述联盟区块链中的请求节点发起的区块生成请求。其中,所述区块生成请求中携带有待生成新区块的区块内容数据的签名,所述区块内容数据的签名通过所述请求节点更新后的私钥进行签名。在请求节点初次加入联盟区块链时,中心节点会为其生成公钥和私钥,其中,私钥由请求节点自身保存,用于对请求节点发出的数据进行加密或签名;公钥广播至联盟区块链的其他节点,用于使其他节点对请求节点发出的数据进行解密或验证。本实施例中,请求节点为联盟区块链中具有生成区块权限的任意节点,在请求节点需要生成新区块时,其可以根据待生成新区块的区块内容数据生成并发起区块生成请求,并向联盟区块链广播。本实施例的区块生成方法用于在请求节点发起区块生成请求后,整个联盟区块链的所有节点对该区块生成请求达到共识前。本实施例从联盟区块链中的一个节点的角度,对区块生成方法进行说明,但本领域技术人员应当明了的是,该节点可以为联盟区块链中的任意节点,或者可以说,联盟区块链中的所有节点对新区块生成请求的处理都可参照本发明实施例实现。由于请求节点同样按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥,则其发起的区块生成请求中携带的待生成新区块的区块内容数据的签名可以是通过请求节点更新后的私钥进行签名得到的。待生成新区块的区块内容数据可以包括但不限于待生成的新区块的编号和新区块对应的区块内容的信息等。每一个新区块都有一个编号,该编号通常可以为区块对应的hash值,根据该编号可以确定该新区块是否已经生成,其在联盟区块链中的位置及链接关系等,在实际应用中,本领域技术人员可以采用任意适当的、符合区块链规范的编号,能唯一标识区块且可表征其在区块中的位置即可。而对于区块内容的信息,本领域技术人员也可以根据实际需求,采用任意适当的方式实现,如,新区块的区块内容的摘要信息,等等,本发明实施例对此不作限制。区块内容数据的签名可以为将区块内容数据的摘要信息通过私钥进行加密后生成的数字签名。s104、向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名。本实施例中,由于每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥,因此,中心节点中包括所有节点更新后的公钥。则收到区块生成请求的节点可以向中心节点中验证请求节点更新后的公钥的有效性,即确定用于验证签名的请求节点的公钥是更新后的、且仍处于存活状态的属于请求节点的公钥。本步骤中,通过对请求节点更新后的公钥的有效性进行校验,与请求节点的公钥、私钥定时更新相结合,可以保证请求节点的公钥有效性,即使不法分子盗取请求节点的ip、公钥、私钥等,使用的时间也不长久,从而保证了联盟区块链的安全性。s106、若所述区块内容数据的签名验证通过,则使所述请求节点在所述区块生成请求在所述联盟区块链中达成共识后生成所请求的新区块。若区块内容数据的签名验证通过,则可以认为发送区块生成请求的请求节点是正常节点,可以执行后续其他步骤,例如通过联盟区块链的共识机制确定所有节点对所述区块生成请求达成共识等,以使得所述请求节点在所述区块生成请求在所述联盟区块链中达成共识后生成所请求的新区块。通过本实施例,请求节点定时更新其自身的公钥、私钥,获取请求节点发起的区块生成请求后,通过向中心节点验证请求节点的公钥的有效性,可以确定请求节点的公钥是更新后的、处于存活状态的属于请求节点的公钥(即第一公钥有效),从而可以根据有效的请求节点的公钥,验证请求节点生成的区块生成请求中包括的待生成新区块的区块内容数据的签名,进而可以保证联盟区块链中生成区块过程的安全性,以提高联盟区块链的安全性。本实施例的区块生成方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和pc机等。实施例二参照图2,示出了根据本发明实施例二的一种区块生成方法的步骤流程图。本实施例提供的区块生成方法应用于联盟区块链,其中,所述联盟区块链中包括多个节点,每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥。可选地,本实施例中,每个节点可以通过以下方式定时更新自身的公钥和私钥。当前节点定时获取所述中心节点发出的密钥更新指令,其中所述密钥更新指令携带有所述中心节点生成的用于更新的公钥以及私钥;当前节点根据所述密钥更新指令获取所述中心节点生成的用于更新的公钥以及私钥,以定时更新自身的公钥和私钥。本实施例中,密钥更新指令以及其携带的用于更新的公钥和私钥由中心节点生成。当前节点定时获取所述中心节点发出的密钥更新指令时,密钥更新指令可以是由中心节点主动向当前节点发送的,也可以是由当前节点向中心节点请求的,本实施例对此不进行限定。由于当前节点的用于更新的公钥和私钥是由中心节点生成的,可有效保证中心节点中存储的公钥的准确性。当前节点更新完成后,可以由中心节点将更新后的公钥广播至联盟区块链,使联盟区块链中的其他节点更新其存储的所述当前节点的公钥。基于前述每个节点中的公钥和私钥的定时更新,本实施例的区块生成方法包括以下步骤:s202、获取所述联盟区块链中的请求节点发起的区块生成请求。其中,所述区块生成请求中携带有待生成新区块的区块内容数据的签名,所述区块内容数据的签名通过所述请求节点更新后的私钥进行签名。本实施例中的步骤s202与实施例一中的步骤s102类似,本实施例在此不再赘述。s204、向所述中心节点发送验证请求,并获取所述中心节点反馈的验证结果。本实施例中,所述验证请求用于请求对请求节点更新后的公钥的有效性进行验证,验证请求中可以携带有当前节点存储的请求节点的公钥数据。中心节点在获取验证请求后,可以将验证请求中包括的请求节点的公钥与中心节点中存储的请求节点的公钥进行比对,并根据比对结果生成验证结果。验证结果中可以包括验证请求携带的请求节点的公钥的有效性验证结果,可选地,若验证结果为无效,则验证结果中还可以包括中心节点存储的有效的请求节点的公钥。s206、根据验证结果判断所述验证请求携带的请求节点的公钥是否有效;若有效,则执行步骤s208;若无效,则执行步骤s210。s208、若确定请求节点的公钥有效,则根据当前所述请求节点的公钥验证所述区块内容数据的签名。转步骤s212执行。s210、若确定请求节点的公钥无效,则拒绝处理所述区块生成请求。结束本次流程。本实施例中,若验证结果中携带有中心节点中存储的有效的请求节点的公钥,则直接将其更新至本地即可,若不存在,则需要再次向中心节点发送获取请求节点的公钥的请求,以获取有效的请求节点的公钥。s212、若所述区块内容数据的签名验证通过,则使所述请求节点生成所请求的新区块。本实施例中区块的数据结构可以与现有区块的数据结构不相同,本实施例的区块可以包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。其中,所述多条操作指令中的每条操作指令包括操作类型、表名、json化内容。基于此,本实施例的区块内容数据包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。其中,所述多条操作指令中的每条操作指令包括操作类型、表名、json化内容。使得生成上述区块数据结构的区块时,能够大量节省区块处理时间,从而大大提高了区块的处理效率。本实施例中,通过请求节点的私钥生成的签名仅能通过请求节点配套的公钥进行验证。因此,若签名验证通过,则可以确定请求节点正常,则可以使请求节点生成所请求的新区块;若签名验证未通过,则可以确定请求节点存在异常,则拒绝请求节点所请求的新区块的生成。若所述签名通过,则表明发送区块生成请求的请求节点为正常的、合法的节点,此种情况下,接收区块生成请求的当前节点可以发送确认消息,以告知联盟区块链中的其它节点(包括请求节点),当前节点确认请求节点可以生成所述区块生成请求所请求的新区块。若联盟区块链中的所有节点均发送了确认消息,则可认为该区块生成请求在整个联盟区块链中达成了共识,此时,请求节点可以生成新区块。在一种可行方式中,请求节点基于前述的区块数据的构成,其生成新区块的过程可以包括:接收请求节点发起的区块生成请求;对区块生成请求进行解析,获取区块生成请求中的操作类型信息、操作对象信息和操作内容信息;基于操作类型信息、操作对象信息和操作内容信息,生成与sql语言具有映射关系的中间语言表示的操作指令;对中间语言表示的操作指令执行映射操作,获得所述sql语言表示的操作指令;基于sql语言表示的操作指令,执行区块生成请求对应的新区块生成处理。其中,所述操作类型信息包括用于指示进行数据增加操作的信息,所述操作对象信息包括数据表的表名、某个用户的比特币存储账户等,例如,学生信息表、学生成绩表、学生学历表,所述操作内容信息可包括数据表的字段和操作参数,例如,数据表的字段可为学生姓名、学生年龄等,所述操作参数可为学生姓名为小红,学生年龄为8岁等,所述操作内容信息还可包括此次操作比特币的数量。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。在本实施例中,所述与sql语言具有映射关系的中间语言可为类似sql语言的语言或者简版的sql语言。例如,操作指令包括三个主要字段,分别为“操作类型”、“表名”、“josn”三个字段,则采用类似sql语言的语言表示该操作指令的表示实例为:insert/updatetablejson。其中,“insert/update”为可以对应到sql语言的具体操作指令,table为一个变量,在每一个具体操作中可以具体化为一个具体的表名,json也为一个变量,在每一个具体操作中可以具体化为一个操作过程或操作结果对应的sql指令和/或语句。在一些可选实施例中,在生成与sql语言具有映射关系的中间语言表示的操作指令时,可对所述操作类型信息、操作对象信息和操作内容信息进行拼接处理,获得与sql语言具有映射关系的中间语言表示的操作指令。可以理解的是,任何生成与sql语言具有映射关系的中间语言表示的操作指令的实施方式均可适用于此,本发明实施例对此不做任何限定。可见,在上述区块生成过程中,并不是直接根据区块生成请求,生成机器识别的sql语言表示的生成操作指令,而是基于区块生成请求中的操作类型信息、操作对象信息和操作内容信息,生成与sql语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得sql语言表示的操作指令,节省了区块的生成处理时间,大大提高了区块的生成处理效率。需要说明的是,上述过程中的请求节点可以是联盟区块链中的任意一个节点,包括当前节点,该当前节点可以是联盟区块链中的中心节点,也可以是非中心节点。通过上述过程,实现了对请求节点合法性的验证和请求节点的新区块的生成。可选地,本实施例中在步骤s212之后,还可以包括:s214、获取所述请求节点发出的新区块生成通知消息。其中,所述新区块生成通知消息中携带有已生成的新区块的信息,其中,所述新区块的信息中包括所述新区块的内容数据的签名,所述新区块的内容数据的签名通过所述请求节点的私钥进行签名。本实施例中,新区块的内容数据可以包括新区块的hash值、新区块的区块内容的信息等,其中,新区块的区块内容的信息可以包括新区块的内容数据的签名,该新区块的内容数据的签名可以为:通过请求节点的私钥将新区块的内容数据进行加密得到的数字签名。s216、向所述联盟区块链的中心节点验证所述请求节点的公钥的有效性,以根据有效的所述请求节点更新后的公钥验证所述新区块的签名。本实施例中,步骤s216与实施例一中的步骤s104类似,本实施例在此不再赘述。本实施例中,通过再次验证请求节点的公钥的有效性,然后通过有效的请求节点的公钥验证新区块生成通知信息中的签名,进一步提高了联盟区块链中生成新区块过程的安全性,即提高了联盟区块链数据的安全性。s218、若所述新区块的签名验证通过,则响应所述新区块生成通知消息,以使用已生成的所述新区块的信息更新所述联盟区块链和本地区块数据。在请求节点生成新区块后,会向联盟区块链的所有节点进行广播,以使所有节点进行区块更新,实现联盟区块链中所有节点的数据同步。更新联盟区块链以及本地区块数据后,即可完成新区块的上链操作。本实施例中,步骤s214-s218可以由任意收到新区块生成通知消息的节点执行,当前节点收到新区块生成通知消息后,即可根据新区块生成通知消息,将已生成的新区块更新本地存储的联盟区块链的数据。本实施例提供的区块生成方案,在请求节点定时更新其自身的公钥、私钥的基础上,获取请求节点发起的区块生成请求后,通过向中心节点验证请求节点的公钥的有效性,从而可以根据有效的请求节点的公钥,验证请求节点生成的区块生成请求中包括的待生成新区块的区块内容数据的签名;在请求节点生成新区块后,获取所述请求节点发出的新区块生成通知消息,并再次验证请求节点的公钥有效性,从而可以根据有效的请求节点的公钥验证请求节点生成的新区块生成通知消息中包括的签名,通过两次验证过程,可以进一步提高联盟区块链中生成区块过程的安全性,以提高联盟区块链的安全性。本实施例的区块生成方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和pc机等。实施例三本实施例基于前述实施例一或实施例二的方案,并对前述方案进行了进一步改进。本实施例中,设定联盟区块链中还包括ip白名单,ip白名单中存储有联盟区块链中所有节点的ip地址,由于联盟区块链针对的是设定群体,大部分为设定行业的企业,则若某一企业加入联盟区块链,则会为其分配节点,在节点生成时,会向联盟区块链报备该节点对应的企业的服务器的ip地址,并将该服务器的ip地址加入ip白名单中。本实施例中,如图3所示,所述方法还包括:s302、获取并验证所述请求节点的ip地址与预存的ip白名单中的请求节点的ip地址是否一致,并校验所述请求节点的ip地址的有效性。通常,在联盟区块链中的请求节点启动时,会校验请求节点的启动请求中携带的ip和ip白名单中存储的请求节点的ip的一致性以及有效性,若校验通过,则可以启动请求节点,若校验未通过,则不允许请求节点启动。通过在请求节点启动时校验其ip,可以防止未在联盟区块链中报备过的非法节点不能启动。但是联盟区块链的程序对于联盟区块链中的所有节点是公开的,因此,不法分子可以通过注销掉联盟区块链的程序中用于验证启动ip的部分程序来跳过该步骤。因此,为了进一步提高联盟区块链的安全性,在生成新区块前,接收到区块生成请求的当前节点均可以执行上述步骤s302,以通过步骤s302确定请求节点并非未报备过的非法节点。s304、若不一致或者请求节点的ip地址无效,则拒绝处理所述区块生成请求。结束本次流程。s306、若一致或者请求节点的ip地址有效,则继续处理所述区块生成请求,以使所述请求节点生成所请求的新区块。请求节点的ip地址可以作为参数包含在请求节点发出的请求中,从而可以直接根据请求节点发起的请求确定请求节点的ip地址。接着,可以继续执行下述如实施例一中所述的步骤。s308、获取所述联盟区块链中的请求节点发起的区块生成请求。s310、向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名。s312、若所述区块内容数据的签名验证通过,则使所述请求节点生成所请求的新区块。其中,上述步骤s308-s312的执行如实施例一中所述,在此不再赘述。本实施例中,ip白名单可以存储在所有节点的本地,则任意获得请求节点发起的区块生成请求的节点均可以进行上述校验过程。当然,本实施例的另一种实现方式中,ip白名单也可以存储在中心节点中,则上述校验过程可以由中心节点执行,然后,中心节点可以将校验结果告知其他节点。由于上述校验过程可以由节点本身进行,则不法分子无法通过注销部分程序来跳过该校验过程,使得即使存在不法分子将节点启动成功,该节点也不具有生成新区块的功能。进一步地,将上述验证请求节点ip的过程与实施例一中验证请求节点公钥有效性相结合,可以进一步提高了联盟区块链的安全性。需要说明的是,本实施例中,以上述步骤s302-s306与实施例一中的方案相结合,在步骤s102(本实施例中的步骤s308)之前执行为例,但本领域技术人员应当明了的是,在实际应用中,本实施例中步骤s302-s306的执行也可以在诸如实施例一中的步骤s106(本实施例中的步骤s312)中的签名验证通过之后在生成新区块之前执行,或者,步骤s302-s306与步骤s308-s312这两部分并行执行,本实施例对此不进行限定。当然,相对应的,本实施例中,上述步骤s302-s306也可以与实施例二结合,上述步骤s302-s306可以在步骤s202之前执行,也可以在诸如实施例二中的步骤s212中的签名验证通过之后在生成新区块之前执行,或者步骤s302-s306与步骤s202-s210这两部分并行执行,本实施例对此不进行限定。进一步地,本实施例与上述实施例一或二结合后,可以通过上述实施例提供的方案确定请求节点的公钥是更新后的、处于存活状态的的属于请求节点的公钥,并通过本实施例验证请求节点的ip从而确定请求节点并未未报备过的非法节点,从可以得到更好的验证效果,从而进一步保证联盟区块链中生成新区块过程的安全性。本实施例的另一实现方式中,ip地址验证的过程还可以在所述获取所述联盟区块链中的请求节点发起的区块生成请求之前执行。例如,在步骤s308之前,本实施例提供的方法还可以包括:当前节点向所述联盟区块链的中心节点发送节点启动请求,其中,所述节点启动请求中包括所述当前节点的ip地址;接收所述中心节点返回的启动请求反馈消息,其中,所述启动请求反馈消息由所述中心节点根据当前节点的ip地址与预存的ip白名单中的节点ip地址的一致性验证和当前节点的ip地址的有效性验证的验证结果生成;若所述验证结果指示验证成功,则所述当前节点进行节点启动操作。通过在当前节点启动时验证当前节点的ip地址,可以保证当前节点的有效性,从而保证当前节点执行的向中心节点验证请求节点更新后的公钥的有效性等动作是有效的,进而保证了生成区块过程的安全性,以提高联盟区块链的安全性。本实施例的另一实现方式中,ip地址验证的过程还可以在向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性过程中执行。例如,本实施例中,步骤s310可以包括:当前节点向所述联盟区块链的中心节点发送所述有效性验证请求,其中,所述有效性验证请求中包括所述当前节点的ip地址;接收所述中心节点返回的验证请求反馈消息,其中,所述验证请求反馈消息由所述中心节点在验证所述当前节点的ip地址与预存的ip白名单中的当前节点的ip地址的一致且当前节点的ip地址的有效后,根据所述请求节点更新后的公钥的有效性的验证结果生成;所述当前节点根据所述验证请求反馈消息确定所述请求节点更新后的公钥的有效性。在当前节点向中心节点验证请求节点的公钥的有效性时,验证当前节点的ip地址,可以保证当前节点的有效性,从而保证当前节点执行的向中心节点验证请求节点更新后的公钥的有效性的动作是有效的,进而保证了生成区块过程的安全性,以提高联盟区块链的安全性。实施例四本实施例基于前述实施例一或实施例二的方案,并对前述方案进行了进一步改进。本实施例提供的方案,是在实施例一或二的基础上,增加其他安全机制,例如流量监控机制。具体地,由于联盟区块链针对的是特定群体,例如某一行业的企业等,联盟区块链的节点请求流量具有与特定群体对应的业务规律。本实施例中,如图4所示,所述方法还包括:s402、比较所述请求节点的流量与预设的请求节点的流量阈值。本实施例中,流量阈值可以在联盟区块链建立时确定,此时确定的流量阈值可以为初始流量阈值。在联盟区块链使用过程中,可以更新流量阈值,使其更符合联盟区块链的发展。本实施例中,请求节点的流量可以由中心节点的管理模块进行实时监控,报警信息也由中心节点的管理模块生成。s404、若所述请求节点的流量大于所述请求节点的流量阈值,则生成报警信息。结束本次流程。s406、若所述请求节点的流量小于所述请求节点的流量阈值,则确定所述请求节点正常。接着,可以继续执行下述如实施例一中所述的步骤。s408、获取所述联盟区块链中的请求节点发起的区块生成请求。s410、向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名。s412、若所述区块内容数据的签名验证通过,则使所述请求节点生成所请求的新区块。其中,上述步骤s408-s412的执行如实施例一中所述,在此不再赘述。报警信息中可以包括请求节点的流量数据、用于比对的流量阈值等。本实施例中,通过设置流量阈值来检测请求节点的流量是否正常,可以辅助确定请求节点的安全性。需要说明的是,本实施例中,以上述步骤s402-s404与实施例一中的方案相结合,在步骤s102(本实施例中的步骤s408)之前执行为例,但本领域技术人员应当明了的是,在实际应用中,本实施例中的步骤s402-s404的执行也可以在诸如实施例一中的步骤s106(本实施例中的步骤s412)中的签名验证通过之后在生成新区块之前执行,或者,步骤s302-s306与步骤s308-s312并行执行,本实施例对此不进行限定。当然,相对应的,本实施例中,上述步骤s402-s406也可以与实施例二结合,上述步骤s402-s404可以在步骤s202之前执行,也可以在诸如实施例二中的步骤s212中的签名验证通过之后在生成新区块之前执行,或者步骤s302-s306与步骤s202-s210这两部分并行执行,本实施例对此不进行限定。通过上述过程,实现了对请求节点流量的实时监控。可选地,本实施例中,在所述若所述请求节点的流量大于所述流量阈值,则生成报警信息之后,所述方法还包括:s414、根据所述报警信息,确定所述请求节点的流量是否符合预设条件。其中,所述预设条件用于指示所述联盟区块链中节点的流量处于正常增长状态。转至步骤s416执行。s416、若所述请求节点的流量符合预设条件,则确定所述请求节点正常。可以转至步骤s408执行。即流量超出流量阈值的原因是节点正常的业务增长造成的,为了适应业务正常,可以根据所述请求节点的当前流量调整所述请求节点的流量阈值。s418、若所述请求节点的流量不符合预设条件,则确定所述请求节点存在异常。结束本次流程。即请求节点可能是非法节点,此时可以将所述请求节点的ip地址从ip白名单中移除。通过步骤s414-s418,可以确定请求节点的流量是否符合预设条件,从而可以区分请求节点流量的增长原因,进而可以提高确定请求节点存在异常的结果的准确定,减小了将正常节点判断为异常节点的概率。本实施例与上述实施例一或二结合后,可以通过上述实施例提供的方案确定请求节点的公钥是更新后的、处于存活状态的的属于请求节点的公钥,并通过本实施例提供的方案,可以通过监控请求节点的实时流量是否超过流量阈值确定请求节点是否存在异常,从可以得到更好的验证效果,从而进一步保证联盟区块链中生成新区块过程的安全性。实施例五本发明实施例还提供了一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序应用于联盟区块链,所述联盟区块链中包括多个节点,每个节点按照所述联盟区块链中的中心节点的指令定时更新自身的公钥和私钥;所述可读程序包括:用于获取所述联盟区块链中的请求节点发起的区块生成请求的指令,其中,所述区块生成请求中携带有待生成新区块的区块内容数据的签名,所述区块内容数据的签名通过所述请求节点更新后的私钥进行签名;用于向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名的指令;用于若所述区块内容数据的签名验证通过,则使所述请求节点在所述区块生成请求在所述联盟区块链中达成共识后生成所请求的新区块的指令。可选地,所述每个节点通过以下可读程序定时更新自身的公钥和私钥:用于使当前节点定时获取所述中心节点发出的密钥更新指令的指令,其中所述密钥更新指令携带有所述中心节点生成的用于更新的公钥以及私钥;用于使当前节点根据所述密钥更新指令获取所述中心节点生成的用于更新的公钥以及私钥,以定时更新自身的公钥和私钥的指令。可选地,所述用于向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性,以根据有效的所述公钥验证所述区块内容数据的签名的指令包括:用于向所述中心节点发送验证请求,并获取所述中心节点反馈的验证结果的指令;用于若根据所述验证结果确定所述验证请求携带的所述请求节点的公钥有效,则根据当前所述请求节点的公钥验证所述区块内容数据的签名的指令;或者,用于若根据所述验证结果确定所述验证请求携带的所述请求节点的公钥无效,则拒绝处理所述区块生成请求的指令。可选地,在用于所述生成新区块的指令之后,所述可读程序还包括:用于获取所述请求节点发出的新区块生成通知消息,所述新区块生成通知消息中携带有已生成的新区块的信息的指令,其中,所述新区块的信息中包括所述新区块的内容数据的签名,所述新区块的内容数据的签名通过所述请求节点的私钥进行签名;用于向所述联盟区块链的中心节点验证所述请求节点的公钥的有效性,以根据有效的所述请求节点更新后的公钥验证所述新区块的签名的指令;用于若所述新区块的签名验证通过,则响应所述新区块生成通知消息,以使用已生成的所述新区块的信息更新所述联盟区块链和本地区块数据的指令。可选地,在所述用于获取所述联盟区块链中的请求节点发起的区块生成请求的指令之前,或者,在所述用于区块内容数据的签名验证通过的指令之后,所述可读程序还包括:用于获取并验证所述请求节点的ip地址与预存的ip白名单中的请求节点的ip地址是否一致,并校验所述请求节点的ip地址的有效性的指令;用于若不一致或者请求节点的ip地址无效,则拒绝处理所述区块生成请求的指令;用于若一致且请求节点的ip地址有效,则继续处理所述区块生成请求,以使所述请求节点生成所请求的新区块的指令;或者,在所述用于获取所述联盟区块链中的请求节点发起的区块生成请求的指令之前,所述可读程序还包括:用于使当前节点向所述联盟区块链的中心节点发送节点启动请求的指令,其中,所述节点启动请求中包括所述当前节点的ip地址;用于接收所述中心节点返回的启动请求反馈消息的指令,其中,所述启动请求反馈消息由所述中心节点根据当前节点的ip地址与预存的ip白名单中的节点ip地址的一致性验证和当前节点的ip地址的有效性验证的验证结果生成;用于若所述验证结果指示验证成功,则所述当前节点进行节点启动操作的指令;或者,所述用于向所述联盟区块链的中心节点验证所述请求节点更新后的公钥的有效性的指令包括:用于当前节点向所述联盟区块链的中心节点发送所述有效性验证请求的指令,其中,所述有效性验证请求中包括所述当前节点的ip地址;用于接收所述中心节点返回的验证请求反馈消息的指令,其中,所述验证请求反馈消息由所述中心节点在验证所述当前节点的ip地址与预存的ip白名单中的当前节点的ip地址的一致且当前节点的ip地址的有效后,根据所述请求节点更新后的公钥的有效性的验证结果生成;用于使所述当前节点根据所述验证请求反馈消息确定所述请求节点更新后的公钥的有效性的指令。可选地,在所述用于获取所述联盟区块链中的请求节点发起的区块生成请求的指令之前,或者,在所述用于区块内容数据的签名验证通过的指令之后,所述可读程序还包括:用于比较所述请求节点的流量与预设的请求节点的流量阈值的指令;用于若所述请求节点的流量大于所述请求节点的流量阈值,则生成报警信息的指令。可选地,在所述用于在所述若所述请求节点的流量大于所述流量阈值,则生成报警信息的指令之后,所述可读程序还包括:用于根据所述报警信息,确定所述请求节点的流量是否符合预设条件的指令,其中,所述预设条件用于指示所述联盟区块链中节点的流量处于正常增长状态;用于若所述请求节点的流量符合预设条件,则确定所述请求节点正常,根据所述请求节点的当前流量调整所述请求节点的流量阈值的指令;或者,用于若所述请求节点的流量不符合预设条件,则确定所述请求节点存在异常,将所述请求节点的ip地址从ip白名单中移除的指令。可选地,所述区块内容数据包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。可选地,所述多条操作指令中的每条操作指令包括操作类型、表名、json化内容。通过本实施例的计算机可读介质,请求节点定时更新其自身的公钥、私钥,获取请求节点发起的区块生成请求后,通过向中心节点验证请求节点的公钥的有效性,可以确定请求节点的公钥是更新后的、处于存活状态的属于请求节点的公钥(即第一公钥有效),从而可以根据有效的请求节点的公钥,验证请求节点生成的区块生成请求中包括的待生成新区块的区块内容数据的签名,进而可以保证联盟区块链中生成区块过程的安全性,以提高联盟区块链的安全性。需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如cdrom、ram、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如asic或fpga)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,ram、rom、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的区块生成方法。此外,当通用计算机访问用于实现在此示出的区块生成方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的区块生成方法的专用计算机。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关
技术领域
:的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1