基于P2P存储网络和多层架构的区块链全分片方法及装置与流程

文档序号:20689940发布日期:2020-05-08 19:18阅读:224来源:国知局
基于P2P存储网络和多层架构的区块链全分片方法及装置与流程

本发明涉及区块链分片技术领域,具体涉及一种基于p2p存储网络和多层架构的区块链全分片方法及装置。



背景技术:

在区块链技术中,对数据进行打包、出块之前,需要对该数据进行全网广播,随着网络的增长,区块链的数据以及节点也越来越多,往往会花费大量的数据广播时间,这使得同一个区块链的出块性能大大降低。

所以,区块链分片技术应运而生,分片是一种基于数据库分成若干片段的传统概念扩容技术,它将数据库分割成多个碎片,并将这些碎片放置在不同的服务器上,在底层公有链的系统内,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成,因此,只需要处理一小部分输入的交易,并且通过与网络上其它节点并行处理就能够完成大量的验证工作。

目前区块链的分片技术主要存在以下两个问题:(1)分片中跨链交易具有极高的通信复杂和带宽要求,这个带宽需求与系统的tps能力成平方阶关系,导致目前的分片技术只有有限扩展性;(2)状态分片难度极高,需要某些设备存储某个分片的数据,又需要在合适的时候,被网络中的任何节点访问和同步。

问题(2)又反过来影响问题(1),最终导致目前的分片技术方案中节点的通信带宽随分片数量的二次方增加,使得分片要么只能在网络条件非常好的环境下运行,要么只能限制分片的数量,致使区块链系统的扩展性受到了严重的限制。



技术实现要素:

为了解决现有区块链分片技术中存在的扩展性不高的问题,本发明的目的在于提供一种使用p2p存储网络解决状态分片问题,使用三层架构分片使带宽需求与网络的总tps数成线性关系,降低了通信复杂度和带宽需求,提高了分片的扩展性的分片方法及装置。

本发明所采用的技术方案为:

一种基于p2p存储和多层架构的区块链全分片方法,包括跨分片交易打包阶段和跨分片交易解包阶段;

所述跨分片交易打包阶段包括以下步骤:

s101.根据地址对全网区块链节点进行网络分片,分别得到分片链、中继链和信标链,其中,所述信标链包括若干条中继链,所述中继链包括若干条分片链,所述分片链包括若干个区块链节点;

s102.将一个交易t分解为两个原语,得到t={w,d},其中,w原语为交易t中付款账户的数字资产扣除信息,d原语为交易t中收款账户的数字资产增加信息;

s103.针对每个分片链,统计每个分片链中所有交易t对应的d原语,并对每个分片链中所有的d原语进行分组,分组完毕后,分别得到每组对应的d原语集合ch,将每组对应的d原语集合ch存入p2p存储网络中,并分别计算得到每个d原语集合ch对应的哈希集合hg;

s104.针对每个分片链,在生成分片区块bs时,将每个哈希集合hg打包至其对应的分片区块bs中,并将所述分片区块bs发送至本分片链内所有的区块链节点和所属的中继链;

s105.针对每个中继链,在生成中继区块br时,根据接收到的所有分片区块bs,将所有分片区块bs中的哈希集合hg根据所有中继链进行整合,得到哈希集合hr,将哈希集合hr打包至所述中继区块br中,并将所有分片区块bs中的哈希集合hg存入p2p存储网络中,然后将所述中继区块br发送至当前中继链和所述信标链中;

所述跨分片交易解包阶段包括以下步骤:

s201.所述信标链在生成信标区块bb时,根据接收到的所有中继区块br,将所有中继区块br中的哈希集合hr根据所有中继链进行整合,得到哈希集合hs,将所述哈希集合hs打包至所述信标区块bb,并将所有中继区块br中的哈希集合hr存入p2p存储网络中,然后将所述信标区块bb发送至信标链和所有的中继链;

