CN111625598B - 一种工程协作区块链数据结构及应用方法 - Google Patents

一种工程协作区块链数据结构及应用方法 Download PDF

Info

Publication number
CN111625598B
CN111625598B CN202010413778.0A CN202010413778A CN111625598B CN 111625598 B CN111625598 B CN 111625598B CN 202010413778 A CN202010413778 A CN 202010413778A CN 111625598 B CN111625598 B CN 111625598B
Authority
CN
China
Prior art keywords
block
node
temporary
project
application data
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
Application number
CN202010413778.0A
Other languages
English (en)
Other versions
CN111625598A (zh
Inventor
戴照恩
徐晓城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Dongyao Building Technology Research Institute Co ltd
Original Assignee
Nanjing Dongyao Building Technology Research Institute Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Dongyao Building Technology Research Institute Co ltd filed Critical Nanjing Dongyao Building Technology Research Institute Co ltd
Priority to CN202010413778.0A priority Critical patent/CN111625598B/zh
Publication of CN111625598A publication Critical patent/CN111625598A/zh
Priority to PCT/CN2020/115018 priority patent/WO2021227319A1/zh
Application granted granted Critical
Publication of CN111625598B publication Critical patent/CN111625598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及一种工程协作区块链数据结构及应用方法,针对工程项目,引入区块链技术,设计主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目,通过各工程项目基于区块链的协同同步,实现了数据安全、永久存储、以及可追溯的效率,并以数据结构设计,搭建相应工程落地系统,具体构建应用方法,包括侧链更新临时区块方法和侧链更新永久区块方法,分别通过各组具体化的逻辑步骤设计,改善了工程领域针对各工程项目的协作和管理性能,提高实际生产和工程开发的效率。

Description

一种工程协作区块链数据结构及应用方法
技术领域
本发明涉及一种工程协作区块链数据结构及应用方法,属于工程区块链技术领域。
背景技术
区块链系统具有永久安全存储数据,数据可追溯的特点,但是由于区块链的底层是基于点对点的分布式网络,且传统的区块链数据需要全网络的共识才可以更新,导致其效率和适应性不高。
工程领域中,数据安全是非常重要的一环,但是同时,灵活的版本管理也是一个工程应用必须要具备的条件。
区块链技术可以有效地管控数据的真实性,回溯历史数据,但是在版本管理时,工程中经常会出现多版本同步的情况。如果所有这些版本的具体数据都用传统的区块链技术作全网存储,则会耗费大量资源,其中的大部分数据可能在实际生产和监管中没有任何作用。而如果只在关键版本做区块链存储,那么只有当新区块生成时,全网的节点才能够知道上个版本至今的版本变化,这样无法达成信息的实时共享。
另一方面,工程领域经常涉及跨公司的协作,不同公司间的工程系统存在差异,虽然可以互传固定格式的数据,却没有办法实时同步版本。既要能够灵活地管理工程信息的版本,跨系统同步这些信息,同时又要能够对重要信息做到安全存证可追溯,这就需要对现有的区块链数据结构做一定的改进。
发明内容
本发明所要解决的技术问题是提供一种工程协作区块链数据结构,应用区块链技术确保数据安全和可追溯的前提下,改善工程领域针对各项目的协作和管理性能,提高实际生产和工程开发的效率。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种工程协作区块链数据结构,包括主链、以及各条侧链,其中,主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目;
主链上设定项目基本信息MRT树和项目成员地址MRT树,其中,项目基本信息MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目基本信息在相应树叶节点上的存储;项目成员地址MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目中成员地址列表在在相应树叶节点上的存储;
各条侧链上分别设定成员地址MPT树和应用数据MRT树,其中,成员地址MPT树上,基于各成员所对应地址与各树叶节点之间的对应关系,实现各成员所对应应用数据Hash值在相应树叶节点中current_version字段的存储;应用数据MRT树上树叶节点的value字段内至少包含一个name字段、以及一个用于存储应用数据的字段或应用数据位置指针的字段;
基于侧链中成员对相应应用数据的更新,实现侧链上成员地址MPT树和应用数据MRT树的更新,以及实现主链上项目基本信息MRT树和项目成员地址MRT树的更新。
作为本发明的一种优选技术方案:分别针对各侧链,定义侧链上沿时序依次生成的各区块分别为永久区块,并基于时序在相邻永久区块之间引入各临时区块;在获得最新永久区块后,将该永久区块作为分界区块,基于侧链中各成员对相应应用数据的每次更新、以及侧链中各成员之间应用数据的每次同步,实现各临时区块的迭代生成,最后在预设介入时间点,通过预设共识机制,实现各临时区块的合并,获得下一个永久区块,且该永久区块中包含所合并各临时区块的信息,依次类推顺序执行,实现侧链上区块链的生成。
作为本发明的一种优选技术方案:所述各临时区块的区块头包含父区块Hash、所对应分界区块序号的Number字段、HierarchyNumber字段、应用数据版本ID、作者签名公钥、版本摘要Hash,版本摘要Hash用于对更新数据做文字描述或第三方链接的记录,而不限于侧链所指定永久区块内的数据上传格式;
所述永久区块的区块头中包含父区块Hash、所对应分界区块序号的Number字段、HierarchyNumber字段、作者签名公钥、临时版本树根Hash,且永久区块中该HierarchyNumber字段始终为0。
与上述相对应,本发明还要解决的技术问题是提供一种工程协作区块链数据结构的应用方法,基于设计数据结构,搭建相应工程落地系统架构进行应用,改善了工程领域针对各项目的协作和管理性能,提高实际生产和工程开发的效率。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种工程协作区块链数据结构的应用方法,包括侧链更新临时区块方法,即各个侧链分别按如下步骤执行:
步骤A1.侧链上生成永久区块,设定该侧链的区块链状态为0,并设定此时允许分布式网络内任何具有该侧链权限的节点生成临时区块,并且不允许此时任何节点发起永久区块的共识,同时将具有该侧链权限的所有节点组成的网络称为目标项目全网,所有节点的终端在目标项目全网内监听临时区块的提交申请,然后进入步骤A2;
步骤A2.将侧链上最新生成的永久区块作为分界区块,然后进入步骤A3;
步骤A3.当成员X1完成一次应用数据的更新,成员X1所在节点向目标项目全网发送该应用数据更新事件,申请更新临时区块,其中,应用数据更新事件中包括分界区块中的Number字段、以及目标项目全网中临时区块的HierarchyNumber字段的最大值,然后进入步骤A4;
步骤A4.目标项目全网中其他各个节点分别接收更新临时区块申请,针对所接收应用数据更新事件,其他各节点分别将应用数据更新事件中的信息与自身节点中临时区块上的信息进行比较,根据如下不同比较结果,分别执行不同进一步处理;
若应用数据更新事件中的Number字段、HierarchyNumber字段分别与自身节点中临时区块上的Number字段、HierarchyNumber字段均一致时,表示该节点上数据与成员X1所在节点发送应用数据更新事件中的数据一致,该节点向成员X1返回TRUE,并进入步骤A6;
若应用数据更新事件中的HierarchyNumber字段大于自身节点中临时区块上的HierarchyNumber字段,表示该节点上数据滞后成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1所在节点请求应用数据,直到节点中临时区块上的HierarchyNumber字段与应用数据更新事件中的HierarchyNumber字段相一致,然后该节点向成员X1返回TRUE,并进入步骤A6;
若应用数据更新事件中的HierarchyNumber字段小于自身节点中临时区块上的HierarchyNumber字段,表示该节点上数据超前成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1返回FALSE,并进入步骤A5;
步骤A5.成员X1所在节点向发送FALSE的节点请求同步数据,并返回步骤A3;
步骤A6.成员X1所在节点获得最新更新应用数据的父版本,并获得更新临时区块中父区块Hash,成员X1所在节点针对目标项目全网中临时区块HierarchyNumber字段的最大值进行加1,获得所更新临时区块中HierarchyNumber字段的值,并按预设格式生成所更新临时区块中应用数据版本ID,然后进入步骤A7;
步骤A7.基于成员X1所在节点并基于版本ID、版本摘要Hash,对全部信息进行确认,并签名,然后结合分界区块的Number字段的值,生成临时区块,并向目标项目全网广播,各个节点接收该临时区块,并对节点自身的临时区块进行更新。
作为本发明的一种优选技术方案:所述步骤A4中,当任何其他节点在收到更新临时区块申请、并向成员X1所在节点返回TRUE后,该节点就进入等待更新的状态,不再发送更新请求。
作为本发明的一种优选技术方案:基于所述步骤A7中,临时区块的生成,根据临时区块对父区块的引用,系统还包括针对所有临时区块构建组成的一个不相交集合森林。
作为本发明的一种优选技术方案:还包括侧链更新永久区块方法,即各个侧链分别按如下步骤执行:
步骤B1.侧链所对应工程项目决策者所在节点向目标项目全网发送永久区块更新申请事件,目标项目全网中其他各节点通过步骤A4至步骤A5的方法,并设定该侧链的区块链状态为1,不再接受任何新区块更新事件,进入步骤B2;
步骤B2.工程项目决策者所在节点调用查询功能,获得当前分界区块所属临时区块的集合森林,并生成临时版本树根Hash,然后进入步骤B3;
步骤B3.工程项目决策者所在节点上传需要更新正式版本的最新完整应用数据,结合所获临时版本树根Hash,生成当前永久区块,然后进入步骤B4;
步骤B4.工程项目决策者所在节点实现当前永久区块对上一永久区块所对应临时区块集合森林的继承,然后进入步骤B5;
步骤B5.工程项目决策者所在节点向目标项目全网广播当前永久区块、以及当前永久区块所继承的临时区块集合森林,然后进入步骤B6;
步骤B6.指定工程项目决策者所在节点的广播,获得预先指定各成员所在节点的多方签名,然后进入步骤B7;
步骤B7.目标项目全网中其他节点收到广播后,通过预设共识算法实现目标项目全网中节点数据一致性的验证,若验证通过,则进入步骤B9;若验证不通过,则进入步骤B8;
步骤B8.目标项目全网同步中所有节点保持原数据状态,并将该侧链的区块链状态为0;
步骤B9.工程项目决策者所在节点在目标项目全网同步当前永久区块,并将当前永久区块设置为新的分界区块,再将该侧链的区块链状态为0,然后进入步骤B10;
步骤B10.将步骤B4中所继承的临时区块集合森林链接到当前永久区块。
作为本发明的一种优选技术方案:所述步骤B2中,按照各临时区块中HierarchyNumber字段值的升序排序,首先两两划分一组,分别计算生成各组两临时区块所对应应用数据之间的Hash值,获得各个中级Hash值,然后针对各个中级Hash值,顺序计算相邻中级Hash值之间的Hash值,直至获得最终Hash值,作为临时版本树根Hash。
作为本发明的一种优选技术方案:所述步骤B3中,生成当前永久区块后,在该侧链的应用数据MRT树中,当前永久区块将应用数据由上一正式版本更新为当前正式版本。
作为本发明的一种优选技术方案:所述步骤B4中,工程项目决策者所在节点删除上一永久区块下临时区块集合森林中关于旧版本应用数据的树,并针对剩余的树,按HierarchyNumber排序,从树的根区块开始,重新链接到当前永久区块,实现当前永久区块对上一永久区块所对应临时区块集合森林的继承,然后进入步骤B5。
本发明所述一种工程协作区块链数据结构及应用方法,采用以上技术方案与现有技术相比,具有以下技术效果:
本发明所设计工程协作区块链数据结构及应用方法,针对工程项目,引入区块链技术,设计主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目,通过各工程项目基于区块链的协同同步,实现了数据安全、永久存储、以及可追溯的效率,并以数据结构设计,搭建相应工程落地系统,具体构建应用方法,包括侧链更新临时区块方法和侧链更新永久区块方法,分别通过各组具体化的逻辑步骤设计,改善了工程领域针对各工程项目的协作和管理性能,提高实际生产和工程开发的效率。
附图说明
图1是多企业多人参与同一项目开发的人员结构示意图;
图2是一主多侧结构的示意图;
图3是在某个正式版本到下个正式版本间可能出现的临时版本迭代示意图;
图4是永久区块与临时区块各自区块头中包含的一部分关键数据示意图;
图5是改进后的项目侧链区块结构示意图;
图6是侧链更新临时区块方法的状态和步骤示意图;
图7是侧链更新永久区块方法的状态和步骤示意图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
假设区块链的性质是联盟链,共识机制采用拜占庭容错共识算法(即PBFT,下文提到时统一使用缩写)。项目需要管理的数据以CAD设计图纸作为示例。
之所以采用如上的假设,是考虑到在实际应用中,大多数项目的合作者之间都具有一定的信任,而非完全的陌生对象,所以联盟链结构会是更具有代表性的示例。而CAD图纸也是一个需要经常改动,多版本并行的典型数据种类,且数据体量较大。
首先,我们构想一个多方合作项目的人员结构。如图1所示,项目A由公司X与Y共同开发,涉及到的数据主要是CAD图纸。公司X的开发小组有三位成员X1、X2和X3,公司Y的开发小组有两位成员Y1和Y2,两个公司有各自内部的数据平台1和2,但是很显然出于一定的保密性考虑,平台1和2之间并非实时更新数据状态。当公司X做出了对共有设计图纸的更新需要通知Y时,X的某位成员需要将图纸通过中介软件发送给Y。
很显然,一条具有基础结构的联盟链就可以解决简单的数据版本同步问题。
因此,本发明设计了一种工程协作区块链数据结构,如图2所示,包括主链、以及各条侧链,其中,主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目。
具体来说,主链上设定项目基本信息MRT树和项目成员地址MRT树,其中,项目基本信息MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目基本信息在相应树叶节点上的存储;项目成员地址MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目中成员地址列表在在相应树叶节点上的存储;当工程项目A被创建时,为其生成一个地址,并在该地址对应的MPT树叶节点或分支节点(2)存储其基本信息对应的Hash值以及一个成员地址列表。
当工程项目A对应的地址value第一次被写入数据时,工程项目A侧链的创始区块也同时生成,根据不同的基本信息,侧链会有不同的数据结构。当有成员试图在工程项目A侧链上写入数据时,系统都会在主链上搜索工程项目A对应的成员列表以校验其权限。
各条侧链上分别设定成员地址MPT树和应用数据MRT树,其中,成员地址MPT树上,基于各成员所对应地址与各树叶节点之间的对应关系,实现各成员所对应应用数据Hash值在相应树叶节点中current_version字段的存储;应用数据MRT树上树叶节点的value字段内至少包含一个name字段、以及一个用于存储应用数据的字段或应用数据位置指针的字段;实际应用中,在工程项目A侧链上,维护一棵成员地址MPT树和一棵应用数据MRT树,这里应用数据MRT树即图纸版本MPT树,成员地址MPT树的节点value值内包含一个current_version字段,而图纸版本MPT树的节点value值内至少包含一个name字段和一个用于存储具体图纸文件或其位置指针的字段。
基于侧链中成员对相应应用数据的更新,实现侧链上成员地址MPT树和应用数据MRT树的更新,以及实现主链上项目基本信息MRT树和项目成员地址MRT树的更新。
应用中,分别针对各侧链,定义侧链上沿时序依次生成的各区块分别为永久区块,并基于时序在相邻永久区块之间引入各临时区块;在获得最新永久区块后,将该永久区块作为分界区块,基于侧链中各成员对相应应用数据的每次更新、以及侧链中各成员之间应用数据的每次同步,实现各临时区块的迭代生成,最后在预设介入时间点,通过预设共识机制,实现各临时区块的合并,获得下一个永久区块,且该永久区块中包含所合并各临时区块的信息,依次类推顺序执行,实现侧链上区块链的生成。
所述各临时区块的区块头包含父区块Hash、所对应分界区块序号的Number字段、HierarchyNumber字段、应用数据版本ID、作者签名公钥、版本摘要Hash,版本摘要Hash用于对更新数据做文字描述或第三方链接的记录,而不限于侧链所指定永久区块内的数据上传格式。
所述永久区块的区块头中包含父区块Hash、所对应分界区块序号的Number字段、HierarchyNumber字段、作者签名公钥、临时版本树根Hash,且永久区块中该HierarchyNumber字段始终为0。
假设成员X1完成一次图纸的更新,他用自己的地址生成了一个新区块,在这个区块中,他用新图纸对应数据计算出Hash值,并更新图纸版本MPT树相应叶节点的value值,那么项目中的其他成员按照对应的Hash值就可以查看到该次更新的具体数据。同时,他更新成员MPT树中自己地址下的current_version字段为该版本图纸Hash值。他可以一次写入多个Hash值构成的Mercle树根(1)来代表多个图纸的更新。
当需要查询图纸更新信息时,系统从最后一个区块开始,由生成区块的签名找到对应的作者,在其下的current_version字段找到最后一次更新的一个或多个图纸位置,通过name字段判定哪些图纸存在更新,并不断向前回溯,直到创始区块,从而获得一条完整的图纸版本更新路径。
可以看到,回溯版本的机制实际上和通过交易Hash回溯账号余额的机制是基本相似的。但是这种机制在实际工程应用中会遇到问题,由于交易都是不可逆的,所以账号的余额实际上在回溯时也会有单一明确的路径。区块链在设计时就特意避免了双花攻击的可能,系统不会允许一个节点对同一条链选择两条以上不同的发展路径。然而工程上设计版本却很有可能出现多版并行的临时状态,而这些并行版本信息的共享对于项目的协作同样重要。
所以,需要在上述提到的一主多侧形式上,对区块生成方法与数据结构进行一定的调整。
如图3所示,先定义一种项目A上可能出现的版本迭代情形:在正式版本v01和v02之间,存在6个不同的临时版本,他们之间的父子关系如图3所示,而每个版本都对应不同的作者。
观察这个可能出现的版本迭代情形,不难得出改进后的结构需要具备的一些特性:第一,由于v01.4版本和其父版本v01.1分别由两个公司的成员完成,那么链上数据就仍然需要具有实时性,即成员X1在完成v01.1之后能够立即在项目A侧链上更新该信息。第二,正式版本与正式版本之间具有唯一的路径,而正式版本到临时版本应该允许一对多的路径。第三,临时版本的更新不应该受共识机制约束。
那么,如图4所示,新的侧链允许出现两种不同的区块,分别是临时区块与永久区块;临时区块的区块头中除了显示区块序号的Number字段,还有一个显示临时区块层级的HierarchyNumber字段。同时,为了更快地同步信息且减小链上数据的数据量,区块头中包含版本摘要字段,允许区块的上传者仅对更新内容做文字描述或第三方链接的记录,而不限于侧链指定的永久区块内的设计图纸数据上传格式。
永久区块的区块头中同样包含HierarchyNumber字段,区别是该字段在永久区块中始终为0。区块头中还包含一个临时版本树根Hash值,该值的计算方式会在后续内容说明。
除此之外,临时区块的区块头包含一个版本ID的字段。该字段值由系统根据固定的逻辑生成。
如图5所示,新的项目A侧链结构分为两个部分,以最后一个永久区块为分界区块,该永久区块是所有区块中Number字段值最大且HierarchyNumber字段值为0的区块。在这个分界之前的区块都是永久区块,形成一条单链,而分界之后的区块都是临时区块,而所有临时区块通过检索Number字段值等于分界区块Number字段值且HierarchyNumber字段值不为0的区块确定。
现在假设分界区块的Number值是N,在这个区块上对应某个项目A的设计图纸的当前正式版本是如图3所示的v01。接下来,我们在上述改进过的结构下描述版本迭代的过程。
基于上述设计,本发明设计了一种工程协作区块链数据结构的应用方法,包括侧链更新临时区块方法和侧链更新永久区块方法,其中,侧链更新临时区块方法中,如图6所示,各个侧链分别按如下步骤A1至步骤A7执行。
步骤A1.侧链上生成永久区块,设定该侧链的区块链状态为0,并设定此时允许分布式网络内任何具有该侧链权限的节点生成临时区块,并且不允许此时任何节点发起永久区块的共识,同时将具有该侧链权限的所有节点组成的网络称为目标项目全网,所有节点的终端在目标项目全网内监听临时区块的提交申请,然后进入步骤A2。
步骤A2.将侧链上最新生成的永久区块作为分界区块,然后进入步骤A3。
步骤A3.当成员X1完成一次应用数据的更新,成员X1所在节点向目标项目全网发送该应用数据更新事件,申请更新临时区块,其中,应用数据更新事件中包括分界区块中的Number字段、以及目标项目全网中临时区块的HierarchyNumber字段的最大值,然后进入步骤A4。
步骤A4.目标项目全网中其他各个节点分别接收更新临时区块申请,针对所接收应用数据更新事件,其他各节点分别将应用数据更新事件中的信息与自身节点中临时区块上的信息进行比较,根据如下不同比较结果,分别执行不同进一步处理。
若应用数据更新事件中的Number字段、HierarchyNumber字段分别与自身节点中临时区块上的Number字段、HierarchyNumber字段均一致时,表示该节点上数据与成员X1所在节点发送应用数据更新事件中的数据一致,该节点向成员X1返回TRUE,并进入步骤A6。
若应用数据更新事件中的HierarchyNumber字段大于自身节点中临时区块上的HierarchyNumber字段,表示该节点上数据滞后成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1所在节点请求应用数据,直到节点中临时区块上的HierarchyNumber字段与应用数据更新事件中的HierarchyNumber字段相一致,然后该节点向成员X1返回TRUE,并进入步骤A6。
当任何其他节点在收到更新临时区块申请、并向成员X1所在节点返回TRUE后,该节点就进入等待更新的状态,不再发送更新请求。
若应用数据更新事件中的HierarchyNumber字段小于自身节点中临时区块上的HierarchyNumber字段,表示该节点上数据超前成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1返回FALSE,并进入步骤A5。
步骤A5.成员X1所在节点向发送FALSE的节点请求同步数据,并返回步骤A3。
步骤A6.成员X1所在节点获得最新更新应用数据的父版本,并获得更新临时区块中父区块Hash,成员X1所在节点针对目标项目全网中临时区块HierarchyNumber字段的最大值进行加1,获得所更新临时区块中HierarchyNumber字段的值,并按预设格式生成所更新临时区块中应用数据版本ID,然后进入步骤A7。
步骤A7.基于成员X1所在节点并基于版本ID、版本摘要Hash,对全部信息进行确认,并签名,然后结合分界区块的Number字段的值,生成临时区块,并向目标项目全网广播,各个节点接收该临时区块,并对节点自身的临时区块进行更新。
步骤A7中临时区块的生成,根据临时区块对父区块的引用,系统还包括针对所有临时区块构建组成的一个不相交集合森林。
实际应用中,侧链更新永久区块方法,如图7所示,各个侧链分别按如下步骤B1至步骤B10执行。
步骤B1.侧链所对应工程项目决策者所在节点向目标项目全网发送永久区块更新申请事件,目标项目全网中其他各节点通过步骤A4至步骤A5的方法,并设定该侧链的区块链状态为1,不再接受任何新区块更新事件,进入步骤B2。
步骤B2.工程项目决策者所在节点调用查询功能,获得当前分界区块所属临时区块的集合森林,并生成临时版本树根Hash,然后进入步骤B3。
其中关于临时版本树根Hash的生成,按照各临时区块中HierarchyNumber字段值的升序排序,首先两两划分一组,分别计算生成各组两临时区块所对应应用数据之间的Hash值,获得各个中级Hash值,然后针对各个中级Hash值,顺序计算相邻中级Hash值之间的Hash值,直至获得最终Hash值,作为临时版本树根Hash。
步骤B3.工程项目决策者所在节点上传需要更新正式版本的最新完整应用数据,结合所获临时版本树根Hash,生成当前永久区块,然后在该侧链的应用数据MRT树中,当前永久区块将应用数据由上一正式版本更新为当前正式版本,然后进入步骤B4。
步骤B4.工程项目决策者所在节点删除上一永久区块下临时区块集合森林中关于旧版本应用数据的树,并针对剩余的树,按HierarchyNumber排序,从树的根区块开始,重新链接到当前永久区块,实现当前永久区块对上一永久区块所对应临时区块集合森林的继承,然后进入步骤B5。
步骤B5.工程项目决策者所在节点向目标项目全网广播当前永久区块、以及当前永久区块所继承的临时区块集合森林,然后进入步骤B6。
步骤B6.指定工程项目决策者所在节点的广播,获得预先指定各成员所在节点的多方签名,然后进入步骤B7。
步骤B7.目标项目全网中其他节点收到广播后,通过预设共识算法实现目标项目全网中节点数据一致性的验证,若验证通过,则进入步骤B9;若验证不通过,则进入步骤B8。
步骤B8.目标项目全网同步中所有节点保持原数据状态,并将该侧链的区块链状态为0。
步骤B9.工程项目决策者所在节点在目标项目全网同步当前永久区块,并将当前永久区块设置为新的分界区块,再将该侧链的区块链状态为0,然后进入步骤B10。
步骤B10.将步骤B4中所继承的临时区块集合森林链接到当前永久区块。
本技术方案设计工程协作区块链数据结构及应用方法,针对工程项目,引入区块链技术,设计主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目,通过各工程项目基于区块链的协同同步,实现了数据安全、永久存储、以及可追溯的效率,并以数据结构设计,搭建相应工程落地系统,具体构建应用方法,包括侧链更新临时区块方法和侧链更新永久区块方法,分别通过各组具体化的逻辑步骤设计,改善了工程领域针对各工程项目的协作和管理性能,提高实际生产和工程开发的效率。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

Claims (9)

1.一种工程协作区块链数据结构的应用方法,其特征在于:工程协作区块链数据结构包括主链、以及各条侧链,其中,主链用于维护各工程项目之间的共同数据对象,各条侧链分别对应一个工程项目;主链上设定项目基本信息MRT树和项目成员地址MRT树,其中,项目基本信息MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目基本信息在相应树叶节点上的存储;项目成员地址MRT树上,基于各工程项目所对应地址与各树叶节点之间的对应关系,实现各工程项目中成员地址列表在在相应树叶节点上的存储;各条侧链上分别设定成员地址MPT树和应用数据MRT树,其中,成员地址MPT树上,基于各成员所对应地址与各树叶节点之间的对应关系,实现各成员所对应应用数据Hash值在相应树叶节点中current_version字段的存储;应用数据MRT树上树叶节点的value字段内至少包含一个name字段、以及一个用于存储应用数据的字段或应用数据位置指针的字段;基于侧链中成员对相应应用数据的更新,实现侧链上成员地址MPT树和应用数据MRT树的更新,以及实现主链上项目基本信息MRT树和项目成员地址MRT树的更新;
应用方法包括侧链更新临时区块方法,即各个侧链分别按如下步骤执行:
步骤A1.侧链上生成永久区块,设定该侧链的区块链状态为0,并设定此时允许分布式网络内任何具有该侧链权限的节点生成临时区块,并且不允许此时任何节点发起永久区块的共识,同时将具有该侧链权限的所有节点组成的网络称为目标项目全网,所有节点的终端在目标项目全网内监听临时区块的提交申请,然后进入步骤A2;
步骤A2.将侧链上最新生成的永久区块作为分界区块,然后进入步骤A3;
步骤A3.当成员X1完成一次应用数据的更新,成员X1所在节点向目标项目全网发送该应用数据更新事件,申请更新临时区块,其中,应用数据更新事件中包括分界区块中的Number字段、以及目标项目全网中临时区块的HierarchyNumber字段的最大值,然后进入步骤A4;
步骤A4.目标项目全网中其他各个节点分别接收更新临时区块申请,针对所接收应用数据更新事件,其他各节点分别将应用数据更新事件中的信息与自身节点中临时区块上的信息进行比较,根据如下不同比较结果,分别执行不同进一步处理;
若应用数据更新事件中的Number字段、HierarchyNumber字段分别与自身节点中临时区块上的Number字段、HierarchyNumber字段均一致时,表示该节点上数据与成员X1所在节点发送应用数据更新事件中的数据一致,该节点向成员X1返回TRUE,并进入步骤A6;
若应用数据更新事件中的HierarchyNumber字段大于自身节点中临时区块上的Hierarchy Number字段,表示该节点上数据滞后成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1所在节点请求应用数据,直到节点中临时区块上的HierarchyNumber字段与应用数据更新事件中的HierarchyNumber字段相一致,然后该节点向成员X1返回TRUE,并进入步骤A6;
若应用数据更新事件中的HierarchyNumber字段小于自身节点中临时区块上的Hierarchy Number字段,表示该节点上数据超前成员X1所在节点发送应用数据更新事件中的数据,则该节点向成员X1返回FALSE,并进入步骤A5;
步骤A5.成员X1所在节点向发送FALSE的节点请求同步数据,并返回步骤A3;
步骤A6.成员X1所在节点获得最新更新应用数据的父版本,并获得更新临时区块中父区块Hash,成员X1所在节点针对目标项目全网中临时区块HierarchyNumber字段的最大值进行加1,获得所更新临时区块中HierarchyNumber字段的值,并按预设格式生成所更新临时区块中应用数据版本ID,然后进入步骤A7;
步骤A7.基于成员X1所在节点并基于版本ID、版本摘要Hash,对全部信息进行确认,并签名,然后结合分界区块的Number字段的值,生成临时区块,并向目标项目全网广播,各个节点接收该临时区块,并对节点自身的临时区块进行更新。
2.根据权利要求1所述一种工程协作区块链数据结构的应用方法,其特征在于:所述步骤A4中,当任何其他节点在收到更新临时区块申请、并向成员X1所在节点返回TRUE后,该节点就进入等待更新的状态,不再发送更新请求。
3.根据权利要求1所述一种工程协作区块链数据结构的应用方法,其特征在于:基于所述步骤A7中,临时区块的生成,根据临时区块对父区块的引用,系统还包括针对所有临时区块构建组成的一个不相交集合森林。
4.根据权利要求3所述一种工程协作区块链数据结构的应用方法,其特征在于:还包括侧链更新永久区块方法,即各个侧链分别按如下步骤执行:
步骤B1.侧链所对应工程项目决策者所在节点向目标项目全网发送永久区块更新申请事件,目标项目全网中其他各节点通过步骤A4至步骤A5的方法,并设定该侧链的区块链状态为1,不再接受任何新区块更新事件,进入步骤B2;
步骤B2.工程项目决策者所在节点调用查询功能,获得当前分界区块所属临时区块的集合森林,并生成临时版本树根Hash,然后进入步骤B3;
步骤B3.工程项目决策者所在节点上传需要更新正式版本的最新完整应用数据,结合所获临时版本树根Hash,生成当前永久区块,然后进入步骤B4;
步骤B4.工程项目决策者所在节点实现当前永久区块对上一永久区块所对应临时区块集合森林的继承,然后进入步骤B5;
步骤B5.工程项目决策者所在节点向目标项目全网广播当前永久区块、以及当前永久区块所继承的临时区块集合森林,然后进入步骤B6;
步骤B6.指定工程项目决策者所在节点的广播,获得预先指定各成员所在节点的多方签名,然后进入步骤B7;
步骤B7.目标项目全网中其他节点收到广播后,通过预设共识算法实现目标项目全网中节点数据一致性的验证,若验证通过,则进入步骤B9;若验证不通过,则进入步骤B8;
步骤B8.目标项目全网同步中所有节点保持原数据状态,并将该侧链的区块链状态为0;
步骤B9.工程项目决策者所在节点在目标项目全网同步当前永久区块,并将当前永久区块设置为新的分界区块,再将该侧链的区块链状态为0,然后进入步骤B10;
步骤B10.将步骤B4中所继承的临时区块集合森林链接到当前永久区块。
5.根据权利要求4所述一种工程协作区块链数据结构的应用方法,其特征在于:所述步骤B2中,按照各临时区块中HierarchyNumber字段值的升序排序,首先两两划分一组,分别计算生成各组两临时区块所对应应用数据之间的Hash值,获得各个中级Hash值,然后针对各个中级Hash值,顺序计算相邻中级Hash值之间的Hash值,直至获得最终Hash值,作为临时版本树根Hash。
6.根据权利要求4所述一种工程协作区块链数据结构的应用方法,其特征在于:所述步骤B3中,生成当前永久区块后,在该侧链的应用数据MRT树中,当前永久区块将应用数据由上一正式版本更新为当前正式版本。
7.根据权利要求4所述一种工程协作区块链数据结构的应用方法,其特征在于:所述步骤B4中,工程项目决策者所在节点删除上一永久区块下临时区块集合森林中关于旧版本应用数据的树,并针对剩余的树,按HierarchyNumber排序,从树的根区块开始,重新链接到当前永久区块,实现当前永久区块对上一永久区块所对应临时区块集合森林的继承,然后进入步骤B5。
8.根据权利要求1所述一种工程协作区块链数据结构的应用方法,其特征在于:分别针对各侧链,定义侧链上沿时序依次生成的各区块分别为永久区块,并基于时序在相邻永久区块之间引入各临时区块;在获得最新永久区块后,将该永久区块作为分界区块,基于侧链中各成员对相应应用数据的每次更新、以及侧链中各成员之间应用数据的每次同步,实现各临时区块的迭代生成,最后在预设介入时间点,通过预设共识机制,实现各临时区块的合并,获得下一个永久区块,且该永久区块中包含所合并各临时区块的信息,依次类推顺序执行,实现侧链上区块链的生成。
9.根据权利要求8所述一种工程协作区块链数据结构的应用方法,其特征在于:所述各临时区块的区块头包含父区块Hash、所对应分界区块序号的Number字段、HierarchyNumber字段、应用数据版本ID、作者签名公钥、版本摘要Hash,版本摘要Hash用于对更新数据做文字描述或第三方链接的记录,而不限于侧链所指定永久区块内的数据上传格式;
所述永久区块的区块头中包含父区块Hash、所对应分界区块序号的Number字段、Hierarchy Number字段、作者签名公钥、临时版本树根Hash,且永久区块中该HierarchyNumber字段始终为0。
CN202010413778.0A 2020-05-15 2020-05-15 一种工程协作区块链数据结构及应用方法 Active CN111625598B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010413778.0A CN111625598B (zh) 2020-05-15 2020-05-15 一种工程协作区块链数据结构及应用方法
PCT/CN2020/115018 WO2021227319A1 (zh) 2020-05-15 2020-09-14 一种工程协作区块链数据结构及应用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010413778.0A CN111625598B (zh) 2020-05-15 2020-05-15 一种工程协作区块链数据结构及应用方法

Publications (2)

Publication Number Publication Date
CN111625598A CN111625598A (zh) 2020-09-04
CN111625598B true CN111625598B (zh) 2023-08-25

Family

ID=72259033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010413778.0A Active CN111625598B (zh) 2020-05-15 2020-05-15 一种工程协作区块链数据结构及应用方法

Country Status (2)

Country Link
CN (1) CN111625598B (zh)
WO (1) WO2021227319A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625598B (zh) * 2020-05-15 2023-08-25 南京东垚建筑科技研究院有限公司 一种工程协作区块链数据结构及应用方法
CN112766740B (zh) * 2021-01-22 2021-11-02 湖南工商大学 一种基于侧链的公共安全应急情报区块链共享模型及方法
CN113656771B (zh) * 2021-10-20 2022-01-04 湖南宸瀚信息科技有限责任公司 一种基于区块链技术的群组产品协同设计数据协同系统
CN113868231B (zh) * 2021-12-03 2022-03-18 南昌龙旗信息技术有限公司 数据结构的更新方法及装置
CN115643292B (zh) * 2022-12-21 2023-03-17 中科航迈数控软件(深圳)有限公司 一种基于双层区块链的机床能耗数据追踪方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117097A (zh) * 2018-09-05 2019-01-01 深圳正品创想科技有限公司 一种基于区块链的数据存储方法及系统
CN109584071A (zh) * 2018-11-28 2019-04-05 青岛逸海蓝图信息科技有限公司 区块链处理方法和电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108363545B (zh) * 2017-01-26 2021-12-03 华为技术有限公司 一种数据配置方法及数据配置装置
CN109993656A (zh) * 2019-03-11 2019-07-09 杭州复杂美科技有限公司 树形区块链处理方法、设备和存储介质
CN110490562A (zh) * 2019-07-10 2019-11-22 布比(北京)网络技术有限公司 一种多区块链的跨链数据处理方法和系统
CN110471795B (zh) * 2019-07-31 2020-10-02 阿里巴巴集团控股有限公司 区块链状态数据恢复方法及装置、电子设备
CN111625598B (zh) * 2020-05-15 2023-08-25 南京东垚建筑科技研究院有限公司 一种工程协作区块链数据结构及应用方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117097A (zh) * 2018-09-05 2019-01-01 深圳正品创想科技有限公司 一种基于区块链的数据存储方法及系统
CN109584071A (zh) * 2018-11-28 2019-04-05 青岛逸海蓝图信息科技有限公司 区块链处理方法和电子设备

Also Published As

Publication number Publication date
CN111625598A (zh) 2020-09-04
WO2021227319A1 (zh) 2021-11-18

Similar Documents

Publication Publication Date Title
CN111625598B (zh) 一种工程协作区块链数据结构及应用方法
JP7362654B2 (ja) 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理
CN110046894B (zh) 一种基于纠删码的分组可重构区块链建立方法
CN106372533B (zh) 基于区块链技术的内容存储方法
CN112835612A (zh) 一种基于区块链的电子文档版本管理方法及装置
TWI706283B (zh) 基於區塊鏈的流量統計方法、裝置和設備
CN113157733A (zh) 一种面向多链数据关联性的高效溯源查询方法
CN110930152B (zh) 一种基于区块链的数据处理方法及相关设备
CN112286963A (zh) 一种区块链终端数据可信查询系统及其实现方法
Westerkamp et al. Smartsync: Cross-blockchain smart contract interaction and synchronization
CN114328518A (zh) 基于utxo模型的低存储消耗的方法和系统
KR102349014B1 (ko) 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템
CN111414417B (zh) 一种基于区块链的视频版权管理方法
CN113810185B (zh) 一种抗陷门泄露的链上数据修复系统及方法
Zou et al. Dynamic provable data possession based on ranked merkle hash tree
Ren et al. VAPOR: a value-centric blockchain that is scale-out, decentralized, and flexible by design
CN113704813A (zh) 海工装备二级标识数据存储方法及系统、验证方法及系统
CN117010889A (zh) 数据处理方法、装置及设备、介质、产品
Salehi Integration of blockchain technologie in case of systems engineering and software engineering in an industrial context
Ren et al. Vapor: A value-centric blockchain that is scale-out, decentralized, and flexible by design
Canciani et al. Auditable data structures: theory and applications
KR20210086074A (ko) 블록체인 네트워크를 구축할 수 있는 블록체인 관리시스템
CN117478300B (zh) 基于节点确定的跨链共识方法、装置和计算机设备
CN112906069B (zh) 一种区块链登记管理过程的可信计算方法
CN115086313B (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