首页> 中国专利> 用于更新区块链节点处的公钥集合的方法及装置

用于更新区块链节点处的公钥集合的方法及装置

摘要

本说明书实施例提供了用于更新区块链节点处的公钥集合的方法,公钥集合包括区块链网络中的所有参与共识的区块链节点的公钥,该方法包括:针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在节点变更类交易标识所指示的节点变更类交易,收据索引信息包括交易类型标识字段;当该区块中存在节点变更类交易时,获取该区块的区块体信息;从区块体信息中获取节点变更类交易的收据信息,收据信息包括公钥字段,公钥字段用于存放节点变更类交易所指示的被变更区块链节点的公钥;从收据信息的公钥字段中获取的被变更区块链节点的公钥;以及利用所获取的公钥来更新公钥集合。

著录项

  • 公开/公告号CN111047324A

    专利类型发明专利

  • 公开/公告日2020-04-21

    原文格式PDF

  • 申请/专利权人 支付宝(杭州)信息技术有限公司;

    申请/专利号CN202010180640.0

  • 发明设计人 林鹏;

    申请日2020-03-16

  • 分类号

  • 代理机构北京永新同创知识产权代理有限公司;

  • 代理人林锦辉

  • 地址 310000 浙江省杭州市西湖区西溪路556号8层B段801-11

  • 入库时间 2023-12-17 07:51:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-04

    授权

    授权

  • 2020-05-15

    实质审查的生效 IPC(主分类):G06Q20/38 申请日:20200316

    实质审查的生效

  • 2020-04-21

    公开

    公开

说明书

技术领域

本说明书实施例涉及区块链技术,具体地,涉及用于更新区块链节点处的公钥集合的方法及装置。

背景技术

在区块链系统中,出于某些区块链操作的需要,可能会在各个区块链节点处维护区块链系统中所有区块链节点的公钥集合。在区块链系统中,难免会发生区块链节点变更,例如新区块链节点加入区块链系统或已加入的区块链节点退出区块链系统。在发生区块链节点变更时,需要一种可信任的方式来更新区块链系统中的公钥集合。

发明内容

鉴于上述,本说明书实施例提供了一种用于更新区块链节点处的公钥集合的方法及装置。

根据本说明书实施例的一个方面,提供了一种用于更新区块链节点处的公钥集合的方法,所述公钥集合包括区块链网络中的所有参与共识的区块链节点的公钥,所述方法包括:针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在所述节点变更类交易标识所指示的节点变更类交易,所述节点变更类交易以用于执行区块链节点变更操作的智能合约为交易对象,所述收据索引信息包括交易类型标识字段,所述交易类型标识字段指示该区块中的各个交易的交易类型;当该区块中存在节点变更类交易时,获取该区块的区块体信息;从所述区块体信息中获取所述节点变更类交易的收据信息,所述收据信息包括公钥字段,所述公钥字段用于存放所述节点变更类交易所指示的被变更区块链节点的公钥;从所述收据信息的公钥字段中获取的被变更区块链节点的公钥;以及利用所获取的公钥来更新所述公钥集合。

可选的,在一个示例中,所述区块体信息可以包括交易树和收据树,从所述区块体信息中获取所述节点变更类交易的收据信息可以包括:基于所述节点变更类交易标识,确定被指定发起所述节点变更类交易的指定发起方地址以及所述节点变更类交易对应的智能合约地址;基于所述区块体信息中的交易树信息和所述指定发起方地址以及所述智能合约地址,从所述交易树中确定出所述节点变更类交易以及所述节点变更类交易在所述交易树中的第一位置;以及从所述收据树中获取与所确定的第一位置对应的第二位置处的收据信息。

可选的,在一个示例中,在获取所述收据树中的与所确定的第一位置对应的第二位置处的收据信息之前,从所述区块体信息中获取所述节点变更类交易的收据信息还可以包括:基于所述节点变更类交易中包含的交易对象地址和所述智能合约的智能合约地址,对所述节点变更类交易进行验证。获取所述收据树中的与所确定的第一位置对应的第二位置处的收据信息包括:当所述节点变更交易验证通过时,获取所述收据树中的与所确定的第一位置对应的第二位置处的收据信息。

可选的,在一个示例中,基于从所述交易树中确定出的节点变更类交易的交易对象地址信息和所述智能合约的智能合约地址,对所述节点变更类交易进行验证可以包括:基于从所述交易树中确定出的节点变更类交易的交易发起方地址、交易对象地址、所述指定发起方地址以及所述智能合约地址,对所查找出的节点变更交易进行验证。

可选的,在一个示例中,所述节点变更类交易标识指示节点新增类交易,利用所获取的公钥来更新所述公钥集合可以包括:将所述公钥添加到所述公钥集合中,或所述节点变更类交易标识指示节点删除类交易,利用所获取的公钥来更新所述公钥集合包括:将所述公钥从所述公钥集合中删除。

