区块链的块数据结构、账本数据结构、管理方法及装置与流程

文档序号:24487727发布日期:2021-03-30 21:12阅读:167来源:国知局
区块链的块数据结构、账本数据结构、管理方法及装置与流程

本公开属于区块链交易技术领域,尤其涉及一种区块链账本数据结构、账本管理方法及装置。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,是一种防篡改的、共享的数字化账本,用于记录公有或私有对等网络中的交易。

现有的区块链账本数据结构采用的是链表的结构,账本分发给网络中的所有成员节点,在通过哈希密码算法链接的区块的顺序链中,永久记录网络中的对等节点之间发生的资产交易的历史记录;其顺序链即由一个个块通过hash(散列,也称为哈希)串联成的链表结构,每个块由块头和块主体两部分构成,块头为父块的哈希值,块主体包含当前块的所有交易列表(即账页信息)。

区块链的这种链表模式账本数据结构,由于记录交易数据的全局账本在网络中是公开的,缺乏对交易有效的隐私保护,任意攻击者都能够获取所有交易信息,使交易者的隐私有泄露的风险。

有鉴于此,特提出本公开。



技术实现要素:

本公开实施例提供一种区块链的块数据结构、账本数据结构、管理方法及装置及设备,能够从账本层面对交易进行有效的隐私保护。

第一方面,本公开实施例提供一种区块链的块数据结构,包括

分区账本,用于记录对应业务特性的交易页数据;

主账本,用于记录各分区账本的哈希值以及分区账本的访问权限数据;

分区账本与主账本之间为具有分支关系的层级结构,分区账本为主账本的子级。

在一些实施例中,主账本还用于,生成块的块头数据,所述块为区块链账本中的链表块;块头数据用于记录父块主账本和父块块头的哈希值。

在一些实施例中,主账本中还设有分区账本的生命周期管理机制;

生命周期管理机制用于记录各分区账本的状态,并根据分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

在一些实施例中,分区账本的状态包括

正常状态:表示能够正常生成页数据的状态;

暂停状态:表示暂停生成页数据的状态;

终止状态:表示终止生成页数据的状态。

第二方面,本公开实施例提供了一种区块链账本数据结构,该区块链账本数据结构为链表结构,链表结构中包括块,块包括块头和块主体,块主体包括:

分区账本,用于记录对应业务特性的交易页数据;

主账本,用于记录各分区账本的哈希值以及分区账本的访问权限数据;

分区账本与主账本之间是具有分支关系的层级结构,分区账本为主账本的子级;

块头用于记录父块块头和父块主账本的哈希值。

在一些实施例中,主账本中还设有分区账本的生命周期管理机制;

生命周期管理机制用于记录各分区账本的状态,并根据分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

第三方面,本公开还提供了一种区块链的账本的管理方法,方法包括步骤:

将分区账本中当前交易页数据的哈希值,记录到主账本;其中分区账本用于记录对应业务特性的交易页数据;

主账本与作为其子级的各当前分区账本之间,以具有分支关系的层级结构,生成块的块主体;该块的块头记录父块块头和父块主账本的哈希值;

将通过共识的块写入区块链的账本中。

在一些实施例中,方法还包括

向只读节点广播块的主账本数据;

获取只读节点的分区账本同步请求;该分区账本同步请求为只读节点接收到主账本数据后,根据主账本中记录的只读节点具有的分区账本访问权限数据发起。

在一些实施例中,在获取分区账本中当前交易页数据的哈希值,记录到主账本之前,该方法还包括:

获取交易数据,根据交易数据的分区号放入对应分区的交易池中;分区是根据交易的业务特性划分的数据存储区域,分区号为对应分区的唯一标识。

在一些实施例中,获取只读节点的分区账本同步请求后,管理方法还包括:

获取只读节点的分区账本同步请求,得到分区账本同步请求中的节点私钥签名;

从块的主账本中,获取具有对应分区账本访问权限的公钥列表;

利用公钥列表对节点私钥签名进行解密验证;

对通过解密验证的只读节点,发送对应分区账本的页数据。