s202.针对每个中继链,在生成中继区块b′r时,根据接收到的信标区块bb中的哈希集合hs,通过数据推断,重新分组组合每个d原语集合ch,得到属于当前中继链的d原语集合ch′以及其对应的所有哈希值h′,将所述d原语集合ch′存入p2p存储网络中,并将所有哈希值h′打包至所述中继区块b′r,然后发送至当前中继链管理所有分片链中;

s203.针对每个分片链,在生成分片区块b′s时,根据接收到的中继区块b′r中的哈希值h′,在p2p存储网络中读取需要当前分片链执行的d原语集合ch′,得到所述d原语,然后根据所述d原语更新分片状态。

优化的,所述步骤s103中对每个分片链中所有的d原语进行分组的条件为:根据所述d原语中收款账户所对应的中继链进行分组,将属于同一中继链的收款账户所对应的d原语分为一组。

优化的,在所述步骤s104前,还需进行以下步骤:

针对每个分片链,根据每个分片链中的w原语,更新每个分片链的状态,并得到每个分片链对应的状态默克尔树根rshard。

优化的,在所述步骤s104中,还需将每个分片链对应的状态默克尔树根rshard打包至其对应的分片区块bs中,与所述哈希集合hg一起经过共识确认后,发送至本分片链内所有的区块链节点和所属的中继链中。

优化的,在所述步骤s105中,还包括以下步骤:

s105a.针对每个中继链,在生成所述中继区块br时,还需记录所述中继区块br处理的所有分片区块bs,形成第一区块记录{hb};

s105b.将所述第一区块记录{hb}和所述哈希集合hr打包至该中继链对应的中继区块br,经过共识确认后,发送至当前中继链和所述信标链。

优化的,所述步骤s201还包括以下步骤:

s201a.所述信标链在生成所述信标区块bb时,还需记录所述信标区块bb处理的所有中继区块br,形成第二区块记录{hbr};

s201b.将所述第二区块记录{hbr}和所述哈希集合hs打包进所述信标链对应的信标区块bb,并经过共识确认后发送至所述信标链和所有的中继链。

优化的,所述步骤s202还包括以下步骤:

s202a.针对每个中继链,在生成中继区块b′r时,还需记录所述中继区块b′r处理的信标区块bb,形成第三区块记录{hbb};

s202b.将所述第三区块记录{hbb}、所述第一区块记录{hb}和所述哈希值h′打包至所述中继区块b′r,经过共识确认后,发送至当前中继链管理的所有分片链中。

优化的,在所述步骤s202,采用以下步骤计算得到d原语集合ch′以及其对应的哈希值h′:

从所述哈希集合hs中提取包含有哈希集合hg的数据;

从提取的包含有哈希集合hg的数据中,提取所有的d原语集合ch;

将所有的d原语集合ch进行重新分组组合,得到所述d原语集合ch′以及其对应的哈希值h′。

本发明还提供了另一种技术方案:

一种基于p2p存储网络和多层架构的区块链全分片装置,包括通信连接的存储器和处理器,其中,所述存储器上存储有计算机程序,所述处理器用于执行所述计算机程序实现所述基于p2p存储网络和多层架构的区块链全分片方法

本发明的有益效果为:

(1)本发明提供了一种基于p2p存储网络和多层架构的区块链全分片方法及装置,本发明根据地址,利用网络分片将全网区块链节点分为分片链、中继链和信标链,即采用信标-中继-分片三层架构实现分片的跨链通信,使节点的网络需求与网络的总tps数成线性关系;

(2)本发明将交易分为w原语和d原语,其中,w原语为交易t中付款账户的数字资产扣除信息,d原语为交易t中收款账户的数字资产增加信息,且本发明对d原语进行分组,并计算其对应的哈希值,其实质为:w原语在发起者的分片上执行,d原语存储在p2p存储网络中,而d原语对应的哈希值则会进行跨链通信,在最终在接收者的分片上执行。

通过上述设计,通过p2p存储网络,使大量的数据只需要将其哈希值通过跨链通信,降低了通信复杂度和带宽需求,大大的提高了区块链分片技术的扩展性。

附图说明

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