可选的,在一个示例中,所述区块链系统可以为联盟链系统。

可选的,在一个示例中,所述智能合约可以布署在创世区块中。

根据本说明书实施例的另一方面,还一种用于在联盟链中更新公钥集合的装置,所述公钥集合包括区块链网络中所有参与共识的区块链节点的公钥,所述装置包括:节点变更交易确定单元,针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在所述节点变更类交易标识所指示的节点变更类交易,所述节点变更类交易以用于执行区块链节点变更操作的智能合约为交易对象,所述收据索引信息包括交易类型标识字段,所述交易类型标识字段指示该区块中的各个交易的交易类型;区块体信息获取单元,当该区块中存在节点变更类交易时,获取该区块的区块体信息;收据信息获取单元,从所述区块体信息中获取所述节点变更类交易的收据信息,所述收据信息包括公钥字段,所述公钥字段用于存放所述节点变更类交易所指示的被变更区块链节点的公钥;公钥获取单元,从所述收据信息的公钥字段中获取的被变更区块链节点的公钥;以及公钥集合更新单元,利用所获取的公钥来更新所述公钥集合。

可选的,在一个示例中,所述区块体信息可以包括交易树和收据树,所述收据信息获取单元可以包括:指定交易信息确定模块,基于所述节点变更类交易标识,确定被指定发起所述节点变更类交易的指定发起方地址以及所述节点变更类交易对应的智能合约地址;第一位置确定模块,基于所述区块体信息中的交易树信息和所述指定发起方地址以及所述智能合约地址,从所述交易树中确定出所述节点变更类交易以及所述节点变更类交易在所述交易树中的第一位置;以及收据信息获取模块,从所述收据树中获取与所确定的第一位置对应的第二位置处的收据信息。

可选的,在一个示例中,所述收据信息获取单元可以包括:节点变更类交易验证模块,在获取所述收据树中的与所确定的第一位置对应的第二位置处的收据信息之前,基于所述节点变更类交易中包含的交易对象地址和所述智能合约的智能合约地址,对所述节点变更类交易进行验证,以及所述收据信息获取模块当所述节点变更交易验证通过时,获取所述收据树中的与所确定的第一位置对应的第二位置处的收据信息。

可选的,在一个示例中,所述节点变更交易验证模块可以基于从所述交易树中确定出的节点变更类交易的交易发起方地址、交易对象地址、所述指定发起方地址以及所述智能合约地址,对所查找出的节点变更交易进行验证。

可选的,在一个示例中,所述节点变更类交易标识可以指示节点新增类交易,所述公钥集合更新单元可以将所述公钥添加到所述公钥集合中,或所述节点变更类交易标识可以指示节点删除类交易,所述公钥集合更新单元可以将所述公钥从所述公钥集合中删除。

根据本说明书实施例的另一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的方法。

根据本说明书实施例的另一方面,还提供一种非暂时性机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的方法。

利用本说明书实施例的方法及装置,通过在基于区块头中的收据索引信息和节点变更类交易标识确定出相应区块中存在节点变更类交易标识所指示的节点变更交易时,获取区块体信息,然后基于所获取的区块体信息获取节点变更类交易所对应的区块链节点的公钥,进而利用所获取的公钥来更新公钥集合,不仅能够提供一种可信任的区块链公钥集合更新方式,并且由于区块体信息获取以及公钥获取过程在确定存在节点变更类交易之后进执行,能够减轻各个区块链节点的负担。

附图说明

通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本说明书实施例的实施例,但并不构成对本说明书实施例的实施例的限制。在附图中:

图1示出了可用于执行根据本说明书实施例的用于更新区块链节点处的公钥集合的方法的环境的示例的示意图;

图2示出了执行根据本说明书实施例的用于更新区块链节点处的公钥集合的方法的系统架构的示例的示意图;

图3示出了根据本说明书实施例的用于更新区块链节点处的公钥集合的方法所适用的区块链系统的一个示例的示意图;

图4是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法的流程图;

图5是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法中的收据信息获取过程的一个示例的流程图;

图6是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法中的收据信息获取过程的另一示例的流程图;

图7是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的装置的结构框图;

图8是图7所示的用于更新区块链节点处的公钥集合的装置中的收据信息获取单元的结构框图;以及

图9是根据本说明书的一个实施例的用于实现用于更新区块链节点处的公钥集合的方法的计算设备的结构框图。

具体实施方式

以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。

如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。

在本文中,术语“相连”是指两个组件之间直接机械连接、连通或电连接,或者通过中间组件来间接机械连接、连通或电连接。术语“电连接”是指两个组件之间可以进行电通信以进行数据/信息交换。同样,所述电连接可以指两个组件之间直接电连接,或者通过中间组件来间接电连接。所述电连接可以采用有线方式或无线方式来实现。

