首页> 中国专利> 区块链投票记账模式的记账方法及系统、投票及记账节点

区块链投票记账模式的记账方法及系统、投票及记账节点

摘要

本申请提供了区块链投票记账模式的记账方法及系统、投票及记账节点,方法包括:记账节点将区块发送给投票节点;投票节点动态产生下次有效的私钥及公钥,使用本次有效的私钥对区块的哈希值进行签名形成区块哈希签名,使用下次有效的私钥对区块的哈希值进行签名形成区块哈希新签名,将区块哈希签名、本次有效的公钥及区块哈希新签名发送至记账节点;记账节点验证投票结果的有效性;统计投票结果为有效的投票节点个数,若统计的投票节点个数满足条件,则将所有有效的投票结果记入所述区块头中,将其存入账本并发送给所有其它记账节点。本申请每次投票后作废私钥/公钥对,并重新生成新私钥/公钥,使得其仅一次有效,使记账安全性得到很大提升。

著录项

  • 公开/公告号CN106411503A

    专利类型发明专利

  • 公开/公告日2017-02-15

    原文格式PDF

  • 申请/专利权人 中国银行股份有限公司;

    申请/专利号CN201611063651.0

  • 发明设计人 商建祥;王继武;张国华;

    申请日2016-11-28

  • 分类号H04L9/06(20060101);H04L9/08(20060101);H04L9/32(20060101);H04L29/06(20060101);G06Q40/00(20120101);G07C13/00(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人贾磊;王天尧

  • 地址 100818 北京市西城区复兴门内大街1号

  • 入库时间 2023-06-19 01:35:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-08

    授权

    授权

  • 2017-03-15

    实质审查的生效 IPC(主分类):H04L9/06 申请日:20161128

    实质审查的生效

  • 2017-02-15

    公开

    公开

说明书

技术领域

本申请属于交易记录领域,特别涉及一种区块链投票记账模式下的记账方法及系统、投票节点及记账节点。

背景技术

在区块链技术中,采用的是分布式账本模式,即所有记账节点本地都维护同一份账本,交易在区块链上广播,所有记账节点将接收到的交易按照相同的顺序记录账本。

现有技术中,保证所有记账节点中的账本一致的方法主要为共识机制,而共识机制中常用的方法为投票记账模式,投票记账模式需要通过一系列交互以确保取得多数节点同意,按照同意的顺序将交易记入账本,节点在交互过程中都需要通过私钥签名、公钥验证的方式进行身份确认,私钥/公钥或是固化在逻辑里,或是固化在节点芯片里或是加密机里,如果一旦被人破解,整个投票系统将不再安全,如果经常改变私钥/公钥对,需要对所有节点进行升级,非常不方便。

发明内容

本申请提供一种区块链投票记账模式下的记账方法及系统、记账节点及投票节点,用于解决现有技术中的区块链投票记账模式下的身份认证所需私钥/公钥固化在投票节点的芯片里,使得私钥/公钥不易改变,一旦破解,使得整个投票系统不再安全的问题。

为了解决上述技术问题,本申请的一技术方案为提供一种从记账节点侧描述的区块链投票记账模式下的记账方法,包括:将区块发送给投票节点,其中,所述区块包括区块头及交易清单;

接收投票节点发送的投票结果,其中,所述投票结果包括区块哈希签名、本次有效的公钥、区块哈希新签名;

搜索投票节点上次进行有效投票的区块哈希新签名,以验证所述投票结果的有效性;以及

统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新的区块存入账本,并将更新的区块发送给所有其它记账节点。

本申请另一技术方案为提供一种从投票节点侧描述的区块链投票记账模式下的记账方法,包括:

接收一记账节点发送的区块,其中,所述区块包括区块头及交易清单;

对所述区块进行合法性验证,若验证通过则使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名;产生下次有效的私钥及公钥;使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名;以及

将区块哈希签名、本次有效的公钥及区块哈希新签名发送至所述记账节点。

本申请再一技术方案为提供一种区块链投票记账模式下的记账节点,包括:

发送模块,用于将区块发送给投票节点,其中,所述区块包括区块头及交易清单;

接收模块,用于接收投票节点发送的投票结果,其中,所述投票结果包括区块哈希签名、本次有效的公钥、区块哈希新签名;

验证模块,用于搜索投票节点上次进行有效投票的区块哈希新签名,以验证所述投票结果的有效性;以及

处理模块,用于统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新的区块存入账本,并将更新的区块通过所述发送模块发送给所有其它记账节点。

本申请的又一技术方案为提供一种区块链投票记账模式下的投票节点,包括:

接收模块,用于接收一记账节点发送的区块,其中,所述区块包括区块头及交易清单;

验证模块,用于对所述区块进行合法性验证,若验证通过则启动第一签名模块、密钥对产生模块及第二签名模块;

第一签名模块,用于使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名;

密钥对产生模块,用于产生下次有效的私钥及公钥;

第二签名模块,用于使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名;以及

发送模块,用于将区块哈希签名、本次有效的公钥及区块哈希新签名发送至所述记账节点。

本申请最后一技术方案为提供一种区块链投票记账模式下的记账系统,包括多个上述技术方案中的记账节点及多个上述技术方案中的投票节点,其中之一记账节点发送区块时,其它记账节点无权发送区块。

本申请中,记账节点将区块发送给投票节点;投票节点接收到区块后,动态产生下次有效的私钥及公钥,使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名,使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名,将区块哈希签名、本次有效的公钥及区块哈希新签名发送至记账节点;记账节点搜索投票节点上次进行有效投票的区块哈希新签名,以验证投票结果的有效性;统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新后的区块存入账本,并发送给所有其它记账节点。本申请通过采用私钥签名的方式进行投票,每次投票后作废私钥/公钥对,并重新生成新的私钥/公钥对,使得私钥及公钥仅一次有效,防止密钥被破解后用来进行账本攻击,使得记账的安全性得到很大提升。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例的从记账节点侧描述的区块链投票记账模式下的记账方法流程图;

图2为本申请实施例的验证投票结果有效性的流程图;

图3为本申请实施例的从投票节点侧描述的区块链投票记账模式下的记账方法流程图;

图4为本申请实施例的记账节点的结构图;

图5为本申请实施例的投票节点的结构图;

图6为本申请实施例的区块链投票记账模式下的记账系统结构图;

图7为本申请具体实施例的区块链投票记账模式下的记账方法流程图;

图8为本申请具体实施例的记账节点发送至投票节点的区块示意图;

图9为本申请具体实施例的记账节点更新后的区块示意图;

图10为本申请具体实施例的记账节点中账本示意图。

具体实施方式

为了使本申请的技术特点及效果更加明显,下面结合附图对本申请的技术方案做进一步说明,本申请也可有其他不同的具体实例来加以说明或实施,任何本领域技术人员在权利要求范围内做的等同变换均属于本申请的保护范畴。

在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。

本申请所述的记账节点及投票节点为区块链中的节点,对应的实体装置可以为具有计算与存储功能的个人计算机或服务器,甚至是具有一定计算和存储能力的任何个人终端,例如平板电脑,手机等。具体实施时,可将记账节点及投票节点集成于同一实体装置中,即实体装置既具有投票功能也具有记账功能。

如图1所示,图1为从记账节点侧描述的区块链投票记账模式下的记账方法流程图。本申请通过采用私钥签名的方式进行投票,每次投票后作废私钥/公钥对,并重新生成新的私钥/公钥对,使得私钥及公钥仅一次有效,防止密钥被破解后用来进行账本攻击,使得记账的安全性得到很大提升。

具体的,记账节点侧描述的区块链投票记账模式下的记账方法包括:

步骤101:将区块发送给投票节点,其中,所述区块包括区块头及交易清单。

详细的说,区块头包括投票信息存储区域及其他信息存储区域,其中,投票信息存储区域处为空,如图8所示,待根据投票节点的投票结果来填充,其他信息存储区域存储有控制信息、验证信息、及区块的哈希值(区块的哈希值也可由投票节点计算)等,本申请对此不作限定。

区块中的交易清单由发送区块的记账节点收集,如为一定时间内所涉及到的交易,具体如为存款交易请求、取款交易请求及查询交易请求等。

具体实施时,一记账节点在发送区块时,其他记账节点不具有权限发送区块,具体由哪个记账节点发送区块可通过现有技术的算法确定,本申请对此不作限定。

步骤102:接收所述投票节点发送的投票结果,其中,所述投票结果包括区块哈希签名、本次有效的公钥及区块哈希新签名。

其中,区块哈希签名是由所述投票节点本次有效的私钥对所述区块的哈希值进行签名得到的,区块哈希新签名是由所述投票节点产生的下次有效的私钥对所述区块的哈希值进行签名得到的,本次有效的公钥为投票节点的本次有效的公钥。

步骤103:搜索投票节点上次进行有效投票的区块哈希新签名,以验证所述投票结果的有效性。投票结果有效则说明得到了投票节点的支持。

步骤104:统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值(如为投票节点总数的2/3),则将所有有效的投票结果记入所述区块头中,将更新的区块存入账本,并将更新的区块发送给所有其它记账节点,以使其它记账节点在其账本中进行同步记录。

实施时,若投票结果为有效的投票节点个数小于预定阈值,则做异常处理。

更新的区块如图9所示,所有有效的投票结果均存储在区块头中,这些投票结果对应相应投票节点的投票,如区块n哈希签名m、公钥m及区块n哈希新签名m对应第m个投票节点的投票。

实施时,记账节点账本除了记录有当前更新的区块外,还记录有之前更新的区块,账本存储的内容如图10所示。

本申请进一步实施例中,上述步骤103中搜索投票节点上次进行有效投票的区块哈希新签名的过程包括:从账本中搜索投票节点上次进行有效投票的投票结果;从搜索到的投票结果中提取区块哈希新签名。如图9所示,以投票节点m、本次投票为第n次投票为例,投票节点m上次(即n-1次)进行有效投票的投票结果为sign(skm_p-1,hash(block)),Pkm_p-1,sign(skm_p,hash(block)),从该投票结果中提取出上次进行有效投票的区块n-1哈希新签名m sign(skm_p,hash(block))。

本申请进一步实施例中,如图2所示,对于任意一投票节点,上述步骤103中验证所述投票结果的有效性包括:

步骤201:使用本次有效公钥对上次进行有效投票的区块哈希新签名进行验证,如果验证通过,则本次有效公钥合法有效。

步骤202:使用本次有效公钥对所述投票节点发送的区块哈希签名进行验证,如果验证通过,则所述投票节点发送的区块哈希签名合法有效。

步骤203:若步骤201及步骤202的验证结果都为合法有效,则所述投票节点的投票结果有效。

本申请进一步实施例中,对于不是产生区块的记账节点而言,接收到更新的区块后还包括验证更新的区块中投票结果的有效性,需分别对投票节点的投票结果进行验证,具体验证过程参见图2所示,本申请在此不再赘述。

如图3所示,图3为本申请从投票节点侧描述的区块链投票记账模式下的记账方法。投票节点能够每次投票时产生新的私钥/公钥对,使得私钥及公钥仅一次有效,能够防止密钥被破解后用来进行账本攻击,使得记账的安全性得到很大提升。具体的包括:

步骤301:接收记账节点发送的区块,其中,所述区块包括区块头及交易清单。

步骤302:对所述区块进行合法性验证,若验证通过则进行步骤303。

步骤303:使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名;产生下次有效的私钥及公钥;使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名。

步骤304:将区块哈希签名、本次有效的公钥、区块哈希新签名发送至所述记账节点(所述记账节点为发送区块的节点)。

本申请中,计算哈希值的目的是为了压缩区块的长度,作为后续私钥签名的数据基础(如果数据太长,进行私钥签名技术上代价太大,不便于实施)。区块哈希值可由记账节点计算,也可由投票节点根据区块内容进行计算。区块哈希值与记账节点发送的区块内容相对应,区块中的内容改变,则对应的哈希值也跟着发生改变。计算区块哈希值的方法可采用SM3HASH加密算法,本申请对其具体使用方法不做限定。

本申请一具体实施例中,上述步骤302对所述区块进行合法性验证包括:验证所述区块的格式是否正确;验证所述交易清单的格式是否正确;以及验证所述交易清单内容是否正确。

上述图1及图3所示方法配合使用,能够保证投票节点中的私钥/公钥动态更新,防止私钥被破解后安全出现问题。

基于同一发明构思,本申请实施例中还提供了一种区块链投票记账模式下的记账节点及投票节点。记账节点及投票节点解决问题的原理与方法相似,因此,节点的实施可参见方法的实施,重复之处不再赘述。

如图4所示,记账节点包括:发送模块401,用于将区块发送给投票节点,其中,所述区块包括区块头及交易清单。

接收模块402,用于接收投票节点发送的投票结果,其中,所述投票结果包括区块哈希签名、本次有效的公钥、区块哈希新签名。

验证模块403,用于搜索投票节点上次进行有效投票的区块哈希新签名,以验证所述投票结果的有效性。以及

处理模块404,用于统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新后的区块存入账本,并通过所述发送模块将更新后的区块发送给所有其它记账节点。

进一步实施例中,所述验证模块403搜索投票节点上次进行有效投票的区块哈希新签名的过程包括:

从账本中搜索投票节点上次进行有效投票的投票结果;

从搜索到的投票结果中提取区块哈希新签名。

所述验证模块403验证所述投票结果的有效性的过程包括:

对于任意一投票节点,使用本次有效公钥对上次进行有效投票的区块哈希新签名进行验证,如果验证通过,则本次有效公钥合法有效;

使用本次有效公钥对所述投票节点发送的区块哈希签名进行验证,如果验证通过,则所述投票节点发送的区块哈希签名合法有效;

若两次验证结果都为合法有效,则所述投票节点的投票结果有效。

如图5所示,区块链投票记账模式下的投票节点包括:

接收模块501,用于接收一记账节点发送的区块,其中,所述区块包括区块头及交易清单。

验证模块502,用于对所述区块进行合法性验证,若验证通过则启动第一签名模块503、密钥对产生模块504及第二签名模块505。

第一签名模块503,用于使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名。

密钥对产生模块504,用于产生下次有效的私钥及公钥。

第二签名模块505,用于使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名。以及

发送模块506,用于将区块哈希签名、本次有效的公钥及区块哈希新签名发送至所述记账节点。

进一步的,验证模块502对所述区块进行合法性验证包括:验证所述区块的数据格式是否正确;验证所述交易清单的格式是否正确;以及验证所述交易清单中的内容是否正确。

本申请图4所示记账节点及图5所示投票节点配合使用,通过采用私钥签名的方式进行投票,每次投票后作废私钥/公钥对,并重新生成新的私钥/公钥对,使得私钥及公钥仅一次有效,防止密钥被破解后用来进行账本攻击,使得记账的安全性得到很大提升。

如图6所示,图6为本申请实施例所述区块链投票记账模式下的记账系统。该记账系统包括:多个记账节点及多个投票节点,其中之一记账节点发送区块时,其它记账节点无法发送区块。

具体的,记账节点用于将区块发送给投票节点,其中,所述区块包括区块头及交易清单;接收投票节点发送的投票结果,其中,所述投票结果包括区块哈希签名、本次有效的公钥、区块哈希新签名;搜索投票节点上次进行有效投票的区块哈希新签名,以验证所述投票结果的有效性;以及统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新的区块存入账本,并将更新的区块发送给所有其它记账节点。

投票节点用于接收一记账节点发送的区块,其中,所述区块包括区块头及交易清单;对所述区块进行合法性验证,若验证通过则使用本次有效的私钥对所述区块的哈希值进行签名,形成区块哈希签名;产生下次有效的私钥及公钥;使用下次有效的私钥对区块的哈希值进行签名,形成区块哈希新签名;以及

将区块哈希签名、本次有效的公钥及区块哈希新签名发送至所述记账节点。

本申请系统进一步实施例中,若所述记账节点收到的新的区块的分叉处在预定个区块(如100个)之前,则所述记账节点拒绝接收新的区块。本实施例能够确保私钥被破解后,再从破解处开始伪造的区块将不被承认。

为了更清楚说明本申请技术方案,下面以一具体实施例进行说明。假设区块链投票记账模式下的记账系统包括m个投票节点,包括M个记账节点,当前具有发送区块权的记账节点为第M个记账节点,发送的区块为区块n(如图8所示)。具体的,如图7所示,区块链投票记账模式下的记账方法包括:

步骤701:记账节点M发送区块n至所有投票节点。

步骤702:各投票节点接收区块n,并对区块n进行合法性验证,若验证通过则生成投票结果,将投票结果发送至记账节点M。

下面以投票节点m为例说明生成投票结果的详细过程,其中,投票节点m本次有效私钥为skm_p,本次有效公钥为Pkm_p:

利用skm_p对区块n的哈希值进行签名,得到区块n的哈希签名m;

生成下次有效的私钥skm_p+1及公钥Pkm_p+1;

利用下次有效的私钥skm_p+1对区块n的哈希值进行签名,得到区块n的哈希新签名m;

将区块n的哈希签名m、本次有效公钥为Pkm_p及区块n的哈希新签名m组成投票结果发送至记账节点M。

步骤703:记账节点M接收投票节点发送的投票结果。

步骤704:记账节点M搜索投票节点上次进行有效投票的区块哈希新签名,以验证投票结果的有效性。

下面仍以投票节点m为例对步骤704进行详细说明:

通过查找图10所示账本,得到投票节点m上次进行有效投票的区块n-1哈希新签名m为sign(skm_p,hash(block)),利用Pkm_p对区块n-1哈希新签名m进行验证,若果验证通过,则Pkm_p合法有效。利用Pkm_p对区块n哈希签名m进行验证,如果验证通过,则区块n哈希签名m合法有效;若两次验证结果都为合法有效,则所述投票节点m的投票结果有效。

对其他投票节点的投票结果验证过程同投票节点m,此处不再赘述。

步骤705:统计投票结果为有效的投票节点个数,若统计的投票节点个数大于或等于预定阈值,则将所有有效的投票结果记入所述区块头中,将更新后的区块存入账本,并将更新后的账本发送给所有其它记账节点。

如图9所示,所有投票节点的投票结果均有效,则将m个投票节点的投票结果均放到区块n的区块头中。更新后的账本如图10所示。

本申请通过采用私钥签名的方式进行投票,每次投票后作废私钥/公钥对,并重新生成新的私钥/公钥对,使得私钥及公钥仅一次有效,防止密钥被破解后用来进行账本攻击,使得记账的安全性得到很大提升。

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

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅用于说明本申请的技术方案,任何本领域普通技术人员均可在不违背本申请的精神及范畴下,对上述实施例进行修饰与改变。因此,本申请的权利保护范围应视权利要求范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号