在一些实施例中,在对通过解密验证的所述只读节点,发送对应分区账本的页数据后,管理方法还包括:

只读节点接收分区账本的页数据;

只读节点对接收的页数据进行处理,得到对应分区的页哈希值;

将只读节点生成的页哈希值,与通过广播接收的区块主账本对应的页数据哈希值进行比较;

比较结果一致时,只读节点将接收的分区账本的页数据写入该节点账本。

在一些实施例中,该方法还包括:

在主账本中设置分区账本的生命周期管理机制;生命周期管理机制用于记录各分区账本的状态,并根据分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

在一些实施例中,子级分区账本的状态包括

正常状态:表示能够正常生成页数据的状态;

暂停状态:表示暂停生成页数据的状态;

终止状态:表示终止生成页数据的状态。

在一些实施例中,该方法还包括:

获取包含目标分区账本状态的交易数据,发送至主账本;

根据目标分区账本状态的交易数据,设置主账本中对应的分区账本状态;

将设置为终止状态的分区账本数据进行移除。

在一些实施例中,在将设置为终止状态的分区账本数据进行移除之后,该方法还包括:

将移除的分区账本数据进行归档。

第四方面,本公开实施例还提供了一种区块链的账本的管理装置,装置包括:

数据获取模块:用于将分区账本中当前交易页数据的哈希值,记录到主账本;其中分区账本用于记录对应业务特性的交易页数据;

块生成模块:用于将主账本与作为其子级的各当前分区账本,以具有分支关系的层级结构,生成块的块主体;该块的块头记录父块块头和父块主账本的哈希值;

块处理模块:用于将通过共识的区块写入区块链的账本中。

在一些实施例中,装置还包括

数据广播模块,用于向只读节点广播块的主账本数据;

信息接收模块:用于获取只读节点的分区账本同步请求;分区账本同步请求是只读节点接收到主账本数据后,根据主账本对只读节点具有的分区账本访问权限数据发起。

在一些实施例中,装置还包括数据处理模块,该模块用于:

获取交易数据,根据交易数据的分区号放入对应分区的交易池中;分区为根据交易的业务特性划分的数据存储区域,分区号为对应分区的唯一标识。

在一些实施例中,装置还包括权限验证模块,该模块用于:

获取只读节点的分区账本同步请求,得到分区账本同步请求中的节点私钥签名;

获取区块主账本中存储的具有对应分区账本访问权限的公钥列表;

利用公钥列表对节点私钥签名进行解密验证;

对通过验证的只读节点,发送对应分区账本的页数据。

在一些实施例中,装置还包括:

在主账本中设置分区账本的生命周期管理机制;生命周期管理机制用于记录各分区账本的状态,并根据分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

在一些实施例中,该装置还包括数据裁剪模块,该模块用于:

获取包含目标分区账本状态的交易数据,发送至主账本;

根据目标分区账本状态的交易数据,设置主账本中对应的分区账本状态;

将设置为终止状态的分区账本数据进行移除。

第五方面,本公开实施例还提供了一种区块链的账本的管理设备,设备包括:处理器,以及存储有计算机程序指令的存储器;处理器读取并执行计算机程序指令,以实现上述任意一实施例中的区块链的账本的管理方法。

第六方面,本公开还提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述任意一实施例中的区块链的账本的管理方法。

本公开实施例的区块链的块数据结构、账本数据结构、管理方法及装置,通过设置分区账本和主账本,将区块链上的交易根据不同的业务特性写入不同的分区账本,通过数据的分区隔离利于实现对交易数据的授权管理,可以在账本层面通过不同的区进行隐私保护。

附图说明

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

图1是本公开实施例提供的一种区块链的块数据结构的结构示意图;

图2是图1所示区块链的块数据结构在一个具体实施例中的结构示意图;

图3是图2中所述块数据结构生成块的示意图;

图4是本公开实施例提供的一种区块链账本数据结构的结构示意图;

图5是本公开实施例提供的一种区块链的账本的管理方法的流程示意图;

图6是本公开一具体实施例提供的一种区块链的账本的管理方法的流程示意图;