现在结合附图来描述本说明书实施例的用于更新区块链节点处的公钥集合的方法及装置。

区块链是一种按照时间顺序来将数据区块顺序相连组合而成的链式数据结构,并且以密码学方式保证数据区块不可篡改和不可伪造。区块链包括一个或多个区块。区块链中的每个区块通过包括该区块链中紧接其之前的前一个区块的加密散列而链接到该前一个区块。每个区块还包括时间戳、该区块的加密哈希以及一个或多个交易(transaction)。对已经被区块链节点验证的交易进行哈希处理并形成Merkle树。在Merkle树中,对叶节点处的数据进行哈希处理,并且针对Merkle树的每个分支,在该分支的根处级联该分支的所有哈希值。针对Merkle树执行上述处理,直到整个Merkle树的根节点。Merkle树的根节点存储代表该Merkle树中的所有数据的哈希值。当一个哈希值声称是Merkle树中存储的交易时,可以通过判断该哈希值是否与Merkle树的结构一致来进行快速验证。

区块链是用于存储交易的数据结构。区块链网络是用于管理、更新和维护一个或多个区块链结构的计算节点网络。如上所述,区块链网络可以包括公有区块链网络、私有区块链网络或联盟区块链网络。

在公有区块链网络中,共识过程由共识网络的节点控制。例如,在公有区块链网络中可以存在成千上万个实体协作处理,每个实体操作该公有区块链网络中的至少一个节点。因此,公有区块链网络可以被认为是参与实体的公有网络。在一些示例中,大多数实体(节点)必须按序对每个区块进行签名,并且将签名后的区块添加到区块链网络的区块链中。公有区块链网络的示例可以包括特定对等支付网络。此外,术语“区块链”不特别指代任何特定的区块链。

公有区块链网络支持公有交易。公有交易在公有区块链网络内的所有节点之间共享,并且存储在全局区块链中。全局区块链是指跨所有节点复制的区块链。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实现共识协议。共识协议的示例包括但不限于:工作量证明(POW,proof-of-work),权益证明(POS,proof-of-stake)和权威证明(POA,proof-of-authority)。在本说明书实施例中,采用POW作为非限制性示例。

私有区块链网络被提供来用于特定实体。私有区块链网络中的各个节点的读写权限被严格控制。因此,私有区块链网络通常也称为许可网络,其对允许谁参与网络以及的网络参与水平(例如,仅在某些交易情形下)进行限制。在私有区块链网络中,可以使用各种类型的访问控制机制(例如,现有参与方对添加新实体进行投票,监管机构控制许可等)。

联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识过程由授权节点控制。例如,由若干个(例如,10个)实体(例如,金融机构,保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作该联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是参与实体的私有网络。在一些示例中,每个参与实体(节点)必须按序对每个区块进行签名,并将该区块添加到区块链。在一些示例中,可以由参与实体(节点)的子集(例如,至少7个实体)来对每个区块进行签名,并将该区块添加到区块链。

区块链是防篡改的共享数字分类账,其在公有或私有对等网络中记录交易。分类账被分发到网络中的所有成员节点,并且网络中发生的资产交易历史记录被永久记录在区块中。

共识机制确保分布式区块链网络中的所有网络节点按照相同的顺序执行交易,并且随后写入相同的分类账。

图1示出了可用于执行根据本说明书实施例的实施例的信息提供方法信息或获取方法的环境100的示例的示意图。在一些示例中,环境100使得实体能够参与区块链网络102。如图1所示,环境100包括网络104、和计算设备/系统106、108。在一些示例中,网络104可以包括局域网(LAN),广域网(WAN),因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络104。在一些示例中,计算设备/系统106、108通过网络104相互通信,以及通过网络104实现与区块链网络102之间的通信,以及区块链网络102中的节点(或,节点设备)通过网络104来进行通信。通常,网络104表示一个或多个通信网络。在一些情况下,计算设备/系统106、108可以是云计算系统(未示出)的节点,或者每个计算设备/系统106、108可以是单独的云计算系统,其包括通过网络104互连的多个计算机并且用作分布式处理系统。

在所说明的示例中,计算设备/系统106、108中的每个可以包括能够参与作为区块链网络102中的节点的任何合适的计算系统。计算设备/系统的示例包括但不限于,服务器,台式计算机,笔记本电脑,平板电脑设备和智能手机等。在一些示例中,计算设备/系统106、108上可以安装有用于与区块链网络102交互的一个或多个计算机实现的服务。例如,计算设备/系统106可以上可以安装有第一实体(例如,用户A)的服务,比如,第一实体用于管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算设备/系统108可以上可以安装有第二实体(例如,用户B)的服务,比如,第二实体用于管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图1的示例中,区块链网络102被表示为节点的对等网络,并且计算设备/系统106、108分别作为参与区块链网络102的第一实体和第二实体的节点。

图2示出了执行根据本说明书实施例的实施例的信息提供方法信息或获取方法的系统架构200的示例的示意图。系统架构200的示例包括分别与参与方A,参与方B和参与方C对应的参与方系统202、204、206。每个参与方(例如,用户,企业)参与被提供来作为对等网络的区块链网络212。区块链网络212包括多个节点214,其中,节点214中的至少一些节点在区块链216中记录信息,并且所记录的信息不可更改。尽管在区块链网络212内示意性地示出了单个区块链216,但是可以提供区块链216的多个副本,并且在区块链网络212中维护多个副本,如稍后详细描述的。

在所示出的示例中,每个参与方系统202、204、206分别由参与方A,参与方B和参与方C提供,或者被提供来作为参与方A,参与方B和参与方C,并且充当区块链网络212内的对应节点214。如这里所使用的,节点通常是指连接到区块链网络212的单个系统(例如,计算机,服务器),并且使得相应的参与方能够参与区块链网络。在图2示出的示例中,参与方对应于每个节点214。然而,一个参与方可以操作区块链网络212内的多个节点214,和/或多个参与方可以共享单个节点214。在一些示例中,参与方系统202、204、206使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)来与区块链网络212通信,或者通过区块链网络212进行通信。

