首页 / 专利库 / 资料储存系统 / 分布式账本 / 区块链 / 区块链账本 / 一种分区的区块链网络及其实现分区存储的方法

一种分区的链网络及其实现分区存储的方法

阅读:12发布:2021-01-29

专利汇可以提供一种分区的链网络及其实现分区存储的方法专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种分区的 区 块 链 网络,由多个 节点 组成;根据各节点对不同交易数据的可见权限,将部分或全部节点划分在一个或多个分区内;同一分区内部对于交易数据完全可见,不同分区之间对于交易数据不可见;又根据各节点参与共识过程的权限对全部节点分类为全局共识节点、分区共识节点、同步节点;全局共识节点以区块链数据结构存储全网发生的所有通过验证的交易数据,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的交易数据以及其他分区发生的所有通过验证的交易数据的交易指纹。本申请通过对区块链网络中的各节点进行分区和分类,限制了通过验证的交易数据的存储节点范围,提高了数据隐私保护效果。,下面是一种分区的链网络及其实现分区存储的方法专利的具体信息内容。

1.一种分区的链网络,由多个节点组成;其特征是,根据各节点对不同交易数据的可见权限,将部分或全部节点划分在一个或多个分区内;同一分区内部对于交易数据完全可见,不同分区之间对于交易数据不可见;又根据各节点参与共识过程的权限对全部节点分类:能参与所有分区的共识过程的节点为全局共识节点,仅能参与所在分区的共识过程的节点为分区共识节点,不能参与任何共识过程的节点为同步节点;全局共识节点以区块链数据结构存储全网发生的所有通过验证的交易数据,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的交易数据以及其他分区发生的所有通过验证的交易数据的交易指纹。
2.根据权利要求1所述的分区的区块链网络,其特征是,全局共识节点以区块链数据结构存储全网发生的所有通过验证的新区块,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的新区块以及其他分区发生的所有通过验证的新区块的变形区块。
3.根据权利要求2所述的分区的区块链网络,其特征是,对某个分区共识节点或同步节点而言,当通过验证的新区块中的交易数据是该节点所在分区的交易数据,即通过验证的新区块是由该节点所在分区打包为候选区块并通过共识算法验证的,那么该节点存储通过验证的新区块;当通过验证的新区块中的交易数据是其他分区的交易数据,即通过验证的新区块是由其他分区打包为候选区块并通过共识算法验证的,那么该节点存储通过验证的新区块的变形区块。
4.根据权利要求2所述的分区的区块链网络,其特征是,通过验证的新区块中包含该区块中所有交易的完整交易数据,通过验证的新区块的变形区块是将每一项交易数据都替换为相应的交易指纹。
5.根据权利要求1所述的分区的区块链网络,其特征是,不同分区的分区共识节点和同步节点所存储的账本记录互不相同。
6.一种分区的区块链网络实现分区存储方法,其特征是,包括如下步骤。
(1)如果候选区块通过共识算法的验证,就成为合法的新区块,各个全局共识节点和同一分区内的各个分区共识节点均将新区块添加到自身存储的区块链数据结构的末尾;
(2)部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点将合法的新区块中的交易数据均用交易指纹值替代,得到对应的变形区块;
(3)部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点再将变形区块广播给各个同步节点以及其他分区内的各个分区共识节点;
(4)各个同步节点以及其他分区内的各个分区共识节点均仅将变形区块添加到自身存储的区块链数据结构的末尾;
(5)如果候选区块未通过验证,就未成为合法的新区块。

说明书全文

一种分区的链网络及其实现分区存储的方法

技术领域

[0001] 本申请涉及一种区块链(Blockchain)技术,特别是涉及其中对通过验证的交易数据/通过验证的新区块的存储方案。

背景技术