图7是本公开另一具体实施例提供的一种区块链的账本的管理方法的流程示意图;

图8是本公开实施例提供的一种区块链的账本的管理装置的结构示意图;

图9是本公开另一具体实施例提供的一种区块链的账本的管理装置的结构示意图;

图10是本公开实施例提供的一种区块链的账本的管理设备的结构示意图。

具体实施方式

下面将详细描述本公开的各个方面的特征和示例性实施例,为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本公开进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本公开,而不是限定本公开。对于本领域技术人员来说,本公开可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本公开的示例来提供对本公开更好的理解。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

区块链是去中心化的分布式账本系统,可用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账和支付等,由共识节点(也可以称为“记账节点”)是区块链的交易处理和账本维护的主体,主要负责参与共识过程和对账本的读写操作;共识节点将交易产生的区块(简称“块”)广播给所有其他共识节点进行共识,对达成共识的区块写入链表式区块链账本,这样区块链上的数据在所有节点存储,实现全局共享、不可篡改的优势,但同时也因为所有交易都在一个账本上共享同步,造成了交易数据隐私泄露的隐患。

为了解决现有技术问题,本公开实施例提供了一种区块链的块数据结构、区块链账本数据结构和账本管理方法、装置、设备及计算机存储介质,从账本层面上实现对交易的有效隐私保护。

下面首先对本公开实施例所提供的区块链的块数据结构进行介绍。

图1示出了本公开一个实施例提供的区块链的块数据结构的结构示意图。如图1所示,该数据结构可以包括:

分区账本110,用于记录对应业务特性的交易页数据;

主账本120,用于记录各分区账本的哈希值以及分区账本的访问权限数据;

分区账本110与主账本120之间为具有分支关系的层级结构,分区账本110为主账本120的子级。

业务特性可以根据交易涉及的业务类型或性质进行设定,例如票据类型的交易,可以按照性质分为“电影票”、“景点门票”、“车票”等。因此本实施例中,从块的数据结构上,按照交易涉及的不同业务特性,划分分区账本,以将区块链上的交易根据不同的业务特性写入不同的分区账本,分区账本只记录对应的业务特性的交易页数据,这样利于通过访问权限的管理手段在不同分区之间进行隔离,可以在账本层面通过不同的区进行隐私保护。

主账本120与各分区账本110之间可以是具有分支关系的层级结构,分区账本110为主账本120的子级,与主账本120形成具有两层数据结构的树形结构;这样各分区账本110分别记录分区中所有交易的页数据,而主账本120中记录各分区账本110的哈希值和访问各分区账本的权限数据。示例性的,如图2所示,对于分区1、分区2和分区3,具有对应的分区账本211、分区账本212和分区账本213;主账本220中划分出各分区的记录区域,标记编号和描述信息;然后接收各分区账本的最新哈希值进行记录,同时记录各分区账本访问权限列表(即上述权限数据)。

这样当一个块生成并通过共识写入区块链账本时,在账本层面,只能在表层的主账本看到各分区账本的哈希值,如果节点需要同步块中的页数据,需要通过主账本上记录的各分区账本的权限数据验证,验证发起请求的节点有权限访问获取该节点所请求的分区账本页数据;继而实现在账本层面通过不同的区进行隐私保护。

示例性的,主账本的权限数据可以为节点公钥列表,节点公钥列表记录了对应节点的访问权限;当需要同步数据的节点发起请求时,通过节点公钥列表验证请求中的节点私钥签名,实现权限的验证,保障分区账本数据同步的隐私安全性。

并且,在一些实施例中,如图3所示,各分区账本310和主账本320记录在块300的块主体330中,主账本320还用于生成区块链账本链表中块300的块头数据340;该块头数据340记录父块主账本和父块块头的哈希值。

当一个块通过共识后写入区块链账本时,块主体记录树形的两层账本结构,块头位置记录的是前一个块的主账本与该前一个块的块头哈希值,因此较之于传统区块链账本,本实施例块数据写入区块链后,仍能够通过验证最后一个块来验证整个区块链账本的一致性;并且相较于传统区块链账本在块主体记录整个块页数据、并在块头记录前一个块哈希值的数据结构来说,本公开实施例中的块数据结构,还能够很大程度上保护用户的交易数据隐私。