节点214在区块链网络212的参与度可以不同。例如,一些节点214可以参与共识过程(例如,作为将区块添加到区块链216的矿工节点),而其他节点214不参与共识过程。作为另一示例,一些节点214存储区块链216的完整副本,而其他节点214仅存储区块链216的部分副本。在图2的示例中,参与方系统202、204、206各自存储区块链216的完整副本216'、216''、216'''。

区块链(例如,图2中的区块链216)由一连串的区块组成,每个区块存储数据。数据的示例可以包括表示两个或更多参与方之间的交易的交易数据。在本说明书实施例中,交易被使用来作为非限制性示例,可以预期的是,任何适当的数据都可以存储在区块链中(例如,文档,图像,视频,音频)。交易的示例可以包括但不限于交换有价值的东西(例如,资产,产品,服务和货币等)。交易数据被不可更改地存储在区块链中。

在存储在区块中之前,对交易数据进行哈希处理。哈希处理是将(作为字符串数据提供的)交易数据转换为固定长度的哈希值(也被作为字符串数据提供)的过程。通过对交易数据进行哈希处理后,即使交易数据出现轻微更改,也会导致得到完全不同的哈希值。哈希值通常是通过使用哈希函数来对交易数据进行哈希处理而生成的。哈希函数的示例包括但不限于安全散列算法(SHA)-256,其输出256比特的哈希值。

多个交易的交易数据可以在被哈希化之后存储在区块中。例如,对两个交易数据进行哈希处理得到两个哈希值,然后,对所得到的两个哈希值再次进行哈希处理以得到另一哈希值。重复该过程,直到对于要存储在区块中的所有交易,得到单个哈希值。该哈希值被称为Merkle根哈希,并且被存储在区块的头部。任何交易的更改都会导致其哈希值发生变化,最终导致Merkle根哈希值发生变化。

通过共识协议来将区块添加到区块链中。区块链网络中的多个节点参与共识协议,并且经过竞争之后将区块添加到区块链中。这样的节点被称为矿工节点(或记账节点)。以上介绍的POW用作非限制性示例。

矿工节点执行共识过程来将交易(所对应的区块)添加到区块链。虽然多个矿工节点参与共识过程,但只有一个矿工节点可以将区块写入区块链。也就是说,矿工节点在共识过程中竞争以将其区块添加到区块链中。更详细地,矿工节点周期性地从交易池中收集待处理的交易(例如,直到达到在区块中可以包括的交易数量的预定限制,如果有的话)。交易池包括来自区块链网络中的参与方的交易消息。矿工节点创建区块,并将交易添加到区块中。在将交易添加到区块之前,矿工节点检查待添加的交易中是否存在区块链的区块中具有的交易。如果该交易已被添加到另一个区块中,则该交易将被丢弃。

矿工节点生成区块头,对区块中的所有交易进行哈希处理,并且成对地组合哈希值以生成进一步的哈希值,直到针对区块中的所有交易得到单个哈希值(Merkle根哈希)。然后,将Merkle根哈希添加到区块头中。矿工还确定区块链中的最新区块(即,添加到区块链的最后一个区块)的哈希值。矿工节点还可以在区块头中添加随机数值(noune值)和时间戳。在挖掘过程中,矿工节点尝试找到满足所需参数的哈希值。矿工节点不断更改nonce值,直到找到满足所需参数的哈希值。

