CN112702390B - 基于区块链的智能合约资源的组网方法和装置 - Google Patents
基于区块链的智能合约资源的组网方法和装置 Download PDFInfo
- Publication number
- CN112702390B CN112702390B CN202011420659.4A CN202011420659A CN112702390B CN 112702390 B CN112702390 B CN 112702390B CN 202011420659 A CN202011420659 A CN 202011420659A CN 112702390 B CN112702390 B CN 112702390B
- Authority
- CN
- China
- Prior art keywords
- node
- location
- nodes
- resource
- attribute
- 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
Images
Classifications
-
- 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
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例涉及一种基于区块链的智能合约资源的组网方法和装置,涉及互联网技术领域,包括:计算所有资源的属性组和所有节点的空间属性LocationID,新节点委托引导节点发起对新节点的LocationID的搜索,引导节点利用节点之间关联的拓扑结构不断学习并查询最佳节点,最终收敛得到最近的临近节点,新节点与最近的节点相互存储LocationID,所有节点加入完毕后,新资源利用启动节点通过节点之间关联的拓扑结构收敛到目标节点上,将资源存储在目标节点上。本申请将资源和节点基于空间位置进行组网,并在组网过程中定义资源的类别、可用状态等属性,利用此种组网方法能够使存储在区块链中的智能合约资源在能够实现基于时间、位置属性搜索的同时实现模糊搜索。
Description
技术领域
本申请实施例涉及互联网技术领域,具体而言,涉及一种基于区块链的智能合约资源的组网方法和装置。
背景技术
智能合约,是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。在区块链中用户可以通过智能合约来实现去中心化的对于服务资源的使用,例如北京大学高可信软件技术教育部重点实验室的“云-端融合系统的资源反射机制及高效互操作技术”项目中包含了通过智能合约控制智能家居设备的可行性的验证。这里的智能家居设备包括智能空气净化器、智能电热水壶、智能空调、智能咖啡机等。对于用户而言,对于资源的成功使用唯一需要的前提就是搜索到控制相应服务资源的智能合约,当用户获取了相应合约的服务接口,就能访问到正在运行的智能合约,并实现对于资源的使用与控制。
区块链是一种去中心的分布式系统架构,为了保证可信,提供资源服务的智能合约分散在区块链的计算节点上运行。采用传统的区块链组网方式,由于中心索引机制的缺乏,使得智能合约很难被搜索和访问,这给资源查找带来了很大困难。另一方面,由于智能合约去中心化的特点,资源的时空属性无法直接得到整体的全局查询。并且,传统的组网方式往往关注于对指定资源的查找,但是对于智能合约资源来说,用户只知道自己所需资源的类型,并不知道自己所需资源的所有公司(个人)、地理位置、具体资源的ID,无法实现对于资源的模糊查找。关注于时空属性的智能合约资源查找需求无法直接应用现有的区块链的组网方式。
发明内容
本申请实施例提供一种基于区块链的智能合约资源的组网方法和装置,旨在现有区块链的组网方法不能够实现对智能合约资源时间、空间属性的检索和模糊检索。
本申请实施例第一方面提供一种基于区块链的智能合约资源的组网方法,所述区块链包括至少一个节点和至少一个资源,所述方法包括:
预先计算所有资源的属性组和所有节点的空间属性Location ID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性Location ID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号;
新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点;
所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到所述启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队;
迭代的,从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的Location ID,将选择出的Location ID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,直到找寻到区块链网络中最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离;
让所述距离所述新节点最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导;
等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID;
先在所述启动节点处用所述新资源的空间属性Location ID进行查找,得到第二节点查找结果,在所述第二节点查找结果中找到所述启动节点自身路由表中距离所述新资源最近的前k个节点,将所述前k个节点的Location ID入第二节点队;
迭代的,从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的Location ID,将选择出的Location ID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离;
在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组;
其中,计算空间属性Location ID的步骤包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
可选地,所述预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、查找节点消息、查找资源消息、占用消息、解除占用消息;
构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数。
可选的,预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
可选的,搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,最近距离计算包括以下步骤:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个LocationID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
可选的,所述设置系统范围复制参数k的值,设置请求并发数alpha的值,设置Location ID的长度位数,包括:
设置系统范围复制参数k的值为20,设置请求并发数的值为3,设置Location ID的长度位数为64位。
本申请实施例第二方面提供一种基于区块链的智能合约资源的组网装置,所述区块链包括至少一个节点和至少一个资源,所述装置包括:
存储模块,用于预先计算所有资源的属性组和所有节点的空间属性Location ID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性Location ID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号;
委托模块,用于新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点;
第一节点查找模块,用于所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到所述启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队;
第一迭代模块,用于迭代的,从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的Location ID,将选择出的Location ID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,直到找寻到区块链网络中最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离;
新节点引导模块,用于让所述距离所述新节点最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导;
分配模块,用于等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID;
第二节点查找模块,用于先在所述启动节点处用所述新资源的空间属性LocationID进行查找,得到第二节点查找结果,在所述第二节点查找结果中找到所述启动节点自身路由表中距离所述新资源最近的前k个节点,将所述前k个节点的Location ID入第二节点队;
第二迭代模块,用于迭代的,从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的Location ID,将选择出的Location ID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离;
新资源引导模块,用于在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组
其中,空间属性Location ID由Location ID计算模块得到,所述Location ID计算模块包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
可选地,所述存储模块预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
资源和节点计算子模块,用于预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
消息类型定义子模块,用于定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、FIND_NODE查找节点消息、查找资源消息、占用消息、解除占用消息;
类事件构造模块,用于构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
参数设置子模块,用于设置系统范围复制参数k的值,设置请求并发数的值,设置的长度位数。
可选的,所述存储模块的预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
可选的,还包括:最近距离计算模块
搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,所述最近距离计算模块包括:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个LocationID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
可选的,所述参数设置子模块设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数,包括:
设置系统范围复制参数k的值为20,设置请求并发数的值为3,设置Location ID的长度位数为64位。
采用本申请提供的基于区块链的智能合约资源的组网方法和装置,计算所有资源的属性组和所有节点的空间属性Location ID,新节点委托引导节点发起对新节点的Location ID的搜索,引导节点利用节点之间关联的拓扑结构不断学习并查询最佳节点,最终收敛得到最近的临近节点,新节点与最近的节点相互存储Location ID,所有节点加入完毕后,新资源利用启动节点来加入区块链,启动节点通过节点之间关联的拓扑结构不断学习并查询最佳节点,获得了越来越接近的节点,最终收敛到目标节点上,将资源存储在目标节点上。本申请将资源和节点基于空间位置进行组网,并在组网过程中定义资源的类别、可用状态等属性,利用此种组网方法能够使存储在区块链中的智能合约资源在能够实现基于时间、位置属性搜索的同时实现模糊搜索。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的基于区块链的智能合约资源的组网方法的流程图;
图2是本申请一实施例提出的基于区块链的智能合约资源的组网装置的示意图;
图3是本申请一实施例提出的Bucket与Location ID之间的关系图;
图4是本申请一实施例提出的并发请求数为100正确性示意图;
图5是本申请一实施例提出的搜索结果正确率与并发搜索数、备份数之间的关系图;
图6是本申请一实施例提出的时间性能数据示意图;
图7是本申请一实施例提出的带宽bandwidth=5时的时间性能对比图;
图8是本申请一实施例提出的带宽bandwidth=10时的时间性能对比图;
图9是本申请一实施例提出的带宽bandwidth=20时的时间性能对比图;
图10是本申请一实施例提出的带宽bandwidth=inf时的时间性能对比图;
图11是本申请一实施例提出的节点个数变化数据示意图;
图12是本申请一实施例提出的平均搜索时间(Time)随节点个数指数增长的变化示意图;
图13是本申请一实施例提出的平均路由记录数(Contact)随节点个数指数增长的变化示意图;
图14是本申请一实施例提出的平均搜索精度范围(Contact)的自然对数随节点个数指数增长的变化示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,图1是本申请一实施例提出的基于区块链的智能合约资源的组网方法的流程图。如图1所示,该方法包括以下步骤:
步骤S100、预先计算所有资源的属性组和所有节点的空间属性Location ID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性Location ID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号。
资源属性组包括:资源的空间属性Location ID、资源的时间属性AvailabilityCode、资源的类别属性Name Code、资源的部署IP地址和相应端口号。
资源和节点的空间属性Location ID都由其自身的空间坐标转换而来,空间坐标应至少包括:经度、纬度。
其中,空间属性Location ID的计算步骤包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
资源或者节点的实际地理位置可以采用一对经纬度坐标来描述,经度在前,范围是[-180,180]代表从西经180度到东经180度。纬度在后,范围是[-90,90]代表纬度是从南纬90度到北纬90度。例如北京大学图书馆(百度地图)的经纬度坐标为(116.316801,39.997899),将北京大学图书馆的这组经纬度坐标和预设的ID长度输入,将纬度区间[-90,90]进行二分为[-90,0),[0,90],称为左右区间,可以确定39.997899属于右区间[0,90],给标记为1;接着将区间[0,90]进行二分为[0,45),[45,90],可以确定39.997899属于左区间[0,45),给标记为0;递归上述过程39.92324总是属于某个区间[a,b]。随着每次迭代区间[a,b]总在缩小,并越来越逼近39.997899;如果给定的纬度(39.997899)属于左区间,则记录0,如果属于右区间则记录1,这样随着算法的进行会产生一个序列10111000 1110001011001010 01100101,序列的长度跟给定的区间划分次数有关。同理,经度区间是[-180,180],对经度116.316801进行二分编码。
通过上述计算,纬度产生的编码为10111000 11100010 11001010 01100101,经度产生的编码为11010010 10110110 11010011 11010001。偶数位放经度,奇数位放纬度,把2串编码组合生成新串:11100111 01001000 11011110 00101100 11110010 0100111010110110 00010011,将上面的二进制串转换为十进制整数形式为16665814705709692435,输出为一组经纬度坐标,例如经纬度坐标(116.316801,39.997899)。
在一般的区块链协议中,路由常选用节点的IP地址做SHA1哈希来生成160位的节点ID,其目的主要有二:
(1)唯一性:生成的节点ID是唯一的,不同的节点对应不同的IP地址,因此也就对应不同的节点ID值。
(2)单向性:通过IP地址可以很容易得到Hash值,但仅通过Hash值计算出节点的IP地址是困难的。这一特性可以在一定程度上实现对节点的IP保护。
本申请使用节点/资源的空间经纬坐标生成节点的Location ID作为节点的唯一标识,除了保留了以上两个特征外,本申请设计的搜索框架下路由表Location ID的计算还具有以下特性:
(3)Location ID近似唯一性:生成的节点Location ID是近似唯一的,不同的节点对应不同的虚拟空间位置(经纬度坐标),因此也就对应不同的节点Location ID值。在实现上也许起始的节点具有非常相近的虚拟坐标,但我们通过增大这个Location ID的长度位数(64位),经计算可以让空间面积上精确到约4e-6平方米的数量级,线度误差精确到1e-3米的数量级。也就是说除非两个节点的虚拟空间位置近到这个数量级以下,它们不能拥有相同的Location ID,在具体测试中我们发现这是几乎不可能的情况,因此节点的Location具有近似唯一性。
(4)Location ID与IP地址匿名化:IP地址作为节点ID的优势是利用SHA1哈希的单向性保护了节点的IP地址。而在我们的框架中,由于Location ID与IP地址脱钩,两者双向均无关联,可以说回避了IP的安全问题。
(5)Location ID与虚拟空间位置的双向可推性:每个节点的Location ID与其来源节点虚拟位置经纬度坐标是双向可计算的。可以由经纬度坐标计算出Location ID,也可逆向地由Location ID计算出原虚拟经纬度坐标。
(6)Location ID间距离的可计算性:与SHA1哈希或者别的散列方法不同,因为我们利用二分法将经纬度的二维坐标变成一个可排序、可比较的的字符串编码,相近的虚拟位置坐标可以得到相近但不同的Location ID。对两个Location ID做按位异或计算可以得到有计算意义的距离值。在大多数情况下,有较小的距离值的Location ID对所对应的位置坐标之间的实际空间距离也会较小。
资源的时间属性,表示当前资源在当前是否可用,资源的时间属性在实现上由一个bit来表示。1表示当前资源由于被占用/故障/维修等原因不能使用,0表示当前资源可用,本申请将时间属性Availability Code保存为8bit的二进制数。
资源的类别属性Name Code表示资源的类型,在实现上本申请假定资源的类型(例如共享打印机、共享咖啡机等等)总数不超过256种,因此我们使用一个8bit的二进制数来表示,本申请将这个8bit的二进制数称为Name Code。
对于资源的IP和用于交互的端口,由于合法的IP地址自身具有一定的规则,本申请使用一个长度为16的字符串来表述,端口号用一个INT(16)来存放。
一个原始资源自身的属性可以用一个<Location ID,Availability Code,NameCode,IP address,UDP port>的属性五元组来表述。
步骤S110、新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点。
在区块链中新节点需要通知其他节点自己的加入并记录自己周围的节点,由于新节点并未记录到其他节点的路由,因此,新的节点首先找到记录在存储在记录的默认通信节点,默认通信节点是已经存在区块链网络中的节点,将其作为自己的引导节点,通过引导节点来寻找自己周围的节点,并将自己的Location ID发送给其他节点。显然,在本申请实施例中,当区块链中还未记录节点时,第一个节点应当设置为之后节点记录的默认通信节点。
新节点委托引导节点进行搜索,搜索区块链中已经存在的与新节点距离最近的周围节点。
步骤S120、所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到所述启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队。
步骤S121、迭代的,从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的LocationID,将选择出的Location ID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,直到找寻到区块链网络中最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离。
步骤S122、让所述最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导。
引导节点接收到新节点的空间属性Location ID后,利用这个Location ID先在启动节点记录的周围节点的Location ID中进行查找,得到对启动节点查询后的第一轮查找结果,将第一轮查找结果存储;在这个第一轮查找结果找到距离查找方最近的k个节点,将这k个节点的Location ID依据距离的远近排序后将这k个Location ID加入队列,将k个Location ID中的距离最近的排在队首。同时,利用这k个Location ID的建立node-set列表,对于node-set列表也将其按照距离的升序进行排序。
查找完启动节点内记录的其他节点后,选取之前保存的队列中队首的LocationID并将该Location ID弹出队列,向选中的Location ID的节点发送查找信息,这个节点接收到信息后会计算查找方与节点内记录的周围其他节点的距离,得到第二轮查找结果,利用返回第二轮查找结果更新之前保存的查找结果,在这个更新后查找结果找到距离查找方最近的k个节点,逐个判断k个节点中距离大于当前node-set列表中最后一项节点距离的,判断完后将符合条件的节点的Location ID加入队列和node-set列表。移除队列中重复的节点的Location ID和已发送过查找消息的节点,对队列的Location ID按照距离升序重新进行排序,选取排序后队列中前k个Location ID。同样的,对更新后的node-set列表移除重复的Location ID,按照距离升序排序,选取排序后node-set列表中前k个Location ID。判断队列是否为空,如果已经空了,那么node-set列表中k个Location ID的节点就是距离资源最近的节点,如果还未空,那么继续迭代,向其发送消息接收返回的消息的过程,直到队列最后为空。
查找得到新节点最近的k个节点后,新加入的节点记录这k个节点作为自己的周围节点,新节点也同时向着k个节点发送消息,节点接收到来自新加入节点的消息后,更新自己的记录。
步骤S130、等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID。
区块链系统的节点一般具有分布式、自治性、开放可自由进出等特性,因而一般采用对等式网络(Peer-to-peer network,P2P网络)来组织散布全球的参与数据验证和记账的节点.P2P网络中的每个节点均地位对等且以扁平式拓扑结构相互连通和交互,不存在任何中心化的特殊节点和层级结构,每个节点均会承担网络路由、验证区块数据、传播区块数据、发现新节点等功能.按照节点存储数据量的不同,可以分为全节点和轻量级节点。前者保存有从创世区块到当前最新区块为止的完整区块链数据,并通过实时参与区块数据的校验和记账来动态更新主链.全节点的优势在于不依赖任何其他节点而能够独立地实现任意区块数据的校验、查询和更新,劣势则是维护全节点的空间成本较高。本申请的区块链采用轻节点(轻量级、SPV用户)和全节点混合的方式进行组网,资源并不需要不存储完整的账本数据,仅具备验证与转发功能,效率更高,节约资源处的硬件支出。因此,在本申请区块链的网络层除有特殊说明外,所有资源都是指轻节点,所有节点都是全节点。
本申请所想要查询的资源并不具备路由功能、查找资源等功能,因此需要将资源的属性组存储在距离资源自身空间位置最近的节点上,利用节点为查找方和资源之间提供路由查询,让查找方在节点上找到记录周围的资源属性组从而能够找到资源的地址,与资源进行互动。
新加入的资源首先找到距离自己最近的节点,将自己的属性组存储在上面,这样当需要查找该资源时,仅需要找到距离该资源最近的节点,在上面进行查找即可。由于资源并不具备路由功能、查找资源等功能,资源将查找过程委托给区块链中的节点,这个节点就是启动节点,当资源想要加入区块链时,为其分配一个节点。
步骤S140、先在所述启动节点处用进行查找,得到查找结果,在所述查找结果找到所述启动节点自身路由表中距离所述查找方最近的前k个节点,将所述前k个节点的Location ID入队。
步骤S141、迭代的,从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的LocationID,将选择出的Location ID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离。
启动节点接收到查找方的的空间坐标后,将这个空间坐标转换为Location ID,利用这个查找方的Location ID先在启动节点记录的周围节点的Location ID中进行查找,得到对启动节点查询后的第一轮查找结果,将第一轮查找结果存储;在这个第一轮查找结果找到距离查找方最近的k个节点,将这k个节点的Location ID依据距离的远近排序后将这k个Location ID加入队列,将k个Location ID中的距离最近的排在队首。同时,利用这k个Location ID的建立node-set列表,对于node-set列表也将其按照距离的升序进行排序。
查找完启动节点内记录的其他节点后,选取之前保存的队列中队首的LocationID并将该Location ID弹出队列,向选中的Location ID的节点发送查找信息,这个节点接收到信息后会计算查找方与节点内记录的周围其他节点的距离,得到第二轮查找结果,利用返回第二轮查找结果更新之前保存的查找结果,在这个更新后查找结果找到距离查找方最近的k个节点,逐个判断k个节点中距离大于当前node-set列表中最后一项节点距离的,判断完后将符合条件的节点的Location ID加入队列和node-set列表。移除队列中重复的节点的Location ID和已发送过查找消息的节点,对队列的Location ID按照距离升序重新进行排序,选取排序后队列中前k个Location ID。同样的,对更新后的node-set列表移除重复的Location ID,按照距离升序排序,选取排序后node-set列表中前k个Location ID。判断队列是否为空,如果已经空了,那么node-set列表中k个Location ID的节点就是距离资源最近的节点,如果还未空,那么继续迭代,向其发送消息接收返回的消息的过程,直到队列最后为空。
步骤S142、在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组。
得到距离查找方最近的k个节点后,在其中选择一个或者多个节点存储资源的属性组,这样当需要查找资源时,仅需要找到距离该资源最近的节点,在上面进行查找即可。
本申请实施例的一种基于区块链的智能合约资源的组网方法,计算所有资源的属性组和所有节点的空间属性Location ID,新节点委托引导节点发起对新节点的LocationID的搜索,引导节点利用节点之间关联的拓扑结构不断学习并查询最佳节点,最终收敛得到最近的临近节点,新节点与最近的节点相互存储Location ID,所有节点加入完毕后,新资源利用启动节点来加入区块链,启动节点通过节点之间关联的拓扑结构不断学习并查询最佳节点,获得了越来越接近的节点,最终收敛到目标节点上,将资源存储在目标节点上。本申请将资源和节点基于空间位置进行组网,并在组网过程中定义资源的类别、可用状态等属性,利用此种组网方法能够使存储在区块链中的智能合约资源在能够实现基于时间、位置属性搜索的同时实现模糊搜索。
在本申请的一个可选实施例中,步骤S100的预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、查找节点消息、查找资源消息、占用消息、解除占用消息;
构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数。
每个节点拥有自己所运行在的IP地址与UDP端口,其它节点可以通过自己记录的这两个信息向该节点发送消息。
每个节点维护一个路由表,路由表在实现上由一组列表(k-bucket)组成,每个列表对应节点Location ID的每一位(例如,具有64位标识符的节点Location ID将保留64个这样的列表)。通常,一个列表有许多条目,每个条目由一个三元组<Location ID,IPaddress,UDP port>定义。该三元组<Location ID,IP address,UDP port>指定定位节点所需的信息。每个列表都按最后访问时间排序。这些列表称为k-bucket。值k称为系统范围复制参数,并定义每个列表可以增长到的上限。
每个节点维护一个资源表,资源表由多个资源条目构成,存放对应资源的属性组<Location ID,Availability Code,Name Code,IP address,UDP port>,其中Location ID是主键值。
一个节点发送的每一条消息都包含它自身的<Location ID,IP address,UDPport>对,允许收到消息的节点在必要时(主要是更新自己的路由表时)记录下这些信息。
每个节点的基本消息类型有以下7种:
(1)PING
PING消息由一个节点发起,向另一个节点确认其还能正常工作,无参数。
返回结果为一个1bit的Boolean值表示节点是否运转正常。若成功运转,返回成功码(1),否则返回错误码(0)或不返回(节点故障)。
(2)STORE_NODE
STORE_NODE消息由一个节点发起,参数为一个节点的属性组<Location ID,IPaddress,UDP port>,要求另一个节点在自己的路由表中存储这个节点的属性组(若k_buckets已满,有相关的替换策略),成功存储返回成功码(1),否则返回错误码(0)。
(3)STORE_RESOURCE
STORE_RESOURCE消息由一个节点发起,参数为一个资源的属性组<Location ID,Availability Code,Name Code,IP address,UDP port>,要求另一个节点存储这个资源的属性组,成功存储返回成功码(1),否则返回错误码(0)。
(4)FIND_NODE
FIND_NODE消息由一个节点发起,参数为一个64位的Location ID,要求另一个节点返回它的路由表中,与这个Location ID的Hash距离最小的k个(这个k值为全局参数)Location ID所对应节点的<Location ID,IP address,UDP port>对组。
(5)FIND_RESOURCE
FIND_RESOURCE消息由一个节点发起,参数为一个资源的类别码NameCode,要求另一个节点返回所有它的资源表中的Name Code与之相同,且当前Availability Code为1处于可用状态的资源的<Location ID,Availability Code,NameCode,IP address,UDP port>对组。
(6)OCCUPY
OCCUPY消息由一个节点发起,参数为一个资源的类别码Location ID,要求另一个节点将它的资源表中存储的Location ID与之相同的资源的AvailabilityCode置为1。若原Availability Code已为1或该资源不存在,返回错误码(0),否则返回成功码(1)。
(7)UNOCCUPY
UNOCCUPY消息由一个节点发起,是OCCUPY的逆操作。参数为一个资源的类别码Location ID,要求另一个节点将它的资源表中存储的Location ID与之相同的资源的Availability Code置为0。若原Availability Code已为0或该资源不存在,返回错误码(0),否则返回成功码(1)。
Pair类是由节点的Location ID、IP address、UDP port整合而成的类。Pair类的元素有:locationId、ip、port。当一个节点获得了别的节点的Pair时,便可以向其发送消息,消息中附带上身节点的Pair。收到消息的节点可以执行相关操作并利用发送方的Pair返回结果。
Resource类的本质是存储目标资源的智能合约所运行的ip与port。Resource类的元素有继承自Pair类的locationId、ip、port和verification_code、name_code、availability_code。通过获取Resource类的ip和port,节点可以实现对目标资源智能合约所运行节点的访问,进而使用目标资源。因此在本申请中满足用户限定要求的Resource实例是搜索的最终目标。
Affair类(事务类)是节点操作的核心类。用户向预分配的启动节点发布事务,启动节点启动事务,并在事务的处理过程中与其它节点相互发送必要的消息(Message),最终事务运行结束,启动节点将事务的运行结果返回给用户。Affair类的主要元素有继承自Pair类的locationId、ip、port和affair_id、affair_type、status、param、stop_count。affair_id由事务所在启动节点的affair_id_count计数,需要满足所有节点上所有事务的id的唯一性,这是因为当节点收到别的节点返回的消息后,需要立刻判断出该消息归属于自己节点上正在运行中的哪个事务,进而完成相应操作。affair_type分为"LAUNCH_SEARCH"、"LAUNCH_GUIDE"、"LAUNCH_STORE"三种,分别对应资源搜索事务、新节点加入事务和新资源寻址存储事务三种。status是事务的状态,主要有"INITIAL"、"WAITING"、"LEADING"、"FINISHED"四种。param是对应不同类型事务在布置事务的同时需要给予的参数,例如资源搜索事务需要给出目标资源类型、用户当前location等信息。stop_count用以追踪affair的完成,如果一段时间affair的进度不再更新就会扣减stop_count,扣减为负时事务的状态便可转为FINISHED。
Message类是规划节点间消息通信的类。Message类的主要元素有message_type、status、affair_id、pair_from、pair_to、param。关于message_type已经对7种消息类型做了详细的介绍。status分为"REQUEST","RECEIPT",表示消息是请求消息还是回执消息。affair_id表示message所attach to的affair的id,pair_from和pair_to分别记录发信节点和收信节点的pair。param则是消息所必须负载的其它参数。
Bucket类是节点用以存放路由信息的单位类。每个Bucket对应一个Location ID的区段。Bucket类的元素有:bucket_id、list。bucket_id编号从1到64。list中存放在Bucket区段范围中的节点的Pair。对于本申请算法架构下长为64位的主键Location ID而言,每个Node拥有一个由64个Bucket构成的k_buckets,Bucket的id(0-63)表示它所代表的Location ID区段与其所在Node的Location ID是从第几位开始不相同的。以6位的Location ID为例,假设Node自身的Location ID为011010,那么它拥有6个bucket,用k_buckets[0],…,k_buckets[5]表示。那么它们各自表示的Location ID区段与区段长度如图3所示。
当某一节点A向节点B发送消息请求MESSAGE(MESSAGE可以是以上7种任一)时,将A的pair放在第一参数,B的pair放在第二参数,原本的参数放置在后面。例如当节点A向节点B发送FIND_NODE消息请求时,记为FIND_NODE(Pair_A,Pair_B,Location ID);又例如节点A向节点B发送PING消息请求时,记为PING(Pair_A,Pair_B)。特别地,当Pair_A与Pair_B相同时,表示节点并没有发出消息让别的节点执行操作,而是在自身节点上执行相关的算法。
每个节点都会维护一个路由表,路由表由一组列表组成,每个列表对应节点Location ID的每一位(例如,具有64位标识符的节点Location ID将保留64个这样的列表)。通常,一个列表有许多条目,每个条目由一个三元组<Location ID,IP address,UDPport>定义。该三元组<Location ID,IP address,UDP port>指定定位节点所需的信息。每个列表都按最后访问时间排序。这些列表称为k-bucket。值k称为系统范围复制参数(System-wide Replication Parameter),并定义每个列表可以增长到的上限。
本申请节点最重要的工作是收到FIND_NODE消息后返回k个最接近某个给定节点ID的节点的位置,这个过程被称为节点查找。发起方从其最近的非空k-bucket中选取alpha个节点。然后,发起程序将并行的异步FIND_NODE消息发送到它选择的alpha个节点。alpha的值定义了一个节点同时发起查找节点的数量。
进一步的,所述设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数,包括:
设置System-wide Replication Parameter系统范围复制参数k的值为20,设置请求并发数alpha的值为3,设置Location ID的长度location_length位数为64位。
我们使用Location ID作为节点主键来作为资源和节点中的ID。本申请的Location ID长度的主要目的是增加Location ID自带位置信息的精确度,以保证LocationID的近似唯一性。本申请通过增大这个Location ID的长度位数至64位,经计算可以让空间面积上精确到约4e-6平方米的数量级,线度误差精确到1e-3米的数量级。也就是说除非两个节点的虚拟空间位置近到这个数量级以下,它们不能拥有相同的Location ID,在具体测试中我们发现这是几乎不可能的情况,因此节点的Location具有近似唯一性,将location_length固定为64。
在本申请的一个可选实施例中,步骤S100的预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
定义节点的虚拟地理位置为Location ID,因为节点实际管辖的地理位置而不一定是节点自身服务器所安置的位置。特别地,当服务器也确实安置在其的虚拟地理位置时,可以在一定程度上提升请求的访问速度。
在本申请的一个可选实施例中,搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,最近距离计算包括以下步骤:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个LocationID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
由于本申请的Location ID的计算过程可知,空间坐标相近的资源/节点的Location ID具有较长的公共前缀,因此可以直接按照按位异或的方式来获取两个Location ID间的Hash距离,例如16665814705709692435(北京大学图书馆)和16665814700764106491(邱德拔体育馆)。输出为一个64位二进制数的整数形式,例如北京大学图书馆和邱德拔体育馆的Location ID间Hash距离为00000000 00000000 0000000000000111 00111001 11001001 10111000 11101000,表示为十进制就是31034292456;又如北京大学图书馆和圆明园的Location ID间Hash距离为00000000 00000000 0000000001001110 01110110 10101000 00111100 11110011,表示为十进制就是336998186227。
两个LocationID间Hash距离计算的伪代码如下:
输入:LocationID 1、LocationID 2的十进制表示locationId_1、locationId_2
输出:两个LocationID的距离distance用十进制整数表示
function DistanceLocationID(locationId_1,locationId_2)
distance←locationId_1^locationId_2
return distance
end function
例如:DistanceLocationID(16665814705709692435,16665814700764106491)=31034292456,其中“^”是按位异或的运算符。
发明人对本申请的组网方法所能够达到的搜索正确性进行了验证。
搜索算法正确性验证是指,验证我们时空敏感的资源搜索算法得到的搜索结果与客观上正确的答案相比,是否正确率足够高。在这里我们会引入一个参数:备份数(backup),表示同一份资源在加入分布式网络时进行的存放数量,例如备份数为5时表示其中1份存放具体资源的信息,而另4份指向这第一份资源存放的节点。
正确结果是使用枚举的方式,直接将所有节点与目标Location ID做平面欧氏距离并排序,得到参考的正确结果,
控制相同的节点个数(node number)为100预先生成同一幅节点资源地图。然后我们改变并发请求数(concurrent searching number)取值为10、100、1000进行三次测试。对于每个并发请求数的取值,我们都进行10次仿真,每次随机初始化每个查询的查询目标和启动节点。完成查询后计算备份数(backup)为1,2,…,10时可以获得正确资源位置节点的概率。
将模型运行在个人的阿里云云服务器上,使用tmux工具自主运行。生成存档文件,例如当并发请求数为100时的存档文件内容accuracy_100如图4所示。
对于实验结果,我们对于同并发搜索数的10次数据做平均值Avg,将结果绘制成图5。
分析图中的实验结果,可以得到如下结论:
(1)时空敏感的资源搜索算法是一种正确率有保证的资源搜索算法。
(2)备份数越大,成功查找到目标资源所在节点的概率越大,趋向于1。备份数取值大于1时就已经可以保证相当高的正确率了。
(3)并发搜索数对于结果的正确率影响不显著,表明算法能适用于各种并发规模的查询需求并保持正确率稳定。
发明人将本申请组网完成后的实现搜索方法与传统的C/S模型进行了对比。
假设所有节点(包括时空敏感的资源搜索算法中的节点、C/S模型中的所有client和server节点)的带宽限制相等,为定值bandwidth。假定所有并发请求同时发出并被其对应启动节点处理,关注所有并发请求完成时间的平均值作为衡量系统处理并发请求的时间性能的主要指标。
C/S模型的理论时间性能,对于节点搜索算法这一核心步骤,在C/S模型下,理论上需要经历以下步骤:
(1)client节点向server节点发送请求message
(2)server节点响应收到的请求message,向client节点返回结果message
(3)client节点响应收到的结果message,完成查找
因此按照前文中我们对于时间片的定义,若不考虑带宽限制,在C/S模型下单个节点搜索请求的时间消耗为3时间片,即300ms(定义单个时间片的长度为100ms)。
显然在C/S模型下,由于client只与server节点信息交互,而与其它client节点无直接信息交互,带宽的限制最早体现在server节点的带宽拥堵上。因此当并发请求数量变化时,总的C/S模型的时间消耗性能(即Time-Concurrent Searching Number图像)近似满足以下两个性能阶段:
(1)阶段一:并发请求数较小,server节点带宽未饱和,则所有请求并发开始进行,同步经历以上(1)(2)(3)步骤,理论上将同步完成,请求的平均完成时间为Tavg=3·100ms=300ms。
(2)阶段二:并发请求数较大,server节点带宽饱和,新来的请求在server处排队,此时在server节点处的步骤(2)耗时将远大于步骤(1)和步骤(3),因此总耗时近似于步骤(2)耗时,平均每个请求完成的时间近似等于这是因为最快完成的请求依旧只需要Tmin=300ms;而最慢完成的请求要等待所有Server处请求处理完毕才轮到自己,需要时间为这样所有请求的平均完成时间为
将以上两阶段绘制为分段函数,记为C/S模型时间性能理论值(Theoreticalvalue in C/S model)。
控制相同的节点个数(node number)为100,预先生成同一幅节点资源地图,即时间性能测量过程中所有测试使用的节点资源地图是相同的,起到控制变量的作用。然后我们改变带宽(bandwidth)的取值为5、10、20、inf进行四次测试。对于每个带宽的取值,我们都将并发查询数量(Concurrent Seaching Number)从20=1=1开始,按照2的幂次扩大到216==65536(除bandwidth=inf的case取到215为例外),然后对于每个并发查询数量,进行10次仿真,每次随机初始化每个查询的查询目标和启动节点。完成查询后计算所有Concurrent Seaching Number次查询的完成时间的平均值。
将模型运行在个人的阿里云云服务器上,使用tmux工具自主运行。生成存档文件,例如当带宽为10、并发查询数为32768的存档文件内容job_100_10_32768如图6所示。
对于图6中的实验结果,我们对于同带宽、同并发搜索数的10次数据做最大值Max、最小值Min、平均值Avg、去掉最大值和最小值之后的平均值Avg_exp四个取值,绘制成折线图。再在折线图基础上加上对于传统C/S模型的理论性能曲线。
图7示出了带宽bandwidth=5时的时间性能对比,图8示出了带宽bandwidth=10时的时间性能对比,图9示出了带宽bandwidth=20时的时间性能对比,图10示出了带宽bandwidth=inf时的时间性能对比。
对于上述实验结果的对比,可分析出本申请组网完成后实现资源搜索算法与C/S模型相比:
(1)当节点的带宽不为正无穷时(有限制),随着并发请求数的增加,大约在100-200左右的并发规模之后,本申请的资源搜索算法的时间性能就开始显著优于传统C/S模型了。在真实的现实应用场景中,并发请求数的规模是远远大于这一临界值的。
(2)传统C/S模型在应对并发请求数的增长时主要体现两个阶段:空闲和过载。空闲阶段每个查询请求的完成时间一致且不受限;过载阶段由于请求在Server端积塞,请求完成的平均时间随并发数增长呈正比。
(3)本申请的资源搜索算法在应对并发请求数的增长时主要体现三个阶段:空闲、调度均衡、过载。空闲阶段每个查询请求的完成时间相似,并发数指数增加但请求平均完成时间基本不增长;调度均衡阶段是我们算法相对于传统C/S模式的主要优势阶段,由于节点之间互相传递消息分散了对于单一节点带宽的压力,虽然并发数指数增加,但请求的平均完成时间基本呈线性增长;过载阶段与C/S模式类似,经过进一步分析发现是个别路由上高访问量的节点积压了大量消息有待处理但很多普通节点都已经处理完毕处于空闲状态,因此请求平均完成时间与并发数成正比,即也一同指数增长。
(4)当节点的带宽无限制时(理论非真实情况),时空敏感的资源搜索算法与传统C/S模式相似,请求的平均完成时间不随并发请求数的增长而增长,而是趋于定值,这是符合实验预期的。
发明人还注意到节点个数取值与搜索结果指标的相关性,发明人对不同节点数下的搜索结果进行了对比。
在上述对比验证中都假定了节点个数为100,节点的管辖地域大致为北京大学(燕园)片区。但在实际运用中,节点的个数是可以调整的,其数值的调整会对搜索结果的几项指标带来相应的变化。因此接下来关注这些指标的变化与节点个数变化之间的关系。
本申请的组网方法实现的区块链资源搜索算法主要关注的指标有以下三个:搜索时间(Time)、平均路由记录数(Contact)、搜索精度范围(Bound)。这些指标的定义如下:
(1)平均搜索时间(Time)
平均搜索时间是指,从一项节点搜索事务被其启动节点接受开始计时,到分布式查询完成,得到结果为止的平均时间消耗。在这里我们依然假定每个时间片的大小为100ms。这一数值是搜索算法性能的主要衡量指标。
(2)平均路由记录数(Contact)
平均路由记录数是指,随着节点的创建与接受引导加入原有分布式节点网络,每个节点在完成全部节点创建后的平均需要记录的其它节点的路由个数。虽然在创建之后进行真实查询时这一指标的数量还会发生波动,但创建网络伊始的这一指标依旧能一定程度上反映节点的空间开销。
(3)平均搜索精度范围(Bound)
对于同一目标Location ID的搜索请求,分布式网络中节点数的个数越多,搜索结果的精度自然会越高。我们在这里的平均搜索精度范围是指,对于查找结果中的k个结果节点,我们计算其中最远的一个(第k个)节点与目标Location ID的绝对欧氏距离,单位为米。多次测量(10次)并取平均值。这一指标是验证性的,因为容易想见,随着节点数量的翻倍,最终结果的管辖面积范围应当减半,因此线度指标Bound应当理论上约为原值的倍。
搜索结果指标与节点个数取值变化的采集方式上,仅针对节点个数变化做测试,因此不考虑并发请求,即只有一个查询请求被执行。
我们改变节点个数(node number)的取值从25=32开始,按照2的幂次扩大到213=8192,每个节点个数值做10次单查询仿真测试,每次查询均随机生成对应节点个数的随机新节点资源地图。完成查询后计算所有每个节点个数对应10次查询的以上三项指标的平均值。
将模型运行在个人的阿里云云服务器上,使用tmux工具自主运行。生成存档文件,例如当节点个数为4096时的存档文件内容data_4096如图11所示。
对于同节点个数的10次数据的Time、Contact、Bound分别做最大值Max、最小值Min、平均值Avg、去掉最大值和最小值之后的平均值Avg_exp四个取值,绘制成折线图。
平均搜索时间(Time)随节点个数指数增长的变化如图12所示,平均路由记录数(Contact)随节点个数指数增长的变化如图13所示,平均搜索精度范围(Contact)的自然对数随节点个数指数增长的变化如图14所示,图14纵坐标值取了自然对数。
基于上述图像所示实验结果,可以得到如下结论:
(1)随着节点数的指数增长,单次查询的平均时间(Time)仅线性增长,时间可控。同时意味着真实应用场景中,节点数量的正常增多并不会对搜索算法的性能造成显著的影响。
(2)随着节点数的指数增长,每个节点平均记录的其它节点路由的数量(Contact)(可以认为是节点的硬件存储压力)仅仅呈线性增长,例如当Node Number=8096时,正常运作中的每个节点只需要平均各“认识”其它的约140个节点,就可以完成有效的节点查找事务了。
(3)随着节点数目的增多,搜索结果的“精度”也相应提升,这是符合直觉的。因为按照常理,节点数增大为2倍,理论上结果的有效面积应当缩小2倍,因此线度上转化为一维的距离也应当缩小倍,这在结果上得到了印证。进一步使用Avg下的数据做线性回归,结果为节点数每增大为2倍,Bound缩小约1.46倍,该结果与吻合,验证了算法的合理性。
结合本申请组网方法实现资源搜索算法与C/S模型相比中的分析,搜索请求的平均耗时(Time)在过载前与并发请求数(S)的对数成正比,在本次实验中我们又得到它和节点个数(N)的对数成正比,因此有O(Time)=lgslgN。
基于同一发明构思,本申请一实施例提供一种基于区块链的智能合约资源的组网装置。参考图2,图2是本申请一实施例提出的基于区块链的智能合约资源的组网装置的示意图。如图2所示,该装置包括:
存储模块,用于预先计算所有资源的属性组和所有节点的空间属性Location ID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性Location ID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号;
委托模块,用于新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点;
第一节点查找模块,用于所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到所述启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队;
第一迭代模块,用于迭代的,从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的Location ID,将选择出的Location ID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,直到找寻到区块链网络中最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离;
新节点引导模块,用于让所述距离所述新节点最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导;
分配模块,用于等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID;
第二节点查找模块,用于先在所述启动节点处用所述新资源的空间属性LocationID进行查找,得到第二节点查找结果,在所述第二节点查找结果中找到所述启动节点自身路由表中距离所述新资源最近的前k个节点,将所述前k个节点的Location ID入第二节点队;
第二迭代模块,用于迭代的,从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的Location ID,将选择出的Location ID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离;
新资源引导模块,用于在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组
其中,空间属性Location ID由Location ID计算模块得到,所述Location ID计算模块包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
在本申请的一个可选实施例中,所述存储模块预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
资源和节点计算子模块,用于预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
消息类型定义子模块,用于定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、FIND_NODE查找节点消息、查找资源消息、占用消息、解除占用消息;
类事件构造模块,用于构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
参数设置子模块,用于设置系统范围复制参数k的值,设置请求并发数的值,设置的长度位数。
在本申请的一个可选实施例中,所述存储模块的预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
在本申请的一个可选实施例中,还包括:最近距离计算模块
搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,所述最近距离计算模块包括:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个LocationID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
在本申请的一个可选实施例中,所述参数设置子模块设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数,包括:
设置系统范围复制参数k的值为20,设置请求并发数的值为3,设置Location ID的长度位数为64位。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种基于区块链的智能合约资源的组网方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于区块链的智能合约资源的组网方法,所述区块链包括至少一个节点和至少一个资源,其特征在于,所述方法包括:
预先计算所有资源的属性组和所有节点的空间属性LocationID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性LocationID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号;
新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点;
所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队;
从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的Location ID,将选择出的LocationID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离;
让所述距离所述新节点最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导;
等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID;
先在所述启动节点处用所述新资源的空间属性Location ID进行查找,得到第二节点查找结果,在所述第二节点查找结果中找到所述启动节点自身路由表中距离所述新资源最近的前k个节点,将所述前k个节点的Location ID入第二节点队;
从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的Location ID,将选择出的LocationID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离;
在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组;
其中,计算空间属性Location ID的步骤包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
2.根据权利要求1所述方法,其特征在于,所述预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、查找节点消息、查找资源消息、占用消息、解除占用消息;
构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
设置系统范围复制参数k的值,设置请求并发数的值,设置LocationID的长度位数。
3.根据权利要求1所述方法,其特征在于,预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
4.根据权利要求1所述方法,其特征在于,搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,最近距离计算包括以下步骤:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个Location ID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
5.根据权利要求2所述方法,其特征在于,所述设置系统范围复制参数k的值,设置请求并发数alpha的值,设置Location ID的长度位数,包括:
设置系统范围复制参数k的值为20,设置请求并发数的值为3,设置Location ID的长度位数为64位。
6.一种基于区块链的智能合约资源的组网装置,所述区块链包括至少一个节点和至少一个资源,其特征在于,所述装置包括:
存储模块,用于预先计算所有资源的属性组和所有节点的空间属性Location ID,将资源的属性组存储在距离资源自身空间位置最近的节点上,所述属性组至少包括以下一者:资源的空间属性Location ID、资源的时间属性、资源的类别属性、资源的部署IP地址和相应端口号;
委托模块,用于新节点委托引导节点发起对新节点的Location ID的搜索,所述引导节点为已经位于区块链网络中的任一节点;
第一节点查找模块,用于所述引导节点先对自身记录的节点的Location ID进行查找,得到第一节点查找结果,在所述第一节点查找结果中找到启动节点自身路由表中距离所述新节点最近的前k个节点,将所述前k个节点的Location ID入第一节点队;
第一迭代模块,用于从所述第一节点队中选取队首的Location ID,向其发出查找消息后接收第一返回结果,利用所述第一返回结果更新所述第一节点查找结果,同时选择更新后第一节点查找结果中与所述新节点的距离大于第一队尾距离的节点的Location ID,将选择出的Location ID入所述第一节点队进行更新,截取更新后第一节点队中前k个节点,直到找寻到区块链网络中距离所述新节点最近的k个节点,所述第一队尾距离为所述第一节点队中队尾的Location ID与所述新节点的距离;
新节点引导模块,用于让所述距离所述新节点最近的k个节点与所述新节点互相存储Location ID,完成所述新节点加入区块链的引导;
分配模块,用于等待所有节点加入完毕后,向新资源分配启动节点并向所述启动节点发送新资源的空间属性Location ID;
第二节点查找模块,用于先在所述启动节点处用所述新资源的空间属性Location ID进行查找,得到第二节点查找结果,在所述第二节点查找结果中找到所述启动节点自身路由表中距离所述新资源最近的前k个节点,将所述前k个节点的Location ID入第二节点队;
第二迭代模块,用于从所述第二节点队中选取队首的Location ID,向其发出查找消息后接收第二返回结果,利用所述第二返回结果更新所述第二节点查找结果,同时选择更新后第二节点查找结果中与所述新资源的距离大于第二队尾距离的节点的Location ID,将选择出的Location ID入所述第二节点队进行更新,截取更新后第二节点队中前k个节点,直到找寻到区块链网络中距离所述新资源最近的k个节点,所述第二队尾距离为所述第二节点队中队尾的Location ID与所述新资源的距离;
新资源引导模块,用于在所述距离新资源最近的k个节点中选择至少一个节点存储新资源的属性组
其中,空间属性Location ID由Location ID计算模块得到,所述Location ID计算模块包括:
将空间坐标通过二分法分别在经度和纬度的值域上二分细化,得到两个二进制字符串,再通过奇偶位交错拼接所述两个二进制字符串得到Location ID,空间坐标至少包括:经度、纬度。
7.根据权利要求6所述装置,其特征在于,所述存储模块预先计算所有资源的属性组和所有节点的空间属性Location ID,还包括:
资源和节点计算子模块,用于预先计算所有资源的属性组和所有节点的属性,节点的属性至少包括以下一者:节点的空间属性Location ID,节点的IP地址与端口,节点的路由表,节点的资源表,所述资源表用于存储至少一个资源的属性组;
消息类型定义子模块,用于定义节点之间的消息类型,所述消息类型至少包括以下一者:响应消息、存储节点消息、存储资源消息、FIND_NODE查找节点消息、查找资源消息、占用消息、解除占用消息;
类事件构造模块,用于构造查找过程中的类,所述类至少包括以下一者:组类、资源类、事务类、消息类、桶类、节点类;
参数设置子模块,用于设置系统范围复制参数k的值,设置请求并发数的值,设置的长度位数。
8.根据权利要求6所述装置,其特征在于,所述存储模块的预先计算所有资源的属性组和所有节点的空间属性Location ID,包括:
将节点的虚拟空间坐标定义为节点的空间属性Location ID。
9.根据权利要求6所述装置,其特征在于,还包括:最近距离计算模块
搜索过程中节点之间最近距离的计算和资源与查找方之间最近距离的计算都基于空间属性Location ID,所述最近距离计算模块包括:
将两个Location ID都转换为64位二进制数的整数形式;
对两个二进制数的整数形式的Location ID进行异或运算,得到的两个Location ID之间的距离的二进制整数形式表示;
将所述两个Location ID之间的距离的二进制整数形式转换为十进制整数表示输出。
10.根据权利要求7所述装置,其特征在于,所述参数设置子模块设置系统范围复制参数k的值,设置请求并发数的值,设置Location ID的长度位数,包括:
设置系统范围复制参数k的值为20,设置请求并发数的值为3,设置Location ID的长度位数为64位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420659.4A CN112702390B (zh) | 2020-12-07 | 2020-12-07 | 基于区块链的智能合约资源的组网方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420659.4A CN112702390B (zh) | 2020-12-07 | 2020-12-07 | 基于区块链的智能合约资源的组网方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112702390A CN112702390A (zh) | 2021-04-23 |
CN112702390B true CN112702390B (zh) | 2022-04-15 |
Family
ID=75506955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011420659.4A Active CN112702390B (zh) | 2020-12-07 | 2020-12-07 | 基于区块链的智能合约资源的组网方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112702390B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113438308B (zh) * | 2021-06-23 | 2022-12-23 | 上海简苏网络科技有限公司 | 一种基于区块链的高效通信方法及系统 |
CN114186115B (zh) * | 2021-11-24 | 2022-09-06 | 北京大学 | 一种物理拓扑敏感的人机物数字对象搜索方法与系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062687A (zh) * | 2018-07-10 | 2018-12-21 | 矩阵元技术(深圳)有限公司 | 用于p2p网络的计算资源查找方法及装置 |
CN110061838A (zh) * | 2019-04-28 | 2019-07-26 | 广州大学 | 一种dns资源记录的去中心化存储系统及其实现、信息检索方法 |
CN111190714A (zh) * | 2019-12-27 | 2020-05-22 | 西安交通大学 | 一种基于区块链的云计算任务调度系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582845B (zh) * | 2009-06-16 | 2011-04-13 | 湖北工业大学 | 一种快速定位对等网络目标节点标识的方法 |
US10616324B1 (en) * | 2017-07-20 | 2020-04-07 | Architecture Technology Corporation | Decentralized ledger system and method for enterprises |
SG11202009660SA (en) * | 2018-03-29 | 2020-10-29 | Agency Science Tech & Res | Methods of distributing software across a network and distribution systems |
CN109710405B (zh) * | 2018-12-21 | 2023-04-14 | 平安科技(深圳)有限公司 | 区块链智能合约管理方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-07 CN CN202011420659.4A patent/CN112702390B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062687A (zh) * | 2018-07-10 | 2018-12-21 | 矩阵元技术(深圳)有限公司 | 用于p2p网络的计算资源查找方法及装置 |
CN110061838A (zh) * | 2019-04-28 | 2019-07-26 | 广州大学 | 一种dns资源记录的去中心化存储系统及其实现、信息检索方法 |
CN111190714A (zh) * | 2019-12-27 | 2020-05-22 | 西安交通大学 | 一种基于区块链的云计算任务调度系统及方法 |
Non-Patent Citations (2)
Title |
---|
Han Dong ; Enze Xu ; Xiang Jing ; Huaqian Cai ; Gang Huang.《Adaptive Request Scheduling for Device Cloud》.《IEEE》.2020, * |
基于区块链的物联网节点位置隐私保护模型;佘维等;《应用科学学报》;20200130(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112702390A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112541019B (zh) | 区块链资源的搜索方法和装置 | |
Hegeman et al. | Toward optimal bounds in the congested clique: Graph connectivity and MST | |
US9305019B2 (en) | Method of associating user related data with spatial hierarchy identifiers for efficient location-based processing | |
US11423085B2 (en) | Graph database super vertex partitioning | |
Sun et al. | The cost-efficient deployment of replica servers in virtual content distribution networks for data fusion | |
CN112702390B (zh) | 基于区块链的智能合约资源的组网方法和装置 | |
US20140222873A1 (en) | Information system, management apparatus, method for processing data, data structure, program, and recording medium | |
CN109146447A (zh) | 区块链透明分片方法、装置及系统 | |
Fredj et al. | Efficient semantic-based IoT service discovery mechanism for dynamic environments | |
KR102654884B1 (ko) | 대화형 정보 제공 서비스 방법 및 이를 위한 장치 | |
Hassanzadeh-Nazarabadi et al. | Decentralized utility-and locality-aware replication for heterogeneous DHT-based P2P cloud storage systems | |
Zhang et al. | IoV scenario: Implementation of a bandwidth aware algorithm in wireless network communication mode | |
JP7202558B1 (ja) | ヒューマンサイバーフィジカル融合環境におけるデジタルオブジェクトアクセス方法及びシステム | |
US11409724B2 (en) | Hashed balanced tree data structure | |
CN107257356B (zh) | 一种基于超图分割的社交用户数据优化放置方法 | |
Shefu et al. | Fruit fly optimization algorithm for network-aware web service composition in the cloud | |
Knoll et al. | Optimizing locality for self-organizing context-based systems | |
Huang et al. | PChord: a distributed hash table for P2P network | |
Xu et al. | DLCD-CCE: A local community detection algorithm for complex IoT networks | |
Nasir et al. | Fast trust computation in online social networks | |
Tiendrebeogo et al. | Big Data Storage System Based on a Distributed Hash Tables system | |
CN108965387B (zh) | 一种提高p2p数据存储抗毁性的均衡方法及系统 | |
Ahulló et al. | Supporting geographical queries onto DHTs | |
Olaifa et al. | Multi Ant LA: An adaptive multi agent resource discovery for peer to peer grid systems | |
CN115550251B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |