一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种泛在环境下的数字对象访问事务存证方法和装置

2022-12-20 02:04:14 来源:中国专利 TAG:


1.本技术涉及数字对象架构技术领域,特别是涉及一种泛在环境下的数字对象访问事务存证方法和装置。


背景技术:

2.数字对象架构doa(digital object architecture)是由图灵奖得主、互联网之父罗伯特
·
卡恩教授提出的一种软件体系结构,以数字对象为中心解决开放环境下信息系统资源之间的互操作,数字对象本质上是资源实体的数据抽象,互联网环境下,数字对象主要产生于云端信息系统,由库表、文档、图片等已经存在于信息系统中的数据转变而成。而泛在环境是一个去中心化的环境,不同于互联网环境下对数据进行集中管理,泛在环境下的数字对象实体通常由大量分散在世界各地的智能设备实时感知、产生,其值会随着现实世界的改变而实时变化,产生于去中心化环境的数字对象访问事务往往是由多个数字对象主体之间交互产生,涉及到多个数字对象主体之间的共识,存储于终端、边缘仓库节点中的访问事务存在丢失、被篡改的风险,因此,需要保证数字对象事务记录的可信。
3.区块链作为一个去中心化环境下的数据可信存证技术,可以保障数字对象访问事务记录的可信。在传统的区块链系统中,全网所有节点属于同一个共识组,系统只能串行地存证事务,导致系统的吞吐量无法有效提升。虽然利用区块链技术中的分片技术可以节点划分为多个共识组,每个共识组独立并行地产块,以提高区块链系统整体的吞吐量。
4.然而,传统分片技术中,每个分片维护一条独立的区块链,区块的安全性完全由共识组内的节点保证,仅需在共识组内控制一定数量的节点,即可阻止节点在共识组内该达成共识,甚至任意修改节点内的历史数据,因而数据的防篡改性较差,难以满足泛在环境下的数字对象访问事务的可信存证需求。


技术实现要素:

5.本技术提供一种泛在环境下的数字对象访问事务存证方法和装置,以解决传统分片技术的数据防篡改性较差,难以满足泛在环境下的数字对象访问事务的可信存证需求的问题。
6.为了解决上述问题,本技术采用了以下的技术方案:
7.第一方面,本技术实施例提供了一种泛在环境下的数字对象访问事务存证方法,所述泛在环境下的数字对象访问事务存证方法包括:
8.对多个数字对象进行划分,得到多个共识组;每个共识组为由若干个事务区块组成的区块链;其中,不同的事务区块对应不同的数字对象,所述事务区块包括邻接区块哈希指针集,所述邻接区块哈希指针集包括若干个邻接区块哈希指针,不同的邻接区块哈希指针指向不同的邻接共识组;
9.在任一所述事务区块生成第一新增事务区块的情况下,在当前共识组完成对所述第一新增事务区块的共识后,基于所述邻接区块哈希指针集,将所述第一新增事务区块的
块头分别广播至所有邻接共识组,以使所述邻接共识组存储所述第一新增事务区块的块头,其中,所述当前共识组为生成所述第一新增事务区块的事务区块所在的共识组。
10.在本技术一实施例中,所述事务区块还包括前序区块哈希指针,所述前序区块哈希指针指向所述事务区块的前序区块;
11.基于所述邻接区块哈希指针集,将所述第一新增事务区块的块头分别广播至所有邻接共识组,以使所述邻接共识组存储所述第一新增事务区块的块头之前,所述泛在环境下的数字对象访问事务存证方法还包括:
12.基于所述事务区块的前序区块哈希指针,在所述当前共识组内对所述第一新增事务区块进行共识。
13.在本技术一实施例中,基于所述事务区块的前序区块哈希指针,在所述当前共识组内对所述第一新增事务区块进行共识,包括:
14.将生成第一新增事务区块的事务区块作为主节点,所述主节点基于所述前序区块哈希指针,将针对所述第一新增事务区块的预准备消息广播至从节点;所述从节点为所述当前共识组中除所述主节点外的其他多个节点;
15.针对任一所述从节点,在所述从节点接收到所述预准备消息并对所述预准备消息验证成功后,由所述从节点将准备信息广播至所述当前共识组中除所述从节点外的其他多个节点;
16.每当所述当前共识组中存在一个节点累计接收并验证成功的准备信息的数量超过第一预设数量时,则该节点将确认信息广播至所述当前共识组中除该节点外的其他节点;
17.当所述当前共识组中存在一个节点累计接收并验证成功的确认信息的数量达到第二预设数量时,则确定所述当前共识组对所述第一新增事务区块达成共识,其中,所述第二预设数量大于所述第一预设数量。
18.在本技术一实施例中,在当前共识组完成对所述第一新增事务区块的共识后,基于所述邻接区块哈希指针集,将所述第一新增事务区块的块头分别广播至所有邻接共识组,以使所述邻接共识组存储所述第一新增事务区块的块头之后,所述泛在环境下的数字对象访问事务存证方法还包括:
19.在任一邻接共识组中的事务区块生成第二新增事务区块的情况下,将所述第一新增事务区块的块头加入所述第二新增事务区块的邻接区块哈希指针集中,并在所述邻接共识组内完成对所述第二新增事务区块的共识;
20.在所述邻接共识组内完成对所述第二新增事务区块的共识之后,将所述第二新增事务区块的块头分别广播至所述邻接共识组的所有邻接共识组。
21.在本技术一实施例中,对多个数字对象进行划分,得到多个共识组,包括:
22.基于所述多个数字对象的位置信息,将所述多个数字对象映射到二维平面上,得到多个节点;其中,不同的节点对应不同的数字对象;
23.基于所述多个节点,通过delaunay三角剖分算法,将所述二维平面划分为若干个多边形,以得到由所述若干个多边形构成的泰森多边形;
24.将属于同一个多边形的节点划分在同一个共识组中,并将每个共识组中的节点作为事务区块,构建每个共识组各自对应的区块链,以得到所述多个共识组。
25.第二方面,基于相同发明构思,本技术实施例提供了一种泛在环境下的数字对象访问事务存证装置,所述泛在环境下的数字对象访问事务存证装置包括:
26.共识组划分模块,用于对多个数字对象进行划分,得到多个共识组;每个共识组为由若干个事务区块组成的区块链;其中,不同的事务区块对应不同的数字对象,所述事务区块包括邻接区块哈希指针集,所述邻接区块哈希指针集包括若干个邻接区块哈希指针,不同的邻接区块哈希指针指向不同的邻接共识组;
27.存证模块,用于在任一所述事务区块生成第一新增事务区块的情况下,在当前共识组完成对所述第一新增事务区块的共识后,基于所述邻接区块哈希指针集,将所述第一新增事务区块的块头分别广播至所有邻接共识组,以使所述邻接共识组存储所述第一新增事务区块的块头,其中,所述当前共识组为生成所述第一新增事务区块的事务区块所在的共识组。
28.在本技术一实施例中,所述事务区块还包括前序区块哈希指针,所述前序区块哈希指针指向所述事务区块的前序区块;
29.所述泛在环境下的数字对象访问事务存证装置还包括:
30.共识模块,用于基于所述事务区块的前序区块哈希指针,在所述当前共识组内对所述第一新增事务区块进行共识。
31.在本技术一实施例中,所述共识模块包括:
32.预准备消息广播子模块,用于将生成第一新增事务区块的事务区块作为主节点,所述主节点基于所述前序区块哈希指针,将针对所述第一新增事务区块的预准备消息广播至从节点;所述从节点为所述当前共识组中除所述主节点外的其他多个节点;
33.准备信息广播子模块,用于针对任一所述从节点,在所述从节点接收到所述预准备消息并对所述预准备消息验证成功后,由所述从节点将准备信息广播至所述当前共识组中除所述从节点外的其他多个节点;
34.确定子模块,用于当所述当前共识组中存在一个节点累计接收并验证成功的确认信息的数量达到第二预设数量时,则确定所述当前共识组对所述第一新增事务区块达成共识,其中,所述第二预设数量大于所述第一预设数量。
35.在本技术一实施例中,所述泛在环境下的数字对象访问事务存证装置还包括:
36.块头加入模块,用于在任一邻接共识组中的事务区块生成第二新增事务区块的情况下,将所述第一新增事务区块的块头加入所述第二新增事务区块的邻接区块哈希指针集中,并在所述邻接共识组内完成对所述第二新增事务区块的共识;
37.广播模块,用于在所述邻接共识组内完成对所述第二新增事务区块的共识之后,将所述第二新增事务区块的块头分别广播至所述邻接共识组的所有邻接共识组。
38.在本技术一实施例中,所述共识组划分模块包括:
39.映射子模块,用于基于所述多个数字对象的位置信息,将所述多个数字对象映射到二维平面上,得到多个节点;其中,不同的节点对应不同的数字对象;
40.泰森多边形构建子模块,用于基于所述多个节点,通过delaunay三角剖分算法,将所述二维平面划分为若干个多边形,以得到由所述若干个多边形构成的泰森多边形;
41.共识组划分子模块,用于将属于同一个多边形的节点划分在同一个共识组中,并将每个共识组中的节点作为事务区块,构建每个共识组各自对应的区块链,以得到所述多
个共识组。
42.与现有技术相比,本技术包括以下优点:
43.本技术实施例提供的一种泛在环境下的数字对象访问事务存证方法,通过将多个数字对象划分为多个共识组,每个共识组维护一条由若干个事务区块组成的区块链,在任一事务区块生成第一新增事务区块的情况下,在当前共识组完成对第一新增事务区块的共识后,通过邻接区块哈希指针集,将第一新增事务区块的块头分别广播至所有邻接共识组,使得邻接共识组实现对第一新增事务区块的见证。本技术实施例通过在每个事务区块内增加邻接区块哈希指针集,使得相邻共识组之间也能通过邻接区块哈希指针相互连接,由于事务区块的块头的防篡改能力由全网所有的哈希指针保证,因此,任何一个事务区块内容被篡改,除了导致共识组内的哈希指针验证失败,还会导致邻接共识组中的邻接区块哈希指针的验证失败,本技术实施例在共识组内基于链式结构保障事务的可信的基础上,共识组间传播事务区块的块头形成事务区块网,可以在不影响事务存证效率的基础上,极大地增加事务记录的篡改难度,满足泛在环境下的数字对象访问事务的可信存证需求。
附图说明
44.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1是本技术一实施例中一种泛在环境下的数字对象访问事务存证方法的步骤流程图。
46.图2是本技术一实施例中事务区块的结构示意图。
47.图3是本技术一实施例中梅克尔树的结构示意图。
48.图4是本技术一实施例中事务区块网的示意图。
49.图5是本技术一实施例中事务区块扩散示意图。
50.图6是本技术一实施例中pbft共识算法示意图。
51.图7是本技术一实施例中泰森多边形的示意图。
52.图8是本技术一实施例中delaunay三角剖分示意图。
53.图9是本技术一实施例中泛在环境下的数字对象访问事务存证装置的功能模块示意图。
54.附图标记:900-泛在环境下的数字对象访问事务存证装置;901-共识组划分模块;902-存证模块。
具体实施方式
55.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
56.为便于进一步理解本技术的相关术语以及背景技术,下面首先对泛在环境下的数
字对象进行介绍。
57.随着软硬件技术的发展,越来越多的“智能”设备分布在现实世界中,智能设备是指具有计算处理能力的终端设备。智能设备的普及也意味着计算成为一种泛在的资源融入物理系统和人类社会中。通过计算资源,人类社会、物理系统和信息系统可以便捷地进行交互、协同,而计算资源的泛在化也意味着人类社会、物理系统和信息系统的结合越来越紧密,其边界也越来越模糊。本技术所提的泛在环境即是指计算资源泛在化而产生的一种不同于互联网的新型环境。
58.在泛在环境下,海量泛在的智能设备时时刻刻都在产生海量的数据。在互联网环境下,数字对象以文档、库表等静态数据为主,其数字对象实体为这些资源的实际字节序列,通常不会产生频繁的变化,比如目前最广泛的数字对象应用doi(digital object unique identifier,数字对象唯一标识符),其为已发表的论文分配唯一的标识并将其看做是数字对象。而泛在环境下的数字对象实体通常由智能设备实时感知、产生,其值会随着现实世界的改变而实时变化。以泛在环境下的净化器数字对象为例,该数字对象代表着一台净化器实体,其标识仍然是由标识解析系统分配的全局唯一的字符序列,其元数据为描述该净化器的键值对,包括:产品名称、生产日期、生产厂家、序列号等,标识和元数据均和互联网中的论文数字对象没有本质区别。但净化器数字对象的实体则是净化器的数字表征,代表着净化器中多个传感器的实时状态,包括:空气质量、湿度、风扇转数等,其值会实时变化,因而无法像论文数字对象一样直接将某一时刻的快照以字节形式序列化在数字对象实体当中。净化器的数字对象实体中通常存储净化器传感器的数据接口,在访问数字对象时通过数据接口获取实时数据并返回。泛在环境和互联网环境在数字对象实体上的差异使得终端、边缘设备更适合作为数字对象仓库的载体,提供数字对象的访问服务。
59.泛在环境下数字对象由其所在的终端、边缘仓库提供访问服务,相应的访问事务也产生于终端、边缘数字对象仓库。在doa中,访问事务作为事后追溯数字对象操作行为的唯一凭据,能够还原数字对象的历史操作记录,提供数据的审计服务、保障数据的相关权益。因此,数字对象的访问事务需要被安全、可靠地记录、存证。
60.区块链作为一个去中心化环境下的数据可信存证技术,可以保障数字对象访问事务记录的可信。然而泛在环境下海量的数字对象时时刻刻都在产生访问事务,而终端设备稳定性不足且存储能力有限,再加上区块链技术本身的吞吐量瓶颈,导致传统的区块链技术难以直接应用于泛在环境。
61.区块链系统本质上是一个分布式的数据库,其中存储的是系统中产生的一条条交易(transaction),也即事务。通过将事务备份在多个节点中,保证事务的完整性;通过事务之间的哈希指针,保证事务之间顺序以及增强事务的防篡改能力;通过共识算法,保证事务的合法性。基于区块链技术存证泛在环境下数字对象访问事务,既可以通过节点之间的多备份保证访问事务的完整性,又可以通过数据之间的哈希(hash)指针保证访问事务的安全性。
62.在传统的区块链系统中,全网所有节点属于同一个共识组,系统只能串行地存证事务,导致系统的吞吐量无法有效提升。虽然利用区块链技术中的分片技术可以节点划分为多个共识组,每个共识组独立并行地产块,以提高区块链系统整体的吞吐量。
63.然而,传统分片技术中,每个分片维护一条独立的区块链,区块的安全性完全由共
识组内的节点保证,仅需在共识组内控制一定数量的节点,即可阻止节点在共识组内该达成共识,甚至任意修改节点内的历史数据,因而数据的防篡改性较差,同时泛在环境下作为数字对象仓库的终端、边缘设备空间上分布随机,在时间上行为动态,因此,传统分片技术难以满足泛在环境下数字对象访问事务的可信存证需求。
64.为了解决上述背景技术中存在的问题,本技术旨在提供一种泛在环境下的数字对象访问事务存证方法,通过在每个事务区块内增加邻接区块哈希指针集,使得相邻共识组之间也能通过邻接区块哈希指针相互连接,使得任何一个事务区块内容被篡改,除了导致共识组内的哈希指针验证失败,还会导致邻接共识组中的邻接区块哈希指针的验证失败,极大地增加事务记录的篡改难度,满足泛在环境下数字对象访问事务的可信存证需求。
65.参照图1,示出了本技术一种泛在环境下的数字对象访问事务存证方法,该方法具体可以包括以下步骤:
66.s101:对多个数字对象进行划分,得到多个共识组;每个共识组为由若干个事务区块组成的区块链;其中,不同的事务区块对应不同的数字对象,事务区块包括邻接区块哈希指针集,邻接区块哈希指针集包括若干个邻接区块哈希指针,不同的邻接区块哈希指针指向不同的邻接共识组。
67.在本实施方式中,参照图2,示出了事务区块的结构示意图,每个事务区块分为块头(block header)和块体(block body)两部分,其中块体由当前事务区块中打包的事务集合构成,事务集合以顺序表的形式有序的存储在块体当中。块头则包括以下几个部分:
68.前序区块哈希指针(prev hash):用于指向事务区块在当前共识组内的前序区块的哈希值,通过前序区块哈希指针的前后指向关系,进而使每个共识组中的事务区块可以按序排列构成对应的区块链。在具体实现中,可以基于md5(md5 message-digest algorithm,md5信息摘要算法)计算的当前共识组内尾部区块的块头hash值,需要说明的是,共识组的尾部区块表示该共识组内最新产生的事务区块,而在尾部区块之前产生的事务区块即为该尾部区块的前序区块。
69.属性(attributes):包括产块时间、产块节点、产块地理位置信息等用于描述该事务区块的元数据。
70.梅克尔树根(merkle root):块体中有序的事务集合按照梅克尔树的构建算法计算得出的梅克尔树根的hash值。具体而言,参照图3,示出了梅克尔树的结构示意图,梅克尔树又称散列树,梅克尔树分为二叉树和交易序列两部分,交易序列作为整个梅克尔树的叶子节点,与二叉树部分的叶子节点一一对应,在本实施方式中,交易序列则用于存储数字对象的事务信息。二叉树部分,叶子节点的值取数字对象的事务信息对应的哈希值,并基于叶子节点的哈希值依次计算上层父节点的哈希值,直到得到梅克尔树根的哈希值。梅克尔树的特性在于,对底层节点的任意改动,都将传递到父节点,一直到树根,而且很容易定位发生变化的叶节点,因此特别适用于数据存在性和完整性的快速、有效、安全的验证。梅克尔树的使用增大了数据的篡改难度,可实现对数字对象的事务的有效记录。
71.邻接区块哈希指针集(adjacent hashes):包括若干个邻接区块哈希指针,不同的邻接区块哈希指针指向不同的邻接共识组中的当前尾部区块,用于记录事务区块产块时所有邻接共识组的当前尾部区块的块头的hash值。
72.在本实施方式中,基于前序区块哈希指针和邻接区块哈希指针集,事务区块会有
两类指针分别指向当前共识组内的尾部区块以及邻接共识组内的尾部区块,进而在形式上构成一个如图4所示的事务区块网。
73.s102:在任一事务区块生成第一新增事务区块的情况下,在当前共识组完成对第一新增事务区块的共识后,基于邻接区块哈希指针集,将第一新增事务区块的块头分别广播至所有邻接共识组,以使邻接共识组存储第一新增事务区块的块头,其中,当前共识组为生成第一新增事务区块的事务区块所在的共识组。
74.在本实施方式中,当任一事务区块中所存储的交易数量达到交易阈值之后,该事务区块将会对缓存的事务打包形成一个新的事务区块,即第一新增事务区块。
75.在本实施方式中,当事务区块生成第一新增事务区块,即开始当前共识组内对第一新增事务区块的共识,在具体实现中,可以采用pbft算法(practical byzantine fault tolerance,实用拜占庭容错算法)作为共识组内的区块共识算法。在当前共识组完成对第一新增事务区块的共识后,当前共识组还会将该第一新增事务区块的块头分别广播至所有邻接共识组。需要说明的是,块头相当于事务区块的摘要信息,可以用来验证事务区块本身的完整性、正确性。
76.在本实施方式中,第一新增事务区块的块头hash即为事务区块的摘要信息,可用于验证区块的正确性,对于存储有第一新增事务区块的块头的邻接共识组而言,邻接共识组会将传入的第一新增事务区块的块头hash放入下一轮所产事务区块头的adjacent hashes字段,并在产块后再一次广播至二阶邻接共识组,即邻接共识组的邻接共识组。从而随着时间的推移,事务区块摘要所在共识组数量会随着时间的增加指数级增长,其篡改难度也会相应地指数级增长。
77.示例性的,参照图5,示出了事务区块扩散示意图。假设采用pbft算法作为共识组内的区块共识算法,同时每个共识组内的事务区块的产块周期相同,t0时刻产生的事务区块block0最初仅存在于产块共识组内,此时修改block0仅需攻击该共识组,控制该共识组内超过2/3个节点即可。而在t1时刻,block0的块头会被传播至所有的邻接共识组,并被该共识组内t1时刻所产事务区块中的adjacent hashes所指向,此时再修改block0则不仅需要修改block0本身,还需要修改其邻接共识组所产生的事务区块block1。而在t2时刻block1的块头hash会被进一步纳入更多的共识组所产事务区块的adjacent hashes中,对block0的篡改难度将进一步增大。假设每个共识组其邻接共识组平均数量为6,对于产生在第n个周期的区块,经过k个周期之后,其安全性将会增长6k倍。
78.本技术实施例提供的泛在环境下的数字对象访问事务存证方法,通过在每个事务区块内增加邻接区块哈希指针集,使得相邻共识组之间也能通过邻接区块哈希指针相互连接,由于事务区块的块头的防篡改能力全网所有的哈希指针保证,因此,任何一个事务区块内容被篡改,除了导致共识组内的哈希指针验证失败,还会导致邻接共识组中的邻接区块哈希指针的验证失败,本技术实施例在共识组内基于链式结构保障事务的可信的基础上,共识组间传播事务区块的块头形成事务区块网,可以在不影响事务存证效率的基础上,指数级地增加事务记录的篡改难度,支撑泛在环境下海量数字对象访问事务的高效、可信存证。
79.在一个可行的实施方式中,考虑到泛在环境下节点受限的计算资源,将采用计算开销较小的pbft算法作为共识组内的区块共识算法,基于pbft算法,s102中在当前共识组
内对第一新增事务区块进行共识的步骤,具体可以包括以下子步骤:
80.s102-1:将生成第一新增事务区块的事务区块作为主节点,主节点基于前序区块哈希指针,将针对第一新增事务区块的预准备消息广播至从节点;从节点为当前共识组中除主节点外的其他多个节点。
81.在本实施方式中,参照图6,示出了pbft共识算法示意图。在一个组内节点数量为n的共识组中,假设恶意节点数量f<n/3,基于pbft的共识算法共分为三个阶段:预准备阶段(pre-prepare)、准备阶段(prepare)和提交阶段(commit)。
82.在预准备阶段,主节点分给收到的消息分配一个序号n,然后向所有从节点群发预准备消息,预准备消息的格式为《《pre-prepare,v,n,d》,m》,其中v是视图编号,m是消息内容,d是消息内容m的摘要。从《pre-prepare,v,n,d》可以看出,消息内容本身(m)是不包含在预准备的消息里面的,这样就能使预准备消息足够小。预准备消息的目的是作为一种证明,确定该请求是在视图v中被赋予了序号n,从而在视图变更的过程中可以追索,需要说明的是,视图view是指,在一个视图里,一个是主节点,其余的都叫备份节点,本实施方式用从节点表示备份节点。
83.s102-2:针对任一从节点,在从节点接收到预准备消息并对预准备消息验证成功后,由从节点将准备信息广播至当前共识组中除从节点外的其他多个节点。
84.在本实施方式中,从节点接收到预准备消息《《pre-prepare,v,n,d》,m》,需要进行以下校验:请求和预准备消息的签名正确,并且d与m的摘要一致;当前视图编号是v;该从节点从未在视图v中接受过序号为n但是摘要d不同的消息m;m的消息摘要与消息中d是否一致;预准备消息的序号n必须在水线上下限h和h之间。
85.需要说明的是,水线存在的意义在于防止一个失效节点使用一个很大的序号消耗序号空间。
86.在本实施方式中,如果从节点对预准备消息验证成功后,则进入准备阶段。在准备阶段,当前从节点向组内其他节点广播一条准备消息《prepare,v,n,d,i》,并且将预准备消息和准备消息写入自己的消息日志,其中,i是当前从节点编号。如果当前从节点未对预准备消息验证成功,则不进行后续操作。
87.s102-3:每当当前共识组中存在一个节点累计接收并验证成功的准备信息的数量超过第一预设数量时,则该节点将确认信息广播至当前共识组中除该节点外的其他节点。
88.在本实施方式中,当主节点和从节点收到准备消息《prepare,v,n,d,i》后,需要进行以下校验:消息签名是否正确;判断n是否在区间[h,h]内;d是否和当前已收到pre-pprepare中的d相同。如果验证不通过,则丢弃准备消息,否则接受准备消息。
[0089]
需要说明的是,在pbft算法中,第一预设数量可以设置为2f,其中f为恶意节点的数量。prepare准备阶段完成的条件可以设置为:每当一个节点i将(m,v,n,i)写入消息日志,且从2f个不同节点收到的与预准备消息一致的准备消息。满足这两个条件后进入提交阶段。
[0090]
需要说明的是,对于进入提交阶段的节点而言,该节点将向组内其他节点广播一条确认信息《commit,v,n,d,i》,其他节点收到《commit,v,n,d,i》消息,需要进行以下校验:commit消息签名是否正确;当前从节点是否已经收到了同一视图v下的n;计算m的摘要,并判断和d是否一致;n是否在区间[h,h]内。如果验证不通过,则丢弃确认信息,否则接受确认
信息。
[0091]
s102-4:当当前共识组中存在一个节点累计接收并验证成功的确认信息的数量达到第二预设数量时,则确定当前共识组对第一新增事务区块达成共识,其中,第二预设数量大于第一预设数量。
[0092]
在本实施方式中,由于bft算法(byzantine fault tolerance,拜占庭容错算法)能够容纳将近n/3个错误节点的误差,因此,第二预设数量设置为2f 1即可保证组内保证一致性问题的解决,保障当前共识组的事务区块所存储的事务信息的可信。
[0093]
需要说明的是,提交阶段完成的条件是:当前节点接收并验证成功的确认信息的数量达到第二预设数量。当提交阶段完成,则认为当前共识组内其他节点已经对第一新增事务区块达成了共识,此时节点存储该区块,并将第一新增事务区块作为当前共识组对应的区块链的尾部区块。
[0094]
在一个例子中,继续参照图6,假设n=4,f=1,即当前共识组内有四个节点(主节点、node1、node2、node3),其中node3是恶意节点或坏节点。则当前共识组内区块共识包括以下步骤:
[0095]
pre-prepare(预准备阶段):生成新增事务区块的主节点将预准备消息广播至node1、node2和node3。
[0096]
prepare(准备阶段):node1、node2和node3收到预准备消息后,再次向其他节点广播准备消息,具体的,node1广播至主节点、node2和node3;node2广播至主节点、node1和node3;node3因为宕机无法广播。
[0097]
commit(提交阶段):主节点、node1和node2会在上一个阶段分别收到三个准备阶段,均超过了2(2f)的数量,于是主节点、node1和node2会分别广播确认消息;此时如果一个节点(主节点、node1和node2中任意一个)收到3(2f 1)条确认消息,则完成当前共识组内新增事务区块的共识。
[0098]
在一个可行的实施方式中,s102之后,泛在环境下的数字对象访问事务存证方法具体还可以包括以下步骤:
[0099]
s103:在任一邻接共识组中的事务区块生成第二新增事务区块的情况下,将第一新增事务区块的块头加入第二新增事务区块的邻接区块哈希指针集中,并在邻接共识组内完成对第二新增事务区块的共识。
[0100]
需要说明的是,针对任一共识组,均会基于邻接区块哈希指针集构建的事务区块网,收集从邻接共识组广播而来的新增事务区块的块头信息,也即记录每个共识组的当前尾部区块的块头信息。
[0101]
在本实施方式中,将以生成第二新增事务区块的邻接共识组作为当前邻接共识组,并站在当前邻接共识组的角度来说明第一新增事务区块的块头的传播过程。
[0102]
具体而言,由于在当前邻接共识组生成第二新增事务区块之前,便已经记录有其他共识组的当前尾部区块的块头信息,其他共识组的当前尾部区块的块头信息将可能不止包括当前共识组生成的第一新增事务区块的块头信息,还可能包括其他共识组生成的新增事务区块的块头信息。因此,当当前邻接共识组中的事务区块生成第二新增事务区块时,便可以将包括第一新增事务区块的块头信息在内的其他共识组的当前尾部区块的块头信息同时写入第二新增事务区块的adjacent hashes字段,并在当前邻接共识组内完成对第二
新增事务区块的共识。
[0103]
需要说明的是,第二新增事务区块在当前邻接共识组中的共识过程可参照s102-1-s102-4所示的共识算法,本实施方式不在赘述。
[0104]
s104:在邻接共识组内完成对第二新增事务区块的共识之后,将第二新增事务区块的块头分别广播至邻接共识组的所有邻接共识组。
[0105]
在本实施方式中,则当第二新增事务区块生成时,会将第一新增事务区块的块头hash写入第二新增事务区块的adjacent hashes字段中,进而在第二新增事务区块的块头生成由第二新增事务区块指向第一新增事务区块的邻接区块哈希指针。若第二新增事务区块生成前,还存储有除第一新增事务区块以外的其他共识组中生成的新增事务区块,则同样会生成对应的邻接区块哈希指针,进而形成第二新增事务区块的邻接区块哈希指针集。
[0106]
在本实施方式中,将邻接共识组的所有邻接共识组定义为二阶邻接共识组。则当二阶邻接共识组生成第三新增事务区块时,同样也会将包含第一新增事务区块的块头信息的第二新增事务区块的块头hash写入第三新增事务区块,在第三新增事务区块形成由第三新增事务区块指向第二新增事务区块的邻接区块哈希指针。如此,存储有第一新增事务区块的块头hash的共识组数量会随着时间的增加指数级增长,其篡改难度也会相应地指数级增长。
[0107]
在一个可行的实施方式中,s101具体可以包括以下步骤:
[0108]
s101-1:基于多个数字对象的位置信息,将多个数字对象映射到二维平面上,得到多个节点;其中,不同的节点对应不同的数字对象。
[0109]
在本实施方式中,将所有数字对象映射到一个二维平面上,可以在二维平面上得到多个节点,不同的节点表征不同的数字对象。
[0110]
在本实施方式中,多个数字对象的位置信息可以是经纬度信息,在泛在环境下,数字对象以分布在现实世界中的终端节点为主,天然的具有经纬度信息。在具体实现中,可以通过全球定位系统gps自动获取数字对象的经纬度信息,也可以手动设置仓库节点的经纬度属性。
[0111]
s101-2:基于多个节点,通过delaunay三角剖分算法,将二维平面划分为若干个多边形,以得到由若干个多边形构成的泰森多边形。
[0112]
参照图7,示出了泰森多边形的示意图。需要说明的是,泰森多边形,又称voronoi图,是一个经典的几何图形,voronoi图根据给定的节点,可以将一个二维平面划分为若干个多边形。为便于描述,以下用voronoi单元格表示一个多边形。
[0113]
在本实施方式中,以voronoi图划分共识组,将属于同一个voronoi单元格的节点划分在同一个共识组内。voronoi图具有许多优秀特征,具体到终端、边缘仓库节点的共识组构建方面,有如下特点:
[0114]
全覆盖:生成的voronoi单元格不重不漏地完整覆盖整个二维平面。因此任何映射在二维平面上的所有数字对象对应的节点,均会属于且唯一属于某一个共识组。
[0115]
唯一性:给定平面上的节点,所生成的voronoi图唯一,无论从哪个voronoi点开始构建,最终得到的voronoi图都是相同的。因此,终端、边缘仓库节点可以在没有中心节点的情况下分布式、自组织地构建共识组。
[0116]
局部性:对于某个局部voronoi单元格的构建和修改,仅会对邻接的voronoi单元
格的形状造成影响。因此,voronoi图可以分布式的存储于每个终端、边缘节点中,节点仅需要维护其临近共识组的信息,当共识组发生改变时仅需通知临近共识组。因而,不需要任何全局节点的干涉,共识组即可完成分布式、自治的伸缩。
[0117]
需要说明的是,常见的构造voronoi图的算法有:扫描线算法,分治算法,增量法等。但利用delaunay三角剖分算法构建voronoi图是其中最为高效的做法。在本实施方式中,将采用delaunay三角剖分算法构建voronoi图,基于delaunay三角剖分算法,s101-2具体可以包括以下步骤:
[0118]
s101-2-1:将节点集合中具有固定位置信息的n个节点确定为n个核节点。
[0119]
需要说明的是,继续参照图7,示出了voronoi图的示意图,通过delaunay三角剖分算法构建的voronoi图中有两类节点:一类是核节点,如图7中的三角形所示,核节点每个单元格中有且仅有一个,一般为地理位置不会频繁发生变化的固定节点,如基站、摄像头、路由器等具有固定位置信息而不会频繁发生变化的节点。
[0120]
s101-2-2:基于n个核节点,通过delaunay三角剖分算法,对二维平面进行划分,生成delaunay三角剖分图。
[0121]
需要说明的是,如图8所示,示出了delaunay三角剖分示意图,delaunay三角剖分图是voronoi图的对偶图,连接voronoi图中每个邻接单元格的核节点即可唯一的得到一个delaunay三角剖分,相应的,对delaunay三角剖分图中的每一条边做一条垂直平分线,取每个垂直平分线以及其交点作为多边形的边和点,即可得到一个voronoi图。
[0122]
s101-2-3:基于delaunay三角剖分图,得到泰森多边形。
[0123]
在本实施方式中,基于voronoi图和delaunay三角剖分图的对偶关系,存储delaunay三角剖分图即代表存储了voronoi图。进而可以用分布式的方式将整个delaunay三角剖分图分别保存在每个核节点中,如此,后续数字对象的状态发生改变时,仅需对其所在共识组中的核节点存储的信息进行更新即可。
[0124]
s101-3:将属于同一个多边形的节点划分在同一个共识组中,并将每个共识组中的节点作为事务区块,构建每个共识组各自对应的区块链,以得到多个共识组。
[0125]
在本实施方式中,将整个voronoi图分布式地保存在节点中,根据泰森多边形的特性,某个节点的动态变化仅会影响临近的常数个voronoi单元格,因此能够以较小的开销,实现共识组内动态节点的自适应调整,使得分片区块链技术能够有效运用到泛在环境下,并发挥其优势,进而满足海量数字对象的访问事务存证需求。
[0126]
需要说明的是,采用分片区块链技术的整体吞吐量t
sum
由两部分决定:共识组内吞吐量t
shard
以及共识组数量t
sum
。当全网节点总量为n,共识组内平均节点数量为m
shard
时,系统吞吐量描述如下:
[0127][0128]
在本实施方式中,由于在节点加入共识组时可以动态的扩容共识组的数量,因此可以保证组内节点数量m
shard
为常数级别。此外,每个共识组仅向邻接共识组广播新增事务区块的块头信息,且根据voronoi图特性,每个共识组其邻接共识组平均数量为6,共识组间区块见证的网络开销较小,不会对系统的吞吐量造成影响;而共识组内区块共识的网络开销主要为pbft算法的开销,当节点数量较少时pbft算法可以很快的达成共识,但当节点数
量增加时pbft算法效率将会下降,由于在本实施方式中共识组内节点数量可以维持在较小的恒定水平,另一方面共识组内节点物理距离、网络距离均较为邻近,pbft算法不会遇到明显的网络瓶颈,因此,共识组内区块共识的网络开销可以维持在较低水平。
[0129]
总体而言,本技术实施例提供的泛在环境下的数字对象访问事务存证方法,不仅共识组内基于链式结构和实用拜占庭容错算法pbft保障事务的可信,同时随着时间的推移,组间传播事务区块摘要形成事务区块网,在不影响事务存证效率以及较小的网络开销的基础上,指数级增加事务记录的篡改难度,充分满足泛在环境下数字对象访问事务的可信存证需求。
[0130]
第二方面,参照图9,示出了本技术实施例提供了泛在环境下的数字对象访问事务存证装置900,该泛在环境下的数字对象访问事务存证装置900包括:
[0131]
共识组划分模块901,用于对多个数字对象进行划分,得到多个共识组;每个共识组为由若干个事务区块组成的区块链;其中,不同的事务区块对应不同的数字对象,事务区块包括邻接区块哈希指针集,邻接区块哈希指针集包括若干个邻接区块哈希指针,不同的邻接区块哈希指针指向不同的邻接共识组;
[0132]
存证模块902,用于在任一事务区块生成第一新增事务区块的情况下,在当前共识组完成对第一新增事务区块的共识后,基于邻接区块哈希指针集,将第一新增事务区块的块头分别广播至所有邻接共识组,以使邻接共识组存储第一新增事务区块的块头,其中,当前共识组为生成第一新增事务区块的事务区块所在的共识组。
[0133]
在本技术一实施例中,事务区块还包括前序区块哈希指针,前序区块哈希指针指向事务区块的前序区块;该泛在环境下的数字对象访问事务存证装置900还包括:
[0134]
共识模块,用于基于事务区块的前序区块哈希指针,在当前共识组内对第一新增事务区块进行共识。
[0135]
在本技术一实施例中,共识模块包括:
[0136]
预准备消息广播子模块,用于将生成第一新增事务区块的事务区块作为主节点,主节点基于前序区块哈希指针,将针对第一新增事务区块的预准备消息广播至从节点;从节点为当前共识组中除主节点外的其他多个节点;
[0137]
准备信息广播子模块,用于针对任一从节点,在从节点接收到预准备消息并对预准备消息验证成功后,由从节点将准备信息广播至当前共识组中除从节点外的其他多个节点;
[0138]
确定子模块,用于当当前共识组中存在一个节点累计接收并验证成功的确认信息的数量达到第二预设数量时,则确定当前共识组对第一新增事务区块达成共识,其中,第二预设数量大于第一预设数量。
[0139]
在本技术一实施例中,该泛在环境下的数字对象访问事务存证装置900还包括:
[0140]
块头加入模块,用于在任一邻接共识组中的事务区块生成第二新增事务区块的情况下,将第一新增事务区块的块头加入第二新增事务区块的邻接区块哈希指针集中,并在邻接共识组内完成对第二新增事务区块的共识;
[0141]
广播模块,用于在邻接共识组内完成对第二新增事务区块的共识之后,将第二新增事务区块的块头分别广播至邻接共识组的所有邻接共识组。
[0142]
在本技术一实施例中,共识组划分模块901包括:
[0143]
映射子模块,用于基于多个数字对象的位置信息,将多个数字对象映射到二维平面上,得到多个节点;其中,不同的节点对应不同的数字对象;
[0144]
泰森多边形构建子模块,用于基于多个节点,通过delaunay三角剖分算法,将二维平面划分为若干个多边形,以得到由若干个多边形构成的泰森多边形;
[0145]
共识组划分子模块,用于将属于同一个多边形的节点划分在同一个共识组中,并将每个共识组中的节点作为事务区块,构建每个共识组各自对应的区块链,以得到多个共识组。
[0146]
需要说明的是,本技术实施例的泛在环境下的数字对象访问事务存证装置900的具体实施方式参照前述本技术实施例第一方面提出的泛在环境下的数字对象访问事务存证方法的具体实施方式,在此不再赘述。
[0147]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0148]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0149]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0150]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0151]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0152]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要
素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0153]
以上对本发明所提供的一种泛在环境下的数字对象访问事务存证方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献