区块链网络中的每个矿工都试图找到满足所需参数的哈希值,并且以这种方式彼此竞争。最终,一个矿工节点找到满足所需参数的哈希值,并将该哈希值通告给区块链网络中的所有其他矿工节点。其他矿工节点验证哈希值,如果确定为正确,则验证区块中的每个交易,接受该区块,并将该区块附加到它们的区块链副本中。以这种方式,区块链的全局状态在区块链网络内的所有矿工节点上达成一致。上述过程是POW共识协议。

在图2所提供的示例中,参与方A想要向参与方B发送一定数量的资金。参与方A生成交易消息,并将交易消息发送到区块链网络,该交易消息被增加到交易池中。区块链网络中的每个矿工节点创建区块,并从交易池中获取交易,并将交易添加到区块。按照这种方式,参与方A所发布的交易被添加到矿工节点的区块中。

在一些区块链网络中,实施密码技术来维护交易的隐私性。例如,如果两个节点想要保持交易私密性,使得区块链网络中的其他节点不能获悉交易细节,则节点可以对交易数据进行加密处理。加密方法的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥进行加密(根据明文生成密文)和解密(根据密文生成明文)的加密过程。在对称加密中,多个节点可以使用相同的密钥,因此每个节点都可以对交易数据进行加密/解密。

非对称加密中使用密钥对来进行加密和解密,且每个密钥对包括的私钥和公钥不同。对于一个节点来说,其具有的非对称加密的密钥对中的私钥需要保密存储;公钥可以公开出去,让其它节点获得。如果用公钥对数据进行加密,只有用对应的私钥才能解密。例如,再次参考图1。参与方A可以使用参与方B的公钥来加密数据,并将加密后的数据发送至参与方B。参与方B可以使用其私钥来解密从参与方A发来的加密数据(密文)并解密得到原始数据(明文)。使用节点的公钥加密的消息,只能使用成对秘钥中对应的私钥解密。

非对称加密还可以用于提供数字签名,这使得交易中的参与方能够确认交易中的其他参与方以及交易的有效性。例如,参与方A可以对消息进行数字签名,而另一个参与方B可以根据参与方A 的数字签名确认消息是由该参与方A发送的。数字签名还可以用于确保消息在传输过程中不被篡改。例如,再次参考图1。参与方A将向参与方B发送消息。参与方A生成消息的哈希值,然后使用其私钥对哈希值进行加密来生成数字签名。参与方A将该数字签名附加到消息,并将具有数字签名的消息发送给参与方B。参与方B使用参与方A的公钥解密数字签名,从而解密出对应的哈希值。参与方B对所接收的消息进行哈希处理以得到另一哈希值,然后比较两个哈希值。如果哈希值相同,则参与方B可以确认该消息确实来自参与方A,并且未被篡改。

在本说明书实施例中,区块链节点可以是图1或图2中的任意参与方。

图3示出了根据本说明书实施例的用于更新区块链节点处的公钥集合的方法所适用的区块链系统的一个示例的示意图。

如图3所示,区块链系统300中包括轻量节点和全量节点,全量节点包括区块链节点301、302等,轻量节点连接至一个或多个全量节点。例如,作为轻量节点的区块链节点301a、301b、301c与全量节点301连接,区块链节点302a、302b、302c与全量节点302连接。区块链系统300中的各个全量节点互相连接,各个全量节点可以作为记账节点来基于区块链技术共同维护区块链系统中的所有交易的账本。记账节点可以执行交易验证、交易共识、区块生成等记账操作。全量节点通常会在本地维护区块链的所有数据,包括区块链中各个区块的区块体和区块头。轻量节点可以仅在本地存储区块链中各个区块的块头,以用于简单的验证操作(例如SPV验证)。轻量节点可以始终连接至相同的全量节点,还可以基于连接规则更换其所连接的全量节点,以降低信任风险。

各个区块链节点所发起的交易可以广播至区块链网络中,以进行共识处理(例如可基于PoW机制进行共识处理)。全量节点所发起的交易可以广播给各个其它全量节点,各个全量节点在接收到交易后可以广播给其所连接的轻量节点。轻量节点所发起的交易可以发送给该轻量节点所连接的全量节点,以由该全量节点广播至其它全量节点或轻量节点。

本说明书实施的用于更新区块链节点处的公钥集合的方法可以由记账节点执行,也可以由轻节点执行。本说明书中的公钥集合包括区块链网络中的所有参与共识的区块链节点(如图3所示的记账节点)的公钥。以下实施例中的用于更新区块链节点处的公钥集合的方法可以用于联盟链,也可以用于公有链。

图4是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法的流程图。

如图4所示,在块402,针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在节点变更类交易标识所指示的节点变更类交易。