图1是本发明提供的基于p2p存储网络和多层架构的区块链全分片方法的步骤流程示意图。

图2是本发明提供的分片链、中继链和信标链的通信结构示意图。

图3是本发明提供的跨分片交易打包阶段的传输示意图。

图4是本发明提供的跨分片交易解包阶段的传输示意图。

图5是本发明提供的基于p2p存储网络和多层架构的区块链全分片装置的结构示意图。

具体实施方式

下面结合具体实施例对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。

文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b三种情况,本文中术语“/和”是描述另一种关联对象关系,表示可以存在两种关系,例如,a/和b,可以表示:单独存在a,单独存在a和b两种情况,另外,本文中字符“/”,一般表示前后关联对象是一种“或”关系。

实施例一

如图1~4所示,本实施例所提供的基于p2p存储网络和多层架构的区块链全分片方法,包括跨分片交易打包阶段和跨分片交易解包阶段。

下面对跨分片交易打包阶段的步骤流程进行具体的阐述:

交易打包即是交易的发出过程:

所述跨分片交易打包阶段包括以下步骤:

首先,在本实施例中,采用多层架构实现交易的分片,进而使得区块链线性可扩展,在区块允许的大小范围内,使区块链系统的总分片数量从数十扩展到数千。具体的多层架构创建方法如步骤s101。

s101.根据地址对全网区块链节点进行网络分片,分别得到分片链、中继链和信标链,其中,所述信标链包括若干条中继链,所述中继链包括若干条分片链,所述分片链包括若干个区块链节点。

在本实施例中,三层分片架构则是根据区块链节点的地址划分的,即听过网络分片实现全网区块链节点的划分,形成分片链-中继链-信标链三层的分片架构。

如图2所示,图2可清楚的表明分片链、中继链以及信标链之间的大小关系以及通信关系。

在本实施例中,一个信标链中可管理多个中继链,而一个中继链中可管理多个分片链,而一个分片链又可管理多个区块链节点。

形成三层分片架构后,本实施例中还进行了交易分片,即步骤s102。

s102.将一个交易t分解为两个原语,得到t={w,d},其中,w原语为交易t中付款账户的数字资产扣除信息,d原语为交易t中收款账户的数字资产增加信息。

在本实施例中,将一个交易分解为w原语和d原语,即是将交易按照交易发送方和交易接收方,而在本实施例中,只有交易接收方接收的信息才会进行跨链传输,即d原语才会进行跨链传输,在交易接收方上进行执行,即在接收方的分片链上执行。

由于区块链中交易数量非常多,造成了数据量非常庞大,如果所有交易接收方的信息,即d原语都跨链传输,会增加通信的复杂度,也会对网络带宽的要求非常高,无法实现分片的高扩展性,所以,在本实施例中,对d原语的跨链传输做出了以下改变,具体为步骤s103~s105。

s103.针对每个分片链,统计每个分片链中所有交易t对应的d原语,并对每个分片链中所有的d原语进行分组,分组完毕后,分别得到每组对应的d原语集合ch,将每组对应的d原语集合ch存入p2p存储网络中,并分别计算得到每个d原语集合ch对应的哈希集合hg。

s104.针对每个分片链,在生成分片区块bs时,将每个哈希集合hg打包至其对应的分片区块bs中,并将所述分片区块bs发送至本分片链内所有的区块链节点和所属的中继链。

在本实施例中,只将每个d原语的哈希值进行跨链传输,而d原语本身即存储在p2p存储网络中,具体过程阐述如下:

首先,由于一个中继链管理有多个分片链,而每个分片链中均会存在交易,所以需要将每个分片链中交易的d原语进行统计,并进行分组,得到每组中所有d原语所对应的哈希值,进而形成每组d原语的哈希集合hg。

在本实施例中,通过分组即可得到的d原语集合ch,即每个d原语集合ch中包括多个d原语,而分组得到的多个d原语集合ch即可存储在p2p存储网络中,而每个d原语集合ch对应的哈希集合hg,则会进行跨链通信,发送至接收方分片链上进行交易。