在另一些实施例中,主账本中还设有分区账本的生命周期管理机制;生命周期管理机制用于记录各子级分区账本的状态,分区账本状态即对交易分区的状态,子级分区账本的状态包括:

正常状态:表示能够正常生成页数据的状态;

暂停状态:表示暂停生成页数据的状态,该状态可以再次被恢复为正常状态;

终止状态:表示终止生成页数据的状态,该状态不可被恢复为正常状态或暂停状态。

节点可以根据主账本记录的子级分区账本的状态,控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

其中,处于终止状态的分区账本,后续即使有对应业务特征的交易数据提交到共识节点,但该分区账本中也不再生成新的页数据;还可以通过另外开辟一个分区账本处理这些交易数据。

分区账本的状态设置,可以适应不同的交易数据情况,例如交易数据正常,则分区账本状态正常;区块链运营方发现疑似异常或非法的交易数据,可以暂停分区账本处理交易和生成页数据,这样如果质疑解除则可以将暂停状态改为正常状态,如果质疑被证实,则将暂停状态改为终止状态,彻底停止分区账本处理交易和生成页数据。这样可以在对区块链交易处理和维护过程中,当出现某个分区的交易异常时,保证区块链账本其他分区的稳定、正常运行。

图4示出了本公开一个实施例提供的区块链账本数据结构的结构示意图。如图4所示,该区块链账本数据结构为链表结构,链表结构中包括块,块包括块头和块主体,块主体包括:

分区账本410,用于记录对应业务特性的交易页数据;

主账本420,用于记录各分区账本的哈希值以及分区账本的访问权限数据;

分区账本410与主账本420之间为具有分支关系的层级结构,分区账本410为主账本420的子级;

链表结构中块400的块头440记录父块块头和父块主账本的哈希值。

该区块链账本数据结构中,形成链表的块400的块主体430部分,具有与图1所示的块数据结构,并在块400(除了链上第一个区块,即创世区块外)的块头部分,记录前一个块(即父块)的块头和其主账本的哈希值,这样每个块都连接到了它们的父块,从而形成区块链账本,并从账本层面,通过分区管理保护交易数据的隐私性。

在另一些实施例中,作为进一步改进,主账本中还设有分区账本的生命周期管理机制,参考图2所示,;生命周期管理机制用于记录各子级分区账本的状态,分区账本状态即对交易分区的状态,子级分区账本的状态包括:

暂停状态:表示暂停生成页数据的状态,该状态可以再次被恢复为正常状态;

终止状态:表示终止生成页数据的状态,该状态不可被恢复为正常状态或暂停状态。

节点可以根据主账本记录的子级分区账本的状态,控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

其中,处于终止状态的分区账本,后续即使有对应业务特征的交易数据提交到共识节点,但该分区账本中也不再生成新的页数据;还可以通过另外开辟一个分区账本处理这些交易数据。

由于传统区块链账本中,其链表结构每个子块中都记录了父块的所有交易列表的哈希值,所以一旦账本中某个交易出现问题,是无法将该交易从账本中裁剪掉的,因为中间任一块的数据改变,都会令后续所有块的哈希数据改变,但如果不裁剪异常数据,则后续上链的块也保留了错误数据;因此这种情况下,只能放弃整个账本,从而影响区块链上其他交易。

本实施例中的区块链账本数据结构在运行过程中,当区块链上某一个块中的分区账本记录的页数据出现异常,或被判定为非法数据,则可通过分区账本的生命周期管理,将该分区账本的状态设置为终止状态,使后续即使有该业务特征的交易数据提交到共识节点,但对应交易的分区账本中也不再生成新的页数据。但对于已经写入区块链账本的块,将出现异常或被判定为非法数据的块,以及链上该块之后的块,这些块的块主体中对应的分区账本可以被裁剪掉,裁减掉该分区账本数据后,因为进行裁剪的块的主账本未发生改变,所以后续各块的主账本记录的数据也不会发生改变,从而能够保证区块链账本中其他分区的正常运行。