对于记账节点,新加入区块可以是区块链中新生成的区块。记账节点可以对新生成的区块进行监听,以确定在区块链系统中是否发生了节点变更类交易。记账节点还可以周期性地扫描未被扫描过的新区块的区块头,以及时确定是否发生了节点变更类交易。对于轻量节点,新加入区块可以是轻量节点从全量节点处新下载的区块。轻量节点可以以任意方式从全量节点下载区块头,例如可以每隔预定周期下载预定数量的区块头,还可以以预定周期下载本地缺少的区块头。在下载区块头之后,轻量节点可以在合适的时间段对新下载的各个区块头进行扫描,以确定各个区块头中是否存在节点变更类交易。

节点变更类交易以用于执行区块链节点变更操作的智能合约为交易对象。用于执行区块链节点变更操作的智能合约可以被部署在区块链的创世区块中。节点变更类交易可以由指定交易发起方发起,指定交易发起方例如可以是区块链系统中的管理员,管理员可以是由一台或多台计算设备组成的服务器。节点变更类交易可以是节点新增类交易,还可以是节点删除类交易。相应地,智能合约可以包括节点新增智能合约和节点删除智能合约。当有新的区块链节点请求加入区块链网络时,管理员可以以节点新增智能合约为交易对象发起节点新增类交易。当需要从区块链网络中删除区块链节点时,管理员可以以节点删除智能合约为交易对象发起节点删除类交易。

收据索引信息包括交易类型标识字段,交易类型标识字段指示该区块中的各个交易的交易类型。在各个区块的区块体中可以包括该区块上的各个交易的收据信息,各个交易收据信息可以以收据树(例如基于默克树生成的收据树)的形式存储在区块中。各个交易的收据信息中可以包括该交易对应的交易类型(Topic),交易类型例如可以包括转账类交易、节点变更类交易、智能合约新增或删除类交易等。在记账节点将各个交易打包生成区块时,可以基于该区块中各个交易的收据信息中的交易类型生成收据索引信息,并将收据索引信息包括在区块头中。在一个示例中,可以将对应于各个交易的交易类型标识包括在收据索引信息中。收据索引信息例如可以是布隆过滤器。在确定区块中是否存在节点变更类交易时,可以基于节点变更类交易标识来查找收据索引信息,当收据索引信息中存在节点变更类交易标识时,可以确定该区块中存在节点变更类交易。节点变更类交易标识可以是指示节点新增类交易的节点新增类交易标识,还可以是节点删除类交易的节点删除类交易标识。

当该区块中存在节点变更类交易时,在块404,获取该区块的区块体信息。由于区块体信息量较大,如果区块中不存在节点变更类交易,则不需要获取区块体信息,从而能够减轻区块链节点的负担。当区块链节点是轻量节点时,由于轻量节点的计算资源以及本地存储空间有限,因而在确定存在节点变更类交易之后获取区块体信息,更能适应轻量节点的运行需求。

在获取到区块体信息之后,在块406,从区块体信息中获取节点变更类交易的收据信息。收据信息包括公钥字段,公钥字段用于存放节点变更类交易所指示的被变更区块链节点的公钥。作为示例,记账节点在处理节点变更类交易时,可以在公钥字段中写入该节点变更类交易对应的区块链节点的公钥。如果所处理的不是节点变更类交易,记账节点可以不向公钥字段写入任何信息,即公钥字段为空。在另一示例中,记账节点可以在交易是节点变更类交易时,使该交易的收据信息包括公钥字段,而对于不是节点变更类交易的交易,可以使该交易的收据信息不包括公钥字段。

作为示例,收据信息的数据结构例如可以是TransactionReceipt<result,gasUsed, logEntries, output>,其中,TransactionReceipt表示收据,result为智能合约的执行结果,gasused是执行智能合约所消耗的gas,output为公钥字段,logEntries执行相应交易的日志条目,在日志条目中可以包括交易日志信息。在另一示例中,公钥字段也可以被包括日志信息中。

获取收据信息的示例性过程将在下文参考图5进行说明。

在获取到收据信息之后,在块408,从收据信息的公钥字段中获取的被变更区块链节点的公钥。被变更区块链节点可以是被新增的区块链节点或被删除的区块链节点。收据信息中的收据信息可以是经过编码之后的信息,此时,可以利用与编码方法对应的解码方法对收据信息进行解码。例如,编码方法可以是RLP编码,解码时可以利用RLP解码方法来进行解码。获取解码后的收据信息之后,可以从中获取被变更区块链节点的公钥。

在获取到公钥之后,在块410,利用所获取的公钥来更新公钥集合。当节点变更类交易标识指示节点新增类交易时,可以将所获取的公钥添加到公钥集合中。如果节点变更类交易标识指示节点删除类交易,可以将所获取的公钥从公钥集合中删除。

通过本实施例,能够提供一种可信任的公钥集合更新方法,并且公钥集合更新过程能够充分适应轻量节点的资源限制,因而能够提供一种对轻量节点较为友好的公钥集合更新方法。