在本实施例中,所述步骤s103中对每个分片链中所有的d原语进行分组的条件为:根据所述d原语中收款账户所对应的中继链进行分组,将属于同一中继链的收款账户所对应的d原语分为一组。

上述分组的标准其实质为:判断每个d原语是发送至哪个区块链节点,因为d原语为交易t中收款账户的数字资产增加信息,所以,即可根据收款账户得到接收节点地址,进而得到接收区块链节点,根据接收区块链节点判断其属于哪个分片链,进而得到其属于哪个中继链管理,将属于同一中继链管理的d原语分为一组,得到d原语集合ch,存储在p2p网络上。

在得到每一个d原语集合ch后,即可根据哈希函数计算每个d原语集合ch中每一个d原语的哈希值,进而得到每个d原语集合ch的哈希集合hg,从而将哈希集合hg打包至其所属分片链对应的分别区块bs中,将此分别区块bs发送至中继链,进行跨链传输。

在本实施例中,对哈希集合hg打包进分片区块bs,则是指d原语所属分片链对应的分片区块bs,也就是接收方区块链节点对应的区块。

在本实施例中哈希值的计算采用哈希函数,哈希函数为一种现有函数。

在本实施例中,在进行步骤s104前,还需进行以下步骤:

针对每个分片链,根据每个分片链中的w原语,更新每个分片链的状态,并得到每个分片链对应的状态默克尔树根rshard。

在本实施例中,通过w原语,也就是根据交易t中收款账户的数字资产扣除信息,得到每个分片链对应的状态默克尔树根rshard。其实质就为:记录每个分片链上的发送交易记录,并同时也要和哈希集合hg一起打包进行区块,上传至中继链中,具体步骤如下:

在所述步骤s104中,还需将每个分片链对应的状态默克尔树根rshard打包至其对应的分片区块bs中,与所述哈希集合hg一起经过共识确认后,发送至本分片链内所有的区块链节点和所属的中继链中。

通过上述设计,可根据每个分片链的状态默克尔树根rshard,即根据每个分片链中的交易发送记录进行交易核对,保证交易可靠性。

将状态默克尔树根rshard和哈希集合hg上传至中继链后,则会进行步骤s105,具体如下:

s105.针对每个中继链,在生成中继区块br时,根据接收到的所有分片区块bs,将所有分片区块bs中的哈希集合hg根据所有中继链进行整合,得到哈希集合hr,将哈希集合hr打包至所述中继区块br中,并将所有分片区块bs中的哈希集合hg存入p2p存储网络中,然后将所述中继区块br发送至当前中继链和所述信标链中。

由于上述就已说明,一个中继链会管理多个分片链,所以一个中继链会接收到其管理的所有分片链上传分片区块bs,通过对每个分片区块bs中哈希集合hg的整合,即可得到哈希集合hr,整合的实质为:提取每个分片区块bs中的哈希集合hg,从每个哈希集合hg中提取其包含的哈希值,将提取的哈希值进行合并为一个集合,即形成哈希集合hr。

在本实施例中,还会将所有分片区块bs中的哈希集合hg存入p2p存储网络中,进行数据存储,保证数据不会丢失。

同时在步骤s105中还需进行以下步骤:

s105a.针对每个中继链,在生成所述中继区块br时,还需记录所述中继区块br处理的所有分片区块bs,形成第一区块记录{hb}。

s105b.将所述第一区块记录{hb}和所述哈希集合hr打包至该中继链对应的中继区块br,经过共识确认后,发送至当前中继链和所述信标链。

步骤s105a和步骤s105b的作用即是起到记录数据的作用,即是将所述中继区块br处理的所有分片区块bs中的信息,记录成第一区块记录{hb},保存在中继区块br,一起进行跨链传输,进而可防止数据丢失,也能便于数据核对,增加分片的可靠性与安全性。

步骤s101~s105以及每个步骤含有的子步骤,均为跨分片交易打包阶段的过程,可用图3为跨分片交易打包阶段传输示意图,即哈希集合hg、哈希集合hr在分片链、中继链以及信标链的传递过程。