图5示出了本公开一个实施例提供的区块链的账本的管理方法的流程示意图。如图5所示,区块链的账本的管理方法包括步骤:

s501.获取分区账本中当前交易页数据的哈希值,记录到主账本;其中分区账本用于记录对应业务特性的交易页数据;

s502.主账本与作为其子级的各当前所述分区账本之间以具有分支关系的层级结构,生成区块的块主体;该区块块头记录父块块头和父块主账本的哈希值;

s502.将通过共识的所述区块写入区块链的账本中。

本实施例提供的区块链的账本的管理方法通过构造具有分区特性的区块链账本数据结构,进行账本的数据写入和维护操作,继而实现从账本层面保护交易数据的隐私性。

具体的,本实施例中,分区账本用于记录对应业务特性的交易页数据,并将交易数据页的哈希值提交到主账本,由主账本进行记录。

主账本与作为其子级的各当前分区账本之间,以具有分支关系的层级结构,生成块的块主体;然后把通过共识的所述区块写入区块链的账本中。这样在整个区块链的账本中,由于主账本层面记录的是各个相关数据的哈希值,而不是明文数据,利于实现从账本层面保护交易数据的隐私性。

示例性的,图6示出了本公开实施例提供的区块链的账本的管理方法在一个具体实施例中流程示意图,该管理方法包括:

步骤s601.获取交易数据,根据交易数据的分区号放入对应分区的交易池中;分区为根据交易的业务特性划分的数据存储区域,分区号为对应分区的唯一标识。

交易的业务特性可以根据交易涉及的业务类型或性质进行设定,例如票据类型的交易,可以按照性质分为“电影票”、“景点门票”、“车票”等。

区块链数据的存储是基于节点本地文件系统,将数据存入文件系统的物理存储区域后通过分配不同的进程进行处理。本实施例中,对节点将交易数据存储在本地数据库中,不同的分区有各自配置独立的本地数据库,并设置分区号作为本地数据库的唯一标识;

本步骤中,当链上共识节点接收到要发送上链的交易时,根据交易数据包含的分区号放入对应分区的交易池中。

步骤s602.将当前所有分区交易池中的交易数据打包成候选块,广播给区块链的所有共识节点。

链上获取到交易数据的共识节点,将各分区交易池的交易数据打包成候选块,候选块中的各业务类型的交易数据仍标记到对应的分区,方便接收候选块的共识节点处理。

步骤s603.获取分区账本中当前交易页数据的哈希值,记录到主账本;主账本与作为其子级的各当前分区账本之间以具有分支关系的层级结构,生成区块。

在共识过程中,每个共识节点对候选块中对应不同分区的交易数据,通过不同处理进程进行并发执行,提升区块链整体的性能。

每个分区的处理进程最终会得到对应分区的页数据,页数据记录到对应的分区账本中,然后将各分区页数据的页哈希值提交到主账本进程,最终完成一个新区块的生成。

该新区块的数据结构具有与图1所示块数据结构相同的结构;生成的新区块中,将主账本作为根数据,各分区账本作为叶子结点,与主账本形成两层的树形数据结构,生成新区块的块主体数据,新区块的块头记录了对前一个区块的块头和主账本一起进行哈希运算后的结果;分区账本记录对应业务特性的交易页数据,各分区账本提交当前页数据的页哈希值到主账本,主账本记录的数据包括各分区账本页哈希值的有序集合;这样当一个新的区块经过共识节点的共识计算,可以写入区块链账本的末尾,但在账本层面,只能在表层的主账本得到各分区账本的哈希值。

并且,主账本中还设有区域记录各分区账本的访问权限数据;如果节点需要同步块中的页数据,需要通过主账本上记录的各分区账本的权限数据验证,验证发起请求的节点有权限访问获取该节点所请求的分区账本页数据;继而实现在账本层面通过不同的分区进行隐私保护。

该访问权限数据可以为节点公钥列表,当需要同步数据的节点发起请求时,通过节点公钥列表验证请求中的节点私钥签名,实现权限的验证,保障分区账本数据同步的隐私安全性。

