CN113901144B - 非全网共识区块链下的查询方法、设备及存储介质 - Google Patents
非全网共识区块链下的查询方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113901144B CN113901144B CN202111205486.9A CN202111205486A CN113901144B CN 113901144 B CN113901144 B CN 113901144B CN 202111205486 A CN202111205486 A CN 202111205486A CN 113901144 B CN113901144 B CN 113901144B
- Authority
- CN
- China
- Prior art keywords
- node
- query
- neighbor
- message
- nodes
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 238000003860 storage Methods 0.000 title claims abstract description 26
- 230000000977 initiatory effect Effects 0.000 claims abstract description 20
- 238000005304 joining Methods 0.000 claims description 35
- 230000006870 function Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012163 sequencing technique Methods 0.000 abstract description 6
- 230000007246 mechanism Effects 0.000 description 25
- 238000007726 management method Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008030 elimination Effects 0.000 description 4
- 238000003379 elimination reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000002243 precursor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 229920004934 Dacron® Polymers 0.000 description 1
- 208000035126 Facies Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000005020 polyethylene terephthalate Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种非全网共识区块链下的查询方法、设备及存储介质,涉及区块链技术领域,所述方法包括:接收查询请求消息,查询本地账本,确定能否在本地账本内命中满足查询请求消息的交易或区块;当未命中时,对邻居节点进行排序选择多个转发节点,向多个转发节点转发查询请求消息,当命中时,获取返回结果,向所有邻居节点发送命中信息,检查自身是否为查询请求消息的发起节点,若是发起节点,则返回查询请求结果;若不是发起节点,则向所述查询请求消息的发送节点转发所述返回结果。本申请在每次查询时每个节点向最适合的邻居节点转发查询请求,通过相似度指导请求转发,减少消息发送量,使查询具有较低的延迟和较高的查询成功率。
Description
技术领域
本申请实施例涉及区块链技术领域,具体而言,涉及一种非全网共识区块链下的查询方法、设备及存储介质。
背景技术
区块链技术是实现分布式账本的底层技术。所谓区块链,是指通过密码学哈希链接的一连串增长的交易记录(也被称为区块)。每个区块通常包含前一个区块的哈希值、时间戳和交易数据。目前,为了提高基于区块链的分布式账本的可扩展性,学术界和工业界已经提出了多种方案,包括从数据传输层、链上、链下方面进行优化。其中,链上方案包括分片、采用有向无环图(DAG,Directed Acyclic Graph)结构、修改共识机制、存储模式优化。在大数据存证的场景下,修改共识机制被认为是解决区块链在存储和吞吐量可扩展性问题一种有效方法。共识机制影响着分布式账本的去中心化的自治、群体结构、验证过程、数据完整性、不可抵赖性、拜占庭容错性和账本性能等方面,是分布式账本的核心。
但是,在采用非全网共识的账本中,节点不再具有全量数据,已经无法继续采用在全网共识的账本中仅通过节点本地数据库来完成查询的方法。在非全网共识的账本中,查询系统必须采用分布式的查询方法,而业界常用的分布式数据库中的查询方法,往往没有考虑节点之间不能完全信任的问题。因此,如何设计一种面向非全网共识账本的查询系统,成为一个亟待解决的问题。
发明内容
本申请实施例提供一种非全网共识区块链下的查询方法、设备及存储介质,旨在解决以上至少一项技术问题。
本申请实施例第一方面提供一种非全网共识区块链下的查询方法,所述非全网共识区块链包括本地节点和邻居节点,所述方法应用于本地节点,所述方法包括:
接收查询请求消息,将所述查询请求消息加入请求缓存,存储发送所述查询请求消息的节点的ID;
查询本地账本,判断能否在所述本地账本内命中满足所述查询请求消息的交易或区块;
当未命中时,对邻居节点进行相似度排序,依据所述排序选择多个转发节点;
向所述多个转发节点转发所述查询请求消息;
当命中时,获取返回结果,向所有邻居节点发送命中信息;
检查自身是否为所述查询请求消息的发起节点;
当自身是所述查询请求消息的发起节点时,则返回查询请求结果;
当自身不是所述查询请求消息的发起节点时,则向所述查询请求消息的发起节点转发所述返回结果。
可选地,所述请求缓存采用哈希链表结构,所述将所述查询请求消息加入请求缓存,包括:
依据所述查询请求消息构建为键值对;
依据所述查询请求消息的接收时间将所述键值对插入哈希链表。
可选地,所述方法还包括:
调用查询接口,输入指定信息,所述指定信息包括指定查询类型和查询元信息;
根据所述查询类型和所述查询元信息,确定是否发起分布式查询及最终结果回调函数;
生成请求ID,依据所述指定信息及请求ID所述生成所述请求消息。
可选地,所述生成请求ID,包括:
将本地节点的ID与本地自增序列号结合,生成所述请求ID。
可选地,所述本地节点内包含邻居画像集合,所述邻居节点画像集合包括每一个邻居节点对应的邻居节点画像,所述邻居节点画像包括一个或多个查询请求消息的地址向量表示,所述对邻居节点进行排序,按照所述排序选择多个转发节点,包括:
在所述本地账本内查询所述查询请求消息对应的块头;
基于所述块头计算所述查询请求消息的地址向量表示;
计算所述地址向量表示与所述邻居节点画像集合的相似度;
依据所述相似度,查找最相似的K个邻居节点;
选择所述K个邻居节点外的R个邻居节点,将所述K个邻居节点和所述R个邻居节点作为转发节点。
可选地,所述方法还包括:
接收邻居节点的命中消息;
根据命中消息,更新发送所述命中消息的邻居节点对应的邻居节点画像。
可选地,所述方法还包括:
接收邻居节点的返回结果消息;
根据所述返回结果消息,更新发送所述返回结果消息的邻居节点对应的邻居节点画像;
从所述请求缓存中查询所述返回结果消息对应的缓存体,从所述缓存体查找来源节点ID;
判断所述来源节点ID是否为自身的ID;
当所述来源节点ID为自身的ID时,则依据所述返回结果消息返回查询结果;
当所述来源节点ID不为自身的ID时,则向来源节点ID对应的邻居节点转发所述返回结果。
可选地,所述方法还包括:
初始化本地节点,将已加入主题集合和主题邻居节点集合置为空集,所述已加入主题集合包含本地节点已加入的主题,所述主题邻居节点集合包含有多个主题及各主题下的邻居节点;
加入第一主题时,将向所述已加入主题集合加入所述第一主题,向邻居节点发送第一加入消息;
接收所述第一加入消息的第一回复消息,在所述主题邻居节点集合中的第一主题下加入第一回复消息的发送节点;
通知上层应用有新节点加入;
所述方法还包括:
接收第二加入消息,确定所述第二加入消息的主题,在主题邻居节点集合中的相同主题下加入所述第二加入消息的发送节点,其中,所述第二加入消息由邻居节点加入任意主题时发送;
判断所述第二加入消息的主题是否在已加入的主题中;
当第二加入消息的主题在已加入的主题中时,则通知上层应用该主题下有新的节点加入,并向所述第二加入消息的发送节点发送第二回复消息。
本申请实施例第三方面提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法中的步骤。
本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请第一方面所述的方法的步骤。
采用本申请提供的非全网共识区块链下的查询方法,本申请针对非全网共识区块链提供一种合适的查询方法,该查询方法使用了广播-结果返回的机制,每次查询时每个节点向最适合的邻居节点转发查询请求,能保证大部分节点接收到查询请求,并通过相似度指导请求转发,减少消息发送量,使查询具有较低的延迟和较高的查询成功率。
同时本申请通过每个节点维护的请求缓存,使命中节点能根据请求转发的路径原路返回给查询节点,通过去中心化的方法维护元数据,并完成对分散存储账本数据的查询,达到了完全去中心化、可扩展、可容错的效果。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的非全网共识区块链下的查询方法的流程图;
图2是本申请一实施例提出的请求ID的示意图;
图3是本申请一实施例提出的计算地址向量表示的示意图;
图4是本申请一实施例提出的主题邻居管理协议的示意图;
图5是本申请一实施例提出的查询方法在节点中形成的系统的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
分布式账本是一种在对等网络中共享、复制和同步的分布式数据库,可信性和透明性是分布式账本的两大特点。区块链技术是实现分布式账本的底层技术。所谓区块链,是指通过密码学哈希链接的一连串增长的交易记录(也被称为区块)。每个区块通常包含前一个区块的哈希值、时间戳和交易数据。但是,随着分布式账本越来越广泛的应用,基于区块链的比特币、以太坊等分布式账本项目面临着可扩展性差的问题,这被认为是限制基于区块链的分布式账本广泛应用的一个重要技术因素。
修改共识机制被认为是解决区块链在存储和吞吐量可扩展性问题一种有效方法。例如,北大数瑞团队提出了nRW(n-Random-Witness)的非全网共识算法。非全网共识算法,是指共识过程仅有部分节点参与、节点不存储全量交易数据的共识算法。
非全网共识账本在全网范围内可以表示为一系列区块集合L={B0,B1,...,Bn}。每个区块由区块头hi和交易体Ki构成,区块体即交易t的集合,可以表示为Bi=<hi,Ki>,Ki={t1,t2,…,tm}。在非全网共识账本中,任意节点Ni所具有的区块集合具有以下特点:即节点所具有区块集合为全网区块集合的子集。由于在非全网共识的账本中,账本数据在全网范围内分散存储,单节点不具有全量数据,并且元数据的存储是去中心化的,意味着节点对全网范围内数据的查询不能够简单的本地查询来完成,必须采用分布式的查询方法。而业界常用的分布式数据库中的查询方法,往往没有考虑节点之间不能完全信任的问题。
本申请针对非全网共识区块链提供一种合适的查询方法,该查询方法使用了广播-结果返回的机制,每次查询时每个节点向最适合邻居节点转发查询请求,能保证大部分节点接收到查询请求,同时通过每个节点维护的请求缓存,使命中节点能根据请求转发的路径原路返回给查询节点。本申请通过去中心化的方法维护元数据,并完成对分散存储账本数据的查询,达到了完全去中心化、可扩展、可容错的效果。
参考图1,图1是本申请一实施例提出的非全网共识区块链下的查询方法的流程图。所述非全网共识区块链包括本地节点和邻居节点,所述方法应用于本地节点,如图1所示,该方法包括以下步骤:
步骤S110、接收查询请求消息,将所述查询请求消息加入请求缓存,存储发送所述查询请求消息的节点的ID。
区块链网络由多个节点组成,节点之间通过点对点协议相互进行交流,来传输交易和区块的信息,任何连接至区块链网络的计算机或其他设备,都可以被视为是区块链网络的节点。在本实施例中,节点在查询方法上没有任何差异,为了便于描述本实施例提供的方法,选择区块链网络中任一节点,将被选中的节点称为本地节点,而未被选中的节点称为邻居节点。
接收查询请求消息,查询请求消息内指定了需要查询哪些信息,接收到查询请求后,将该查询请求加入缓存,并存储发送该查询请求的节点的节点ID。
在查询系统中,为了并发处理来自不同节点的请求,需要在每个节点对请求信息进行缓存。请求缓存在查询系统中有以下作用:
1.对查询请求进行去重。在非结构化网络中进行查询时,同一个节点可能收到一个或多个相同的查询请求。为避免同一个请求在网络中不停转发,应答节点仅对收到的第一个请求进行应答,其他相同的查询请求将被抛弃。为了对查询请求进行去重,查询系统需要通过缓存来维护一个请求的集合,通过请求唯一标识符来确定是否收到相同的请求。
2.对返回结果进行路由。查询结果需要沿查询请求转发路径原路返回到发起查询的节点。查询结果的路由需要除查询节点之外的每个节点维护每个请求的父节点,因此需要请求缓存来存储请求的父节点信息,当查询结果返回时,通过节点的父节点信息进行路由。
3.方便在查询节点处理查询结果。在查询节点广播查询请求后,来自不同节点的查询结果将并发地返回给查询节点,而查询节点仅向用户返回一次查询结果。为方便实现不同的返回策略,在查询节点内部需要对每一个查询请求维护查询请求的状态,请求缓存就是用来存储查询请求的状态的。
进一步的,所述请求缓存采用哈希链表结构,所述将所述查询请求消息加入请求缓存,包括:
依据所述查询请求消息构建为键值对;
依据所述查询请求消息的接收时间将所述键值对插入哈希链表。
查询系统中请求缓存机制面临的主要问题是如何利用单个节点有限的存储空间对全网数量庞大的请求进行存储。因此,查询缓存中的请求淘汰策略设计非常重要。幸运的是,请求缓存中的内容仅在查询的生命周期内是有用的,一旦查询节点对用户某个请求返回结果,全网节点中该请求缓存的信息可以被丢弃,这意味着全网范围内仅有较少量的未向用户返回结果的请求才需要在每个节点进行缓存,其他请求可以淘汰。
请求缓存机制中设计的另一个难点是如何确定请求淘汰的时机。一种方法是记录某次请求转发的所有子节点,并等待所有子节点返回结果,确定不再有返回结果需要路由后,淘汰该请求。这种方法最大的缺点在于由于请求去重机制的存在,子节点未必向该节点回复查询结果,导致无效的等待。
本实施例中请求缓存采用哈希链表结构,哈希链表与哈希表类似都是是由多个键值对<Key,Value>对组成的,不过哈希链表是将<Key,Value>对链接起来,每一个<Key,Value>节点都有一个前驱结点和后驱节点,就像双向链表中的节点一样。本申请基于哈希链表的有序性,将查询请求消息构建为键值对,并把<Key,Value>按照最后的使用时间来排列。
当缓存未满时,有新的查询请求消息时,按照接收时间顺序从链表右端插入,而链表长度已满(超过缓存),最左端的用户会删掉,通过合理设置缓存大小,可以保证每个节点的请求缓存中包含全网最近的未向用户返回结果的查询请求。因为,对于已经向用户返回结果的请求,可以认为在正常情况下节点并不会收到来自其他节点关于此请求的返回结果,根据缓存机制该请求的缓存不会被刷新,从而慢慢被淘汰。而真正需要缓存的最近的请求,则会由于收到用户返回结果而刷新,从而保证在缓存中。通过本申请的缓存机制实现被动淘汰,请求淘汰无需等待子节点回复。
所述查询请求消息可以来自于邻居节点或本地节点,在本申请的一个可选实施例中,在接收查询请求消息前,所述查询请求消息的生成方法为:
1、调用查询接口,输入指定信息,所述指定信息包括指定查询类型和查询元信息。
调用查询接口,用户指定待查询的信息如查询类型、查询元信息,准备发起查询。对于用户的查询,采用何种查询策略将极大的影响查询率和查询成功率。本实施例中,查询策略的第一步即是要求用户指定查询类型,对于不同的查询类型,针对性的采用查询方法。
本申请将区块链常见的查询分为多个查询用例,查询用例是指用户的查询需求,即用户需要查询何种信息,本申请的查询用例包括:块-哈希查询,根据块哈希在全网查询对应块、交易哈希-交易查询,根据交易哈希在全网查询对应交易、时间范围-块查询,根据用户指定时间范围在全网查询对应块、时间范围-交易查询,根据用户指定时间范围在全网查询对应交易、交易查询,根据块哈希和交易在块中的序号查询对应交易、最近查询,查询最近的n个区块;查询用例除了针对哈希和时间范围的精确查询外,还有相应的统计查询:对用户指定的时间范围,返回相应区块的数量。对用户指定的时间范围,返回相应交易的数量。
依据查询用例可以分析将查询划分为以下几种类型:查询方法类型、查询实体类型、查询条件类型、查询包含等级,查询方法类型用来区分是精确查询还是统计查询;查询实体类型用于区分是对交易的查询还是对区块的查询;查询条件类型用于区分条件,分为按时间范围查询和按哈希查询;查询包含等级用于指定结果中区块的交易返回等级,分为不返回交易、返回交易哈希和返回完整交易。
查询元信息是指用于查询的相关参数如块哈希、交易哈希、时间范围。
本实施例中指定信息除查询类型外还需要确定账本名称和查询条件,查询条件根据Type中的查询条件类型不同而有不同的设置。
指定查询类型和查询元信息后,检查用户输入,如检查里面的哈希是否符合长度要求、时间范围是否在合理范围、账本名称是否为空,避免执行不合法的查询请求。
2、根据所述查询类型和所述查询元信息,确定是否发起分布式查询及最终结果回调函数。
针对不同的类型,可采用不同的查询方法。其中,对利用查询类型的一个重要的方向就是判断是否需要转发请求。在查询中要尽可能利用本地存储信息,对于能在本地完成的查询避免发起分布式查询,以节约资源、提升查询效率,本申请认为对于以下查询类型,可以不通过分布式查询得到结果,包括:统计查询,由于存在全网同步的块头信息,并且每个块头都包含当前区块里面交易的计数,因此所有的统计查询可以通过块头的交易计数来实现。
此外,对于查询实体类型,可以块头信息进行判断本地是否存有完整区块和交易的哈希查询,如果有,也不必发起分布式查询,可以直接返回本地查询结果。
通过区分查询类型,实现对块头信息的利用,这样,能够减少发起分布式查询的次数,从而节约带宽。
对于不同的查询,得到结果后返回的数据是不同的,因此,本实施例中确定查询类型后,还将确定返回结果处理函数,对于返回结果处理函数设计,难点在于确定用户返回的策略。为兼顾效率和查询成功率,本申请采用了返回结果计数的模式来确定最终向用户返回的时机。其包括:
对于查询实体类型,当某个交易或区块返回数量超过阈值时,再向用户返回去重后的结果。对于时间范围内的查询,则通过统计块头对应哈希的区块数,当所有范围内的区块都超过阈值时再返回。
这样可以确保收到足够数量的返回结果,又可以及时向用户返回结果,降低查询的响应时间。
3、生成请求ID,依据所述指定信息及请求ID所述生成所述请求消息。
当确定需要发起分布式查询时,完成查询请求的初始化,通过网络层进行查询分发。
查询系统应满足任何一个节点均能作为查询的发起节点,这导致了来自用户的请求到达在网络中哪个节点是完全不可预先估计的而且是并发的。换言之,哪个节点将在查询系统中发起分布式查询也是不可预先估计的而且是并发的。出于提高查询系统的吞吐量、降低查询延迟目的,查询系统应能并发地处理来自不同节点的并发请求。为避免来自不同节点或者来自同一节点不同时间的两次请求之间在网络中或在节点内部互相干扰,查询系统需要对每一次请求进行区分,这就需要对每个请求在全网范围内进行唯一标识。同时,由于查询不能经过任何中心节点,中心化的分布式ID服务也不适用于本申请的场景,因此必须采用去中心化的分布式ID的生成方法,在每个节点接到查询请求时,基于本地信息为每个请求生成唯一标识。
该唯一标识方法需要具备以下特点:
1.全局唯一:只要是不同的两次请求,唯一标识方法应返回在全网范围内不同的标识;
2.去中心化:任何一个节点均提供生成唯一标识服务,且不存在任何中心节点。
进一步的,本申请的请求ID的生成方法为:
将本地节点的ID与本地自增序列号结合生成所述请求ID。
本申请查询请求消息的唯一标识方法(请求ID)的设计思路如下:
首先,必须区分来自不同节点的请求。本申请通过在请求的唯一标识符中加入节点ID,并让不同节点在生成ID时加入自己的节点唯一标识,进而区分不同节点的请求。而节点ID的生成可以通过采用PeerID的生成方法来完成。PeerID,其实质为节点公钥的密码学哈希,而编码形式上采用了自描述哈希(multihash)的方式。自描述哈希是指在数字摘要的内容之外加上哈希函数的特定标识符,从而达到不同的哈希方法共用同一套编码规范的效果。
然后,需要区分同一节点的两次不同请求。本申请通过本地维护的自增序列号来完成。查询初始化时,将随机生成一个64位整数作为序列号的初始值;当生成一个新的请求时,该序列号会自增一位,从而保证新的请求和旧的请求序列号不同。
唯一标识符设计如图2所示。唯一标识符由节点ID和序列号组成。节点ID为网络中每个节点的Peer ID,长度为34字节,由节点的点对点传输层提供,而序列号为64位整数,由每个节点在初始化查询系统时生成。
步骤S120、查询本地账本,判断能否在所述本地账本内命中满足所述查询请求消息的交易或区块。
根据本地账本进行查询,查看是否存在可以满足请求的交易或区块。
步骤S130、当未命中时,对邻居节点进行相似度排序,依据所述排序选择多个转发节点;
步骤S140、向所述多个转发节点转发所述查询请求消息。
当并未在本地查找到查询请求信息所要求的信息后,需要将查询请求信息转发至邻居节点进行查找。本申请并非选择任意节点进行消息的转发,而是确定出转发节点,只向转发节点转发查询请求消息。
本申请的转发节点包括K个最佳转发节点和随机R个节点。
K个最佳转发节点是根据邻居排序机制确定的,邻居排序机制将发起请求的节点的邻居进行排序,选取出得分最大的K个节点。在本申请的查询方法中,每个节点需要维护关于自己的邻居画像(peer profile),在转发时选择最佳的K个邻居进行转发。邻居的衡量指标可以从以下方面考虑:1)前一次查询拥有最多的返回结果数量;2)前一次查询返回结果有最短的响应时间;3)所有查询拥有最多的返回结果数量;4)所有查询返回结果有最短的响应时间;5)最短的查询处理队列;6)有最大的节点出度;7)有最大的查询相似度。
本申请可采用根据查询相似度进行排序的方法。本地节点通过维护一个节点-查询的列表来实现邻居画像的列表。这个列表中为每一个邻居存储了最近的由该邻居返回的查询,通过LRU(最近最少使用)策略进行淘汰,保证了这个列表不会随着查询增加而增加。当节点收到命中消息或返回结果消息时,将该查询信息插入返回节点的邻居画像维护的列表中。每个节点维护的邻居画像在空间上的复杂度仅为O(Td),d为节点平均出度,T为每个邻居列表的最大长度。本申请实施例的查询相似度排序,主要解决非结构化P2P网络中根据关键字搜索对应资源的问题。每个资源都会对应一个或多个的关键字。
当一个新的查询请求来临时,对每一个邻居都有对应的查询集合,接下来是如何比较根据查询集合和一个新来的请求计算相似度的问题了。首先,需要计算两个查询之间的相似度。查询可以表示为关键词的集合,因此一个查询可以表示为在关键词空间L上的一个分量为0或1的向量。如L={A,B,C,D},包含关键词A,B的查询可以表示为向量。接着,两个查询之间的相似度按cosine相似度来进行计算:
其中,Qsim表示[0,1]上的两个查询的相似度,x1,x2分别为另一个查询关键词向量。
在获取到两次查询之间的相似度后,可以计算邻居节点Pi对应的查询集合Qi和本次查询q之间的总的相似度了,采用下式来计算总的相似度:
其中,Psim(Pi,q)为邻居节点Pi对查询q的相似度,也是节点排序所参考的最终指标,表示仅取对查询q相似度最高的K个查询来计算节点对查询q的相似度,使每个节点比较时查询集合的基数相同。α为增益指数,用于增加最相似查询影响Psim的比重。当α非常大时,具有最相似查询的节点的Psim远远大于其他节点,Psim规约到1个最近邻居;当α=0时,Psim规约到所有邻居。合理选择α能权衡最相似查询和其他查询相似度之间的权重,从而使Psim更能反映真实的相似度情况。
获取每个邻居节点的Psim后,当前节点选择Psim最大的K个节点进行转发。
本申请还引入了随机扰动,在根据节点排序机制获取到K个最佳转发节点之外,还应选取在最佳转发节点集合之外的R个节点加入转发集合,使得查询请求的覆盖率更高,且让更多的节点更新自己的邻居画像。在实践中,R通常取1即可。
关键词排序选择邻居节点的方法,关键词和资源之间是多对多的关系,且关键词空间较小,这使得不同邻居节点的相似度能有较大差异。该方法过于依赖于关键词,而对于其他查询场景可能无法适用,例如,对于不存在关键词到区块或交易的映射的查询场景,本地账本的存储层仅能通过交易或区块的哈希或者时间范围对查询进行应答。或者,对于哈希类的查询而言,由于哈希函数具有防碰撞性,也就是难以找到两个相同的交易或区块使得它们的哈希值相同,因此,可以认为在账本中哈希和要查找的交易或区块是一一对应的。每次查询时,如果直接套用cosine相似函数,则仅有一个分量起作用,Psim不为0的概率等于两次查询哈希相等的概率。因此,将哈希作为关键词进行查询的方案也不可行。
在本申请的一个可选实施例中,使用账户地址向量来对邻居节点进行排序,所述本地节点内包含邻居画像集合,所述邻居节点画像集合包括每一个邻居节点对应的邻居节点画像,所述邻居节点画像包括一个或多个查询请求消息的地址向量表示,所述对邻居节点进行排序,按照所述排序选择多个转发节点,包括:
在所述本地账本内查询所述查询请求消息对应的块头;
基于所述块头计算所述查询请求消息的地址向量表示;
计算所述地址向量表示与所述邻居节点画像集合的相似度;
依据所述相似度,查找最相似的K个邻居节点;
选择所述K个邻居节点外的R个邻居节点,将所述K个邻居节点和所述R个邻居节点作为转发节点。
面向大数据存证场景,非全网共识区块链如BDLedger采用了独特的随机见证共识(nRW,n randomwitness),保证了交易吞吐量能够随节点数线性扩展以及达到了存证成本不随节点数增加的设计目标。
因此,除了哈希之外,可以通过块头的创建者账户地址和见证者账户地址来指导查询。针对账本区块存储的特点,通过账户地址的相似度来指导请求转发,相比随机广播转发,该方法具有较低的延迟和较高的查询成功率,同时能减少发送的消息量。并且,相比用哈希作为关键字的方案,使用账户地址作为指导查询的元信息的好处在于:
1.账户地址和节点唯一标识关联紧密。虽然账户地址并不等同于P2P层的节点唯一标识,不能直接用于路由,但是,同一个账户仅在少数且有限的节点上登录,可以通过分布式哈希表或本地配置文件等方式,实现从账户地址到节点唯一标识的映射。
2.全网账户地址数量有限。对于BDLedger的联盟链场景,节点加入存在准入机制,因此不会出现公链中一个用户可以任意创建多个账户的情况。与交易或区块哈希相比,全网账户地址数量较有限,以账户地址集合为度量的查询相似度在不同邻居节点上差异更大,能更好地指导请求转发。
本实施例中,当收到查询请求时,可以预先在本地存储层查出其对应的块头。通过本地的块头,可以得出一次查询所对应的基于账本地址的向量表示。假设全网账户地址共L个,则该向量维度为L,每个分量表示特定的账户地址在块头集合中出现的次数。示例的,本实施例的向量计算示意图如图3所示。在图3中,全网共有A,B,C,D四个账户地址,某次的查询请求q要求按时间范围查询查出H1,H2两个块头,H1的创建者为A,见证者为{B,C},H2的创建者为B,见证者为{C,D},则该次查询账户地址的计数为:{A:1,B:2,C:2,D:1},所对应的向量为(1,2,2,1)。
当节点收到新的请求q需要转发时,每个邻居节点排序指标为:
Psimi(q)=Qsim(Qi,q)
Qsim也采用cos相似函数,所有邻居节点按Psimi(q)排序,选择最大相似度的K个节点进行转发
最后,为防止查询请求仅在一小部分节点内转发,引入了随机扰动,在根据节点排序机制获取到K个最佳转发节点之外,还应选取在最佳转发节点集合之外的R个节点加入转发集合,使得查询请求的覆盖率更高,且让更多的节点更新自己的邻居画像。在实践中,R通常取1即可。
步骤S150、当命中时,获取返回结果,向所有邻居节点发送命中信息;
如果命中(查询到满足请求的交易或区块),获取返回结果并向所有邻居节点发送命中信息。
步骤S160、检查自身是否为所述查询请求消息的发起节点。
步骤S170、当自身是所述查询请求消息的发起节点时,则返回查询请求结果;
步骤S180、当自身不是所述查询请求消息的发起节点时,则向所述查询请求消息的发起节点转发所述返回结果。
如果命中到查询到满足请求的交易或区块,检查自己是不是发送查询请求消息的节点,如果是,返回查询请求结果,如果不是,则向发送查询请求消息的节点转发所述返回结果。
对于邻居节点的画像,可以看出其是通过记录邻居对已有问题的响应生成得到的。也就是说,通过记录邻居节点的已有的查询请求的返回消息可以对邻居节点进行画像,得到邻居节点的邻居画像。
在本申请的查询方法中,由于命中消息和返回结果消息都是对于查询的结果返回消息,因此每当收到命中消息和返回结果消息时,都需要更新邻居画像,每个邻居节点的邻居画像仅需要维护一个账户地址的查询向量Qi即可。
在本申请一个实施例中还介绍邻居画像的维护方法,本申请在接收到来自邻居节点的命中消息时,采用以下步骤:
接收邻居节点的命中消息;
根据命中消息,更新发送所述命中消息的邻居节点对应的邻居节点画像。
每当收到命中消息更新转发该消息的邻居对应的排序体。首先,通过查询本地块头来获取查询向量qi,然后按向量加法将qi加入Qi。
进一步的,本申请在接收到来自邻居节点的返回结果消息时,采用以下步骤:
接收邻居节点的返回结果消息;
等待收到来自邻居节点的返回结果消息。
根据所述返回结果消息,更新发送所述返回结果消息的邻居节点对应的邻居节点画像;
每当收到返回结果消息时,根据返回结果,更新邻居排序机制中的转发该消息的邻居对应的排序体。
从所述请求缓存中查询所述返回结果消息对应的缓存体,从所述缓存体查找来源节点ID。
根据请求缓存机制,查出该返回结果消息对应的查询请求消息的缓存体,如根据返回结果消息对应的请求ID查找对应的缓存体。
从缓存体中找出当时转发该查询请求消息的邻居节点(查询请求消息的来源节点)的ID。
判断所述来源节点ID是否为自身的ID;
当所述来源节点ID为自身的ID时,则依据所述返回结果消息返回查询结果;
当所述来源节点ID不为自身的ID时,则向来源节点ID对应的邻居节点转发所述返回结果。
如果当时转发的邻居节点ID为自身,则调用最终结果回调函数,返回查询结果;否,则向当时转发的邻居节点转发该返回结果。
邻居管理协议(membership protocol)是一个在动态网络每个节点上初始化和维护邻居集合的协议。所谓邻居集合,是指在网络中每个节点在本地维护的节点标识集合,包括这些节点的IP地址和端口号。本地节点能够通过IP地址和端口与邻居集合中的节点建立直接的连接。
本申请还设计了一种主题邻居管理协议,其是一个在周围节点发现(ambientpeerdiscovery)机制基础上实现的邻居管理协议,它能在由实际链接组成的覆盖网络上按不同主题构建多个覆盖网络,示意图如图4所示。
所谓周围节点发现,是指本申请的邻居管理协议并不提供主动的邻居节点发现能力,而是借助其他节点发现机制,建立连接后,通过点对点传输层提供的连接变化的通知接口,再完成邻居管理协议本身的节点发现过程。因此,基于周围节点发现的邻居管理协议,能够与多种主动节点发现机制相结合,完成节点发现的过程。
本申请的主题邻居管理协议在查询系统的作用是:它能通过回调的方式,为查询系统的其他模块提供了邻居节点变动的信息,从而使得查询系统具备感知周围网络连接情况的能力,动态调整邻居节点集合。同时,不同主题下的邻居节点集合可以各不相同,这为查询系统支持多账本下的查询提供了网络层的支持。
在本申请的一个实施例中,所述方法还包括:在执行所述查询方法前,还使用邻居管理协议对邻居节点进行发现。主题邻居管理协议的算法设计如下所示:
1、初始化本地节点,将已加入主题集合和主题邻居节点集合置为空集,所述已加入主题集合包含本地节点已加入的主题,所述主题邻居节点集合包含有多个主题及各主题下的邻居节点;
网络中的每个节点分别维护自己已加入的主题集合joinedTopics和不同主题下的邻居节点集合topicPeers。topicPeers为主题到邻居集合的映射,用来维护周围节点所加入的主题网络信息,因此,即使本地节点并没有加入一个特定主题,在topicPeers中依然需要维护该主题下的节点信息。
本地节点初始化时,将joinedTopics和topicPeers两者置为空集。
2、加入第一主题时,将向所述已加入主题集合加入所述第一主题,向邻居节点发送第一加入消息。
第一主题并非一个特定主题,而是指任意主题,当本地节点加入一个主题时,本地节点将向joinedTopics加入该主题,并向周围已连接的节点发送JOIN消息。
由于本申请的本地节点与周围节点是一个相对概念,二者可以相互转换,为了澄清主体,在邻居管理协议中都从本地节点进行的描述,但是二者执行的是同样的邻居节点管理协议。
本地节点发送JOIN消息后远程节点会收到JOIN消息,相对的,当远程节点加入特定主题时,也会向包括本地节点在内的节点发送JOIN消息,为了便于区分本申请将远程节点发送的送JOIN消息称为第二JOIN消息,将本地节点发送的送JOIN消息称为第一JOIN消息。
所述方法还包括,对于加入消息的处理:
接收第二加入消息,确定所述第二加入消息的主题,在主题邻居节点集合中的相同主题下加入所述第二加入消息的发送节点,其中,所述第二加入消息由邻居节点加入任意主题时发送;
判断所述第二加入消息的主题是否在已加入的主题中;
当第二加入消息的主题在已加入的主题中时,则通知上层应用该主题下有新的节点加入,并向所述第二加入消息的发送节点发送第二回复消息。
接收到JOIN消息后,将发JOIN消息的节点加入topicPeers中该主题的邻居集合中。并,判断该主题是否在已加入的主题中,如果已加入,则通过notify函数通知上层应用,表示在该主题下有新的节点加入。接着,远程节点向发消息的节点发送JOIN_REPLY消息。JOIN_REPLY消息将帮助本地节点获取其周围节点的主题加入情况。
3、接收所述第一加入消息的第一回复消息,在所述主题邻居节点集合中的第一主题下加入第一回复消息的发送节点;
通知上层应用有新节点加入。
本地节点收到JOIN_REPLY消息后,将发送节点加入自己的在该主题下的topicPeers中,并通知上层应用有新节点加入。如此,在远程节点已经加入主题的前提下,本地节点和远程节点的上层应用都能收到节点加入的通知。
节点退出的情况则和加入时略有不同。首先,节点退出时,已经维护了当前主题下已加入的邻居节点集合,因此,不需要像加入时向所有邻接节点发送消息,仅需要像已加入的邻居节点集合发送LEAVE消息;其次,本地节点在发送LEAVE消息时即可向上层通知,无须等待远程节点返回回复消息。这是因为一旦调用leave方法后,本地节点就不应该对该主题下的邻居节点进行通信,尽早通知有助于让上层应用尽早结束通信,从而减少和底层的邻居集合不一致的时间。
当邻居节点因网络原因意外退出时,将通过点对点传输层的通知能力,通过回调方式调用handlePeerDown方法,将从topicPeers中的所有集合中删除该节点。如果该节点之前加入过属于本地节点joinedTopics的主题,则通知上层应用。这样,保证了主题邻居管理协议能够处理节点意外退出的情况。
最后,主题邻居管理协议提供了neighbors方法,用来获取某个主题下的所有邻居,不过neighbors方法也可以通过对邻居加入退出的事件进行处理来实现。
在本申请一个实施例中,以上查询方法在节点采用分层的方法形成查询系统,其如图5所示,以上查询方法在查询系统可分为服务层和网络层两层。服务层主要由各个账本的查询用例构成,它通过本地账本存储层和网络层提供的功能实现了账本的所有查询接口,包括哈希查询、时间范围查询、统计查询。而网络层则由一系列模块构成,为服务层提供了与业务无关的广播-回收模式的接口。网络层可以替换成不同的查询策略,从而实现了查询路由策略与具体查询业务逻辑相分离的设计效果。点对点传输层为查询系统的底层依赖,不属于查询系统,但为查询系统提供了连接管理、网络启动、协议管理、流多路复用等重要基础能力。
服务层负责:1.用户请求参数的校验。服务层通过gRPC API收到用户请求后,将检查用户请求里面的哈希是否符合长度要求、时间范围是否在合理范围、账本名称是否为空,避免执行不合法的查询请求。
2.分布式查询请求的初始化和处理。收到用户请求后,服务层将根据查询类型决定是否发起分布式查询。发起分布式查询时,将由服务层完成查询请求的初始化,通过网络层进行查询分发。当网络层通知服务层收到查询请求时,将由服务层完成具体查询逻辑,并将结果返回。
3.返回结果的校验和去重。当网络层通知服务层收到返回结果时,将由服务层完成对返回结果的校验,以确保返回结果的正确性。对于重复结果,服务层将进行去重。
网络层负责:1.维护基于主题的覆盖网络。覆盖网络是P2P网络的基础,维护覆盖网络实质上是在维护邻居列表。网络层实现了基于主题的邻居管理协议,使得具体查询策略能够获得某个主题下的邻居节点列表,从而为查询系统支持多账本下的查询提供基础。
2.查询请求的标识。在分布式账本中的任何节点均可发起查询,如何合理地在全网标识唯一的查询请求成为亟待解决的问题。网络层通过节点ID和自增序列号解决了这个问题。
3.查询请求在网络中的转发和去重。网络层负责将服务层的查询请求通过类似Int-BFS方法转发到全网的大部分节点中。部分节点可能收到重复请求,并由网络层负责对这些请求进行去重。4.请求信息的缓存。为完成查询结果的回收,网络层负责缓存请求信息,帮助查询结果通过原路返回。5.通知上层对查询请求、返回结果进行处理。网络层负责通过回调的方式在收到查询请求和收到返回结果的时候将具体查询请求和返回结果交给服务层进行处理。
此外,对于查询系统中消息的传递使用现有的点对点传输层,点对点传输层负责:1.提供基于协议的流多路复用能力。查询系统能通过P2P通信层提供的协议ID,将查询系统的通信信息与账本中其他模块的通信信息进行区分。而实际上,这些信息都是通过同一条实际链接进行传输的。
2.提供连接连通和断开的通知。P2P通信层能及时通知查询系统底层连接的开闭变化状况,方便查询系统及时维护覆盖网络。
查询系统采用分层架构,由主题邻居管理协议、请求生成机制、请求缓存机制、查询机制和节点排序机制等多个模块组成,实现了分布式查询策略与账本业务逻辑解耦的效果,结构清晰,具有较好的代码可维护性。
基于同一发明构思,本申请另一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的非全网共识区块链下的查询方法。
基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的非全网共识区块链下的查询方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种非全网共识区块链下的查询方法、设备及存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种非全网共识区块链下的查询方法,其特征在于,所述非全网共识区块链包括本地节点和邻居节点,所述方法应用于本地节点,所述方法包括:
接收查询请求消息,将所述查询请求消息加入请求缓存,存储发送所述查询请求消息的节点的ID;
查询本地账本,判断能否在所述本地账本内命中满足所述查询请求消息的交易或区块;
当未命中时,对邻居节点进行相似度排序,依据所述排序选择多个转发节点;
向所述多个转发节点转发所述查询请求消息;
当命中时,获取返回结果,向所有邻居节点发送命中信息;
检查自身是否为所述查询请求消息的发起节点;
当自身是所述查询请求消息的发起节点时,则返回查询请求结果;
当自身不是所述查询请求消息的发起节点时,则向所述查询请求消息的发起节点转发所述返回结果;
所述本地节点内包含邻居画像集合,所述邻居节点画像集合包括每一个邻居节点对应的邻居节点画像,所述邻居节点画像包括一个或多个查询请求消息的地址向量表示,所述对邻居节点进行排序,按照所述排序选择多个转发节点,包括:
在所述本地账本内查询所述查询请求消息对应的块头;
基于所述块头计算所述查询请求消息的地址向量表示;
计算所述地址向量表示与所述邻居节点画像集合的相似度;
依据所述相似度,查找最相似的K个邻居节点;
选择所述K个邻居节点外的R个邻居节点,将所述K个邻居节点和所述R个邻居节点作为转发节点。
2.根据权利要求1所述方法,其特征在于,所述请求缓存采用哈希链表结构,所述将所述查询请求消息加入请求缓存,包括:
依据所述查询请求消息构建为键值对;
依据所述查询请求消息的接收时间将所述键值对插入哈希链表。
3.根据权利要求1所述方法,其特征在于,所述方法还包括:
调用查询接口,输入指定信息,所述指定信息包括指定查询类型和查询元信息;
根据所述查询类型和所述查询元信息,确定是否发起分布式查询及最终结果回调函数;
生成请求ID,依据所述指定信息及请求ID所述生成所述请求消息。
4.根据权利要求3所述方法,其特征在于,所述生成请求ID,包括:
将本地节点的ID与本地自增序列号结合,生成所述请求ID。
5.根据权利要求1所述方法,其特征在于,所述方法还包括:
接收邻居节点的命中消息;
根据命中消息,更新发送所述命中消息的邻居节点对应的邻居节点画像。
6.根据权利要求1所述方法,其特征在于,所述方法还包括:
接收邻居节点的返回结果消息;
根据所述返回结果消息,更新发送所述返回结果消息的邻居节点对应的邻居节点画像;
从所述请求缓存中查询所述返回结果消息对应的缓存体,从所述缓存体查找来源节点ID;
判断所述来源节点ID是否为自身的ID;
当所述来源节点ID为自身的ID时,则依据所述返回结果消息返回查询结果;
当所述来源节点ID不为自身的ID时,则向来源节点ID对应的邻居节点转发所述返回结果。
7.根据权利要求1所述方法,其特征在于,所述方法还包括:
初始化本地节点,将已加入主题集合和主题邻居节点集合置为空集,所述已加入主题集合包含本地节点已加入的主题,所述主题邻居节点集合包含有多个主题及各主题下的邻居节点;
加入第一主题时,将向所述已加入主题集合加入所述第一主题,向邻居节点发送第一加入消息;
接收所述第一加入消息的第一回复消息,在所述主题邻居节点集合中的第一主题下加入第一回复消息的发送节点;
通知上层应用有新节点加入;
所述方法还包括:
接收第二加入消息,确定所述第二加入消息的主题,在主题邻居节点集合中的相同主题下加入所述第二加入消息的发送节点,其中,所述第二加入消息由邻居节点加入任意主题时发送;
判断所述第二加入消息的主题是否在已加入的主题中;
当第二加入消息的主题在已加入的主题中时,则通知上层应用该主题下有新的节点加入,并向所述第二加入消息的发送节点发送第二回复消息。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1至7任一所述的方法中的步骤。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至7任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205486.9A CN113901144B (zh) | 2021-10-15 | 2021-10-15 | 非全网共识区块链下的查询方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205486.9A CN113901144B (zh) | 2021-10-15 | 2021-10-15 | 非全网共识区块链下的查询方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113901144A CN113901144A (zh) | 2022-01-07 |
CN113901144B true CN113901144B (zh) | 2024-02-06 |
Family
ID=79192435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111205486.9A Active CN113901144B (zh) | 2021-10-15 | 2021-10-15 | 非全网共识区块链下的查询方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113901144B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114625751A (zh) * | 2022-02-25 | 2022-06-14 | 清华大学 | 基于区块链的数据溯源查询方法及装置 |
CN117714465B (zh) * | 2024-01-23 | 2024-09-17 | 深圳市欢乐互动网络有限公司 | 通信网络节点的动态构建方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626336A (zh) * | 2008-07-09 | 2010-01-13 | 同济大学 | 一种利用信任机制提高p2p覆盖网络交互性能的方法 |
CN104734962A (zh) * | 2015-02-26 | 2015-06-24 | 北京交通大学 | 一种非结构化p2p网络的资源搜索方法 |
CN107491519A (zh) * | 2017-08-15 | 2017-12-19 | 中国联合网络通信集团有限公司 | 区块链账本的查询方法及装置 |
CN108769146A (zh) * | 2018-05-11 | 2018-11-06 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置及区块链系统 |
CN108777710A (zh) * | 2018-05-31 | 2018-11-09 | 中国联合网络通信集团有限公司 | 区块链节点间通信方法、装置及区块链节点 |
CN108876611A (zh) * | 2018-05-31 | 2018-11-23 | 中国联合网络通信集团有限公司 | 交易信息处理方法、装置及区块链节点 |
CN109118220A (zh) * | 2018-08-03 | 2019-01-01 | 上海点融信息科技有限责任公司 | 在分布式网络中用于处理事务的方法、装置及存储介质 |
CN111159769A (zh) * | 2019-12-31 | 2020-05-15 | 杭州产链数字科技有限公司 | 一种基于区块链的建筑工程造价监管系统及方法 |
CN111538757A (zh) * | 2020-04-13 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 数据存储方法、查询方法、装置、服务器及介质 |
CN112184066A (zh) * | 2020-10-27 | 2021-01-05 | 广州粤建三和软件股份有限公司 | 用于建设工程质量检测监管的区块链系统 |
CN112688728A (zh) * | 2020-12-17 | 2021-04-20 | 西安电子科技大学 | 一种星间认证方法、系统、介质、设备、终端及应用 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101781583B1 (ko) * | 2016-08-31 | 2017-09-27 | 서강대학교산학협력단 | 블록체인을 기반으로 한 파일 관리/검색 시스템 및 파일 관리/검색 방법 |
-
2021
- 2021-10-15 CN CN202111205486.9A patent/CN113901144B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626336A (zh) * | 2008-07-09 | 2010-01-13 | 同济大学 | 一种利用信任机制提高p2p覆盖网络交互性能的方法 |
CN104734962A (zh) * | 2015-02-26 | 2015-06-24 | 北京交通大学 | 一种非结构化p2p网络的资源搜索方法 |
CN107491519A (zh) * | 2017-08-15 | 2017-12-19 | 中国联合网络通信集团有限公司 | 区块链账本的查询方法及装置 |
CN108769146A (zh) * | 2018-05-11 | 2018-11-06 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置及区块链系统 |
CN108777710A (zh) * | 2018-05-31 | 2018-11-09 | 中国联合网络通信集团有限公司 | 区块链节点间通信方法、装置及区块链节点 |
CN108876611A (zh) * | 2018-05-31 | 2018-11-23 | 中国联合网络通信集团有限公司 | 交易信息处理方法、装置及区块链节点 |
CN109118220A (zh) * | 2018-08-03 | 2019-01-01 | 上海点融信息科技有限责任公司 | 在分布式网络中用于处理事务的方法、装置及存储介质 |
CN111159769A (zh) * | 2019-12-31 | 2020-05-15 | 杭州产链数字科技有限公司 | 一种基于区块链的建筑工程造价监管系统及方法 |
CN111538757A (zh) * | 2020-04-13 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 数据存储方法、查询方法、装置、服务器及介质 |
CN112184066A (zh) * | 2020-10-27 | 2021-01-05 | 广州粤建三和软件股份有限公司 | 用于建设工程质量检测监管的区块链系统 |
CN112688728A (zh) * | 2020-12-17 | 2021-04-20 | 西安电子科技大学 | 一种星间认证方法、系统、介质、设备、终端及应用 |
Non-Patent Citations (2)
Title |
---|
Accelerating Transactions Relay in Blockchain Networks via Reputation;Mengqian Zhang 等;《2021 IEEE/ACM 29th International Symposium on Quality of Service (IWQOS)》;1-10 * |
考虑信任度和权值的区块链数据通信性能优化研究;李皎;《中国博士学位论文全文数据库经济与管理科学辑》(第1期);J155-3 * |
Also Published As
Publication number | Publication date |
---|---|
CN113901144A (zh) | 2022-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Scalable name-based data synchronization for named data networking | |
US10990609B2 (en) | Data replication framework | |
US11018980B2 (en) | Data-interoperability-oriented trusted processing method and system | |
US9268835B2 (en) | Data replication framework | |
Aspnes et al. | Skip graphs | |
CN113901144B (zh) | 非全网共识区块链下的查询方法、设备及存储介质 | |
US7177867B2 (en) | Method and apparatus for providing scalable resource discovery | |
CN110866046B (zh) | 一种可扩展的分布式查询方法及装置 | |
US10198492B1 (en) | Data replication framework | |
Li et al. | A semantics-based routing scheme for grid resource discovery | |
Trifa et al. | A novel replication technique to attenuate churn effects | |
Zhang et al. | Partialsync: Efficient synchronization of a partial namespace in ndn | |
CN113934933B (zh) | 低延迟的消息转发方法、设备及存储介质 | |
Marandi et al. | A comparative analysis of bloom filter-based routing protocols for information-centric networks | |
Li et al. | Ontsum: A semantic query routing scheme in p2p networks based on concise ontology indexing | |
Watanabe et al. | CBF: Look-up protocol for distributed multimedia objects in peer-to-peer overlay networks | |
US20170004196A1 (en) | Data replication framework | |
JP2009272802A (ja) | P2p通信方法 | |
Chen et al. | Self-learning routing in unstructured P2P network | |
Al-Lahham et al. | Scalable self-organizing structured P2P information retrieval model based on equivalence classes. | |
Lu et al. | Panache: A scalable distributed index for keyword search | |
Ryeng et al. | Robust aggregation in peer-to-peer database systems | |
Kojima | Self-organization approach of communities for P2P networks | |
Takahashi et al. | An efficient index dissemination in unstructured peer-to-peer networks | |
Chen et al. | SOBIE: A Novel Super-node P2P Overlay Based on Information Exchange. |
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 |