跨分片交易打包阶段完毕后,即可进入跨分片交易解包阶段,即交易进入接收分片链执行的过程,具体如下:

所述跨分片交易解包阶段包括以下步骤:

s201.所述信标链在生成信标区块bb时,根据接收到的所有中继区块br,将所有中继区块br中的哈希集合hr根据所有中继链进行整合,得到哈希集合hs,将所述哈希集合hs打包至所述信标区块bb,并将所有中继区块br中的哈希集合hr存入p2p存储网络中,然后将所述信标区块bb发送至信标链和所有的中继链。

所述步骤s201则是对中继链发送的哈希集合hr进行整合的过程,其整合过程与步骤s105中整合的过程原理相同,也是先提取每个分片区块br中的哈希集合hr,从每个哈希集合hr中提取其包含的哈希值,将提取的哈希值进行合并为一个集合,即形成哈希集合hs。

同时,也会将所有分片区块中br的哈希集合hr存入p2p存储网络中,进行数据存储,保证数据不会丢失。

另外,在步骤s201中还会进行以下步骤:

具体步骤如下:

s201a.所述信标链在生成所述信标区块bb时,还需记录所述信标区块bb处理的所有中继区块br,形成第二区块记录{hbr}。

s201b.将所述第二区块记录{hbr}和所述哈希集合hs打包进所述信标链对应的信标区块bb,并经过共识确认后发送至所述信标链和所有的中继链。

在信标链中,步骤s201a和步骤s201b与中继链中进行记录的自作用相同,都是为了防止数据丢失,也能便于数据核对,增加分片的可靠性与安全性。

其向d原语所在区块链节点发送交易信息,则与跨分片交易打包阶段相反,跨分片交易解包阶段则是由信标链发送至中继链,最后在发送至分片链,步骤s201则是信标链向中继链的发送过程,而步骤s202则是中继链向其管理的所有分片链的发送过程,具体如下:

s202.针对每个中继链,在生成中继区块b′r时,根据接收到的信标区块bb中的哈希集合hs,通过数据推断,重新分组组合每个d原语集合ch,得到属于当前中继链的d原语集合ch′以及其对应的所有哈希值h′,将所述d原语集合ch′存入p2p存储网络中,并将所有哈希值h′打包至所述中继区块b′r,然后发送至当前中继链管理所有分片链中。

步骤s202则是通过哈希集合hs得到属于当前中继链的d原语集合ch′以及其对应的所有哈希值h′的过程,通过哈希值h′得到d原语,以便完成分片状态的更新。

其中,步骤s202,采用以下步骤计算得到d原语集合ch′以及其对应的哈希值h′,具体为:

从所述哈希集合hs中提取包含有哈希集合hg的数据。

从提取的包含有哈希集合hg的数据中,提取所有的d原语集合ch。

将所有的d原语集合ch进行重新分组组合,得到所述d原语集合ch′以及其对应的哈希值h′。

所以,即可通过哈希集合hs中的哈希值,得到哈希集合hg,进而根据哈希集合hg中的哈希值,得到d原语集合ch,最后将d原语集合ch进行重新分组组合,即可得到d原语集合ch′以及其对应的哈希值h′。

当然,一个d原语集合ch′中包含有多个哈希值h′。

在本实施例中,中继区块b′r与中继区块br属于同一个中继区块。

每个分片链接收到中继链发送的信息后,即可根据哈希值h′进行d原语的提取,具体过程如下:

s203.针对每个分片链,在生成分片区块b′s时,根据接收到的中继区块b′r中的哈希值h′,在p2p存储网络中读取需要当前分片链执行的d原语集合ch′,得到所述d原语,然后根据所述d原语更新分片状态。

由于在步骤s202中,d原语集合ch′就已存储至p2p存储网络中了,而d原语集合ch′又是由d原语集合ch重新分组组合得到,所以即可根据哈希值h′,匹配对应的d原语集合ch′,从而得到d原语集合ch′中包含的d原语集合ch,进而得到d原语集合ch中的d原语,实现本次交易的数据更新。