步骤s604.将通过共识的所述区块写入区块链的账本中。

基于区块链的共识机制,经由共识节点投票共识的区块,可以写入区块链的账本中,该区块链的账本可以是具有与图3所示结构相同的链表结构;在块(除了链上第一个区块外的块)的块头部分,记录前一个块(即父块)的块头和其主账本的哈希值,这样每个块都连接到了它们的父块,从而形成区块链账本,能够从账本层面通过分区管理保护交易数据的隐私性。

步骤s605.向只读节点广播所述区块的主账本数据。

共识节点中对达成共识的区块写入本地存储的区块链账本,而不参与共识的只读节点,需要向共识节点请求数据同步;因此,共识节点将达成共识的新区块中的主账本数据向只读节点进行广播。

步骤s606.获取只读节点的分区账本同步请求。

该分区账本同步请求为只读节点接收到所述主账本数据后发起。当只读节点接收到新区块的主账本数据后,判断该主账本数据所属的区块为新区块,会向共识节点提交具有权限的分区页的数据同步申请。例如对于达成共识的新区块“101”,当前只读节点具有同步其中分区账本“101a”的权限,则向共识节点发起对该新区块的对应分区账本同步请求,请求获取分区页数据。

步骤s607.获取只读节点的分区账本同步请求中的节点私钥签名;

步骤s608.获取所述当前区块主账本中存储的具有对应分区账本访问权限的公钥列表;

步骤s609.利用公钥列表对所述节点私钥签名进行验证。

共识节点接收到只读节点的分区账本同步请求后,会验证该申请的节点签名是否具有该分区的权限,如果具有则将该分区的页数据发送给只读节点,如果不具有权限则拒绝该请求。

只读节点发起的请求中包含目标数据的请求信息和私钥签名,共识节点获取主账本中存储的公钥列表,通过对应公钥去对该节点的私钥签名进行验证,验证通过,则只读及节点具有同步权限,验证失败,可以拒绝只读节点的请求;这样只读节点只可以依据权限得到对应的分区数据,但无法获取权限之外的其他数据,利于保护账本的隐私。

步骤s610.共识节点对通过验证的只读节点,发送对应分区账本的页数据。

步骤s611.只读节点接收分区账本的页数据;

步骤s612.只读节点对接收的页数据进行处理,得到对应分区的页哈希值;

步骤s613.将只读节点生成的页哈希值,与通过广播接收的当前块主账本对应的页数据哈希值进行比较;

步骤s614.比较结果一致时,只读节点将接收的分区账本的页数据写入该节点账本。

只读节点获取到请求的页数据后,通过对应分区的进程进行处理,生成该分区页数据的哈希值,与之前接收到的主账本上记录的页哈希值进行比较,比较结果一致,则将获取的页数据写入本地账本,不一致则拒绝写入。

在另一些实施例中,如图7所示的,在将分区账本中当前交易页数据的哈希值,记录到主账本之前,本公开的区块链的账本管理方法还包括:

步骤s701.在主账本中设置分区账本的生命周期管理机制。

生命周期管理机制用于记录各子级分区账本的状态,分区账本状态即对交易分区的状态,子级分区账本的状态可以包括

正常状态:表示能够正常生成页数据的状态;

暂停状态:表示暂停生成页数据的状态,该状态可以再次被恢复为正常状态;

终止状态:表示终止生成页数据的状态,该状态不可被恢复为正常状态或暂停状态。

步骤s702.根据子级分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

处于终止状态的分区账本,后续即使有对应业务特征的交易数据提交到共识节点,但该分区账本中也不再生成新的页数据;还可以通过另外开辟一个分区账本处理这些交易数据。

分区账本的状态设置,可以适应不同的交易数据情况,例如交易数据正常,则分区账本状态正常;区块链运营方发现疑似异常或非法的交易数据,可以暂停分区账本处理交易和生成页数据,这样如果质疑解除则可以将暂停状态改为正常状态,如果质疑被证实,则将暂停状态改为终止状态,彻底停止分区账本处理交易和生成页数据。