图5是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法中的收据信息获取过程的一个示例的流程图。在该示例中,所获取的区块体信息包括交易树和收据树。

如图5所示,在块502,基于节点变更类交易标识,确定被指定发起节点变更类交易的指定发起方地址以及节点变更类交易对应的智能合约地址。在一个示例中,发起节点删除类交易和节点新增类交易的指定发起方可以相同,例如可以都是管理员。在另一示例中,可以分别为节点删除类交易和节点新增类交易确定不同的指定发起方。

在基于区块头中的收据索引信息确定区块中存在节点变更类交易时,可以基于所存在的节点变更类交易的具体类型确定指定发起方和相应的智能合约地址。各类节点变更类交易的指定发起方地址和所对应的智能合约地址可以存储在本地区块链节点处。在确定存在节点变更类交易时,可以根据对应的节点变更类交易所指示的节点变更类交易类别来读取指定发起方地址和智能合约地址。例如,如果节点变更类交易是节点新增类交易,则可以读取节点新增类交易的指定发起方地址和所对应的智能合约地址。

然后,在块504,基于区块体信息中的交易树信息和指定发起方地址以及智能合约地址,从交易树中确定出节点变更类交易以及节点变更类交易在交易树中的第一位置。可以将所确定的指定发起方地址和智能合约地址与交易树中的各个交易的交易地址进行一一比对,以确定发起方地址与指定发起方地址相符且交易对应地址与所确定的智能合约地址相符的交易。由此确定出的交易即相应的节点变更类交易,该交易在交易树中的位置即节点变更类交易在交易树中的第一位置。

在确定出第一位置之后,在块506,从收据树中获取与所确定的第一位置对应的第二位置处的收据信息。各个交易在交易树中的位置与该交易的收据信息在收据树中的位置存在对应关系。例如,记账节点在将各个交易打包生成区块时,可以按照相同的顺序生成交易树和收据树。由此,各个交易的收据信息在收据树的位置与该交易的交易信息在交易树中的位置相同,从而可以在确定出节点变更类交易在交易对中的位置之后,对收据树的相同位置处获取收据信息。例如,如果节点变更类交易位于交易树中的第一个叶子节点,则可以获取位于收据树中的第一个叶子节点处的收据信息,以获取所确定出的节点变更类交易的收据信息。

在获取到收据信息之后,可以从所获取的收据信息的公钥字段中获取对应的公钥。如果收据信息是经过编码的信息,可以采用相应的解码方法解码之后,获取被变更节点的公钥。

在另一示例中,为了提高所确定出的节点变更类交易的可靠性,可以参考图6,在获取收据树中的与所确定的第一位置对应的第二位置处的收据信息之前,对所确定出的节点变更类交易进行验证,以确定所确定出的节点变更类交易是否的确是节点变更类交易。图6是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的方法中的收据信息获取过程的另一示例的流程图。

如图6所示,在块602,从交易树中确定出节点变更类交易

在块604和,基于节点变更类交易中包含的交易对象地址和智能合约的智能合约地址,对节点变更类交易进行验证,并在块606,确定节点变更类交易是否通过验证。例如,可以对从交易树中确定出的节点变更类交易的交易对象地址和智能合约地址进行哈希运算,然后比较二者的哈希值是否一致。当二者的哈希值一致时,表明从交易树中交易的节点变更类交易的确是所要查找的节点变更类交易。

在一个示例中,可以对从交易树中确定出的节点变更类交易的交易发起方地址和交易对象地址分别进行验证。可以基于从交易树中确定出的节点变更类交易的交易发起方地址和相应节点变更类交易的指定发起方地址来进行交易发起方地址验证,并基于从交易树中确定出的节点变更类交易的交易对象地址和所述智能合约地址,对所查找出的节点变更交易进行交易对象地址验证。作为示例,可以从交易树中确定出的节点变更类交易的交易发起方地址和交易对象地址、指定发起方地址和智能合约地址分别进行哈希运算,然后通过比较哈希值是否一致的方法来进行交易发起方地址验证和交易对应地址验证。当交易发起方地址与指定发起方地址一致且交易对象地址与智能合约地址一致时,可以确定从交易树中确定出的节点变更类交易验证通过。

当从交易树中确定出的节点变更交易验证通过时,在块608,获取收据树中的与所确定的第一位置对应的第二位置处的收据信息。由此,能够避免因确定出的节点变更类交易出现错误而导致不必要的运算资源浪费。

图7是根据本说明书的一个实施例的用于更新区块链节点处的公钥集合的装置的结构框图。如图7所示,公钥集合更新装置700包括节点变更交易确定单元710、区块体信息获取单元720、收据信息获取单元730、公钥获取单元740和公钥集合更新单元。

