CN110557277A - 区块链***中查找两个区块最近公共祖先的方法和*** - Google Patents
区块链***中查找两个区块最近公共祖先的方法和*** Download PDFInfo
- Publication number
- CN110557277A CN110557277A CN201910676895.3A CN201910676895A CN110557277A CN 110557277 A CN110557277 A CN 110557277A CN 201910676895 A CN201910676895 A CN 201910676895A CN 110557277 A CN110557277 A CN 110557277A
- Authority
- CN
- China
- Prior art keywords
- tree
- blocks
- block
- chain
- common ancestor
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种区块链***中查找两个区块最近公共祖先的方法,包括:以当前节点存储的本地区块链为原始树构建辅助树;通过Access(V)操作,将该辅助树中的区块V旋转到该辅助树的根树链上,形成临时辅助树;通过Access(W)操作,将该临时辅助树中的区块W旋转到该临时辅助树的根树链上,形成最终辅助树;以该最终辅助树的根区块为区块V和区块W的最近公共祖先。本发明的区块链***中查找两个区块最近公共祖先方法,通过使用Link/Cut Tree算法将该功能的均摊时间复杂度降到了O(logN),而且省去了大量Hash值比对过程,极大地优化了查找效率。
Description
技术领域
本发明属于互联网技术领域,具体涉及一种区块链网络中查找两个区块最近公共祖先的方法及***。
背景技术
在区块链***中,难以避免分叉,当共识节点接收到分叉链的新区块时,需要回到分叉点重新根据规则选择主链,这其中就依赖于查找两个区块最近公共祖先的功能。而目前常用的最近公共祖先查找算法为回溯方法,其查找算法的均摊时间复杂度为O(N),而且还会涉及大量的Hash值比对过程。采用这种算法,在分叉严重时,性能损耗非常高。目前区块链***中,以以太坊(Ethereum)为代表,普遍采用回溯方法查找两个区块的最近公共祖先。
图1是现有技术中通过回溯方法查找两区块的最近公共祖先示意图。如图1所示,给定两个区块a和b,采用回溯方法查找最近公共祖先的流程如下:找到a和b中区块高度较小的区块,高度设为h;分别在a和b所在的分叉链上,回溯到高度为h的区块,记为a'和b';如果a'和b'的hash相同,那么a'便是a和b的最近公共祖先;否则,分别取a'和b'的父区块,记为新的a'和b',重复上述操作,直到找到a和b的最近公共祖先。回溯方法采用线性查找祖先的方式,均摊时间复杂度是O(N),而且在查找过程中涉及了大量的Hash比对过程。如果给定的两个区块所在的链分叉十分严重,那么查询最近公共祖先的操作将会十分耗时。
发明内容
针对现有技术中存在的问题,本发明通过引入动态树,借助动态树的基础操作Access,来降低查找两个区块最近公共祖先操作的均摊时间复杂度,并节省查找中大量哈希比对过程。
具体来说,本发明提出一种区块链***中查找两个区块最近公共祖先方法,包括:以当前节点存储的本地区块链为原始树构建辅助树;通过Access(V)操作,将该辅助树中的区块V旋转到该辅助树的根树链上,形成临时辅助树;通过Access(W)操作,将该临时辅助树中的区块W旋转到该临时辅助树的根树链上,形成最终辅助树;以该最终辅助树的根区块为区块V和区块W的最近公共祖先。
本发明所述的查找两个区块最近公共祖先的方法,其中通过LCT动态树构建该辅助树。
本发明所述的查找两个区块最近公共祖先的方法,其中该当前节点为全节点,该本地区块链为全量区块链。
本发明所述的查找两个区块最近公共祖先的方法,其中该当前节点为轻量级节点,该本地区块链为仅包含所有区块的区块头的区块链全链。
本发明还提出一种区块链***中查找两个区块最近公共祖先的***,包括:初始化模块,用于以当前节点存储的本地区块链为原始树构建辅助树;第一旋转模块,用于通过Access(V)操作,将该辅助树中的区块V旋转到该辅助树的根树链上,形成临时辅助树;第二旋转模块,用于通过Access(W)操作,将该临时辅助树中的区块W旋转到该临时辅助树的根树链上,形成最终辅助树;公共祖先获取模块,用于以该最终辅助树的根区块为区块V和区块W的最近公共祖先。
本发明所述的查找两个区块最近公共祖先的***,其中该初始化模块通过LCT动态树构建该辅助树。
本发明所述的查找两个区块最近公共祖先的***,其中该当前节点为全节点,该本地区块链为区块链全链。
本发明所述的查找两个区块最近公共祖先的***,其中该当前节点为轻量级节点,该本地区块链为仅包含所有区块的区块头的区块链全链。
本发明还提出一种可读存储介质,存储有可执行指令,该可执行指令用于执行前述的区块链***中查找两个区块最近公共祖先的方法。
本发明还提出一种数据处理终端,作为对等节点接入P2P网络,该数据处理终端包括:可读存储介质;处理器,用于调取并执行该可读存储介质中的可执行指令,以查找本地存储的区块链中任两个区块的最近公共祖先;存储器,用于存储本地区块链。
本发明还提出一种P2P网络,包括多个对等节点,其中至少一个该对等节点为前述的数据处理终端。
本发明的区块链***中查找两个区块最近公共祖先方法,通过使用Link/CutTree算法将该功能的均摊时间复杂度降到了O(logN),而且省去了大量Hash值比对过程,极大地优化了查找效率。
附图说明
图1是现有技术中通过回溯方法查找两区块的最近公共祖先示意图。
图2是现有技术的伸展树Splay(x)示意图。
图3是现有技术的动态树Access(x)示意图。
图4A、4B是现有技术的图3所示动态树执行Access(L)的变化过程示意图。
图4C是现有技术的图4B所示动态树执行Access(H)的变化过程示意图。
图5是本发明的区块链***中查找两个区块最近公共祖先的方法流程图。
图6A是完全分叉的区块链结构示意图。
图6B是完全分叉的区块链示例图。
图7是本发明的以图6B所示区块链为原始动态树查找最近公共祖先示意图。
图8是本发明的数据处理装置示意图。
图9是本发明的区块链***结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
伸展树(Splay Tree)是一种能够自我平衡的二叉树,其的核心操作是Splay(x),作用是将访问的节点x旋转到树根。图2是现有技术的伸展树Splay(x)示意图。如图2所示,对节点9进行旋转操作,即x=9,Splay(9)。
动态树(LCT,Link/Cut Tree)是由多条Splay树链组成的森林,其核心操作是Access(x),作用是将根节点到节点x的访问路径作为重链旋转到树根所在的树链。图3是现有技术的动态树Access(x)示意图。如图3所示的LCT树实例,左图为原始树,中图是访问过程中可能出现的一种辅助树,为多条树链组成的森林,右图是执行Access(L)操作时原始树边轻重变化。
Access(x)操作步骤包括:在节点x所在树链做Splay(x)操作,节点x成为所在树链根节点;如果x在辅助树上存在父节点y,则断开节点y的右子节点,将节点x变成节点y的右子节点;在节点y所在树链做Splay(y)操作,使节点y成为所在树链根节点;将节点y作为新的节点x,重复上述操作。图4A、4B是现有技术的图3所示动态树执行Access(L)的变化过程示意图。如图4A、4B所示,路径ACFGJL被旋转到根树链。图4C是现有技术的图4B所示动态树执行Access(H)的变化过程示意图。如图4C所示,路径ACFH被旋转到根树链。最后,在图4C所示的最终辅助树上,返回根节点F,为节点L和节点H的最近公共祖先。
可见,Splay树的核心操作Splay(X)是将要访问的节点X旋转到根节点,LCT树的核心操作Access(X)是将要访问的节点X所在路径旋转到根树链,两者操作的均摊时间复杂度都是O(logN)。本发明将树链采用LCT构建,并借助LCT的Access操作的组合,实现了寻找最近公共祖先的功能,将均摊时间复杂度降到O(logN),并省去了大量Hash比对过程。
图5是本发明的区块链***中查找两个区块最近公共祖先的方法流程图。如图5所示,本发明的方法具体包括:
步骤S1,以当前节点存储的本地区块链为原始树,通过LCT动态树构建该原始树的辅助树;
区块链***的节点分为全节点和轻量级节点,其中全节点存储了从创世区块以来的所有区块链数据,而轻量级节点只保存区块链的部分数据,例如是从创世区块以来所有区块的区块头数据,当进行查找最近公共祖先操作时,仅通过区块头数据也可以完成查找最近公共祖先的操作,于本发明的实施例,全节点和轻量级节点均可以通过本发明的查找两个区块最近公共祖先的方法,进行快速查找两个区块最近公共祖先;
步骤S2,对辅助树中的区块V进行Access(V)操作,以将区块V旋转到辅助树的根树链,形成临时辅助树;
步骤S3,对临时辅助树中的区块W进行Access(W)操作,以将区块W旋转到临时辅助树的根树链,形成最终辅助树;
步骤S4,以最终辅助树的根区块为区块V和区块W的最近公共祖先。
由于上述描述的查找最近公共祖先的方法涉及的所有操作,其均摊时间复杂度都在O(logN)之内,所以该方法整体的均摊时间复杂度也为O(logN),而且不涉及Hash比对过程。
本发明优化了在区块链查找任意两个区块最近公共祖先的方法,将传统需要O(N)均摊时间复杂度的算法提升到了均摊时间复杂度O(logN),而且省去了其中大量的Hash值比对过程,极大优化了查找效率。
下面以具体实施例对本发明的查找两个区块最近公共祖先的方法进行进一步的说明。
本实施例在CPU:2.3GHz Interl Core i5,内存:8GB的MacBook Pro下,构造如图6A所示的树链,
假设区块Hash为256位字节,那么,在取不同的n值时,分别使用本发明提出的基于LCT的方法,以及传统回溯方法模拟了查找m*2-1和m*2两区块最近公共祖先的过程,其中m从1到n,记录共n次查找过程的总时间消耗,实验结果如表1所示。
n=10 | n=100 | n=1000 | |
LCT方法 | 89.539μs | 1.259184ms | 14.007684ms |
回溯方法 | 26.219μs | 2.211826ms | 205.062544ms |
提升比例 | -241.5% | 43.1% | 93.2% |
表1
可见,分叉越严重时,采用本发明描述的基于LCT查找区块最近公共祖先的方法,相对于传统回溯查找方法,在性能上提升越明显。
本发明适用于任一存在分叉可能的区块链***,能够帮助这些区块链***优化查找两个区块最近公共祖先的算法效率。下面列举一个极端实例,图6B是完全分叉的区块链示例图。如图6B所示,需要寻找198和199两个区块的最近公共祖先。
采用传统回溯方法,涉及2*n-1和2*n两组区块,n从100到1,其中涉及100次Hash值(长度为256bits)比对操作,以及200次查找父区块的操作。
采用本发明提出的基于LCT的最近公共祖先查找算法,假设先顺次***2*n(n∈[1,100])的区块,然后顺次***2*n-1(n∈[1,100])的区块,得到初始辅助树,之后查找最近公共祖先的操作如图7所示。由于最后***的就是199区块,所以Access(199)对树不产生影响,之后Access(198)只涉及一次树链旋转操作,最后返回根节点0。其中不涉及任何Has获知比对操作。可见,对比两种方案,本发明提出的方案操作更少,效率更高。
图8是本发明的数据处理终端结构示意图。如图8所示,本发明还提出一种数据处理终端,包括处理器、存储器和可读存储介质,其中处理器通过读取可读存储介质存储的可执行指令,以查找区块链中任两个区块的最近公共祖先;存储器,用于存储本地区块链;可读存储介质存储有可执行指令,可执行指令被处理器执行时,实现上述区块链***中查找两个区块最近公共祖先方法。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
图9是本发明的区块链***结构示意图。如图9所示,本发明的区块链***包括多个共识节点,本发明的区块链***中,至少一个区块链共识节点为本发明的数据处理终端。
存在分叉的区块链***中,所有区块构成了一个树状结构。本发明通过引入动态树(LCT,Link/Cut Tree)来表示这种树状结构,借助LCTree的基础操作组合,将查找两个区块最近公共祖先的操作的均摊时间复杂度从O(N)优化到了O(logN),并且省去了其中大量Hash比对过程。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种区块链***中查找两个区块最近公共祖先的方法,其特征在于,包括:
以当前节点存储的本地区块链为原始树构建辅助树;
通过Access(V)操作,将该辅助树中的区块V旋转到该辅助树的根树链上,形成临时辅助树;
通过Access(W)操作,将该临时辅助树中的区块W旋转到该临时辅助树的根树链上,形成最终辅助树;
以该最终辅助树的根区块为区块V和区块W的最近公共祖先。
2.如权利要求1所述的查找两个区块最近公共祖先的方法,其特征在于,通过LCT动态树构建该辅助树。
3.如权利要求2所述的查找两个区块最近公共祖先的方法,其特征在于,该当前节点为全节点,该本地区块链为全量区块链。
4.如权利要求2所述的查找两个区块最近公共祖先的方法,其特征在于,该当前节点为轻量级节点,该本地区块链为仅包含所有区块的区块头的区块链全链。
5.一种区块链***中查找两个区块最近公共祖先的***,其特征在于,包括:
初始化模块,用于以当前节点存储的本地区块链为原始树构建辅助树;
第一旋转模块,用于通过Access(V)操作,将该辅助树中的区块V旋转到该辅助树的根树链上,形成临时辅助树;
第二旋转模块,用于通过Access(W)操作,将该临时辅助树中的区块W旋转到该临时辅助树的根树链上,形成最终辅助树;
公共祖先获取模块,用于以该最终辅助树的根区块为区块V和区块W的最近公共祖先。
6.如权利要求5所述的查找两个区块最近公共祖先的***,其特征在于,该初始化模块通过LCT动态树构建该辅助树。
7.如权利要求6所述的查找两个区块最近公共祖先的***,其特征在于,该当前节点为全节点,该本地区块链为全量区块链。
8.如权利要求6所述的查找两个区块最近公共祖先的***,其特征在于,该当前节点为轻量级节点,该本地区块链为仅包含所有区块的区块头的区块链全链。
9.一种可读存储介质,存储有可执行指令,该可执行指令用于执行如权利要求1~4任一项所述的区块链***中查找两个区块最近公共祖先的方法。
10.一种数据处理终端,作为对等节点接入P2P网络,该数据处理终端包括:
如权利要求9所述的可读存储介质;
处理器,用于调取并执行该可读存储介质中的可执行指令,以查找本地存储的区块链中任两个区块的最近公共祖先;
存储器,用于存储本地区块链。
11.一种P2P网络,包括多个对等节点,其特征在于,至少一个该对等节点为如权利要求10所述的数据处理终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910676895.3A CN110557277A (zh) | 2019-07-25 | 2019-07-25 | 区块链***中查找两个区块最近公共祖先的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910676895.3A CN110557277A (zh) | 2019-07-25 | 2019-07-25 | 区块链***中查找两个区块最近公共祖先的方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110557277A true CN110557277A (zh) | 2019-12-10 |
Family
ID=68735526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910676895.3A Pending CN110557277A (zh) | 2019-07-25 | 2019-07-25 | 区块链***中查找两个区块最近公共祖先的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110557277A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052681A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 银行***机构层级权限管理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170132621A1 (en) * | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
CN107918612A (zh) * | 2016-10-08 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 键值存储***数据结构的实现方法和装置 |
CN108985790A (zh) * | 2018-06-25 | 2018-12-11 | 平安科技(深圳)有限公司 | 基于区块链的防伪方法、***、计算机设备和存储介质 |
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及***、设备和存储介质 |
US20190095831A1 (en) * | 2017-09-27 | 2019-03-28 | Earth Observation Inc. | System and method for preserving forests and certifying the supply chain of lumber |
-
2019
- 2019-07-25 CN CN201910676895.3A patent/CN110557277A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170132621A1 (en) * | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
CN107918612A (zh) * | 2016-10-08 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 键值存储***数据结构的实现方法和装置 |
US20190095831A1 (en) * | 2017-09-27 | 2019-03-28 | Earth Observation Inc. | System and method for preserving forests and certifying the supply chain of lumber |
CN108985790A (zh) * | 2018-06-25 | 2018-12-11 | 平安科技(深圳)有限公司 | 基于区块链的防伪方法、***、计算机设备和存储介质 |
CN109359222A (zh) * | 2018-08-06 | 2019-02-19 | 杭州复杂美科技有限公司 | 数据存储方法及***、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
DAD3ZZ: "学习笔记-动态树Link-Cut-Tree;", 《HTTPS://WWW.CNBLOGS.COM/DAD3ZZ-BEYONDER/P/5346170.HTML》 * |
李靖宁: "区块链解析及应用", 《青岛远洋船员职业学院学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052681A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 银行***机构层级权限管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108564470B (zh) | 一种区块链中并行建块的交易分发方法 | |
CN109522428B (zh) | 一种基于索引定位的图计算***的外存访问方法 | |
EP3432157A1 (en) | Data table joining mode processing method and apparatus | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN112883241B (zh) | 基于连通分量生成优化的超级计算机基准测试加速方法 | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
CN110719106A (zh) | 一种基于节点分类排序的社交网络图压缩方法及*** | |
US9053041B2 (en) | System, method, and computer program product for performing graph coloring | |
CN110557277A (zh) | 区块链***中查找两个区块最近公共祖先的方法和*** | |
US20130297605A1 (en) | System, method, and computer program product for performing graph coloring | |
CN116521956A (zh) | 一种图数据库查询方法、装置、电子设备及存储介质 | |
CN112380004B (zh) | 内存管理方法、装置、计算机可读存储介质及电子设备 | |
CN104283736A (zh) | 一种基于改良自动状态机的网络通信五元组快速匹配算法 | |
CN111159490B (zh) | 一种模式字符串的处理方法、装置及设备 | |
CN116170026A (zh) | 一种适用于类物联网设备生成数据领域的数据压缩和模糊搜索方法 | |
CN112531709B (zh) | 一种电网拓扑配置方法 | |
CN110532439B (zh) | 基于树搜索的同顺序部门决策流程生成方法、***、装置 | |
CN110083603B (zh) | 一种基于邻接表实现节点路径的查询方法及*** | |
CN109240600B (zh) | 一种基于混合更新策略的磁盘图处理方法 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN112988064A (zh) | 一种面向并发多任务的磁盘图处理方法 | |
CN113726342B (zh) | 面向大规模图迭代计算的分段差值压缩与惰性解压方法 | |
CN107515867A (zh) | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 | |
CN112417045A (zh) | 一种数据库主从节点的数据同步方法和装置 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230706 Address after: Room 3901, No. 701, Yunjin Road, Xuhui District, Shanghai, 200030 Applicant after: Shanghai Shutu blockchain Research Institute Address before: 100084 6 / F, East Building, block D, Tsinghua Tongfang science and Technology Plaza, Haidian District, Beijing Applicant before: Beijing Qinghong Weigu Technology Development Co.,Ltd. |
|
TA01 | Transfer of patent application right |