步骤s703.获取关于目标分区账本状态的交易数据,发送至主账本;

步骤s704.根据目标分区账本状态的交易数据,设置主账本中对应的分区账本状态。

当运营方发现上链后的某一块区块以及之后的区块中,对应某个分区账本的数据疑似异常或异常,则提交一笔交易到链上共识节点,用于令各节点修改对应分区账本状态为暂停状态或终止状态;在产生新块时,处于暂停或终止状态的分区账本没有页数据,可以不提交哈希值到主账本。

步骤s705.将设置为终止状态的分区账本数据进行移除。

对于出现问题的该区块以及之后的区块,或者链上全部包含该分区账本的区块,将对应终止状态的分区账本数据,从所在节点上移除,进行归档,放入执行查询的归档设备中,移除分区账本的区块,主账本数据不变,但移除的分区账本数据在区块链中无法查看。

传统区块链账本的链表中,每个子块中都记录了父块的所有交易列表的哈希值,所以一旦账本中某个交易出现问题,是无法将该交易从账本中裁剪掉的,因为中间任一块的数据改变,都会令后续所有块的哈希数据改变,但如果不裁剪异常数据,则后续上链的块也保留了错误数据;因此这种情况下,只能放弃整个账本,从而影响区块链上其他交易。

本实施例中,通过分区账本的生命周期管理,可以进行单独的分区交易数据管理,将出现问题的分区数据自区块链账本中裁减掉,并且不对其他分区数据和区块链账本的正常运行产生影响,这样可以在对区块链交易处理和维护过程中,当出现某个分区的交易异常时,保证区块链账本其他分区的稳定、正常运行。

图8是本公开实施例还提供了一种区块链的账本的管理装置,装置包括:

数据获取模块801:用于获取分区账本中当前交易页数据的哈希值,记录到主账本;其中所述分区账本用于记录对应业务特性的交易页数据;

块生成模块802:用于将主账本与作为其子级的各当前分区账本,以具有分支关系的层级结构生成区块的块主体;该区块块头记录父块块头和父块主账本的哈希值;

块处理模块803:用于将通过共识的所述区块写入区块链的账本中。

如图9所示。本区块链的账本的管理装置还包括数据处理模块901,该模块用于:

获取交易数据,根据交易数据的分区号放入对应分区的交易池中;所述分区为根据交易的业务特性划分的数据存储区域,分区号为对应分区的唯一标识。

交易的业务特性可以根据交易涉及的业务类型或性质进行设定;区块链数据的存储是基于节点本地文件系统,将数据存入文件系统的物理存储区域通过分配不同的进程进行处理。本实施例中,对节点将交易数据存储在本地数据库中,不同的分区有各自独立的本地数据库,并以分区号作为本地数据库的唯一标识。

数据处理模块901还用于,将当前所有分区交易池中的交易数据打包成候选块,广播给区块链的所有共识节点进行共识。

共识过程中,每个共识节点对候选块中对应不同分区的交易数据,通过不同处理进程进行并发执行,每个分区的处理进程最终会得到对应分区的页数据,页数据记录到对应的分区账本中,然后将各分区页数据的页哈希值提交到主账本进程。

因此数据获取模块902获取分区账本中当前交易页数据的哈希值,记录到主账本;

块生成模块903将主账本与作为其子级的各当前分区账本,以具有分支关系的层级结构生成区块的块主体;该区块块头记录父块块头和父块主账本的哈希值;并且在主账本中设置分区账本的生命周期管理机制;生命周期管理机制用于记录各子级分区账本的状态,分区账本状态即对交易分区的状态,并根据子级分区账本的状态控制对应分区账本进行正常生成页数据、暂停生成页数据和/或终止生成页数据。

块处理模块904将通过共识的所述区块写入区块链的账本中。

本区块链的账本的管理装置还包括

数据广播模块905,用于向只读节点广播所述区块的主账本数据;

信息接收模块906:用于获取只读节点的分区账本同步请求;该请求为只读节点接收到所述主账本数据后发起。