节点变更交易确定单元710针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在节点变更类交易标识所指示的节点变更类交易。节点变更类交易以用于执行区块链节点变更操作的智能合约为交易对象。收据索引信息包括交易类型标识字段,交易类型标识字段指示该区块中的各个交易的交易类型。当该区块中存在节点变更类交易时,区块体信息获取单元720获取该区块的区块体信息。在获取到区块体信息之后,收据信息获取单元730从区块体信息中获取节点变更类交易的收据信息。收据信息包括公钥字段,公钥字段用于存放所述节点变更类交易所指示的被变更区块链节点的公钥。公钥获取单元740从收据信息的公钥字段中获取的被变更区块链节点的公钥。

在获取到公钥时,公钥集合更新单元750利用所获取的公钥来更新公钥集合。在一个示例中,节点变更类交易标识可以指示节点新增类交易。此时,公钥集合更新单元750可以将公钥添加到所述公钥集合中。在另一示例中,节点变更类交易标识还可以指示节点删除类交易。此时,公钥集合更新单元750可以将公钥从公钥集合中删除。

图8是图7所示的用于更新区块链节点处的公钥集合的装置中的收据信息获取单元730的结构框图。如图8所示,收据信息获取单元730包括指定交易信息确定模块731、第一位置确定模块732、节点变更类交易验证模块733、收据信息获取模块734和收据信息获取模块735。在该示例中,区块体信息包括交易树和收据树。

指定交易信息确定模块731基于节点变更类交易标识,确定被指定发起节点变更类交易的指定发起方地址以及节点变更类交易对应的智能合约地址。第一位置确定模块732基于区块体信息中的交易树信息和指定发起方地址以及所述智能合约地址,从交易树中确定出节点变更类交易以及节点变更类交易在所述交易树中的第一位置。

在确定出第一位置之后,节点变更类交易验证模块733基于节点变更类交易中包含的交易对象地址和所述智能合约的智能合约地址,对节点变更类交易进行验证。在另一示例中,节点变更交易验证模块733可以基于从交易树中确定出的节点变更类交易的交易发起方地址、交易对象地址、指定发起方地址以及智能合约地址,对所查找出的节点变更交易进行验证。

当节点变更交易验证通过时,收据信息获取模块734获取收据树中的与所确定的第一位置对应的第二位置处的收据信息。

在另一示例中,可以不包括节点变更类交易验证模块。在该示例中,当第一位置确定模块732从交易树中确定出节点变更类交易以及其在交易树中的第一位置之后,收据信息获取模块734可以基于所确定出的第一位置从收据树中获取相应的收据信息。

以上参照图1到图8,对根据本说明书实施例的用于更新区块链节点处的公钥集合的方法及装置的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本说明书实施例的装置的实施例。

本说明书实施例的用于更新区块链节点处的公钥集合的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见。

本说明书实施例的用于更新区块链节点处的公钥集合的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于更新区块链节点处的公钥集合的装置例如可以利用计算设备实现。

图9是根据本说明书的一个实施例的用于实现用于更新区块链节点处的公钥集合的方法的计算设备的结构框图。如图9所示,计算设备900包括处理器910、存储器920、内存930、通信接口940和内部总线950,并且处理器910、存储器(例如,非易失性存储器)920、内存930、通信接口940经由总线950连接在一起。根据一个实施例,计算设备900可以包括至少一个处理器910,该至少一个处理器910执行在计算机可读存储介质(即,存储器920)中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。

在一个实施例中,在存储器920中存储计算机可执行指令,其当执行时使得至少一个处理器910:针对新加入的至少一个区块,基于该区块的区块头中的收据索引信息和节点变更类交易标识,确定该区块中是否存在所述节点变更类交易标识所指示的节点变更类交易;当该区块中存在节点变更类交易时,获取该区块的区块体信息;从区块体信息中获取节点变更类交易的收据信息,收据信息包括公钥字段,公钥字段用于存放节点变更类交易所指示的被变更区块链节点的公钥;从收据信息的公钥字段中获取的被变更区块链节点的公钥;以及利用所获取的公钥来更新公钥集合。

应该理解,在存储器920中存储的计算机可执行指令当执行时使得至少一个处理器910进行本说明书实施例的各个实施例中以上结合图1-8描述的各种操作和功能。

根据一个实施例,提供了一种例如非暂时性机器可读介质的程序产品。非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书实施例的各个实施例中以上结合图1-8描述的各种操作和功能。

具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。

在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。

可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。

以上结合附图详细描述了本说明书实施例的实施例的可选实施方式,但是,本说明书实施例的实施例并不限于上述实施方式中的具体细节,在本说明书实施例的实施例的技术构思范围内,可以对本说明书实施例的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书实施例的实施例的保护范围。

本说明书实施例内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书实施例内容。对于本领域普通技术人员来说,对本说明书实施例内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书实施例内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书实施例内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号