[0002] 2016年10月18日工业和信息化部发布的《中国区块链技术和应用发展白皮书》中,将区块链定义为一种无须中介参与、亦能在互不信任或弱信任的参与者之间维系一套不可篡改的账本记录的技术。首先,区块链是一种以区块(block)为单位的链(chain)状数据结构,每一个区块都与前续区块通过密码学证明的方式链接在一起,如图1所示。其次,区块链是一种全网共享的分布式账本(distributed ledger)。许多场景中,区块链与分布式账本这两个技术术语具有相同含义。
[0003] 典型地,区块链技术被P2P网络(peer-to-peer network)的全部或部分节点用来根据某种共识算法验证新的区块,通过验证的新区块被新增到区块链数据结构的末尾。采用区块链技术的P2P网络就被称为区块链网络。共识是指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流程达成一致的过程。共识机制是定义共识过程的算法、协议和规则。
[0004] 请参阅图2,这是现有的区块链网络一,其中的每个节点均可以参与共识过程,因此每个节点都是共识节点。这种区块链网络的典型代表是一些公有链(public blockchain),例如比特币(bitcoin)所使用的区块链网络。
[0005] 请参阅图3,这是现有的区块链网络一实现共识的方法,包括如下步骤。
[0006] 步骤301:一个或多个节点将等待确认的交易数据广播给其他节点。
[0007] 步骤302:收到等待确认的交易数据的部分或全部节点将若干等待确认的交易数据打包为一个候选区块,通常是将一段时间内等待确认的交易数据进行打包。打包好的候选区块再广播给其他节点。
[0008] 步骤303:收到候选区块的部分或全部节点采用共识算法对候选区块进行验证。
[0009] 现有的区块链网络一中,每个节点都以区块链数据结构记录存储全网发生的所有交易数据,即每个节点都存储一套完整、一致的账本记录。
[0010] 请参阅图4,这是现有的区块链网络一实现存储的方法,包括如下步骤。
[0011] 步骤401:如果候选区块通过共识算法的验证,就成为合法的新区块,各节点均将合法的新区块添加到自身存储的区块链数据结构的末尾。
[0012] 步骤402:如果候选区块未通过共识算法的验证,就未成为合法的新区块,各节点在自身存储的区块链数据结构的末尾均不添加该候选区块。
[0013] 所述步骤401可以无缝地衔接在步骤303之后。
[0014] 请参阅图5,这是现有的区块链网络二。其中的节点分为两类:可以参与共识过程的节点称为共识节点,不可以参与共识过程的节点称为同步节点。这种区块链网络的典型代表是一些联盟链(Consortium blockchain)或私有链(Private blockchain)。
[0015] 请参阅图6,这是现有的区块链网络二实现共识的方法,包括如下步骤。
[0016] 步骤601:将区块链网络中的各节点或者确定为共识节点,或者确定为同步节点。换而言之,区块链网络中的任意节点必然属于以上两类中的一类。
[0017] 步骤602:一个或多个节点将等待确认的交易数据广播给共识节点。
[0018] 步骤603:收到等待确认的交易数据的部分或全部共识节点将若干等待确认的交易数据打包为一个候选区块,通常是将一段时间内等待确认的交易数据进行打包。打包好的候选区块再广播给其他共识节点。
[0019] 步骤604:收到候选区块的部分或全部共识节点采用共识算法对候选区块进行验证。
[0020] 现有的区块链网络二中,无论是共识节点还是同步节点,每个节点都以区块链数据结构存储全网发生的所有交易数据,即每个节点都存储一套完整、一致的账本记录。
[0021] 请参阅图7,这是现有的区块链网络二实现存储的方法,包括如下步骤。
[0022] 步骤701:如果候选区块通过共识算法的验证,就成为合法的新区块。该新区块被广播给各个同步节点或广播给全网各节点,各个共识节点和同步节点均将该新区块添加到自身存储的区块链数据结构的末尾。
[0023] 步骤702:如果候选区块未通过共识算法的验证,就未成为合法的新区块,各个共识节点或同步节点在自身存储的区块链数据结构的末尾均不添加该候选区块。
[0024] 所述步骤701可以无缝地衔接在步骤604之后。
[0025] 请参阅图8,这是现有的区块链网络一或区块链网络二实现查询的方法,包括如下步骤。
[0026] 步骤801:区块链网络中的每个节点均存储有全部历史交易数据的交易指纹。交易指纹可以保存在各节点存储的区块链数据结构的每个区块内,也可以保存在区块链数据结构以外的各节点自身存储器中。
[0027] 该步骤例如是在步骤302中、或步骤603中将若干等待确认的交易数据打包为候选区块时,由执行打包的部分或全部节点对每一笔等待确认的交易数据计算出对应的交易指纹,并打包在候选区块内。
[0028] 或者,该步骤例如是在步骤401中、或步骤701中将合法的新区块添加到区块链数据结构的末尾时,由执行存储的各节点在区块链数据结构以外存储该新区块中的每一笔交易数据的交易指纹。
[0029] 步骤802:区块链网络中的任意节点接收到对历史交易数据的查询请求,所述查询请求中至少包括待查询历史交易数据的交易指纹。
[0030] 步骤803:该节点将查询请求中的交易指纹与自身存储的所有历史交易数据的交易指纹进行比较。
[0031] 步骤804:如果找到相同的交易指纹,表明查询请求中的交易指纹属于某一笔历史交易数据,返回查询成功。此时可选地展示出该笔历史交易数据的部分或全部内容。
[0032] 步骤805:如果未找到相同的交易指纹,表明查询请求中的交易指纹不属于任何历史交易数据,返回查询失败。
[0033] 所述交易指纹是指由交易数据根据加密算法得到的指纹值,不能反向推导出交易数据,仅能用来验证交易数据是否存在以及是否被篡改。优选地,所述加密算法应使得不同的交易数据对应于不同的交易指纹,即不同的交易数据加密后绝不可能产生相同的交易指纹。次优选地,所述加密算法允许极小概率下发生不同的交易数据对应于相同的交易指纹的情况。例如,哈希函数(Hash fuction,也称散列函数)就属于极小概率下可能发生不同的明文对应于相同密文的情况。在区块链网络中,任意节点在将等待确认的交易数据广播并打包为候选区块之前,都要先计算等待确认的交易数据的哈希值是否与账本记录中的历史交易数据的哈希值相重合,如果有重合情况,则判定等待确认的交易数据不合法,由此保证了交易数据与哈希值之间的一一对应关系。
[0034] 上述两种现有的区块链网络中,传输和存储的交易数据都是公开可见的,仅通过“伪匿名”的方式对交易双方进行一定的隐私保护。上述两种现有的区块链网络在进行共识过程中,候选区块会广播给至少是各个共识节点,因此候选区块中所有等待确认的交易数据对于各个共识节点都是可见的。上述两种现有的区块链网络在进行存储过程中,合法的新区块会广播给各个节点,因此新区块中所有交易数据对于各个节点都是可见的。上述两种现有的区块链网络在进行查询过程中,各个节点可在自身存储的全部历史交易数据的交易指纹中对查询请求独立进行查询操作,因此历史交易数据对于各个节点都是可见的。在许多应用场景中,无论是等待确认的交易数据、通过共识算法验证的交易数据,还是历史交易数据都可能包含大量的商业机密和利益的,这些交易数据都不希望暴露给不相关的节点。为了符合各类业务规则和监管要求,也为了提供良好的数据隐私保护,一些改进的区块链技术被提出。
[0035] 有一种现有的区块链网络引入了轻节点(light client)的概念。除轻节点以外的其他节点要下载完整的区块链数据结构的账本记录,而轻节点只需要下载区块链数据结构中每一个区块的区块头(block header)。这样可以降低轻节点的存储容量要求,也使交易数据对轻节点不可见。然而,交易数据对除轻节点以外的其他节点来说还是可见的。由于轻节点中未存储历史交易数据,因此无法实现查询。
[0036] 申请公布号为CN106534097A、申请公布日为2017年3月22日的中国发明专利申请《基于区块链交易的权限管制方法及系统》中,采用对交易数据进行加密的方式来实现区块链网络中的信息保密需求。只有授权节点才能获取解密参数,从而获得解密后的交易数据。非授权节点只能获得加密后的交易数据,缺少解密参数因而无法解密。该方案的缺点在于:
所有交易数据仍向区块链的所有节点广播,虽然仅有特定的授权节点能够解密,但是交易的摘要对于所有节点都是透明的,因而无法满足较高隐私保护要求的应用场景。各个授权节点需要对交易数据进行解密,解密操作的耗时会影响到交易确认的及时性。
[0037] 申请公布号为CN106779707A、申请公布日为2017年5月31日的中国发明专利申请《基于区块链的数字货币交易数据的监管方法、装置及系统》中,采用对交易数据进行加密、区分参与用户与监管用户的方式来实现区块链网络中的信息保密需求。交易数据只能被参与交易的用户以及监管用户解密,其他用户无法解密。该方案的缺点与CN106534097A类似。

发明内容

[0038] 本申请所要解决的技术问题是提供一种能够实现严格的数据隐私保护的区块链网络。为此,本申请还要提供所述区块链网络实现分区存储的方法。
[0039] 为解决上述技术问题,本申请提供了一种分区的区块链网络,由多个节点组成;根据各节点对不同交易数据的可见权限,将部分或全部节点划分在一个或多个分区内;同一分区内部对于交易数据完全可见,不同分区之间对于交易数据不可见;又根据各节点参与共识过程的权限对全部节点分类:能参与所有分区的共识过程的节点为全局共识节点,仅能参与所在分区的共识过程的节点为分区共识节点,不能参与任何共识过程的节点为同步节点;全局共识节点以区块链数据结构存储全网发生的所有通过验证的交易数据,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的交易数据以及其他分区发生的所有通过验证的交易数据的交易指纹。
[0040] 进一步地,全局共识节点以区块链数据结构存储全网发生的所有通过验证的新区块,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的新区块以及其他分区发生的所有通过验证的新区块的变形区块。从提高效率的度出发,对一笔笔交易数据单独进行存储是低效率的。通常是将一段时间内同一分区的等待确认的交易数据打包为候选区块,再对候选区块根据共识算法进行验证,再对通过验证的新区块得到变形区块,各节点分别存储新区块或其变形区块,这样可以提高存储效率。
[0041] 进一步地,对某个分区共识节点或同步节点而言,当通过验证的新区块中的交易数据是该节点所在分区的交易数据,即通过验证的新区块是由该节点所在分区打包为候选区块并通过共识算法验证的,那么该节点存储通过验证的新区块;当通过验证的新区块中的交易数据是其他分区的交易数据,即通过验证的新区块是由其他分区打包为候选区块并通过共识算法验证的,那么该节点存储通过验证的新区块的变形区块。首先,这是将分区共识节点或同步节点的存储内容限制在这些节点所在分区内的通过验证的交易数据,从而使通过验证的交易数据得到有效的隐私保护。其次,其他分区的交易数据虽然不会跨区存储,但是其他分区的交易数据的交易指纹(即变形区块)实现了跨区存储,目的是为了对历史交易记录进行跨区查询的便利性,确保整个区块链网络的数据安全。
[0042] 进一步地,通过验证的新区块中包含该区块中所有交易的完整交易数据,通过验证的新区块的变形区块是将每一项交易数据都替换为相应的交易指纹。这表明变形区块可以用来验证原始区块的内容是否被篡改,但不能用来反向推导出原始区块的内容。
[0043] 进一步地,不同分区的分区共识节点和同步节点所存储的账本记录互不相同。这是与现有的区块链网络的存储方案完全不同的,但却依然能够确保整个区块链网络的数据安全。如有任何节点的任何区块内容被篡改,一方面被篡改的区块保存在全部共识节点和本分区内的其他分区共识节点中,另一方面,被篡改的区块的变形区块保存在全网的所有同步节点以及其他分区的分区共识节点中,因此这种数据篡改可以被任何节点独立发现。
[0044] 本申请还提供了一种分区的区块链网络实现分区存储方法,包括如下步骤。
[0045] (1)如果候选区块通过共识算法的验证,就成为合法的新区块,各个全局共识节点和同一分区内的各个分区共识节点均将新区块添加到自身存储的区块链数据结构的末尾。
[0046] (2)部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点将合法的新区块中的交易数据均用交易指纹值替代,得到对应的变形区块。
[0047] (3)部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点再将变形区块广播给各个同步节点以及其他分区内的各个分区共识节点。
[0048] (4)各个同步节点以及其他分区内的各个分区共识节点均仅将变形区块添加到自身存储的区块链数据结构的末尾。
[0049] (5)如果候选区块未通过验证,就未成为合法的新区块。
[0050] 上述分区的区块链网络、及其实现分区存储的方法取得的技术效果是:通过对区块链网络中的各节点进行分区和分类,为不同分区的节点设计不同的存储方案,将通过验证的交易数据的存储节点限制在全局共识节点和每一笔交易数据所在分区的分区共识节点的范围内,从而使通过验证的交易数据的传播范围大大缩小,提高了数据隐私保护效果。与现有的实现数据隐私保护的区块链技术相比,不存在交易摘要随意传播的险,也不需要承担解密操作的耗时所增加的交易确认时间。
附图说明
[0051] 图1是区块链数据结构的示意图。
[0052] 图2是现有的区块链网络一的示意图。
[0053] 图3是现有的区块链网络一实现共识方法的流程图
[0054] 图4是现有的区块链网络一实现存储方法的流程图。
[0055] 图5是现有的区块链网络二的示意图。
[0056] 图6是现有的区块链网络二实现共识方法的流程图。
[0057] 图7是现有的区块链网络二实现存储方法的流程图。
[0058] 图8是现有的区块链网络一或现有的区块链网络二实现查询方法的流程图。
[0059] 图9是本申请分区的区块链网络的示意图。
[0060] 图10是本申请分区的区块链网络实现分区共识方法的实施例一的流程图。
[0061] 图11是本申请分区的区块链网络实现分区共识方法的实施例二的流程图。
[0062] 图12是本申请引入的变形区块与传统区块之间的结构比较示意图。
[0063] 图13是本申请分区的区块链网络实现分区存储方法的流程图。
[0064] 图14是本申请分区的区块链网络实现分区查询方法的流程图。