共识节点中对达成共识的区块写入本地存储的区块链账本,而不参与共识的只读节点,需要向共识节点请求数据同步;因此,共识节点将达成共识的新区块中的主账本数据向只读节点进行广播。

本区块链的账本的管理装置还包括权限验证模块907,该模块用于:

获取只读节点的分区账本同步请求中的节点私钥签名;

获取区块主账本中存储的具有对应分区账本访问权限的公钥列表;

利用公钥列表对节点私钥签名进行解密验证;

对通过验证的只读节点,发送对应分区账本的页数据。

只读节点发起的请求中包含目标数据的请求信息和私钥签名,共识节点获取主账本中存储的公钥列表,通过对应公钥去对该节点的私钥签名解密验证,验证通过,则只读及节点具有同步权限,验证失败,可以拒绝只读节点的请求;这样只读节点只可以依据权限得到对应的分区数据,但无法获取权限之外的其他数据,利于保护账本的隐私。

在另一些实施例中,当运营方发现上链后的某一块区块以及之后的区块中,对应某个分区账本的数据疑似异常或异常,则提交一笔交易到链上共识节点,用于令各节点修改对应分区账本状态为暂停状态或终止状态;在产生新块时,处于暂停或终止状态的分区账本没有页数据,可以不提交哈希值到主账本。

因此如图9所示,本公开的区块链的账本管理装置还包括数据裁剪模块908,该模块用于:

获取关于目标分区账本状态的交易数据,发送至主账本;

根据目标分区账本状态的交易数据,设置主账本中对应的分区账本状态;

将设置为终止状态的分区账本数据进行移除。

对于出现问题的该区块以及之后的区块,或者链上全部包含该分区账本的区块,将对应终止状态的分区账本数据,从所在节点上移除,进行归档,放入执行查询的归档设备中,移除分区账本的区块,主账本数据不变,但移除的分区账本数据在区块链中无法查看。

图8和图9中所示装置中的各个模块/单元具有实现图5、图6、以及图7中各个步骤的功能,并能达到其对应的技术效果,为简洁描述,在此不再赘述。

图10示出了本公开实施例提供的一种区块链的账本的管理设备,设备可以包括处理器1001以及存储有计算机程序指令的存储器1002。

具体地,上述处理器1001可以包括中央处理器(centralprocessingunit,cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本公开实施例的一个或多个集成电路。

存储器1002可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1002可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器1002可以包括可移除或不可移除(或固定)的介质,或者存储器1002是非易失性固态存储器。存储器1002可在综合网关容灾设备的内部或外部。

存储器1002可以包括只读存储器(rom),随机存取存储器(ram),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。

处理器1001通过读取并执行存储器1002中存储的计算机程序指令,以实现图5所示实施例中的步骤s501至s503或者图6所示实施例中的步骤s601至s610,或者实现图7所示实施例中的步骤s701至s705,并达到图5、图6以及图7所示实例执行其步骤达到的对应技术效果,为简洁描述在此不再赘述。

在一个示例中,区块链的账本的管理设备还可包括通信接口1003和通过总线1010。其中,如图10所示,处理器1001、存储器1002、通信接口1003通过总线1010通过总线1010连接并完成相互间的通信。

通信接口1003,主要用于实现本公开实施例中各模块、装置、单元和/或设备之间的通信。

通过总线1010包括硬件、软件或两者,将区块链的账本的管理设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(acceleratedgraphicsport,agp)或其他图形总线、增强工业标准架构(extendedindustrystandardarchitecture,eisa)总线、前端总线(frontsidebus,fsb)、超传输(hypertransport,ht)互连、工业标准架构(industrystandardarchitecture,isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,通过总线1010可包括一个或多个总线。尽管本公开实施例描述和示出了特定的总线,但本公开考虑任何合适的总线或互连。

另外,结合上述实施例中的区块链的账本的管理方法,本公开实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种区块链的账本的管理方法。

需要明确的是,本公开并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本公开的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本公开的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(applicationspecificintegratedcircuit,asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本公开的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(radiofrequency,rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

还需要说明的是,本公开中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本公开不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。

上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。

以上所述,仅为本公开的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1