同理,分片区块b′s和分片区块bs也属于同一个分片区块。

另外,在步骤s202中还具体需要进行以下步骤:

s202a.针对每个中继链,在生成中继区块b′r时,还需记录所述中继区块b′r处理的信标区块bb,形成第三区块记录{hbb}。

s202b.将所述第三区块记录{hbb}、所述第一区块记录{hb}和所述哈希值h′打包至所述中继区块b′r,经过共识确认后,发送至当前中继链管理的所有分片链中。

步骤s202a和步骤s202b的作用也是为了实现数据记录,为了防止数据丢失,也能便于数据核对,增加分片的可靠性与安全性。

通过上述阐述,步骤s201~s203则是交易信息发送至接收分片链的过程,图4即可进行清楚的表示,数据的传输过程。

在本实施例中,对3层架构的系统的可扩展性进行具体的阐述:

可扩展性定理:

l(l>1)层架构的分片系统,其通信带宽需求为:

证明:我们考察一个具有l层架构的分片系统,不失一般性,我们假设一个上层分片管理m个下层分片,因此系统中的tps:k=ml-1,任意一个中间层i,将要接收到的数据是:

(1)从下层的m个分片得到的m个区块数据,其中每一个区块数据具有一个默克尔树:

{h|<h1|...|hm>}

所以,其最优通信为32*m(m+1),32是哈希结果的长度。

(2)本分片产生的区块为:

其中是需要上一层跨分片交易的数据哈希值,其对应的数据就是(1)中的数据,因此数据量为32*(m+1)。

(3)上一层对应分片产生的区块:

其中是上一层分片通知本层需要跨分片交易数据的哈希值,分片需要取出其中对应的数据,因此32*(m+1)+32m,因此得到在最优通信下,中间层的带宽需求为:

s=32*m(m+1)+32*(m+1)+32*(m+1)+32m

因此s∈o(32m2),而k=ml-1,由此可得所以,采用三层架构则为线性可扩展性,采用三层以上的架构为超线性可扩展性,可以进一步降低跨分片通信的带宽需求,但是其通信的复杂度会随之上升。

在本实施例中,由于只需要将跨链传输的数据生成哈希值,而原始则数据存入到p2p网络中,且哈希值通过链上传播,所以网络至少具有三层架构。

综上,采用本实施例所提供的基于p2p存储网络和多层架构的区块链全分片方法及装置,具有如下技术效果:

(1)本发明提供了一种基于p2p存储网络和多层架构的区块链全分片方法及装置,本发明根据地址,利用网络分片将全网区块链节点分为分片链、中继链和信标链,即采用信标-中继-分片三层架构实现分片的跨链通信,使节点的网络需求与网络的总tps数成线性关系;

(2)本发明将交易分为w原语和d原语,其中,w原语为交易t中付款账户的数字资产扣除信息,d原语为交易t中收款账户的数字资产增加信息,且本发明对d原语进行分组,并计算其对应的哈希值,其实质为:w原语在发起者的分片上执行,d原语存储在p2p存储网络中,而d原语对应的哈希值则会进行跨链通信,在最终在接收者的分片上执行。

通过上述设计,通过p2p存储网络,使大量的数据只需要将其哈希值通过跨链通信,降低了通信答复杂度和带宽需求,大大的提高了区块链分片技术的扩展性。

实施例二

如图5所示,本实施例提供了实施例一种基于p2p存储网络和多层架构的区块链全分片装置,包括通信连接的存储器和处理器,其中,所述存储器上存储有计算机程序,所述处理器用于执行所述计算机程序实现如实施例一所述的基于p2p存储网络和多层架构的区块链全分片方法。

本实施例的工作过程、达到的技术效果与实施例一中一致,于此不多加赘述。

本发明不局限于上述可选实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是落入本发明权利要求界定范围内的技术方案,均落在本发明的保护范围之内。

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