具体实施方式

[0065] 请参阅图9,这是本申请提供的一种分区的区块链网络。与现有的各种区块链网络相同,本申请的区块链网络也是由多个节点组成,每个节点都是具有运算与存储功能的电子设备或模块。例如每个节点是一台或一组计算机、或者是其中具有独立运算和存储功能的一个模块。与现有的区块链网络不同在于以下两个方面。首先,本申请根据区块链网络中不同节点对不同交易数据的可见权限,将部分或全部节点划分在一个或多个分区内。同一分区内的各节点可以看到该分区内交易的完整交易数据,即同一分区内部对于交易数据是完全可见的。一个分区内的各节点对于其他分区内的交易不能看到完整的交易数据而只能看到交易指纹,即不同分区之间对于交易数据是不可见的。其次,根据各节点参与共识过程的权限对全部节点进行分类。每个节点被分为以下三类:能参与所有分区的共识过程的节点为全局共识节点,仅能参与所在分区的共识过程的节点为分区共识节点,不能参与任何共识过程的节点为同步节点。等待确认的交易数据仅由全局共识节点和所在分区的分区共识节点进行验证。本申请提供的区块链网络可用于联盟链或私有链。
[0066] 本申请对区块链网络中的节点进行分区后,每个节点可以仅在一个分区内,也可以同时在多个分区内。每个节点可根据需要加入新的分区,或者退出所在分区。因此一个区块链网络中所具有的分区数量、各分区所包含的节点数量都可能随时间而变化。
[0067] 本申请对区块链网络中的节点进行分类后,全局共识节点或者认为在所有分区中,或者认为不在任何分区中。对分区共识节点和同步节点来说,一个节点可以仅在一个分区内、也可同时在多个分区内,在多个分区内的类别可以相同、也可以不同。例如,A节点仅在分区一中作为分区共识节点,只有资格参与分区一的共识过程。B节点仅在分区二中作为同步节点,不能参与任何分区的共识过程。C节点同时在分区一和分区二中均作为分区共识节点,同时有资格参与分区一和分区二的共识过程。D节点同时在分区一和分区三中均作为同步节点,不能参与任何分区的共识过程。E节点既在分区二中作为分区共识节点,同时也在分区三中作为同步节点,只有资格参与分区二的共识过程。
[0068] 优选地,业务场景中的全局管理者或全局监管者作为全局共识节点,业务场景中的部分业务管理者、部分或全部业务的参与者作为分区共识节点。如有必要,某些节点可在全局共识节点、分区共识节点、同步节点之间更改类别。
[0069] 在第一实施例中,根据不同的业务类型对各节点进行分区和分类。假设某个区块链网络是以各金融机构组成的联盟链,至少包括A、B、C、D四个节点分别代表四家行,E节点代表银行业监管者。其中A、B、C三个节点之间之间有跨境支付的业务往来(称为业务一),需要利用区块链网络进行银行间清结算的实时处理。B、C、D三个节点则采用区块链网络作为相互的信用拆借(称为业务二)的单据存证。那么针对业务一,就有A、B、C三个节点构成分区一。针对业务二,就有B、C、D三个节点构成分区二。E节点作为全局共识节点。
[0070] 在第二实施例中,根据不同的数据访问权限对各节点进行分区和分类。假设某个区块链网络是某个数据存储机构,为企事业单位、政府机构等提供数据存储,每个单位允许多个用户分别以不同节点的身份访问和修改数据。由于不同单位具有不同的数据访问权限,至少应根据不同单位的数据访问权限划分分区。更进一步地,在一个单位内部根据用户的不同部、等级、权限等还可进行更为细致的分区和分类。
[0071] 在第三实施例中,根据不同的部门对各节点进行分区和分类。假设某个区块链网络是某个单位的不同部门组成,在单位管理中人事部门及财务部门的数据通常需要对其他部门保密,而管理部门需要了解各部门的运营情况和数据。因此可将人事部门所包含的各节点均分在一个分区内,将财务部门所包含的各节点均分在另一个分区内,管理部门所包含的各节点均作为全局共识节点。
[0072] 在第四实施例中,根据不同的群组对各节点进行分区和分类。在群组化、社区化的组织中,各群组、各社区内允许共享信息,但往往对其他群组有信息保密的需求。因此可将各个群组分别分区,群组内各节点进行信息共享。
[0073] 在第五实施例中,根据不同的资产类别对各节点进行分区和分类。资产及其交易数据通常具有高保密要求,对于同一资产类别的发行、流通、交易数据需要建立一个分区,只有分区内的节点可以了解、访问相关数据。不同资产类别的分区之间,信息应该相互独立、相互保密。如果存在监管者,可将监管者设置为全局共识节点,以满足监管需求。
[0074] 在第六实施例中,根据不同的地理位置对各节点进行分区和分类。许多应用场景下,为便于管理或数据统计,常以地理位置为单位进行数据管理。因此可将同一地理位置所包含的各节点设置为一个分区,分区内的各节点之间可进行数据共享。不同分区之间则进行信息保密。
[0075] 现有的区块链网络对等待确认的交易数据根据共识算法进行验证时,全体共识节点都有资格参与到共识过程中。本申请分区的区块链网络对等待确认的交易数据根据共识算法进行验证时,只有全局共识节点和该等待确认的交易数据所在分区的分区共识节点有资格参与到共识过程中。这便大大减少了该等待确认的交易数据的暴露范围,对于数据隐私保护是极为有利的。
[0076] 优选地,本申请分区的区块链网络并不直接对等待确认的交易数据根据共识算法进行验证,而是将等待确认的交易数据先由全局共识节点和该等待确认的交易数据所在分区的分区共识节点打包为候选区块,候选区块再由全局共识节点和该等待确认的交易数据所在分区的分区共识节点根据共识算法进行验证。这并没有改变该等待确认的交易数据的暴露范围,仍具有良好的数据隐私保护效果。
[0077] 请参阅图10,这是本申请分区的区块链网络实现分区共识方法的实施例一,包括如下步骤。
[0078] 步骤1001:在区块链网络中的各节点中确定全局共识节点。全局共识节点可以参与所有分区的共识过程。
[0079] 步骤1002:对区块链网络中除全局共识节点以外的节点根据对不同交易数据的可见权限进行分区。同一分区内部的节点可以看到该分区内交易的完整交易数据,不同分区之间不能看到其他分区的交易数据。
[0080] 步骤1003:将区块链网络中除全局共识节点以外的节点分为分区共识节点和同步节点。分区共识节点和同步节点可以仅在一个分区内,也可以同时在多个分区内,并且在多个分区内可以具有相同或不同类别。分区共识节点仅能参与所在分区的共识过程,同步节点不能参与任何共识过程。
[0081] 步骤1004:一个或多个节点(称为发起节点)将等待确认的交易数据广播给各个全局共识节点以及与发起节点在同一分区内的分区共识节点。
[0082] 步骤1005:收到等待确认的交易数据的部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点将若干等待确认的交易数据打包为一个候选区块,通常是将一段时间内同一分区内等待确认的交易数据进行打包。打包好的候选区块再广播给各个全局共识节点以及与发起节点在同一分区内的分区共识节点。
[0083] 步骤1006:收到候选区块的部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点采用共识算法对候选区块进行验证。常用的共识算法主要包括:实用拜占庭容错(practical byzantine fault tolerance,PBFT)算法、Paxos算法、工作量证明(proof-of-work,PoW)算法、权益证明(proof-of-stake,PoS)算法、委托权益证明(delegated proof-of-stake,DPoS)算法、活动证明(Proof of activity,PoA)算法、燃烧证明(proof of burn,PoB)算法、能证明(proof of capacity,PoC)算法、消逝时间证明(Proof of elapsed time)算法等。
[0084] 上述步骤1001至步骤1003可以任意调整先后顺序,或者同时进行,如下面的实施例二给出的变形方式。
[0085] 请参阅图11,这是本申请分区的区块链网络实现分区共识的方法的实施例二。实施例二将实施例一中的步骤1001至1003更改为步骤1101至步骤1102,其余无变化。
[0086] 步骤1101:对区块链网络中的各节点根据对不同交易数据的可见权限进行分区。同一分区内部的节点可以看到该分区内交易的完整交易数据,不同分区之间不能看到其他分区的交易数据。
[0087] 步骤1102:在区块链网络中的各节点中确定全局共识节点、分区共识节点和同步节点。全局共识节点可以参与所有分区的共识过程,分区共识节点仅能参与所在分区的共识过程,同步节点不能参与任何共识过程。分区共识节点和同步节点可以仅在一个分区内,也可以同时在多个分区内,并且在多个分区内可以具有相同或不同类别。
[0088] 现有的区块链网络中,各节点都以区块链数据结构存储全网发生的所有交易数据,即每个节点都存储一套完整、一致的账本记录。本申请分区的区块链网络中,只有全局共识节点以区块链数据结构存储全网发生的所有通过验证的交易数据,分区共识节点和同步节点均以区块链数据结构存储所在分区发生的所有通过验证的交易数据以及其他分区发生的所有通过验证的交易数据的交易指纹。这种分区存储方案大大减少了通过验证的交易数据的暴露范围,对于数据隐私保护是极为有利的。
[0089] 优选地,本申请分区的区块链网络并不直接存储通过验证的交易数据或交易指纹,而是存储合法的新区块或其变形区块。对某个分区共识节点或同步节点而言,当合法的新区块中的交易数据是该节点所在分区的交易数据,即合法的新区块是由该节点所在分区打包为候选区块并通过共识算法验证的,那么该节点存储合法的新区块。当合法的新区块中的交易数据是其他分区的交易数据,即合法的新区块是由其他分区打包为候选区块并通过共识算法验证的,那么该节点存储该合法的新区块的变形区块。换而言之,只有全局共识节点以区块链数据结构存储所有分区通过共识算法验证的新区块,分区共识节点和同步节点均以区块链数据结构存储所在分区通过共识算法验证的新区块以及其他分区通过共识算法验证的新区块对应的变形区块。这并没有改变通过验证的交易数据的暴露范围,仍具有良好的数据隐私保护效果。
[0090] 请参阅图10,左侧是传统区块结构,右侧是变形区块结构。每一个区块均包含区块头和区块主体。在区块头中例如存储有如下内容。
[0091] ——父哈希,用于指定该区块的前一个区块。
[0092] ——梅克尔(Merkle)根,是将该区块中的所有交易数据组织为梅克尔树(Merkle tree),该梅克尔树的数值的哈希(Hash)值。由于梅克尔树的特性,该区块中如有任何一个或多个交易数据发生变动,重新计算的梅克尔树的树根的哈希值都将与原始的梅克尔树的树根的哈希值不同。
[0093] ——时间戳(timestamp),用于表明该区块的打包时间。
[0094] ——难度,仅在比特币等区块链网络中存在,用来表示工作量的难度。
[0095] ——随机数(Nonce),仅在比特币等区块链网络中存在。
[0096] 在区块主体中包含该区块中所有交易的完整交易数据(transaction data)。
[0097] 变形区块与传统区块相比,首先将区块主体中的每一项交易数据都替换为相应的交易指纹,其次将区块头中的梅克尔根值根据修改后的区块主体的内容重新计算。
[0098] 本申请分区的区块链网络中,不同分区的分区共识节点和同步节点所存储的账本记录互不相同。例如,A节点仅在分区一中作为分区共识节点,只对分区一打包的候选区块通过验证后直接添加,对其他分区打包的候选区块通过验证后添加其变形区块。B节点仅在分区二中作为同步节点,只对分区二打包的候选区块通过验证后直接添加,对其他分区打包的候选区块通过验证后添加其变形区块。C节点同时在分区一和分区二中均作为分区共识节点,只对分区一或分区二打包的候选区块通过验证后直接添加,对其他分区打包的候选区块通过验证后添加其变形区块。D节点同时在分区一和分区三中均作为同步节点,只对分区一或分区三打包的候选区块通过验证后直接添加,对其他分区打包的候选区块通过验证后添加其变形区块。E节点既在分区二中作为分区共识节点,同时也在分区三中作为同步节点,只对分区二或分区三打包的候选区块通过验证后直接添加,对其他分区打包的候选区块通过验证后添加其变形区块。
[0099] 请参阅图13,这是本申请分区的区块链网络实现分区存储方法的实施例,包括如下步骤。
[0100] 步骤1301:如果候选区块通过共识算法的验证,就成为合法的新区块,各个全局共识节点和同一分区内的各个分区共识节点均将新区块添加到自身存储的区块链数据结构的末尾。
[0101] 步骤1302:部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点将合法的新区块中的交易数据均用交易指纹值替代,得到对应的变形区块。
[0102] 步骤1303:部分或全部的全局共识节点以及同一分区内的部分或全部的分区共识节点再将变形区块广播给各个同步节点(包含同一分区内的同步节点和其他分区内的同步节点)以及其他分区内的各个分区共识节点。
[0103] 步骤1304:各个同步节点以及其他分区内的各个分区共识节点均仅将变形区块添加到自身存储的区块链数据结构的末尾。
[0104] 步骤1305:如果候选区块未通过验证,就未成为合法的新区块,各节点在自身存储的区块链数据结构的末尾均不添加该候选区块。
[0105] 所述步骤1301可以无缝地衔接在步骤1106之后。
[0106] 现有的区块链网络中,各节点均存储所有历史交易数据的交易指纹。一旦需要对历史交易数据进行查询,各节点均以自身存储的所有历史交易数据的交易指纹与查询请求中的交易指纹进行比较,就可以独立得出查询结果。本申请分区的区块链网络中,各节点均具有分区标识,各节点也均存储所有历史交易数据的交易指纹。分区标识是指交易数据所在分区。一旦需要对历史交易数据进行查询,接收查询请求的节点先通过比较自身的分区标识与发出查询请求的节点的分区标识是否属于同一分区,来判断发出查询请求的节点是否有查询权限。只有在有查询权限的前提下,接收查询请求的节点才会以自身存储的所有历史交易数据的交易指纹与查询请求中的交易指纹进行比较,就可以独立得出查询结果。这种分区查询方案将每个节点对历史交易数据的查询范围局限在该节点所在分区的历史交易记录的范围内,不允许跨区查询,从而限制了历史交易数据的暴露范围,对于数据隐私保护是极为有利的。
[0107] 请参阅图14,这是本申请分区的区块链网络实现分区查询的方法,包括如下步骤。
[0108] 步骤1401:区块链网络中的每个节点均具有分区标识。分区标识记录了该节点所在分区。由于一个节点可以仅在一个分区内,也可同时在多个分区内,因此分区标识可以仅记录一个所在分区,也可同时记录多个所在分区。如果节点所在分区发生变化,那么相应的分区标识也同步更新。此时,全局共识节点被认为在所有分区内,其分区标识记录了所有分区。
[0109] 步骤1402:区块链网络中的每个节点均存储有全部历史交易数据的交易指纹。交易指纹保存在各节点存储的区块链数据结构的每个区块内,和/或保存在区块链数据结构以外的各节点自身存储器中。
[0110] 该步骤例如是在步骤1105中将若干等待确认的交易数据打包为候选区块时,由执行打包的部分或全部节点对每一笔等待确认的交易数据计算出对应的交易指纹,并打包在候选区块内。该候选区块一旦通过共识算法的验证成为了合法的新区块,那么新区块与相应的变形区块中都具有每一笔交易数据的交易指纹。无论是全局共识节点、分区共识节点还是同步节点,都在自身存储的区块链数据结构中具有了全部历史交易数据的交易指纹。
[0111] 或者,该步骤例如是在步骤1301中将合法的新区块添加到区块链数据结构的末尾时,由执行存储的各节点在区块链数据结构以外存储该新区块中的每一笔交易数据的交易指纹。此时,全局共识节点与所在分区的分区共识节点是在自身存储的区块链数据结构之外具有了这一个新区块中交易数据的交易指纹,其他分区的分区共识节点和全部的同步节点则是在这一个新区块对应的变形区块中(也就是在自身存储的区块链数据结构中)具有了这一个新区块中交易数据的交易指纹。
[0112] 步骤1401至步骤1402的顺序可以任意调换,或者同时进行。
[0113] 步骤1403:区块链网络中的任意节点(例如B节点)接收到A节点(发出查询请求的节点)发出的对历史交易数据的查询请求,所述查询请求中至少包括发出查询请求的A节点的分区标识、待查询历史交易数据的交易指纹。
[0114] 步骤1404:接收查询请求的B节点将自身的分区标识与发出查询请求的A节点的分区标识进行比较,判断这两个节点是否在同一分区内。只要B节点的分区标识中有任意分区与A节点的分区标识中有任意分区一致,就认为这两个节点在同一分区内。例如,A节点的分区标识表明A节点同时在分区一和分区二内,B节点的分区标识表明B节点同时在分区二和分区三内,由于A、B两个节点具有共同的分区二因此被认为在同一分区内。
[0115] 由于全局共识节点被认为在所有分区内,因此发出查询请求的A节点与接收查询请求的B节点中的任意一个为全局共识节点的话,这两个节点必然在同一分区内。
[0116] 步骤1405:如果接收查询请求的B节点与发出查询请求的A节点不在同一分区内,B节点向A节点返回无查询权限。
[0117] 步骤1406:如果接收查询请求的B节点与发出查询请求的A节点在同一分区内,B节点进一步将查询请求中的交易指纹与自身存储的所有历史交易数据的交易指纹进行比较。
[0118] 步骤1407:如果找到相同的交易指纹,表明查询请求中的交易指纹属于某一笔历史交易数据,B节点向A节点返回查询成功。此时B节点可选地向A节点展示出该笔历史交易数据的部分或全部内容。
[0119] 步骤1408:如果未找到相同的交易指纹,表明查询请求中的交易指纹不属于任何历史交易数据,B节点向A节点返回查询失败。
[0120] 以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