CN115221558B - 一种面向多主体科技资源的数字对象高效存证方法和系统 - Google Patents
一种面向多主体科技资源的数字对象高效存证方法和系统 Download PDFInfo
- Publication number
- CN115221558B CN115221558B CN202210905039.2A CN202210905039A CN115221558B CN 115221558 B CN115221558 B CN 115221558B CN 202210905039 A CN202210905039 A CN 202210905039A CN 115221558 B CN115221558 B CN 115221558B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- digital object
- consensus
- record
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向多主体科技资源的数字对象高效存证方法和系统,方法包括:根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
Description
技术领域
本发明实施例涉及计算机领域,尤其涉及一种面向多主体科技资源的数字对象高效存证方法及装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
数字对象架构(Digital Object Architecture,DOA)是一种以数据为中心的软件体系架构,其基本元素是数字对象(Digital Object,DO)。数字对象可以对互联网上的数据资源的统一抽象,将互联网上的数据资源统一抽象为数字对象并建模为实体、元数据和状态信息三个部分并分配唯一的数字对象标识。科技资源是从事科技活动的人力、物力、财力以及组织、管理、信息等软、硬件要素的总称,随着技术的发展多个主体间科技资源共享使用成为趋势。通过对多主体科技资源进行统一抽象并建模为数字对象,可以为多主体科技资源的互联互通提供基础,应用程序可以通过标准的协议,对从属不同主体的数字对象进行访问、解析和搜索,便于催生出更多的新应用。
多主体科技资源共享的场景要求能够高效处理数据,如何提高多主体科技资源环境下对数字对象存证的效率成为了亟待解决的技术问题。
发明内容
本发明实施例提供一种面向多主体科技资源的数字对象高效存证方法及装置、电子设备、计算机可读存储介质及计算机程序产品,以解决相关技术中,多主体科技资源环境下对数字对象存证的效率较差的问题。
第一方面,本发明实施例提供了一种面向多主体科技资源的数字对象高效存证方法,该方法包括:
根据用户的输入操作生成数字对象的变化记录,并将所述变化记录放入缓冲池中;所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象;
根据所述缓冲池中的变化记录生成待共识区块;
向节点网络中的各个节点广播所述待共识区块的区块头;
生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系;
基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体。
在一种可选实施方式中,所述向节点网络中的各个节点广播所述待共识区块的区块头,包括:
由所述节点网络中的主节点对所述区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中所述待共识区块的节点;
由所述主节点根据所述签名数据、所述待共识区块的序号和所述待共识区块的区块哈希生成提案消息;
由所述主节点向节点网络中的所有节点广播所述提案消息,以使得所述节点网络中的节点在接收到所述提案消息后,根据所述主节点的公钥对所述签名数据进行验证,并在验证通过后进入预备区块阶段。
在一种可选实施方式中,所述生成所述节点网络对应的树状传播图,包括:
由所述主节点和进入预备区块阶段的节点,获取所述节点网络的节点信息表,以及所述节点网络中的主节点的编号;
由所述主节点和进入预备区块阶段的节点,基于所述节点信息表和所述主节点的编号生成树状传播图。
在一种可选实施方式中,所述基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体,包括:
由所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
在一种可选实施方式中,所述方法还包括:
当进入预备区块阶段的节点在预设时间内未接收到所述待共识区块的区块体时,由进入预备区块阶段的节点向所述主节点发送预备区块请求;
所述主节点在接收到所述预备区块请求的情况下,向进入预备区块阶段的节点发送所述待共识区块的区块体。
第二方面,本发明实施例提供了一种面向多主体科技资源的数字对象高效存证系统,该系统包括:
数字对象存证模块,用于根据用户的输入操作生成数字对象的变化记录,并将所述变化记录放入缓冲池中;所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象;
区块生成与验证模块,用于根据所述缓冲池中的变化记录生成待共识区块;
区块共识模块,用于向节点网络中的各个节点广播所述待共识区块的区块头;生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系;基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体。
在一种可选实施方式中,所述区块共识模块包括:
签名子模块,用于使所述节点网络中的主节点对所述区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中所述待共识区块的节点;
提案消息子模块,用于使所述主节点根据所述签名数据、所述待共识区块的序号和所述待共识区块的区块哈希生成提案消息;
验证子模块,用于使所述主节点向节点网络中的所有节点广播所述提案消息,以使得所述节点网络中的节点在接收到所述提案消息后,根据所述主节点的公钥对所述签名数据进行验证,并在验证通过后进入预备区块阶段。
在一种可选实施方式中,所述区块共识模块包括:
获取子模块,用于使所述主节点和进入预备区块阶段的节点,获取所述节点网络的节点信息表,以及所述节点网络中的主节点的编号;
传播图子模块,用于使所述主节点和进入预备区块阶段的节点,基于所述节点信息表和所述主节点的编号生成树状传播图。
在一种可选实施方式中,所述区块共识模块包括:
区块体传播子模块,用于使所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
在一种可选实施方式中,所述区块共识模块包括:
请求发送子模块,用于当进入预备区块阶段的节点在预设时间内未接收到所述待共识区块的区块体时,使进入预备区块阶段的节点向所述主节点发送预备区块请求;
请求接收子模块,用于使所述主节点在接收到所述预备区块请求的情况下,向进入预备区块阶段的节点发送所述待共识区块的区块体。
在本发明实施例中,根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。同时还通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,缩短了区块共识阶段的耗时,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例提供的一种数字对象使用示意图;
图2是本发明实施例提供的一种数字对象体系结构的整体架构示意图;
图3是本发明实施例提供的一种场景示意图;
图4是本发明实施例提供的一种系统用例示意图;
图5是本发明实施例提供的一种存证流程示意图;
图6是本发明实施例提供的一种面向多主体科技资源的数字对象高效存证方法的步骤流程图;
图7是本发明实施例提供的一种数字对象存证流程图;
图8是本发明实施例提供的一种区块结构图;
图9是本发明实施例提供的一种状态树示意图;
图10是本发明实施例提供的一种查验流程示意图;
图11是本发明实施例提供的一种普通区块的生成方式示意图;
图12是本发明实施例提供的一种记录树根生成方式示意图;
图13是本发明实施例提供的一种变化记录处理流程示意图;
图14是本发明实施例提供的一种新增算法示意图;
图15是本发明实施例提供的一种更新算法示意图;
图16是本发明实施例提供的一种注销方式示意图;
图17是本发明实施例提供的一种状态树更新示意图;
图18是本发明实施例提供的一种优化算法原理示意图;
图19是本发明实施例提供的一种共识算法流程示意图;
图20是本发明实施例提供的另一种共识算法流程示意图;
图21是本发明实施例提供的一种提案阶段主节点流程示意图;
图22是本发明实施例提供的一种超时机制示意图;
图23是本发明实施例提供的一种预备区块阶段传播示意图;
图24是本发明实施例提供的一种准备阶段流程图;
图25是本发明实施例提供的一种提交阶段流程图;
图26是本发明实施例提供的一种区块验证流程示意图;
图27是本发明实施例提供的另一种面向多主体科技资源的数字对象高效存证方法的步骤流程图;
图28是本发明实施例提供的一种资源抽象模型;
图29是本发明实施例提供的一种状态信息示意图;
图30是本发明实施例提供的一种数据实体示意图;
图31是本发明实施例提供的一种文件类型的资源封装示意图;
图32是本发明实施例提供的一种数据库类型的资源封装示意图;
图33是本发明实施例提供的一种API类型资源封装示意图;
图34是本发明实施例提供的一种多主体科技资源数字对象扩展示意图;
图35是本发明实施例提供的一种历史记录追溯流程图;
图36是本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统结构图;
图37是本发明实施例提供的一种数字对象存证模块架构示意图;
图38是本发明实施例提供的一种区块生成与验证模块架构示意图;
图39是本发明实施例提供的一种主要类的UML关系示意图;
图40是本发明实施例提供的一种区块共识模块示意图;
图41是本发明实施例提供的一种共识模块UML示意图;
图42是本发明实施例提供的一种数字对象查验模块示意图;
图43是本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统架构图;
图44是本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统的模块结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例需要说明的是,参照图1,图1示出了本发明实施例提供的一种数字对象使用示意图。使用数字对象(Digital Object,DO)来管理多主体科技资源可以屏蔽底层系统之间的异构性,为实现多主体科技资源的互联互通提供基础。数字对象由三个部分组成,包括元数据、状态信息、数据实体。传统数字对象主要面向互联网上的静态数据资源,如图片、视频。比如一个短视频的数字对象,其元数据包括短视频的名称、发布作者、发布平台等;状态信息包括短视频文件的哈希值,短视频文件存储的服务器位置等信息;实体是短视频的内容文件,如xxx.mp3,具有不易变化的特征。但多主体科技资源数字对象具有天然的动态变化的属性,例如科研仪器所抽象成的多主体科技资源数字对象会不断发生变化。如图1所示,可以将多种多主体科技资源数字对象(例如实验耗材、科研仪器等)通过HTTP、TCP、UDP、蓝牙等协议进行连接和访问,实现对这些多主体科技资源数字对象的共享。在科技资源共享应用场景下,不仅需要访问到数字对象的当前状态,且需要访问到数字对象的历史状态,比如对于科研仪器共享应用来说,除了要使用仪器当前的数据,还需要与历史数据进行对比分析,所以需要保存数字对象历史变化,满足后续的访问需求。其中,多主体科技资源是指对科技资源进行协作(比如仪器共用、数据共享)的场景中,涉及两个以上主体的情况,这里的主体通常是指独立运营的组织或机构。
传统的互联网应用是单一主体提供的,应用的数据在应用提供商指定的服务器上存储,通过集中化的管理方式对数据进行管理,传统的应用数据在单一主体内部流动,缺少数据互联互通的需求,信任问题不凸显。科技资源共享应用往往需要融合多主体下的科技资源,不同主体的多主体科技资源需要提供给其他需求方使用,由于不同主体之间存在不信任的问题,集中式的管理方式不适用于此场景,因为集中式的管理方式中存在管理方,管理方可能因为利益驱使,擅自修改数据,这给数据的可信造成了破坏,所以需要通过合理的方式对数字对象做可信存证,使得单一主体无法擅自修改数据,保证数据的可信。
参照图2,图2示出了本发明实施例提供的一种数字对象体系结构的整体架构示意图。包括一个数据模型、两个基础协议和三个核心系统,如图2所示。数据模型是数字对象模型,用标准化的方式对数据资源进行抽象和封装。数字对象包括三部分,为元数据、状态信息、数据实体。数字对象标识(Digital Object Identifier,DOI)用于标识数字对象,具有唯一性,同时DOI具有持久性,数字对象存储位置的改变、数字对象所有者的改变不会影响其DOI。数字对象接口协议(DOIP)和数字对象标识解析协议(IRP),构成了数字对象架构的两个基础协议,定义了数字对象的访问、解析、搜索行为的规范。
仓库系统(The Repository System)负责管理数字对象实体,注册表系统(TheRegistry System)负责管理数字对象元数据,标识/解析系统(The Identifier/Resolution System)负责管理数字对象标识,构成了数字对象架构的三个核心系统。
参照图3,图3示出了本发明实施例提供的一种场景示意图。如图3所示,在多主体科技资源环境的场景下,针对资源提供方多主体的特征,例如医疗仪器共享应用,需要融合医院、学校、公司主体下的多主体科技资源数字对象,融合不同主体之间的数据困难重重,因为数字对象的相关数据托管在应用提供者的服务器上,应用提供者拥有数字对象的管理权限,可以对已有数字对象进行修改,这造成不同主体之间对于彼此提供的数字对象存在质疑与不信任的问题,缺乏有效的方式证明数字对象的正确性和未被修改。
多主体科技资源环境下,数字对象具有时空属性,随着时间的变化,数字对象中的元数据、实体、状态信息均存在发生变化的可能性,导致数字对象发送变化,需要将数字对象变化记录通过高效的方式做存证,并且支持对数字对象的最新状态和历史变化记录进行查验。
使用区块链技术对多主体科技资源数字对象的变化记录做可信存证,设置存证委员会负责区块链权威节点的维护,通过拜占庭容错的共识算法让权威节点的数据达成同步,使得单一主体无法擅自修改已经在区块链上存证的数字对象变化记录,满足数字对象的新增、更新和注销记录的可信存证需求,并且变化记录可以在区块链上进行溯源、审计,用来提高数据的可信度,降低不同主体之间因为信任而产生的成本,为多主体科技资源数字对象的互联互通服务,便于催生更多应用。
参照图4,图4示出了本发明实施例提供的一种系统用例示意图,如图4所示,通过对应用场景进行分析,系统的用例分析如图4所示。在系统中,有三种角色,存证记录提供者,存证记录使用者和存证委员会,分别拥有不同的功能。
首先是存证记录提供者,系统会提供数字对象存证功能供存证记录提供者使用。存证的内容是数字对象的状态,状态的定义是数字对象序列化后的哈希值,哈希值可以代表数字对象的某一时刻状态。存证的功能包括存证数字对象的新增记录,即提交一个新创建的数字对象,将其在系统中进行存证;存证数字对象的更新记录,在多主体科技资源环境下,多主体科技资源数字对象会发生变化,存证记录提供者可以将数字对象的更新前后的状态变化提交到系统中进行存证;存证数字对象的注销记录,对于不再使用的数字对象,系统提供存证注销记录的功能,存证记录提供者可以将数字对象注销记录进行存证。
对于存证记录使用者,系统提供两方面的功能,分别是查验数字对象的最新状态和查验历史变化记录。当存证记录使用者出于数据可信的考虑,想对某一数字对象进行查验,那么他可以提交对某一数字对象最新状态的查验请求,系统会返回给使用者数字对象的最新状态和证明有效性的验证方式。同时存证记录使用者可以通过系统查询到某一数字对象在历史区块上的变化记录,进行历史状态变化的追溯。
存证委员会负责系统的运行和维护,由多个具有权威性的科技资源拥有方共同组成。区块链网络中的每个权威节点代表存证委员会的每个成员,权威节点处理来自存证记录提供者和使用者的请求,进行区块的生成与验证、区块的共识。
如图5所示,图5示出了本发明实施例提供的一种存证流程示意图,如图5所示,首先该场景有多主体的特征,每个主体内管理了若干多主体科技资源数字对象,因为每个主体对于其内部管理的数字对象具有直接管理权,所以每个主体对其他主体的数据缺乏信任,通过多个主体共同组建一个存证委员会,共同搭建一个区块链网络,存证委员会的每个成员都运行一个权威节点,负责进行区块共识,存证所有的数字对象历史变化记录,并维护权威节点上用于维护系统中所有数字对象的状态树。
存证记录提供者通过系统的接口将数字对象的新增、修改、注销记录提交到权威节点中,权威节点会收集这些记录,更新自己所维持的用于记录数字对象状态的状态树,将状态树根、区块号等信息打包成区块,交由区块共识模块,负责在多个权威节点之间进行区块的共识,其他权威节点会验证区块的合法性,并彼此交换意见,达成区块的共识,使得区块链网络中的多个节点维护相同的数字对象状态树。
图6示出了本发明实施例提供的一种面向多主体科技资源的数字对象高效存证方法的步骤流程图,如图6所示,该方法包括:
步骤101、根据用户的输入操作生成数字对象的变化记录,所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象。
可以向存证记录提供者提供数字对象新增、数字对象更新、数字对象注销的功能,通过数字对象存证模块将数字对象的新增、更新、注销记录提交到系统,交由系统对记录进行可信存证,并返回相应的存证结果。
在用户选择存证数字对象新增记录的情况下,接收所述用户输入的数字对象标识和数字对象的初始化状态信息,根据所述数字对象标识和所述初始化状态信息生成数字对象新增记录;在用户选择存证数字对象更新记录的情况下,接收所述用户输入的数字对象的数字对象标识和所述数字对象的更新后的状态信息,根据所述数字对象标识和所述更新后的状态信息生成数字对象更新记录;在用户选择存证数字对象注销记录的情况下,接收所述用户输入的数字对象的数字对象标识,根据所述数字对象标识生成数字对象注销记录。
具体地,参照图7,图7示出了本发明实施例提供的一种数字对象存证流程图,如图7所示,用户首先进行功能的选择,如果选择存证数字对象新增记录,需要输入数字对象标识(DOI),输入数字对象的初始化状态信息;如果选择存证数字对象更新记录,需要输入DOI和该DOI对应的数字对象的更新后的状态信息;如果选择存证数字对象注销记录,需要输入DOI。
此外,在接收到用户提交的数字对象变化记录之后,还可以进入数据签名环节,对用户提交的数据进行相应的序列化,利用签名算法对数据进行签名。然后通过网络模块将信息发送到区块链节点中。
在本发明实施例中,区块链节点接收到变化记录的数据后,会首先对数据进行合法性校验,校验数据是否在网络通信过程中被修改。通过反序列化的方式还原用户提交的信息,根据记录的类型再进行二次合法性校验。
具体地,若变化记录是新增数字对象操作,需要检查DOI是否与系统中存储的DOI冲突;若是更新数字对象操作,需要检查该数字对象所属的拥有者是否和发送请求的用户一致;若是注销数字对象操作,同样需要检查DOI是否存在、发送请求的用户是否是该DO的拥有者。对于未通过校验的记录,节点返回错误结果给用户。对于通过校验的记录,当前节点会向其他节点进行广播,同时将变化记录的数据放进节点的缓冲池,等待进行区块打包与共识,并返回处理结果。
步骤102,根据所述缓冲池中的变化记录生成待共识区块。
在本发明实施例中,待共识区块包括对缓冲池中的变化记录进行打包得到普通区块,以及通过Kmeans算法定期生成的状态树调整区块,状态树调整区块用于将数字对象状态树中具有相同变化规律的数字对象对应的叶子节点调整到同一最小子树下。
参照图8,图8示出了本发明实施例提供的一种区块结构图,如图8所示,区块分为区块头和区块体两个部分,区块头中记录着前序区块的哈希,当前区块的高度,当前区块的哈希,出块节点的编号,出块时间,出块节点的签名,区块类型,版本号,区块中包含的记录数量,区块体包含的记录的默克尔树根,节点数字对象状态树的树根。区块体中记录着当前区块包含的记录,占据了大部分空间。
默克尔树被广泛用于分布式系统中,可以满足校验数据完整性的需求,在以太坊等区块链系统中,默克尔树可以作为状态树的实现方式用来管理系统中存储的账户信息状态,比如账户的当前余额等信息。
在本发明实施示例中,可以通过区块体中包含的记录来计算其默克尔树根,得到记录树,将记录树的树根添加到区块头中,其作用是其他节点校验区块体中包含的记录是否存在丢失、修改的情况,保证区块体在传输中不出现数据缺失和修改。还可以利用默克尔树来设计数字对象状态树,用于管理系统中维护的所有数字对象的最新状态。
参照图9,图9示出了本发明实施例提供的一种状态树示意图,如图9所示,默克尔树的每个叶子节点会和一个系统中管理的数字对象状态对应,存储数字对象序列化后的哈希值等信息,叶子节点的计算方式如公式1所示:
Hashk=Hash(DOIk,DOHashk,DOFlagk,Ownerk,Timek) (公式1)
其中,DOHashk代表数字对象序列化后经由散列算法得到的哈希值。DOIk代表数字对象标识,DOFlagk代表数字对象当前标记(是否被注销),Ownerk代表数字对象的所有者,Timek代表该最近修改时间。
通过状态树的方式管理数字对象状态的核心优势是如果想查验某一数字对象的状态,只需要获得区块中的状态树根、从该数字对象对应叶子节点到根节点的默克尔路径(Merkle Path)和证明集合。
举例说明,参照图10,图10示出了本发明实施例提供的一种查验流程示意图,如图10所示,如果想验证DO所对应的信息是否正确,那么需要找到图10中被圆圈圈出的节点,这些节点构成了证明集合,证明集合的生成方式如下:
步骤1:从目标叶子节点向父节点不断追溯,直到根节点,经过的节点就是默克尔路径。
步骤2:在自下而上经过默克尔路径的过程中,每个节点的兄弟节点添加到证明集合中。
在本发明实施例的区块设计中,根据区块的作用设计了两类区块,分别为普通区块和状态树调整区块,普通区块的作用是将记录缓冲区中的待存证的数字对象变化记录打包,并在节点间进行共识,状态树调整区块会根据系统设置的时间定期产生,作用是对节点的数字对象状态树做调整优化,下面会分别介绍两种区块的生成方式。
a、普通区块的生成
参照图11,图11示出了本发明实施例提供的一种普通区块的生成方式示意图,如图11所示,在节点的缓冲区中存储着目前未被打包存证的数字对象变化记录,当缓冲区内存储的记录数量达到触发区块生成的阈值,或者最近未出块的时间达到最长未出块的时间上限,将会触发普通区块生成操作。
区块生成组件会从缓冲区中读取若干数量的记录,包括数字对象的新增、修改、注销记录,首先会根据默克尔树生成算法,计算出记录树根。
参照图12,图12示出了本发明实施例提供的一种记录树根生成方式示意图,如图12所示,在计算记录树根时,首先要计算记录的哈希值,可以选用SHA-256哈希算法。然后将这些记录的哈希值按照在数组中的顺序每两个结合,如果总数是奇数的话,那么最后一个记录将与自己结合。然后计算上一层节点的哈希,不断重复直到本层只有一个节点,这个节点就是默克尔树的根节点。
在记录树中,除了叶子节点外,其余节点存储的是其左右子节点的哈希值,其计算方式如公式2所示。在公式2中,nodei,j代表树中第i层中从左往右第j个节点的值。
nodei,j=Hash(nodeleft,noderight) (公式2)
接着根据缓冲池中的变化记录的类型,对这些变化记录进行处理,得到处理完这些记录后的状态树树根,参照图13,图13示出了本发明实施例提供的一种变化记录处理流程示意图,如图13所示,对缓冲池中的不同类型的变化记录的处理顺序可以是先处理新增记录,再处理更新记录,最后处理注销记录。
具体地,可以采用如下方式处理存证数字对象新增记录的请求:
参照图14,图14示出了本发明实施例提供的一种新增算法示意图,如图14所示,由于用户存证数字对象新增记录会在状态树中插入新的叶子节点,导致默克尔树结构的改变,需要设计适当的插入算法,例如在插入半黑色的DO后,树的结构如图14所示。hash(1,1)原本是叶子节点,变为了中间节点,其左右子节点分别为hash(0,1)和hash(0,2)。在系统中需要维护当前插入点的变量,用于确定处理下一个新增请求的时候,需要从哪个叶子节点执行,在这种新增算法中,需要重新计算哈希值的叶子节点为图14中半黑色标注的节点,重新计算哈希的次数为log(n),经过新增操作后的状态树仍然为平衡二叉树。
处理存证数字对象更新记录的请求:
如图15所示,图15示出了本发明实施例提供的一种更新算法示意图,如图15所示,由于提交的对数字对象更新的记录会在执行阶段影响到状态树中所对应叶子节点的值,若想更新半黑色的两个DO,首先需要更新hash(1,4)和hash(1,5)的值,然后更新其到根节点的路径上,所有节点的哈希值,更新操作不会更改状态树的结构。
更新算法流程如下:
1、更新最后一层中的叶子节点对应的数字对象,重新计算这些数字对象对应的叶子节点哈希值,然后更新这些叶子节点的父节点,添加到Queue1队列中。
2、更新倒数第二层中叶子节点对应的数字对象,重新计算叶子节点的哈希值,添加到Queue1队列中。
3、不断从Queue1中弹出节点,更新这些节点对应的父节点,将父节点压入Queue2队列中,用于下一轮次的更新。
4、当Queue1为空时,与Queue2进行交换。当Queue2也为空时,说明已经更新到了根节点,结束流程。
处理存证数字对象注销记录的请求:
参照图16,图16示出了本发明实施例提供的一种注销方式示意图,如图16所示,处理存证数字对象注销记录不会更改状态树的结构,处理方式是将状态树中数字对象的数据结构中用于标记是否注销的标记位从Active更改为Logout,同时参考更新算法,更新其到根节点的中间节点哈希值。
在本发明实施例中,还可以在获得记录的默克尔树根和状态树树根这两个区块头中的重要元素后,继续构建区块头中的其他元素,包括区块高度、计算区块哈希、获得出块节点对区块哈希做的签名,最后组装区块头和区块体形成区块,交由区块共识模块进行多节点间的区块同步。
b、状态树调整区块的生成
参照图17,图17示出了本发明实施例提供的一种状态树更新示意图,如图17所示,在处理存证数字对象更新记录的时候,需要对状态树进行更新,最右侧的DO发生了变化,在更新的过程中,对于未发生变化的节点,可以直接沿用上一个区块中状态树的相关节点,对于发生变化的节点,需要进行重新计算,所以带来了计算开销和磁盘读取写入带来的存储开销。
在本发明实施例中,通过设置状态树调整区块,可以通过状态树调整区块对过去的变化记录进行分析,分析数字对象的变化规律,对有相同变化规律的数字对象,可以对数字对象状态树中叶子节点的位置进行调整,将这些叶子节点放置到同一最小子树下,以减少未来在做状态树更新过程中造成的中间节点的计算开销。状态树调整模块的生成频率通过配置文件中配置的时间决定。具体设计思路如下:
在多主体科技资源应用中,众多多主体科技资源数字对象的变化规律会具有相似性,相似的定义是会在相近或相同的时间发生状态的更新,因为多主体科技资源数字对象具有时空属性,会随着时间的流动发生变化,同时拥有不同的变化规律。变化规律体现在对于不同的多主体科技资源,其变化频率可能不同,比如外卖电动车数字对象需要每五秒对自身的位置信息进行更新,空气检测机器数字对象需要每两秒上报一次自身的采集信息。
同时在一个场景下管理的数字对象具有相似的变化特征,比如一个科研机构的职员,他们在工作日的状态变化具有相似的特征,比如在相似的时间段进入科研机构,在相似的时间段前往食堂就餐,在相似的时间段离开。
所以在考虑多主体科技资源数字对象的内在联系的情况下,可以通过收集数字对象的历史变化数据,设计状态树调整算法,减少在未来进行更新操作时,可以有效减少中间节点的波动范围。
参照图18,图18示出了本发明实施例提供的一种优化算法原理示意图,如图18所示,在状态树更新的过程中,全黑节点是发生变化的数字对象,三角形节点是在状态树更新过程中,需要重新计算哈希值的节点。图18的左图中,两个全黑的节点在不同的子树下面,除叶子节点外需要重新计算哈希的节点数量是5个,即2n-1,n为树的深度;图18的右图中如果两个全黑的节点在同一子树下面,那么除叶子节点外重新计算哈希的节点数量是3个,即n个,n为树的深度。通过这种方式,可以减少重新计算哈希的次数,减少中间节点的存储开销。
Kmeans算法是一种基于距离的聚类算法,可以将样本中的对象根据设定的簇数K进行划分,对于本场景的需求,可使用Kmeans聚类算法通过对过去一段时间的区块中,数字对象的变化规律做分析,将具有相似变化规律的数字对象分成一类。在实际使用中无法提前知道簇树的数量,所以需要使用网格搜索的方式,找到最佳的簇数K。在得到数字对象的分类后,根据当前的数字对象在状态树中的位置,进行相应的调整,将同属一类的数字对象调整到同一子树下,如图18所示,需要将第四个为全黑的节点和第六个为半黑的节点做位置调换,同时调整操作也会影响到进行调整的叶子节点到根节点的路径上的节点,需要对这些节点做更新操作。调整所带来的重新计算哈希的节点上限为2m个,m为叶子节点数量。具体的算法流程设计如下,假设当前的区块号为height,需要根据最近n个区块内数字对象的变化情况分析数字对象的相似性。对于数字对象A来说,其在过去n个区块中的历史变化情况可记录为一个长度为n的数组arrays,arrays[i]的取值范围是0和1,0代表数字对象A在height-n+i号区块中未发生状态变化,1代表数字对象A在height-n+i号区块中发生了状态变化。
在本发明实施例中,可以对数字对象的变化记录进行收集并形成数字对象历史变化日志,数字对象历史变化日志中存储的历史变化数据处理成历史变化数据的二维数组Data(如下表1所示),每一行都代表一个数字对象在区块号为Height-N到区块号为Height的区块里的历史变化情况,Data[A][Height]表示数字对象A在Height号区块里是否发送了状态变化。
表1
对于数字对象A而言,可以将其在n个区块内的变化记录映射到一个n维空间,坐标如公式3所示。
A=(a0,a1,…,an)∈Rn (公式3)
对于其他数字对象,同理可得相应的映射,构成了Kmeans所需要的样本集。首先需要从样本集中随机选择K个数字对象作为初始的簇中心。对于每个数字对象A找到距离最近的中心点,加入中心点所代表的簇中。采用汉明距离计算A和中心点C的距离,如公式4所示。
得到首次划分后,需要计算K个数字对象簇中的均值向量C′。作为下一轮迭代的中心点。迭代的终止条件是C′和C满足收敛要求。需要通过设置评价指标来评价划分效果,由于场景需求,需要簇内的数字对象到中心的距离和最小,目标函数target计算方式如公式5所示,保证簇内的数字对象相似度最大。
其中,d(DOi,Ck)代表簇中的一个数字对象到簇中心Ck的距离。
在得到聚类算法的分类结果后,需要根据数字对象的原先位置做调整,形成若干条调整记录,如公式6所示,根据调整记录将同属一类的数字对象放置在状态树的同一子树下。
AdjustmentRecord={LeafNodebefore,LeafNodeafter} (公式6)
其中,LeafNodebefore代表调整前的位置,LeafNodeafter代表调整后的位置。发生调整的节点需要重新计算其到根节点的路径上的哈希值,最终得到调整后的状态树结构。在系统中,根据预设的优化频率,若频率为一天,则状态树调整算法会每隔24小时,计算出需要调整的叶子节点,和调整后的状态树根,将叶子节点调整前后的位置形成若干条调整记录,参考上一小节生成普通区块的方式,获得记录树根,以及其他区块相关参数包括区块高度、计算区块哈希、获得出块节点对区块哈希做的签名,最后组装区块头和区块体形成区块,交由区块共识模块进行多节点间的区块同步,使得其他节点做相同的状态树调整,保证状态树的一致性。在本发明实施例中,对上述频率的具体数值并不进行具体限定。
在本发明实施例中,由于Kmeans的距离计算会带来开销,作用是找到在状态树中需要进行位置调换的数字对象。Kmeans算法的复杂度为k*n*d*t,其中k为聚类的簇数,n为样本的数量,d为距离计算的复杂度(本发明实施例用的汉明距离,复杂度和历史变化数据中的区块数量线性相关),t为迭代次数。这部分任务是由当前轮次中负责进行生成状态树调整区块的节点负责的,其他节点在收到状态树调整区块后,不用重复进行Kmeans算法训练的过程,只需要根据状态树调整区块中的调整记录做相应的状态树调整,状态树调整的复杂度与发生调整的叶子节点数量c有关,复杂度为c*logn,n为叶子节点总数,同时由于若干叶子节点到根节点之间的默克尔路径上的中间节点存在重合性,通过底层向上层的计算,实际的复杂度最大为2*n,其在应用中是为了通过优化树中叶子节点的分布,换取系统在生成普通区块时,减少更新状态树时进行的哈希运算和磁盘读写开销,以缩短普通区块生成的时间。状态树调整会定时执行,执行周期通过配置文件决定,例如24小时执行一次。按照本发明实施例提出的方式调整的结果,同类数字对象趋向被放置于树中的同一分支,因为每个区块链节点上都会维护一个数字对象状态树用于维护系统中所有的数字对象,趋向于同一分支的优势是在更新过程中可以影响到更少的状态树中间节点,使得重新计算哈希的开销更小。
步骤103,向节点网络中的各个节点广播所述待共识区块的区块头。
参照图19,图19示出了本发明实施例提供的一种共识算法流程示意图,如图19所示,共识算法可以包括预准备、准备、提交三个阶段。
图19中客户端代表发送待共识消息(可以包含待共识区块)的客户端,可理解为获得出块权的节点,A、B、C代表正常节点,A为本轮共识的主节点,D代表拜占庭节点。通过视图编号可以计算出当前的主节点编号,计算方式如下公式7所示。
number=viewmodnodeCount (公式7)
其中number代表主节点的编号,view是视图号,nodeCount代表当前网络中节点总数。由于主节点存在作恶的可能性,所以其他节点需要通过超时机制检测主节点的状态,如果在超时范围内无法达成共识则会触发视图切换(view+1),选举其他节点成为主节点。
如图19所示,首先客户端向A发送request消息(请求消息),消息的格式可以如下所示:
<<REQUEST,digest,client>,message,sign>
其中client代表身份,digest代表消息的摘要,message是消息的原文,sign是对消息的签名。在A节点收到消息后,对于通过合法性验证的消息,会进入Pre-Prepare阶段(预准备阶段),分配一个序号n给该消息,向其他节点传播Pre-Prepare消息,消息格式可以如下所示:
<<PRE-PREPARE,view,n,digest>,message,sign>
其中,在Pre-Prepare阶段,主节点会向其他节点广播消息,该消息可以是整个待共识区块,考虑到带宽的因素,主节点依次向其他节点发送Pre-Prepare消息的过程会消耗较多的时间,耗时与系统中包含的节点数量呈线性关系。因此,在本发明实施例中,可将Pre-Prepare阶段做拆分,拆分为提案阶段和预备区块阶段,参照图20,图20示出了本发明实施例提供的另一种共识算法流程示意图,如图20所示,共识算法可以包括设计提案(Proposal)、预备区块(Pre-Block)、准备(Prepare)、提交(Commit)四个阶段。
具体地,在提案阶段,主节点可以先向其他节点广播区块头,让其他节点知晓在本轮共识阶段需要共识的区块头。提案消息的形式可以如下所示:
<<PROPOSAL,view,n,digest>,Blockheader,sign>
其中,与预准备消息不同的是message由完整区块Block变为了区块头Blockheader。
可选地,由主节点向各个节点广播待共识区块的区块头的过程可以包括:
由节点网络中的主节点对区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中待共识区块的节点;由主节点根据签名数据、待共识区块的序号和待共识区块的区块哈希生成提案消息;由主节点向节点网络中的所有节点广播提案消息,以使得节点网络中的节点在接收到提案消息后,根据主节点的公钥对签名数据进行验证,并在验证通过后进入预备区块阶段。
参照图21,图21示出了本发明实施例提供的一种提案阶段主节点流程示意图,如图20和图21所示,假设在本轮区块共识中,节点A获得了区块的生成权利,节点A会成为本轮区块共识的主节点。主节点会获得区块的序号,然后获得区块头中区块哈希作为信息摘要,将该区块头存入临时消息池,主节点会对区块哈希进行签名,获得签名数据。通过消息摘要、区块的序号、主节点的签名构成提案消息,向当前节点信息表中的所有节点进行消息的广播。其他节点在收到由主节点广播的提案消息后,会从节点信息表中获取主节点的公钥,验证签名。若验证签名不通过,拒绝进入预备区块阶段。若区块序号和本节点维护的区块序号不相符,拒绝进入预备区块阶段。通过上述验证,节点会将提案消息存入临时消息池,进入预备区块阶段。
步骤104,生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系。
在预备区块阶段,会根据当前的节点网络信息生成一张树状传播图,通过树状传播的方式,再将区块体传播到网络中的每个节点,节点通过提案和预备区块两个阶段收到完整的区块。预备区块阶段的消息格式可以如下所示:
<<PREBLOCK,view,n,digest>,Blockbody,sign>
其中,Blockbody为区块体。
可选地,生成树状传播图的过程可以包括:
由主节点和进入预备区块阶段的节点,获取节点网络的节点信息表,以及节点网络中的主节点的编号;由主节点和进入预备区块阶段的节点,基于节点信息表和主节点的编号生成树状传播图。
在预备区块阶段,首先每个节点会根据当前主节点的编号生成出相应的树状传播图,让每个节点知晓在进入预备区块阶段后,需要向哪些节点传播区块体消息。
具体地,每个节点生成树状传播图的流程可以包括如下步骤A1至A6:
步骤A1,初始化二维数组Boardcast用于记录每个节点需要向哪些节点进行传播。
步骤A2,初始化一个队列Queue1用于记录当前传播轮次中已经收到区块的节点,将主节点压入队列。
步骤A3,初始化一个队列Queue2用于记录下一传播轮次中会收到区块的节点。
步骤A4,集合Set用于记录当前还未被传播到的节点。
步骤A5,当Queue1不为空时,从队列Queue1中不断压出节点nodeA,从集合Set中取出一个节点nodeB,将nodeB添加到Boardcast[nodeA]数组尾部。再将nodeA和nodeB都压入Queue2中,直到集合Set为空,代表当前没有待传播的节点。
步骤A6,当Queue1为空时,将Queue2和Queue1的内容互换,继续进行步骤A5。
可选地,当进入预备区块阶段的节点在预设时间内未接收到待共识区块的区块体时,由进入预备区块阶段的节点向主节点发送预备区块请求;主节点在接收到预备区块请求的情况下,向进入预备区块阶段的节点发送待共识区块的区块体。
在预备区块阶段,因为系统中有存在错误节点的可能性,由于在生成树状传播图的过程中,错误节点可能被分配了向其他节点传播区块的任务。如果有错误节点的存在会导致良好的节点也无法收到区块消息。需要设计超时机制,如果节点在进入预备区块一定时间里,仍然未接收到区块的话,会向主节点发送预备区块请求,申请主节点单独向该节点传输预备区块消息。
参照图22,图22示出了本发明实施例提供的一种超时机制示意图,如图22所示,B节点为错误节点,根据树状传播图,B需要向D传播区块,但是没有执行。所以在timeout超时后,D节点仍没有接收到区块,需要向主节点发起请求,需要D节点发送预备区块消息,得以继续进行共识过程。
参照图23,图23示出了本发明实施例提供的一种预备区块阶段传播示意图,如图23所示,左侧传播图是原先的区块传播方式,节点A首先在1时刻需要向B传播区块,在2时刻向C传播区块,在3时刻向D传播区块。右侧传播图是优化后的方式,节点A在1时刻向B传播区块,在2时刻A向C传播,B向D传播,由于在提案阶段节点已经收到了区块头,所以通过验证预备区块阶段收到的区块头和提案阶段收到的区块头是否一致即可判断消息是否正确。
步骤105,基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体。
在预备区块阶段,会根据当前的节点网络信息生成一张树状传播图,通过树状传播的方式,再将区块体传播到网络中的每个节点,节点通过提案和预备区块两个阶段收到完整的区块。预备区块阶段的消息格式可以如下所示:
<<PREBLOCK,view,n,digest>,Blockbody,sign>
其中,Blockbody为区块体。
可选地,由所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
首先主节点会根据树状传播图向其他节点传播预备区块消息,当节点接收到预备区块消息后,会验证预备区块消息中的区块体和之提案阶段收到的区块头是否能对应上,若对应上,则根据树状传播图中获取本节点需要传播的节点数组,依次向这些节点传播预备区块消息。完整传播后,节点会通过区块验证模块进行校验,通过后节点会将区块信息存入预备区块消息池,使用节点的私钥对消息摘要进行签名,组装准备阶段的消息,进入准备阶段。
可选地,在区块预备阶段之后,还可以包括准备阶段。
参照图24,图24示出了本发明实施例提供的一种准备阶段流程图,如图24所示,节点首先解析从其他节点发来的准备消息,从节点网络表中获得消息来源节点的公钥,用于签名认证。验证准备消息的结果会决定是否进行提交广播。拒绝进行提交广播的原因有预备区块消息池中无该消息摘要,未完成对区块的验证;消息序号不匹配;验证节点签名失败。通过验证后,节点会在准备消息确认消息池中记录目前收到了准备消息数量,假设节点信息表中存在3f+1个节点,如果节点收到了2f个节点的准备消息并且之前未进行提交广播,则会进行提交广播。
可选地,在准备阶段之后,还可以包括提交阶段。
参照图25,图25示出了本发明实施例提供的一种提交阶段流程图,如图25所示,在提交阶段,节点会对其他节点发来的提交消息进行验证,包括检查准备消息确认池中是否存在该消息;检查消息序号;检查节点签名。若通过验证,则在消息确认池中记录该消息,如果节点收到了2f次有效的提交信息并且该节点没有回复过主节点,则向主节点回复成功消息并将该消息提交到本地,从而在节点网络中完成对待共识区块的共识。
可选地,在本发明实施例中,当节点在区块共识阶段收到当前轮次获得打包权节点所生成的待共识区块时候,还可以触发验证区块的操作。
参照图26,图26示出了本发明实施例提供的一种区块验证流程示意图,如图26所示,区块验证流程可以包含以下步骤B1至B7:
步骤B1,区块共识组件收到待共识区块,触发验证区块操作并将区块传给区块验证组件。
步骤B2,区块验证组件验证区块头中的签名是否是由主节点签署的,通过则进入步骤B3。
步骤B3、区块验证组件通过解析区块体中包含的记录,通过上述步骤103中描述的状态树生成算法计算出状态树根,与区块头中的状态树根进行比对,通过则进入步骤B4。
步骤B4,区块验证组件验证块高、区块哈希、前一区块哈希等信息,通过验证的进入步骤B5。
步骤B5,基于普通区块对应的数字对象变化记录的类型,确定普通区块对应的最新的状态树根,并根据普通区块对应的最新的状态树根对普通区块进行验证;基于状态树调整区块的叶子节点调整记录,得到状态树调整区块对应的最新的状态树根,并根据状态树调整区块对应的最新的状态树根对状态树调整区块进行验证。
具体地,在步骤B5中,区块验证组件判断区块类型,将普通区块和状态树调整区块交由状态树模块的不同处理函数,获得最新的状态树根。对于普通区块,状态树组件会处理区块中的数字对象变化记录,根据每条记录的不同类型,交由上一小节描述的状态树模块中处理新增、更新、注销记录的不同流程中,获得最新的状态树根。对于状态树调整区块,状态树组件会解析区块中包含的叶子节点调整记录,根据上小节描述的调整算法,对本区块链节点维护的状态树叶子节点进行调整优化,获得最新的状态树根。
步骤B6,在获得最新的状态树根后,区块验证模块会将计算出的状态树根与区块头中记录的状态树根进行比对,判断区块的合法性。
步骤B7,根据步骤B2至B6中的验证合法与不合法的结果,将区块和验证结果组装成消息传递给区块共识组件,进入共识的下一阶段。
区块共识的目的是使得不同节点对当前区块链的状态达成一致性的意见,节点会对区块进行验证,包括检查区块哈希、检查区块内包含的事务的合法性等,根据系统采用的共识算法对待共识的区块进行共识。在完成共识过程后,节点会将该区块存储到本地,更新当前区块高度,进入下一轮的区块产生流程。需要说明的是,本发明实施例中对具体的共识算法并不进行具体限定,技术人员可以根据实际需要选择合适的共识算法。
在本发明实施例中,公开了一种面向多主体科技资源的数字对象高效存证方法,根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。同时还通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,缩短了区块共识阶段的耗时,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
图27示出了本发明实施例提供的另一种面向多主体科技资源的数字对象高效存证方法的步骤流程图,如图27所示,该方法包括:
步骤201、根据多主体科技资源生成数字对象。
参照图28,图28示出了本发明实施例提供的一种资源抽象模型,如图28所示,可以对多主体科技资源进行抽象和封装,得到对应的数字对象,在数字对象的抽象和封装方面,可以从元数据、数据实体、状态信息三个角度来对资源进行抽象,为达到统一管理资源的目的服务。
状态信息记录了资源的存储位置、访问方式、资源类型等信息。参照图29,图29示出了本发明实施例提供的一种状态信息示意图,如图29所示,“10.1012/do.hello”是该资源的标识,由标识解析系统来进行标识的分配。Type表示资源的类型,URL代表该资源为统一资源标识符类资源。资源的权限信息由Permission字段记录,PUBLIC_READ代表该资源可由任何人访问,ADMIN_WRITE代表该资源只能由管理员修改。资源所存储的位置由data字段记录。在本发明实施例中,可以根据CNRI(Corporation for National ResearchInitiatives)提供的规范生成状态信息。
元数据被数字对象注册表所管理,也被称为描述信息,是用来描述数据的数据,一般记录着资源的分类、来源、格式、采集方式、所在的领域等信息,通过对资源的简要描述来表达资源可以使用的用途,在实际使用中,可以通过在数字对象注册表中检索元数据的方式,从众多资源中找到想要使用的资源,进而访问到资源的数据实体。在本发明实施例中,可以采用都柏林核心元数据(Dublin Core,DC)作为元数据的生成标准。其中,都柏林核心元数据,是一个被广泛使用的元数据标准,被DCMI组织管理,主要用于描述数字资源,Simple Dublin Core通过标题、创建者、主题、发布者等15个元素对元数据进行描述,只使用纯文本字符串作为值。Qualified Dublin Core通过使用额外的限定符,规定了元数据中元素的编码方式,增加了描述的丰富度和精确度。
数据实体中有数字对象标识、修改时间、创建时间等固有属性,也可根据用户实际需求自行定义属性。可以通过多个元素(Element)来表示结构较为复杂的数据实体,同时为了方便细粒度的控制,每个Element也可以单独进行管理。参照图30,图30示出了本发明实施例提供的一种数据实体示意图,根据ITU标准中关于数据实体的规定,数据实体的模型可以如图30所示。
在实际应用环境中,资源通常可以包含文件数据和数据库数据。
参照图31,图31示出了本发明实施例提供的一种文件类型的资源封装示意图,如图31所示,对于文件类型的资源,可以通过对文件类型的资源增加描述信息的方式,对文件类型的数字对象进行封装,并遵循数字对象接口协议,提供标准化的访问方式。在文件资源发生变化时(比如一个文件被编辑、修改内容),该文件所封装的数字对象也会受到影响,以反映该文件类型的数字对象的状态变化。通过对文件资源进行抽象和封装,配合标识解析系统分配标识,可以将原有基于文件的应用改造为基于数字对象的应用,屏蔽不同类型文件系统的异构性。
参照图32,图32示出了本发明实施例提供的一种数据库类型的资源封装示意图,如图32所示,对于数据库类型的资源,在封装数据库类型的资源时,用户可以根据自己的粒度需求,决定按照库级别、表级别进行不同粒度的封装。同时可以对数据采取不同的存放方式,比如可以在数字对象仓库中存储完整的数据库数据,也可以在数字对象仓库中存储数据库的调用方法,以满足访问需求。如果用户需要共享数据库中某一张表的指定几行数据,那么可以对指定的几行数据通过标识解析系统分配标识,在数字对象仓库中创建数字对象实体用于存储需要共享的数据库数据的调用方法。
在本发明实施例中,需要封装的多主体科技资源不同于上述文件资源和数据库资源,因此封装方式也不同于文件资源和数据库资源的封装方式,多主体科技资源在进行封装时,可以把资源的调用信息封装在数字对象中。
参照图33,图33示出了本发明实施例提供的一种API类型资源封装示意图,如图33所示,例如对于打印机这一物理资源,具有制作打印指定文件的功能,可以使用“云-端融合的资源反射机制及高效互操作技术”,将该功能封装为一个API接口,把打印何种文件的调用指令封装为对打印机这一数字对象的操作。
步骤202,对所述数字对象的元数据、状态信息和数据实体进行扩展。
在本发明实施例中,还可以对数字对象模型进行扩展,以满足多主体科技资源环境的需求。
具体地,对于数字对象中的元数据,可以扩展自然属性和社会属性,以展现科技资源的特征。自然属性比如移动速度、外形样式来描述物理资源的特征;社会属性比如情绪、性格、人际关系等来描述人类资源的特征。
对于数字对象中的状态信息,可以扩展物理位置、时空状态两个属性,用于体现科技资源实体在真实世界中的位置。在访问数字对象时,其数字映射在信息空间的位置,连同科技资源实体在真实世界的物理位置、所处的时间空间状态,一同用来作为能否进行数字对象实体的访问的判定依据。
对于数字对象中的数据实体,由于人员、设备等实体是真实世界存在的实际个体,通过应用数据和服务来实现该类资源的数字化。数据实体是通过互操作技术,用API接口的形式封装多主体科技资源应用数据和服务得到的。通过调用API接口的方式来获取多主体科技资源的数据实体。
参照图34,图34示出了本发明实施例提供的一种多主体科技资源数字对象扩展示意图,如图34所示,可以对元数据进行自然和社会属性的扩展,对状态信息进行物理位置和时空状态的扩展,对数据实体进行多主体科技资源API的扩展。
步骤203,根据用户的输入操作生成数字对象的变化记录,所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象。
此步骤可参见步骤101,本发明实施例不再赘述。
步骤204,根据所述缓冲池中的变化记录生成待共识区块;其中,所述待共识区块包括对所述缓冲池中的变化记录进行打包得到普通区块,以及通过Kmeans算法定期生成的状态树调整区块,所述状态树调整区块用于将数字对象状态树中具有相同变化规律的数字对象对应的叶子节点调整到同一最小子树下。
此步骤可参见步骤102,本发明实施例不再赘述。
步骤205,向节点网络中的各个节点广播所述待共识区块的区块头。
此步骤可参见步骤103,本发明实施例不再赘述。
步骤206,生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系。
此步骤可参见步骤104,本发明实施例不再赘述。
步骤207,基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体。
此步骤可参见步骤105,本发明实施例不再赘述。
步骤208,获取用户输入的数字对象编号,在当前维护的最新状态树中查找所述数字对象编号对应的数字对象的叶子节点,计算所述叶子节点的默克尔路径,将所述默克尔路径返回给所述用户,以使所述用户根据所述默克尔路径进行数据完整性和正确性检验。
用户通过输入指定的数字对象编号,接收到用户输入的数字对象编号之后,可以在当前维护的最新状态树中查找对应的数字对象对应的叶子节点后,根据上述步骤102中的方式计算出对应的默克尔路径和证明集合,一并返回给用户,用户可以根据默克尔路径和证明集合进行数据完整性和正确性检验。
步骤209,获取用户输入的数字对象编号和变化记录范围,遍历所述变化记录范围内的所有区块,将与所述数字对象编号匹配的变化记录添加到历史状态变化列表中,并将所述历史状态变化列表返回给所述用户。
参照图35,图35示出了本发明实施例提供的一种历史记录追溯流程图,如图35所示,用户输入指定的数字对象编号和需要获取的变化记录范围,系统通过遍历满足范围内的所有区块,遍历每个区块内的记录,将与指定DOI匹配的记录添加到历史状态变化列表中,返回给用户。
用户输入DOI和历史数据获取范围,系统通过获取范围计算出满足范围内的区块编号(a,b),从b号区块开始遍历,查找区块中与目标DOI相关的记录,添加到记录列表中,然后搜索b-1号区块内的记录,直到搜索完a号区块,将记录列表返回给用户,列表中记录的是目标数字对象在指定范围内的所有变化记录。
综上,为本发明实施例提供的另一种面向多主体科技资源的数字对象高效存证方法,根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。同时还通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,缩短了区块共识阶段的耗时,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
与上述本发明的面向多主体科技资源的数字对象高效存证方法实施例所提供的方法相对应,参见图36,图36示出了本发明提供的一种面向多主体科技资源的数字对象高效存证系统结构图,在本实施例中,该装置可以包括:
数字对象存证模块301,用于根据用户的输入操作生成数字对象的变化记录,并将所述变化记录放入缓冲池中;所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象。
区块生成与验证模块302,用于根据所述缓冲池中的变化记录生成待共识区块。
区块共识模块303,用于向节点网络中的各个节点广播所述待共识区块的区块头;生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系;基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体。
可选地,所述区块共识模块包括:
签名子模块,用于使所述节点网络中的主节点对所述区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中所述待共识区块的节点;
提案消息子模块,用于使所述主节点根据所述签名数据、所述待共识区块的序号和所述待共识区块的区块哈希生成提案消息;
验证子模块,用于使所述主节点向节点网络中的所有节点广播所述提案消息,以使得所述节点网络中的节点在接收到所述提案消息后,根据所述主节点的公钥对所述签名数据进行验证,并在验证通过后进入预备区块阶段。
可选地,所述区块共识模块包括:
获取子模块,用于使所述主节点和进入预备区块阶段的节点,获取所述节点网络的节点信息表,以及所述节点网络中的主节点的编号;
传播图子模块,用于使所述主节点和进入预备区块阶段的节点,基于所述节点信息表和所述主节点的编号生成树状传播图。
可选地,所述区块共识模块包括:
区块体传播子模块,用于使所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
可选地,所述区块共识模块包括:
请求发送子模块,用于当进入预备区块阶段的节点在预设时间内未接收到所述待共识区块的区块体时,使进入预备区块阶段的节点向所述主节点发送预备区块请求;
请求接收子模块,用于使所述主节点在接收到所述预备区块请求的情况下,向进入预备区块阶段的节点发送所述待共识区块的区块体。
可选地,参照图37,图37示出了本发明实施例提供的一种数字对象存证模块架构示意图,如图37所示,数字对象存证模块的功能是收集存证记录提供者向系统节点提交的数字对象变化记录,将其进行数据的编码,通过网络模块提交到系统节点上,系统节点对数据的合法性做校验,对于合法的记录将其送入记录的缓冲区。
存证记录提供者需要经过请求构建、请求签名、请求发送的步骤,将消息发送到存证模块的消息处理接口中。请求构建需要构建如下表2所示的待存证的数字对象记录。
属性名 | 类型 | 含义 |
Sender | String | 记录的发起方 |
Payload | Payload | 变化记录 |
Signature | Bytes | 签名 |
Result | String | 记录的结果 |
表2
对于Payload来说,包含了该记录的类型type,包括add、update、logout三种类型,分别代表新增、更新和注销;包含了该记录所操作的数字对象标识;包含了所提交的数字对象的状态。
在数据的签名方面,用该记录提供方的私钥对Payload进行签名,构成Signature的内容,通过网络模块将记录提交给系统节点的存证模块消息处理接口中,首先通过请求类型判断函数判断属于何种类型的存证请求,分别交由校验新增类型记录函数verifyAddTypeRecord,校验更新类型记录函数verifyUpdateTypeRecord和校验注销类型记录函数verifyLogoutTypeRecord对记录的合法性校验。对于Signature的正确性校验是共同的流程,在verifyAddTypeRecord函数中,对Payload中的DOI是否与已有的冲突进行检查;在verifyUpdateTypeRecord函数中,会校验该Sender是否有对应DO的权限,及该DO是否存在;verifyLogoutTypeRecord函数中会校验DO是否存在。对于通过合法性校验的记录提交到本节点的记录缓冲区recordPool中,并对此记录进行广播,以广播到网络中的其他节点上,然后等待区块打包。
可选地,参照图38,图38示出了本发明实施例提供的一种区块生成与验证模块架构示意图,如图38所示,记录缓冲区中的记录达到一定数量或一定时间没有新区块生成会触发区块生成操作。在区块生成模块中,区块组装子模块需要根据当前要生成的区块类型,对普通区块或状态树调整区块进行不同的组装。区块验证模块会接受来自区块共识模块的调用,对两种区块进行不同的验证。存储模块负责处理状态树更新、调整过程中对LevelDB的读写请求。历史变化分析子模块包含Kmeans算法的实现和生成数字对象位置调整记录的实现。
区块包括区块头和区块体两部分,区块头的数据格式如下表3所示。区块体中存储当前区块所包含的数字对象变化记录。不同的模块之前通过protobuf提供的序列化和反序列化接口,对结构化数据进行编码和解码,实现数据在不同模块之前的流动。
属性名 | 类型 | 含义 |
PreviousHash | Bytes | 前一区块的哈希 |
BlockHash | Bytes | 当前区块的哈希 |
StateRootHash | Bytes | 状态树的根哈希 |
BlockNumber | Int64 | 当前区块的块号 |
Time | String | 出块时间 |
Proposer | String | 出块节点 |
BlockType | Enum | 区块类型 |
RecordCount | Int64 | 记录数量 |
RecordHash | Bytes | 记录树根哈希 |
Version | String | 版本 |
Signature | Bytes | 签名 |
表3
参照图39,图39示出了本发明实施例提供的一种主要类的UML关系示意图,如图39所示,主要包含接口类Content、数字对象类DO、数字对象变化记录类Record、状态树调整记录类AdjustmentRecord、默克尔树节点类Node、默克尔树类MerkleTree。
Content接口代表了可以被默克尔树存储和验证的数据需要实现的必要接口,包含如下方法:CalculateHash方法在实现的时候可以根据需求选择不同的哈希算法;Equals方法用于检验两个Content对象是否相等,在实现的时候用户可以设计满足场景需求的比较算法,通过不同的Content接口的实现类,实现了系统的拓展性。
DO类代表了系统所管理的数字对象,用于记录数字对象的状态。包含如下属性:数字对象标识DOI、序列化后的数字对象的哈希DOHash、上次发生状态变化的时间Time、当前数字对象的管理者Owner,当前标记Flag。包含如下方法:CalculateHash、Equals、GetID、GetDOHash、GetTime、GetOwner方法。
Node类代表了默克尔树中的一个节点,如果Node是叶子节点的话,会存储一个Content的对象,如果Node是中间节点,会存储当前Node的父节点、左右子节点,如果Node是根节点,其父节点为空。Node类的数据格式如下表4所示。Node类包含如下方法:calculateNodeHash,作用是计算当前节点的哈希值,通过读取所属默克尔树的哈希策略,如果是叶子节点,则通过Content对象的CalculateHash方法计算哈希值,如果不是叶子节点,通过拼接左右子节点的哈希值,计算出本节点的哈希值。
表4
MerkleTree类代表了默克尔树,包含一个指向根节点的节点指针,一个叶子节点列表的数组、当前默克尔树采用的哈希策略、默克尔树根哈希的值、当前做使用的持久化数据库。MerkleTree类的数据结构如下表5所示。MerkleTree类包含如下方法:GetMerklePath方法的输入是某个数字对象,输出是默克尔树路径和左右节点的标记。该方法会首先查找到该数字对象的所对应的叶子节点Node,进入查找MerklePath的循环中,循环的终止条件是当前Node为空,说明查找到了根节点,在每次循环内部,会首先判断当前节点是其父节点的左节点还是右节点,将该节点的兄弟节点添加到MerklePath中,添加标记到index中,然后用当前Node的Parent更新本节点;UpdateIntermediate方法的作用是更新中间节点,输入是发生变化的叶子节点数组,输出是更新后的默克尔树根节点Node;AddTree方法负责处理添加节点的请求;AdjustTree方法是对默克尔树进行叶子节点调整的实现,输入是AdjustmentRecord数组。
属性名 | 类型 | 描述 |
Root | *Node | 根节点 |
merkleRoot | []byte | 根节点的哈希值 |
Leafs | []*Node | 叶子节点数组 |
HashStrategy | Func() | 采用的哈希策略 |
DB | *leveldb.DB | 数据库对象 |
表5
可选地,参照图40,图40示出了本发明实施例提供的一种区块共识模块示意图,如图40所示,共识模块消息处理接口负责处理在共识阶段中不同节点当前所处的阶段不同,需要通过消息通讯模块接收到的不同类型的消息,分为提案、预备区块、准备、提交四个阶段,需要实现不同的消息处理函数。
参照图41,图41示出了本发明实施例提供的一种共识模块UML示意图,如图41所示,在节点启动后,会实例化一个共识类Consensus的实例,用于管理在共识算法过程中,各个阶段的消息处理。共识类的数据结构如下表6所示。Consensus类包含如下方法:handleProposal、handlePreBlock、handlePrepare、handleCommit用于处理提案、预备区块、准备、提交阶段的消息。提案消息类中包含区块头、摘要、序号和签名。准备消息类和提交消息类比较相似,分别是准备阶段和提交阶段的消息格式,包括消息的摘要、消息的序号、来源节点编号,节点的签名。回复消息类是完成共识后,对主节点的回复消息,包括消息的序号、来源节点编号和是否提交的结果。
属性名 | 类型 | 含义 |
node | Node | 当前节点信息 |
SequenceId | Int | 消息的编号 |
Lock | Sync.Mutex | 互斥锁,用于保证消息编号的增长 |
messagePool | Map | 消息池,存放消息摘要和消息的映射 |
PrepareConfirm | Map | 存放消息摘要和收到的准备消息数量的映射关系 |
CommitConfirm | Map | 存放消息摘要和收到的提交消息数量的映射关系 |
IfCommitBordcast | Map | 存放消息是否进行Commit广播的映射关系 |
IfReply | Map | 存放消息是否回复主节点的映射关系 |
表6
在每个节点上,会维护一个节点网络信息表,用于了解网络中的节点状态,记录着当前区块链网络中包含的节点信息,包括节点编号、IP地址、公钥和当前状态,结构如下表7所示。
节点编号 | IP | PubKey | State |
0 | 39.106.50.7 | xxx | Survive |
1 | 39.106.44.177 | xxx | Survive |
2 | 47.93.43.156 | xxx | Survive |
3 | 39.107.95.239 | xxx | Dead |
… | … | … | … |
表7
其中NodeId标识节点的编号,IP标识节点的网络地址,PubKey代表节点的公钥,用于节点之间通讯消息的检验,State标识节点的当前状态,有Survive和Dead两种,Survive代表节点处于正常状态,Dead标识节点处于非正常状态,可能是节点宕机或者节点为拜占庭节点。通过节点网络信息表,可以通过如下公式8计算出在网络中可以容忍的错误节点数量。其中f代表错误节点数量,n代表网络中的总节点数量。
可选地,参照图42,图42示出了本发明实施例提供的一种数字对象查验模块示意图,如图42所示,数字对象查验模块提供给存证记录使用者查验某一数字对象最新状态和查验某一数字对象历史变化记录的接口。
存证记录使用者需要经过请求构建、请求封装、请求发送的步骤,将消息发送到查验模块的消息处理接口中。对于查验某一数字对象的最新状态,使用者仅需要提供DOI,对于查验历史变化记录来说,使用者需要提供DOI、起始时间、终止时间,请求类型type为枚举类型,current代表查询最新状态,history代表查询历史状态变化记录。
数字对象查验模块中的消息处理接口,会对消息进行解析。交由请求类型判断函数checkRequestType进行类型的判断。分别交由查验最新状态函数checkCurrentState和查验历史状态函数checkHistoryState处理。对于查验最新状态函数来说,首先对找到该数字对象的当前状态DOState,和对应的叶子节点,通过步骤104中描述的查验方式,获得在状态树中的默克尔路径Merkle Path数组和标记index数组,index数组和Merkle Path数组一一对应,负责标记当前中间节点是左叶子还是右叶子,将这两个数组连同最新区块中的状态树树根stateTreeRootHash送入结果组装函数packagingResult将查验结果封装,通过网络模块返回给存证记录使用者。对于查验历史状态函数来说,首先需要根据时间范围通过找到对应的区块号范围{Blocka,Blockb}对于其中的每个区块,通过区块获取函数获得该区块内包含的数字对象变化记录,通过扫描的方式找到该区块内和目标DOI相关的变化记录,将其添加到结果数组historyRecord中,完成扫描后,交由结果组装函数将历史变化记录返回给存证记录使用者。
对于存证记录使用者而言,在获得默克尔路径Merkle Path、标记数组index、状态树树根哈希stateTreeRootHash后,可以自行对数字对象的当前状态DOState进行验证。验证方式如下:
1、计算出DO对应的叶子节点哈希HashDO。
2、获得Merkle Path的长度length,从0下标开始遍历Merkle Path数组,如果index[i]为0,则HashDo=Hash(MerklePathi,HashDO),如果index[i]为1,则HashDo=Hash(HashDo,MerklePathi),这个过程相当于从叶子节点逐层遍历。
3、最终计算的HashDo和stateTreeRootHash比对,如果相同则代表验证通过。
综上,本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统,本发明根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。同时还通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,缩短了区块共识阶段的耗时,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
参照图43,图43示出了本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统架构图,如图43所示,系统自上而下包括展示层、接入层、逻辑层、存储层,同时安全管理贯穿其中。
其中,展示层是系统呈现给用户的使用的可视化界面,根据用户需求可以通过浏览器页面和客户端等不同方式与系统进行交互,系统的数据通过接入层传递到展示层展示给用户。
接入层主要是提供系统的外部访问模式,通常是将系统提供的功能通过RPC接口或者HTTP接口的方式,对外暴露数字对象记录存证和查验的接口,供外部系统或展示层进行调用。
逻辑层包括系统各个模块的业务逻辑处理单元,逻辑处理过程中会与存储层进行数据的输入和输出交互。对于本系统,逻辑层包括了存证新增记录、存证更新记录、存证注销记录、查验最新状态、查验历史状态、区块生成、区块验证、区块共识、状态树管理、签名验签、配置管理、日志管理等逻辑处理单元,是系统的核心所在。
存储层负责存储系统中的各类数据,本系统的数据层包括键值对型数据库LevelDB,文件存储。LevelDB用于存储系统运行期间产生的各类区块数据、默克尔树相关数据。文件主要存储各类日志数据,便于数据的审计。
安全管理贯穿各个层级,负责身份验证、权限控制、操作审计,身份验证包括验证数字对象变化记录存证提供方的身份,验证区块共识过程中共识消息的信息来源;权限控制包括控制数字对象变化记录提供方对数字对象拥有权的权限检查,区块生成过程中出块节点的选择;操作审计是对系统中设计的相关操作进行日志化保存,便于操作合法性的审计。
综上,本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统,本发明可以根据用户的输入操作生成数字对象的变化记录,并将变化记录放入缓冲池中;变化记录包括新增记录、更新记录和注销记录,数字对象包括由多主体科技资源生成的数字对象;根据缓冲池中的变化记录生成待共识区块;向节点网络中的各个节点广播待共识区块的区块头;生成节点网络对应的树状传播图;树状传播图包含节点网络中的各个节点之间的传播关系;基于树状传播图向节点网络中的各个节点传播待共识区块的区块体。同时还通过在区块共识阶段先传播待共识区块的区块头,再传播待共识区块的区块体的方式,缩短了区块共识阶段的耗时,提升了对区块的共识效率,从而提升了对数字对象进行存证的效率。
参照图44,图44示出了本发明实施例提供的一种面向多主体科技资源的数字对象高效存证系统的模块结构图,如图44所示,系统可以分为数字对象存证模块、区块生成与验证模块、区块共识模块、数字对象查验模块。
其中,数字对象存证模块是系统的重要模块,负责系统的数据输入,对于存证记录提供者来说,数字对象存证模块提供了对数字对象新增、更新、注销记录的存证接口,系统会处理用户的存证请求,提交到请求缓冲池中,等待区块的生成。通过区块生成与验证模块、区块共识模块,存证记录在区块链节点之间进行数据的传播与可信存证。
区块生成与验证模块包括区块生成与区块验证,区块生成指的是当前拥有出块权的节点读取当前请求缓冲池中的数字对象存证记录,进行相应的处理,组装得到待共识的区块,同时设计状态树调整区块用于优化状态树结构。区块验证指的是其他节点在收到拥有产块权的节点来的待共识的区块后,对区块的有效性进行验证,包括解析区块中包含的存证记录,更新本节点所维护的数字对象状态树,验证区块的有效性,并将验证结果返回给区块共识模块,进行共识的其他流程。
区块共识模块负责区块在多节点之间达成共识,通过获得区块生成模块生成的区块,在系统中的多节点之间利用共识算法进行区块数据的验证,通过多节点之间交换意见使得多节点对于当前状态树的状态达成共识。
数字对象查验模块是面向存证记录使用者的,存证记录使用者出于自身需求,通过使用系统提供的接口,进行数字对象的最新状态查验和数字对象历史状态变化记录获取。最新状态查验的功能是根据存证记录使用者要查验的数字对象,在状态树中进行查找,将验证方式提供给用户用于验证数字对象的完整性和正确性。历史状态获取子模块指的是根据用户选择的指定数字对象的指定时间范围,系统在历史区块中进行查找区块中与该数字对象相关的状态变化记录,并返回给存证记录使用者。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种面向多主体科技资源的数字对象高效存证方法和系统,进行了详细介绍,本发明中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种面向多主体科技资源的数字对象高效存证方法,其特征在于,所述方法包括:
根据用户的输入操作生成数字对象的变化记录,并将所述变化记录放入缓冲池中;所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象;
根据所述缓冲池中的变化记录生成待共识区块;
向节点网络中的各个节点广播所述待共识区块的区块头;
生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系;
基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体;
所述向节点网络中的各个节点广播所述待共识区块的区块头,包括:
由所述节点网络中的主节点对所述区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中所述待共识区块的节点;
由所述主节点根据所述签名数据、所述待共识区块的序号、所述待共识区块的区块哈希和所述待共识区块的区块头生成提案消息;
由所述主节点向节点网络中的所有节点广播所述提案消息,以使得所述节点网络中的节点在接收到所述提案消息后,根据所述主节点的公钥对所述签名数据进行验证,并在验证通过后进入预备区块阶段;
所述生成所述节点网络对应的树状传播图,包括:
由所述主节点和进入预备区块阶段的节点,获取所述节点网络的节点信息表,以及所述节点网络中的主节点的编号;
由所述主节点和进入预备区块阶段的节点,基于所述节点信息表和所述主节点的编号生成树状传播图。
2.根据权利要求1所述的方法,其特征在于,所述基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体,包括:
由所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当进入预备区块阶段的节点在预设时间内未接收到所述待共识区块的区块体时,由进入预备区块阶段的节点向所述主节点发送预备区块请求;
所述主节点在接收到所述预备区块请求的情况下,向进入预备区块阶段的节点发送所述待共识区块的区块体。
4.一种面向多主体科技资源的数字对象高效存证系统,其特征在于,所述系统包括:
数字对象存证模块,用于根据用户的输入操作生成数字对象的变化记录,并将所述变化记录放入缓冲池中;所述变化记录包括新增记录、更新记录和注销记录,所述数字对象包括由多主体科技资源生成的数字对象;
区块生成与验证模块,用于根据所述缓冲池中的变化记录生成待共识区块;
区块共识模块,用于向节点网络中的各个节点广播所述待共识区块的区块头;生成所述节点网络对应的树状传播图;所述树状传播图包含所述节点网络中的各个节点之间的传播关系;基于所述树状传播图向所述节点网络中的各个节点传播所述待共识区块的区块体;
所述区块共识模块包括:
签名子模块,用于使所述节点网络中的主节点对所述区块头中的区块哈希进行签名,得到签名数据;所述主节点为生成当前共识轮次中所述待共识区块的节点;
提案消息子模块,用于使所述主节点根据所述签名数据、所述待共识区块的序号、所述待共识区块的区块哈希和所述待共识区块的区块头生成提案消息;
验证子模块,用于使所述主节点向节点网络中的所有节点广播所述提案消息,以使得所述节点网络中的节点在接收到所述提案消息后,根据所述主节点的公钥对所述签名数据进行验证,并在验证通过后进入预备区块阶段;
所述区块共识模块包括:
获取子模块,用于使所述主节点和进入预备区块阶段的节点,获取所述节点网络的节点信息表,以及所述节点网络中的主节点的编号;
传播图子模块,用于使所述主节点和进入预备区块阶段的节点,基于所述节点信息表和所述主节点的编号生成树状传播图。
5.根据权利要求4所述的系统,其特征在于,所述区块共识模块包括:
区块体传播子模块,用于使所述主节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体,以使得接收到所述区块体的节点根据所述树状传播图获取自身对应的节点数组,并向自身的节点数组中的节点发送所述待共识区块的区块体。
6.根据权利要求4所述的系统,其特征在于,所述区块共识模块包括:
请求发送子模块,用于当进入预备区块阶段的节点在预设时间内未接收到所述待共识区块的区块体时,使进入预备区块阶段的节点向所述主节点发送预备区块请求;
请求接收子模块,用于使所述主节点在接收到所述预备区块请求的情况下,向进入预备区块阶段的节点发送所述待共识区块的区块体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210905039.2A CN115221558B (zh) | 2022-07-29 | 2022-07-29 | 一种面向多主体科技资源的数字对象高效存证方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210905039.2A CN115221558B (zh) | 2022-07-29 | 2022-07-29 | 一种面向多主体科技资源的数字对象高效存证方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115221558A CN115221558A (zh) | 2022-10-21 |
CN115221558B true CN115221558B (zh) | 2023-07-25 |
Family
ID=83614257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210905039.2A Active CN115221558B (zh) | 2022-07-29 | 2022-07-29 | 一种面向多主体科技资源的数字对象高效存证方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221558B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168916B (zh) * | 2022-07-26 | 2023-01-13 | 北京大数据先进技术研究院 | 一种面向移动终端应用的数字对象可信存证方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390891A (zh) * | 2018-03-28 | 2018-08-10 | 电子科技大学天府协同创新中心 | 基于私有区块链的信息保护方法 |
CN112565389A (zh) * | 2020-11-30 | 2021-03-26 | 网易(杭州)网络有限公司 | 基于区块链的消息广播方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11251975B1 (en) * | 2017-09-27 | 2022-02-15 | Seagate Technology Llc | Block chain based trusted security infrastructure |
CN112491935A (zh) * | 2019-08-20 | 2021-03-12 | 厦门本能管家科技有限公司 | 一种用于区块链的水波式广播方法及系统 |
CN110474846B (zh) * | 2019-09-18 | 2022-04-08 | 中国银联股份有限公司 | 一种区块链中区块传播的方法及装置 |
CN112104558B (zh) * | 2020-10-30 | 2021-09-07 | 上海交通大学 | 区块链分发网络的实现方法、系统、终端及介质 |
-
2022
- 2022-07-29 CN CN202210905039.2A patent/CN115221558B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390891A (zh) * | 2018-03-28 | 2018-08-10 | 电子科技大学天府协同创新中心 | 基于私有区块链的信息保护方法 |
CN112565389A (zh) * | 2020-11-30 | 2021-03-26 | 网易(杭州)网络有限公司 | 基于区块链的消息广播方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115221558A (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886421B2 (en) | Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT) | |
Xu et al. | vChain: Enabling verifiable boolean range queries over blockchain databases | |
US11431486B2 (en) | System or method to implement consensus on read on distributed ledger/blockchain | |
US20220209958A1 (en) | Systems and methods for state of data management | |
US20200250177A1 (en) | Systems, methods, and apparatuses for implementing an sql query and filter mechanism for blockchain stored data using distributed ledger technology (dlt) | |
US9122846B2 (en) | Document verification with distributed calendar infrastructure | |
CN113711536A (zh) | 从区块链网络中提取数据 | |
US20080005086A1 (en) | Certificate-based search | |
US20050177715A1 (en) | Method and system for managing identities in a peer-to-peer networking environment | |
CN115769241A (zh) | 针对经许可的区块链的隐私保护架构 | |
CN113271311B (zh) | 一种跨链网络中的数字身份管理方法及系统 | |
KR20220044603A (ko) | 블록체인 데이터베이스 관리 시스템 | |
CN115221558B (zh) | 一种面向多主体科技资源的数字对象高效存证方法和系统 | |
Beach et al. | Governance model for cloud computing in building information management | |
Dang et al. | An effective and elastic blockchain-based provenance preserving solution for the open data | |
David | Managing IoT data on hyperledger blockchain | |
CN116467026A (zh) | 一种基于区块链的云桌面数据安全共享、溯源方法和系统 | |
Xiong et al. | BDIM: A Blockchain-Based Decentralized Identity Management Scheme for Large Scale Internet of Things | |
Buccafurri et al. | Range query integrity in cloud data streams with efficient insertion | |
Li et al. | Smart tourism identity authentication service based on blockchain and decentralized identifier | |
CN115168916B (zh) | 一种面向移动终端应用的数字对象可信存证方法和系统 | |
Lopez et al. | Integrating PMI services in CORBA applications | |
Chanal et al. | Blockchain-based data integrity framework for Internet of Things | |
Li et al. | CoralDB: A Collaborative Database for Data Sharing based on Permissioned Blockchain | |
Cheng et al. | A Trusted BID Document Upchain Method Based on Blockchain Infrastructure and Facility |
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 |