CN112380209A - 一种面向区块链多通道状态数据的聚集结构树方法 - Google Patents
一种面向区块链多通道状态数据的聚集结构树方法 Download PDFInfo
- Publication number
- CN112380209A CN112380209A CN202011180693.9A CN202011180693A CN112380209A CN 112380209 A CN112380209 A CN 112380209A CN 202011180693 A CN202011180693 A CN 202011180693A CN 112380209 A CN112380209 A CN 112380209A
- Authority
- CN
- China
- Prior art keywords
- node
- channel
- tree
- structure tree
- aggregation structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向区块链多通道状态数据的聚集结构树方法,其特点是采用通过访问聚集结构树来访问状态数据的方法,在多通道环境下,将各个通道状态树的根节点经过哈希计算,将得到的值作为叶子节点自下向上生成一棵默克尔二叉树,通过访问聚集结构树来访问节点的通道状态数据。本发明与现有技术相比具有节点在运行多个区块链实例时,只需启动一个EVM实例就可以通过上层的聚集结构树访问状态数据,补足了区块链多通道环境中节点执行多个区块链实例时的资源利用方面的缺失,使得参与多通道的节点只需要一个EVM实例就可以完成执行操作,减少了区块链节点的计算资源和内存资源的开销,提高了区块链***的性能。
Description
技术领域
本发明涉及区块链技术领域,尤其是一种面向区块链多通道状态数据的聚集结构树方法。
背景技术
区块链(blockchain)作为一种去中心化、不可篡改、可追溯、可信的、多方共同维护的分布式数据库,通过集成P2P协议、非对称加密、共识机制、块链结构等多种技术,无需任何第三方可信机构,在互不了解、互不信任的多方间实现了可信的数据共享。但当前大多数的区块链***(例如Hyperledger Fabric),在不可信网络环境下,无法同时实现数据隔离与数据保密。实际上,与其他数据共享方式相比,区块链的隐私保护问题在缺乏信任的参与者之间更为重要。
现有技术的数据隐私保护一般都是采用多通道的部署结构方法,一个节点根据应用需求,可以加入不同的通道中,不同通道之间彼此隔离,非通道内的节点无法访问该通道上的交易,加入到同一个通道中的节点共同维护相同的区块数据。然而,每个通道都有对应的区块链账本,每个区块链账本都对应一棵全局状态树而每棵全局状态树都对应一个EVM实例。因此,多个通道也就意味着多个EVM的实例,一个节点执行多条链的数据需要启动多个EVM的实例,这会给节点的计算资源和内存资源带来很大的开销。
发明内容
发明的目的是针对现有技术的不足而设计的一种面向区块链多通道状态数据的聚集结构树方法,采用通过访问聚集结构树来访问状态数据的方法,在多通道环境下,将各个通道状态树的根节点经过哈希计算得到的值作为叶子节点自下向上生成一棵默克尔二叉树,将多个通道的状态树实现上层的入口统一。节点在运行多个区块链实例时,只需要启动一个EVM实例就可以通过上层的聚集结构树访问状态数据。在聚集结构树的存储中,区块链需要维护N+1(N为通道数量,1为聚集结构树)棵树形结构。聚集结构树的叶子节点保存各通道状态树的根节点的哈希值,访问各通道状态数据需要首先访问聚集结构树,而且在增加或删除通道时要对聚集结构进行更新。有效补足了区块链多通道环境中节点执行多个区块链实例时的资源利用方面的缺失,通过访问聚集结构树来访问状态数据,使得参与多通道的节点只需要一个EVM实例就可以完成执行操作,减少了区块链节点的计算资源和内存资源的开销,提高了区块链***的性能,较好的解决了在不可信环境下区块链单节点加入多通道需要执行多个EVM实例的问题。
本发明的目的是这样实现的:一种面向区块链多通道状态数据的聚集结构树方法,其特点是采用通过访问聚集结构树来访问状态数据的方法,节点通过构造一棵默克尔二叉树作为聚集结构树,实现多个通道状态树访问接口的统一,在单通道的情况下,不存在多通道状态树的聚集,因此可以直接访问状态数据。在多通道的情况下,需要通过上层的聚集结构树访问状态数据。在实际存储中,需要维护N+1(N为通道数量,1为聚集结构树)棵树形结构。聚集结构树的叶子节点保存各通道状态树的根节点的哈希值,访问各通道状态数据需要首先访问聚集结构树。在交易执行过程中,因为需要访问聚集结构树,同时聚集结构树的大小不会很大,因此在内存中维护聚集结构树,在执行时,首先结合聚集结构树生成访问路径,然后根据访问路径来访问状态数据。通道状态更新完成后,需要更新内存中的聚集结构树,其具体流程包括以下步骤:
步骤1:节点通过构造一棵默克尔二叉树作为聚集结构树来实现多个通道状态树访问接口的统一,具体包括以下步骤:
步骤1-1:每个通道都维护一个通道状态树;
步骤1-2:节点将自身参与的所有的通道状态树的根节点的哈希值作为叶子节点,构造聚集结构树,具体包括以下步骤:
步骤1-2-1:节点从自身参与的每个通道的区块链中的最高区块中获得该通道状态树的根节点,并对其做哈希计算得到相应的哈希值;
步骤1-2-2:将得到的通道状态树的根节点的哈希值作为默克尔二叉树的叶子节点;
步骤1-2-3:将相邻两个叶子节点的值连接为一个字符串,对其做哈希运算得到父节点的值,该父节点是默克尔树的中间节点;
步骤1-2-4:对于步骤1-2-3得到的节点,从下往上逐层计算中间节点,直至根据最后两个中间节点进行哈希计算得到默克尔树的根节点,即聚集结构树的根,也就是多通道状态树的访问入口;
步骤1-3:节点将聚集结构树保存在内存中。
步骤2:若节点参与的通道产生了一个新的区块,那么节点就需要对自身的聚集结构树进行更新,具体包括以下步骤:
步骤2-1:通道发布了一个新的区块,区块中包含属于该通道的交易,因此该通道的状态已经发生改变;
步骤2-2:节点获取该通道发布的新区块中的状态树根节点,计算其哈希值;
步骤2-3:节点用获取到的状态树根节点的哈希值作为叶子节点,替换聚集结构树中原来该通道的状态树根节点的哈希值;
步骤2-4:节点重新计算更新后的通道状态树根节点哈希值所在叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新。
步骤3:节点加入新的通道时,聚集结构树增加新的叶子节点并重新计算聚集结构树的根哈希值,具体包括以下步骤:
步骤3-1:节点同步新加入的通道的数据和配置,获取该通道最高区块的状态树根节点,计算其哈希值;
步骤3-2:节点将新加入的通道的状态树根节点哈希值作为叶子节点添加到聚集结构树,重新计算聚集结构树的根节点,具体包括以下步骤:
步骤3-2-1:如果聚集结构树原来有奇数个叶子节点,将新通道的根节点哈希值作为单独叶子节点的兄弟节点,与该叶子节点的值连接为一个字符串,对其做哈希运算得到新的父节点,并重新计算得到的父节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新;
步骤3-2-2:如果聚集结构树原来有偶数个叶子节点,将新通道的根节点哈希值添加为新的叶子节点,重新计算该叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新。
步骤4:节点退出通道时,聚集结构树删除树上对应的叶子节点并重新计算根哈希值,该通道内其他节点更新自身的聚集结构树,具体包括以下步骤:
步骤4-1:节点根据要退出通道的状态树根节点的哈希值,查找聚集结构树上对应的叶子节点;
步骤4-2:节点删除该叶子节点,重新计算聚集结构树的根节点,具体包括以下子步骤:
步骤4-2-1:如果聚集结构树原来有奇数个叶子节点,将要退出通道对应的叶子节点删除,并重构聚集结构树,重新计算其他叶子节点至根节点路径上的的哈希值,完成对聚集结构树的更新;
步骤4-2-2:如果聚集结构树原来有偶数个叶子节点,将要退出的通道对应的叶子节点删除,计算单独的叶子节点至根节点路径上的哈希值,完成对聚集结构树的更新;
步骤4-3:该通道内其他节点得知此节点已退出通道,更新自身的聚集结构树。
步骤5:通过访问聚集结构树来访问节点的通道状态数据,具体包括以下步骤:
步骤5-1:访问通道的状态数据需要先访问聚集结构树,通过聚集结构树查找通道对应的叶子节点,得到通道状态树根节点的哈希值;
步骤5-2:根据得到的通道状态树根节点哈希值,访问该通道的状态树从而访问其状态数据。
本发明与现有技术相比具有节点在运行多个区块链实例时,只需要启动一个EVM实例就可以通过上层的聚集结构树访问状态数据的特点,提高了区块链节点的资源利用率,从而无需启动多个EVM实例,一个EVM实例即可完成所有链数据的执行操作,较好的解决了在不可信环境下区块链单节点加入多通道需要执行多个EVM实例的问题,提高了区块链节点的资源利用率,大大减少了区块链节点的计算资源和内存资源的开销。补足了区块链多通道环境中节点执行多个区块链实例时的资源利用方面的缺失,通过访问聚集结构树来访问状态数据,使得参与多通道的节点只需要一个EVM实例就可以完成执行操作,减少了区块链节点的计算资源和内存资源的开销,提高了区块链***的性能。
附图说明
图1为本发明总体架构示意图;
图2为区块链多通道环境示意图;
图3为每个通道的状态树示意图;
图4为节点聚集结构树更新示意图;
图5为聚集结构树增加新的叶子节点示意图;
图6为聚集结构树删除叶子节点示意图;
图7为聚集结构树访问通道状态数据示意图。
具体实施方式
本发明针对单节点参与多个通道的情况设计了一种状态数据的聚集结构树方法,解决了单节点多通道情况下需要执行多个EVM实例的问题。对各个通道状态树的根节点做哈希计算,将得到的值作为默克尔二叉树的叶子节点,将相邻的两个叶子节点连接成一个字符串,然后计算这个字符串的哈希值,由下而上计算生成一棵聚集结构树,使得一个节点加入的多个通道的状态能够实现访问接口的统一,且该聚集结构树的大小适合在内存中存储,有利于执行时的快速访问。通过访问聚集结构树来获得路径,从而实现对各个通道状态树的访问,使得参与多通道的节点只需要一个EVM实例就可以完成执行操作,这提高了资源的利用效率以及区块链***的性能。
本发明提出了一种面向区块链多通道状态数据的聚集结构树方法,该方法包括以下具体步骤:
步骤1:节点通过构造一棵默克尔二叉树作为聚集结构树来实现多个通道状态树访问接口的统一。在区块链多通道的环境下,每个节点可能加入多个通道,那么节点在执行多个区块链的数据时,需要执行多个EVM实例,这会对内存资源造成较大开销。针对这个问题,采用默克尔树的方式对多个状态树进行上层接口的统一,具体包括以下步骤:
步骤1-1:每个通道都要维护一条区块链,每条链都对应一棵状态树,因此每个通道都会维护一条区块链,每条链都对应一棵状态树,用来表示该通道的状态。
步骤1-2:节点将自身参与的所有通道的状态树的根节点的哈希值作为叶子节点,构造一棵默克尔二叉树作为聚集结构树,从而实现多棵状态树访问接口的统一。
默克尔树是一种基于哈希的树,其叶子节点的通常为数据块的哈希值,而非叶子节点的值是将该节点所有子节点连接进行哈希计算的结果,具体包括以下步骤:
步骤1-2-1:节点对于自身参与的每一个通道的区块链,选择其最高区块,从中得到该通道状态树的根节点,并对其做哈希计算得到哈希值,每个区块链状态树的根节点都存储在区块头中,随着区块链状态的改变状态树也在不断变化,最高区块中的根节点表达了该区块链的最新状态。
步骤1-2-2:将得到的通道状态树根节点的哈希值作为默克尔二叉树的叶子节点,这样才可以通过叶子节点访问通道的状态树。
步骤1-2-3:将相邻两个叶子节点的值连接为一个字符串,对其做哈希运算得到父节点的值,该父节点是默克尔树的中间节点。
步骤1-2-4:对于步骤1-2-3得到的节点,从下往上逐层计算中间节点,直至根据最后两个中间节点进行哈希计算得到默克尔树的根节点,即聚集结构树的根,也就是通道状态树的访问入口,默克尔树的中间节点都是根据其子节点计算得到,根节点是根据中间节点计算得到的。
至此,实现了多个通道的状态树的聚集,使得节点能够只用一个EVM实例来完成对自身参与的多个通道的状态数据的访问,即实现了上层接口的统一。
步骤1-3:节点将聚集结构树保存在内存中,在EVM访问状态数据时,需要通过聚集结构树,并且聚集结构树的大小不会很大,因此将其维护在内存中,便于交易执行时的访问。
步骤2:若节点参与的通道产生了一个新的区块,那么节点就需要对自身的聚集结构树进行更新,具体包括以下步骤:
步骤2-1:通道发布了一个新的区块,区块中包含属于该通道的交易,说明新的交易被执行了,因此该通道的状态已经发生改变,通道的状态树也发生了改变。
步骤2-2:节点获取该通道发布的新区块中的状态树根节点,计算其哈希值,通道的状态树发生改变必然会改变在其根节点的值,因此,只要获得新的根节点的值进行哈希计算,就能够从聚集状态树访问该通道的状态。
步骤2-3:节点用获取到的状态树根节点的哈希值作为叶子节点,替换聚集结构树中原来该通道的状态树根节点哈希值。例如节点a参与的应用通道Channel_1的区块链上添加了新的区块,那么节点a在维护区块链的同时获得最高区块的区块头中通道状态树的根节点,并对这个根节点做哈希计算,替换掉内存中聚集结构树上Channel_1对应的叶子节点。
步骤2-4:节点重新计算该通道状态树根节点哈希值所在叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新,替换掉原来状态树的根节点哈希值后,需要重新计算该叶子节点往上节点的值,包括根节点。
步骤3:节点加入新的通道时,聚集结构树增加新的叶子节点并重新计算聚集结构树根哈希值。
节点加入新的通道,就需要维护新的区块链,访问新的状态树。因此,需要把新通道的状态树根节点哈希值添加为聚集结构树的叶子节点,并更新聚集结构树,具体包括以下步骤:
步骤3-1:节点同步新加入的通道的数据和配置,获取该通道最高区块的状态树根节点,计算其哈希值。例如:节点新加入应用通道Channel_4,那么它需要先同步该通道的配置以及区块链数据,从获得的区块链中,根据最高区块的区块头,获取该通道的状态树根节点ROOT_4,并对其哈希计算。
步骤3-2:节点将新加入的通道的状态树根节点哈希值作为叶子节点添加到聚集结构树,重新计算聚集结构树的根节点,具体包括以下步骤:
步骤3-2-1:如果聚集结构树原来有奇数个叶子节点,将新通道的根节点哈希值与单独的叶子节点的值连接,经过哈希计算得到新的父节点,并重新计算得到的父节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新,奇数情况下,将新的叶子节点添加为原单独叶子节点的兄弟节点,并重新计算由此向上至聚集结构树根节点的哈希值即可。
步骤3-2-2:如果聚集结构树原来有偶数个叶子节点,将新通道的根节点哈希值添加为叶子节点,重新计算该叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新,偶数情况下,新的叶子节点添加为聚集结构树的一个单独叶子节点,从而更新聚集结构树根节点。
步骤4:节点退出通道时,聚集结构树删除树上对应的叶子节点并重新计算根哈希值,该通道内其他节点更新自身的聚集结构树。节点退出通道后,无需再访问该通道的状态树。因此,将其状态树根节点哈希值从自身的聚集状态树中删除。
节点退出后,该通道的状态也发生了改变。因此,通道内的其他节点需要更新自身的聚集结构树,具体包括以下步骤:
步骤4-1:节点根据要退出的通道的状态树根节点的哈希值,查找聚集结构树上对应的叶子节点。
步骤4-2:节点删除该叶子节点,重新计算聚集结构树的根节点,具体包括以下步骤:
步骤4-2-1:如果聚集结构树原来有奇数个叶子节点,将要退出通道对应的叶子节点删除,根据删除节点所在位置,重构聚集结构树,重新计算其他叶子节点至根节点路径上的的哈希值,完成对聚集结构树的更新,奇数情况下,删除叶子节点会对聚集结构树的结构造成影响,所以需要对其进行重构。
步骤4-2-2:如果聚集结构树原来有偶数个叶子节点,将要退出的通道对应的叶子节点删除,计算单独的叶子节点至根节点路径上的哈希值,完成对聚集结构树的更新,偶数情况下,删除叶子节点后,该节点的兄弟节点作为单独节点存在,重新对该单独节点至聚集结构树根的节点进行哈希计算即可。
步骤4-3:该通道内其他节点得知此节点已退出通道,更新自身的聚集结构树。例如:节点a退出应用通道Channel_3,那么Channel_3的状态发生了改变。因此,Channel_3中的其他所有节点需要重新获取通道的状态树根节点,并更新自身的聚集结构树。
步骤5:通过访问聚集结构树来访问节点的通道状态数据,具体包括以下步骤:
步骤5-1:访问通道的状态数据需要先访问聚集结构树,结合聚集结构树查找通道对应的叶子节点,得到通道状态树根节点的哈希值。例如:节点b加入了***通道Sys_Channel、应用通道Channel_1和Channel_3,那么它的聚集结构树叶子节点包含这三个通道的状态树根节点的哈希值,因为聚集结构树的存在,节点b只执行了一个EVM实例,当一个交易执行需要访问Channel_1的状态树时,首先访问内存中的聚集结构树,从树中查找到相应的叶子节点。
步骤5-2:根据得到的通道状态树根节点哈希值,访问该通道的状态树从而访问状态数据。例如;节点b找到了应用通道Channel_1在聚集结构树中对应的叶子节点,之后根据此叶子节点来访问Channel_1的状态树,也就是应用通道Channel_1的状态数据。
下面以面向区块链多通道状态数据的具体实施例对本发明作进一步的详细说明。
实施例1
参阅附图1,本发明在区块链多通道环境下,为统一对状态树访问接口而设计的聚集结构树的架构,其具体操作过程按下述步骤进行:
步骤1:每个通道都要维护一条区块链,每条链都对应一棵状态树,因此每个通道维护代表自身通道状态的状态树,用来表示该通道的状态。
步骤2:节点对于自身参与的每一个通道的区块链,选择其最高区块,从中得到该通道状态树的根节点,并对其做哈希计算得到哈希值,将得到的哈希值作为聚集结构树的叶子节点,图中节点a参与了***通道Sys_Channel,应用通道Channel_1、Channel_2以及Channel_3,因此节点a需要获得这四个通道的状态树根节点,并对根节点做哈希计算,将哈希计算得到的结果作为聚集结构树的叶子节点。
步骤3:将相邻两个叶子节点的值连接为一个字符串,对其做哈希运算得到父节点的值,该父节点是默克尔二叉树的中间节点,如图中的中间节点A是将其子节点B和C相连,通过哈希计算得到的。
步骤4:对于步骤3得到的节点,从下往上逐层计算中间节点,直至根据最后两个中间节点哈希计算得到默克尔树的根节点,即聚集结构树的根,也就是多通道状态树的访问入口。
步骤5:节点将聚集结构树保存在内存中。
参阅附图2,本发明所使用的区块链多通道环境,在多通道的情况下,网络中的每一个节点都会维护***通道的区块链,因为所有的节点都在***通道Sys_Channel内,因此所有的节点都会维护***通道的状态树。除此之外,每一个节点都会维护其自身所在通道的区块链,图中三个应用通道分别为:Channel_1、Channel_2和Channel_3。其中,在通道Channel_1中的节点只维护Channel_1的状态树;通道Channel_2中的节点只维护Channel_2的状态树;通道Channel_3中的节点只维护Channel_3的状态树。节点a同时属于通道Channel_1和Channel_2,所以对于对这两个应用通道,节点a都会维护其状态树,并将其根节点的哈希值作为聚集结构树的叶子节点。
参阅附图3,每个通道都会维护的状态树,图中显示的是应用通道Channel_1的状态树,它是由A部分的键值对构成的。区块链采用MPT树来构建状态树,类似于前缀树,MPT也将Key-Value数据项的Key存储在树的路径上,并且采用特殊的十六进制前缀来对Key进行编码,使得编码后的Key每一位的值范围都在[0, 15]内。MPT表示的状态树上有三种类型的节点:1)分支节点用来表示树中拥有超过一个以上孩子节点的非叶子节点;2)扩展节点保存共享的Key值以及后续分支节点的哈希值,根据这个哈希值,可以获取另一个节点的内容;3)叶子节点的Key值为除去路径存储的内容后剩余的key值。
参阅附图4,通道产生新区块后,参与通道的节点更新自身的聚集结构树的过程,具体步骤如下:
步骤1:通道发布了一个新的区块,那么该通道的状态已经发生改变,通道的状态树也发生了改变,节点获取该通道发布的新区块中的状态树根节点,计算其哈希值。
步骤2:节点用获取到的状态树根节点的哈希值作为叶子节点,替换聚集结构树中原来该通道的状态树根节点哈希值,如图中节点a参与了***通道Sys_Channel和应用通道Channel_1、Channel_2以及Channel_5,其中通道Channel_1的状态树发生了改变,节点a获取该通道区块链最高区块的区块头中状态树的根节点,并对这个根节点做哈希计算,用计算得到的结果替换掉内存中聚集结构树上Channel_1对应的叶子节点。
步骤3:节点重新计算该通道状态树根节点的哈希值所在叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新,图中(1)内的节点需要重新计算哈希值。
参阅附图5,节点参与到新的通道后,聚集结构树的更新过程,具体功能步骤如下:
步骤1:节点同步新加入的通道的数据和配置,获取该通道最高区块的状态树根节点,计算其哈希值,如图中节点a参与了***通道Sys_Channel以及应用通道Channel_2、Channel_5,之后新加入应用通道Channel_1,那么它需要先同步Channel_1的配置以及区块链数据,从获得的区块链中,根据最高区块的区块头,获取该通道的状态树根节点ROOT_1,并对其哈希计算;
步骤2:节点将新加入的通道的状态树根节点哈希值作为叶子节点添加到聚集结构树,重新计算该叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新,如图中新添加的叶子节点F和叶子节点C为兄弟节点,重新计算其父节点A,并且更新叶子节点F至根节点路径上的哈希值,即图中的(1)部分,从而更新聚集结构树。
参阅附图6,节点退出原本参与的通道后,聚集结构树更新过程的具体步骤如下:
步骤1:节点根据要退出通道的状态树根节点的哈希值,查找聚集结构树上对应的叶子节点。
步骤2:节点将要退出的通道对应的叶子节点删除,对聚集结构树进行调整,完成对聚集结构树的更新,如图中节点a退出应用通道Channel_1,那么叶子节点D为单独节点,重新计算该叶子节点至根节点路径上的哈希值,即图中的(1)部分。
步骤3:该通道内其他节点得知此节点已退出通道,更新自身的聚集结构树,如图中节点a退出应用通道Channel_1,那么Channel_1的状态发生了改变,因此Channel_1中的其他所有节点需要重新获取通道的状态树根节点,并更新自身的聚集结构树。
参阅附图7,EVM通过聚集结构树访问通道状态数据的具体流程,在多通道的环境下,每个节点可能加入多个通道,如图中的节点a加入了***通道Sys_Channel和应用通道Channel_1、Channel_2以及Channel_5。采用聚集结构树来组织多个通道的状态树,使得只需启动一个EVM即可完成所有链数据的执行操作。如图所示,在交易的执行过程中,需要先访问聚集结构树,从中得到通道状态树的访问路径,根据此访问路径来访问通道的状态数据。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护内容。
Claims (9)
1.一种面向区块链多通道状态数据的聚集结构树方法,其特征在于采用通过访问聚集结构树来访问状态数据的方法,节点通过构造一棵默克尔二叉树作为聚集结构树,实现多个通道状态树访问接口的统一,聚集结构树的构造和访问具体包括以下步骤:
步骤1:节点通过构造一棵默克尔二叉树作为聚集结构树,实现多个通道状态树访问接口的统一;
步骤2:若节点参与的通道产生了一个新的区块,需对该节点的聚集结构树进行更新;
步骤3:节点加入新的通道时,需重新计算添加新增叶子节点的聚集结构树的根哈希值;
步骤4:节点退出通道时,需删除聚集结构树上对应的叶子节点,并重新计算根哈希值;
步骤5:通过访问聚集结构树来访问节点的通道状态数据。
2.根据权利要求1所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤1中的多个通道状态树访问接口按下述步骤统一:
步骤1-1:每个通道都维护一个通道状态树;
步骤1-2:节点将自身参与所有的通道状态树的根节点哈希值作为叶子节点构造聚集结构树;
步骤1-3:节点将聚集结构树保存在内存中。
3.根据权利要求1所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤2中的聚集结构树按下述步骤更新:
步骤2-1:通道发布了一个新的区块,区块中包含属于该通道的交易,因此该通道的状态已发生改变;
步骤2-2:节点获取该通道发布的新区块中的状态树根节点,并计算其哈希值;
步骤2-3:节点用获取到的状态树根节点哈希值作为叶子节点,替换聚集结构树中原来该通道的状态树根节点的哈希值;
步骤2-4:节点重新计算该通道状态树根节点哈希值所在叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新。
4.根据权利要求1所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤3中的根哈希值按下述步骤进行计算:
步骤3-1:节点同步新加入的通道的数据和配置,获取该通道最高区块的状态树根节点,并计算其哈希值;
步骤3-2:节点将新加入的通道的状态树根节点哈希值作为叶子节点添加到聚集结构树,并重新计算聚集结构树的根节点。
5.根据权利要求1所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤4中的节点和通道内其他节点按下述步骤更新自身的聚集结构树:
步骤4-1:节点根据要退出通道的状态树根节点的哈希值,查找聚集结构树上对应的叶子节点;
步骤4-2:节点删除该叶子节点,重新计算聚集结构树的根节点;
步骤4-3:该通道内其他节点得知此节点已退出通道,更新自身的聚集结构树。
6.根据权利要求1所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤5中的访问通道状态数据按下述步骤进行:
步骤5-1:访问通道的状态数据需先访问聚集结构树,遍历聚集结构树查找通道对应的叶子节点,得到通道状态树根节点的哈希值;
步骤5-2:根据得到的通道状态树根节点哈希值,访问该通道的状态树,从而访问其状态数据。
7.根据权利要求2所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤1-2中的节点构造聚集结构树按下述步骤进行:
步骤1-2-1:节点从自身参与的每个通道的区块链中的最高区块中获得该通道状态树的根节点,并对其做哈希计算得到相应的哈希值;
步骤1-2-2:将得到的通道状态树的根节点哈希值作为默克尔二叉树的叶子节点;
步骤1-2-3:将相邻两个叶子节点的值连接为一个字符串,对其做哈希运算得到父节点的值,该父节点为默克尔树的中间节点;
步骤1-2-4:对于步骤1-2-3得到的节点,从下往上逐层计算中间节点,直至根据最后两个中间节点进行哈希计算,并以哈希计算得到的默克尔树根节点为多通道状态树的访问入口。
8.根据权利要求4所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤3-2中的聚集结构树的根节点计算按下述步骤进行:
步骤3-2-1:如果聚集结构树原来有奇数个叶子节点,将新通道的根节点哈希值与单独的叶子节点的值连接为一个字符串,对其做哈希运算得到新的父节点,并重新计算得到的父节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新;
步骤3-2-2:如果聚集结构树原来有偶数个叶子节点,将新通道的根节点哈希值添加为新的叶子节点,并重新计算该叶子节点至聚集结构树根节点路径上的哈希值,完成对聚集结构树的更新。
9.根据权利要求5所述面向区块链多通道状态数据的聚集结构树方法,其特征在于所述步骤4-2中的聚集结构树的根节点计算按下述步骤进行:
步骤4-2-1:如果聚集结构树原来有奇数个叶子节点,将要退出通道对应的叶子节点删除,并重构聚集结构树,重新计算其他叶子节点至根节点路径上的的哈希值,完成对聚集结构树的更新;
步骤4-2-2:如果聚集结构树原来有偶数个叶子节点,将要退出的通道对应的叶子节点删除,计算单独的叶子节点至根节点路径上的哈希值,完成对聚集结构树的更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180693.9A CN112380209B (zh) | 2020-10-29 | 2020-10-29 | 一种面向区块链多通道状态数据的聚集结构树方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180693.9A CN112380209B (zh) | 2020-10-29 | 2020-10-29 | 一种面向区块链多通道状态数据的聚集结构树方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380209A true CN112380209A (zh) | 2021-02-19 |
CN112380209B CN112380209B (zh) | 2021-08-20 |
Family
ID=74576398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011180693.9A Active CN112380209B (zh) | 2020-10-29 | 2020-10-29 | 一种面向区块链多通道状态数据的聚集结构树方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380209B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094556A (zh) * | 2021-02-24 | 2021-07-09 | 山东鲁能控制工程有限公司 | 数据负荷自平衡的分散控制方法及装置 |
CN113254253A (zh) * | 2021-07-14 | 2021-08-13 | 云智慧(北京)科技有限公司 | 一种数据处理方法、***及设备 |
CN113364847A (zh) * | 2021-05-31 | 2021-09-07 | 新疆大学 | 区块链节点的数据同步方法、装置及存储介质 |
CN113704249A (zh) * | 2021-07-14 | 2021-11-26 | 杭州溪塔科技有限公司 | 一种区块链中使用静态默克尔树的方法和装置 |
CN113794558A (zh) * | 2021-09-16 | 2021-12-14 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及*** |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108009818A (zh) * | 2017-10-30 | 2018-05-08 | 牟林 | 一种基于分布式网络的线上支付方法及*** |
CN108897760A (zh) * | 2018-05-22 | 2018-11-27 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 基于默克尔树的电子证据链完整性验证方法 |
CN109559234A (zh) * | 2019-01-31 | 2019-04-02 | 杭州复杂美科技有限公司 | 一种区块链状态数据的存储方法、设备和存储介质 |
US10261711B1 (en) * | 2018-01-25 | 2019-04-16 | Merck Sharp & Dohme Corp. | Proof of non-tampering for stored data |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及*** |
CN110415117A (zh) * | 2019-06-28 | 2019-11-05 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法、装置和电子设备 |
CN110602239A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种区块链信息存储方法及相关设备 |
CN111444192A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111444196A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111447066A (zh) * | 2020-02-19 | 2020-07-24 | 江苏荣泽信息科技股份有限公司 | 一种基于区块链的物联网平台 |
CN111490978A (zh) * | 2020-03-27 | 2020-08-04 | 武汉大学 | 一种基于状态通道的分布式日志审计***及方法 |
CN111625258A (zh) * | 2020-05-22 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 默克尔树更新方法、装置、设备及可读存储介质 |
CN111818181A (zh) * | 2020-08-31 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置及计算机可读存储介质 |
-
2020
- 2020-10-29 CN CN202011180693.9A patent/CN112380209B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108009818A (zh) * | 2017-10-30 | 2018-05-08 | 牟林 | 一种基于分布式网络的线上支付方法及*** |
US10261711B1 (en) * | 2018-01-25 | 2019-04-16 | Merck Sharp & Dohme Corp. | Proof of non-tampering for stored data |
CN108897760A (zh) * | 2018-05-22 | 2018-11-27 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 基于默克尔树的电子证据链完整性验证方法 |
CN109559234A (zh) * | 2019-01-31 | 2019-04-02 | 杭州复杂美科技有限公司 | 一种区块链状态数据的存储方法、设备和存储介质 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及*** |
CN110415117A (zh) * | 2019-06-28 | 2019-11-05 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法、装置和电子设备 |
CN110602239A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种区块链信息存储方法及相关设备 |
CN111447066A (zh) * | 2020-02-19 | 2020-07-24 | 江苏荣泽信息科技股份有限公司 | 一种基于区块链的物联网平台 |
CN111490978A (zh) * | 2020-03-27 | 2020-08-04 | 武汉大学 | 一种基于状态通道的分布式日志审计***及方法 |
CN111625258A (zh) * | 2020-05-22 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 默克尔树更新方法、装置、设备及可读存储介质 |
CN111444192A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111444196A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111818181A (zh) * | 2020-08-31 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置及计算机可读存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094556A (zh) * | 2021-02-24 | 2021-07-09 | 山东鲁能控制工程有限公司 | 数据负荷自平衡的分散控制方法及装置 |
CN113094556B (zh) * | 2021-02-24 | 2021-11-02 | 山东鲁能控制工程有限公司 | 数据负荷自平衡的分散控制方法及装置 |
CN113364847A (zh) * | 2021-05-31 | 2021-09-07 | 新疆大学 | 区块链节点的数据同步方法、装置及存储介质 |
CN113254253A (zh) * | 2021-07-14 | 2021-08-13 | 云智慧(北京)科技有限公司 | 一种数据处理方法、***及设备 |
CN113254253B (zh) * | 2021-07-14 | 2021-11-02 | 云智慧(北京)科技有限公司 | 一种数据处理方法、***及设备 |
CN113704249A (zh) * | 2021-07-14 | 2021-11-26 | 杭州溪塔科技有限公司 | 一种区块链中使用静态默克尔树的方法和装置 |
CN113794558A (zh) * | 2021-09-16 | 2021-12-14 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及*** |
CN113794558B (zh) * | 2021-09-16 | 2024-02-27 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN112380209B (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112380209B (zh) | 一种面向区块链多通道状态数据的聚集结构树方法 | |
US6954776B1 (en) | Enabling intra-partition parallelism for partition-based operations | |
Lerner et al. | The Case for Network Accelerated Query Processing. | |
US20110314019A1 (en) | Parallel processing of continuous queries on data streams | |
CN107015868B (zh) | 一种通用后缀树的分布式并行构建方法 | |
CN112883241B (zh) | 基于连通分量生成优化的超级计算机基准测试加速方法 | |
Liao et al. | MRPrePost—A parallel algorithm adapted for mining big data | |
CN104298598B (zh) | 分布式环境下rdfs本体的调试方法 | |
CN106446134B (zh) | 基于谓词规约和代价估算的局部多查询优化方法 | |
CN104731925A (zh) | 基于MapReduce的FP-Growth的负载均衡并行计算方法 | |
CN110719106B (zh) | 一种基于节点分类排序的社交网络图压缩方法及*** | |
CN106815302A (zh) | 一种应用于游戏道具推荐的频繁项集挖掘方法 | |
CN110233802A (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
Koh et al. | MapReduce skyline query processing with partitioning and distributed dominance tests | |
US10289723B1 (en) | Distributed union all queries | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
CN112699134A (zh) | 基于图剖分的分布式图数据库的存储与查询方法 | |
CN110245271B (zh) | 基于属性图的大规模关联数据划分方法及*** | |
CN109254962A (zh) | 一种基于t-树的索引优化方法及装置 | |
Zou et al. | An efficient data structure for dynamic graph on GPUS | |
Lin et al. | A multi-index hybrid trie for lookup and updates | |
Rochd et al. | Performance Improvement of PrePost Algorithm Based on Hadoop for Big Data. | |
Toda et al. | Autonomous and distributed construction of locality aware skip graph | |
CN108399233A (zh) | 一种基于算法的分布式数据库的查询优化方法 | |
Xu et al. | A novel batch-based LKH tree balanced algorithm for group key management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |