基于区块链的数据冲突发现方法与流程

专利2022-06-29  43


本发明涉及区块链技术领域,特别是涉及一种基于区块链的数据冲突发现方法。



背景技术:

随着互联互通、信息共享的逐步推进,跨系统获取其它系统所生产的数据已经成为一种常态。然而,由于我们并没有对被共享数据的“源”和“副本”建立有效的关联和约束,使得在应用中“源”与“副本”之间存在以下情况:

1.生产数据的系统可能在“源数据”被传播后对其进行更新(update)或删除(delete);

2.通过共享获取到数据的系统,可能对该数据的“副本”进行随意处置,包括可能的清洗、修改(update)。

因此,在整个共享域内,被共享的“数据”可能存在:“源”与“副本”不一致、多个“副本”之间不一致。由此,我们需要对共享数据的游走轨迹进行跟踪、及时发现数据冲突、对数据的新鲜度进行度量。

解决数据验证问题基本原理是在共享域范围内,将“副本”与“源”进行实时比对。那么,在寻找“副本”对应的“源”时,传统方法需要:找到共享域内对应节点的库、该库的数据表、该表的某条记录,进行比对,比对结束的下一秒继续重复该步骤。因而利用传统技术来解决数据的冲突发现问题的时间复杂度为o(n4)。采用传统技术解决这些问题,理论上可行,实际上非常“棘手”。

因此亟需提供一种新型的数据冲突发现方法来解决上述问题。



技术实现要素:

本发明所要解决的技术问题是提供一种基于区块链的数据冲突发现方法,能够将其时间复杂度降低为o(n),即通过对区块链的一遍检索即可完成对应的计算,极大地提升了解决问题的效率。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于区块链的数据冲突发现方法,包括以下步骤:

s1:以区块链系统为支撑,将共享域内所有系统的数据生产、数据维护、数据传播操作的结果全部按时间戳进入区块,每个区块记载一次操作,并有区分数据生产、数据维护、数据传播操作的标记;

s2:从区块链当前的链尾向链首或最近一次已检索位置进行顺序检索,对检索到的每一个区块文件进行解析,解析的结果写入区块解析数据表;所述区块解析数据表包含七个数据字段,分别为序号、数据版权、{值}、节点1、节点2、时间戳、操作标识;

s3:针对指定的数据版权,从所述区块解析数据表中查询出数据版权等于指定值的所有记录,对比其数据的{值},如果发现不一致,则说明指定的数据版权存在数据冲突,并指出其数据{值}不一致的节点名称。

在本发明一个较佳实施例中,所述数据为社会活动或事务处理所需的一个或多个相关的数据集,采用如下元组表示:

数据=<键,{值}>(1)

其中,键用以区分不同的数据;{值}表示相关数据的具体数值的集合。

在本发明一个较佳实施例中,所述数据版权是生产数据的环境、参与者,以及时间标记的计算结果,其逻辑涵义为:参与者们在一个特定时刻,通过特定信息化系统完成了某个事务处理,数据版权模型如下式所示:

数据版权=计算(<{服务对象},{服务提供者},{数据维护者},{服务工具},服务时间戳>)(2)

在(2)式中,计算采用sha256或国密算法sm3;

服务对象:指事务处理过程中被服务的人群;

服务提供者:指操作“服务工具”向“服务对象”提供服务的人群;

数据维护者:指维护事务处理结果数据的人群,一般为dba;

服务工具:指提供服务的信息系统或业务系统;

服务时间戳:指该事务处理结束的时间戳。

进一步的,一个事务处理的结果形式化表示为以下元组:

事务处理=<数据版权,{值}>(3)

其中,数据版权是数据的键,而{值}是该数据版权对应事务处理的数据变量的值的集合。

在本发明一个较佳实施例中,步骤s3的具体步骤包括:

s301:接收用户指定的数据版权,其值赋给变量a;

s302:在所述区块解析数据表中查询出“数据版权”=a的所有记录;

s303:如果查询结果的记录数=0,则提示:未找到对应数据,进入s314;

s304:如果查询结果的记录数=1,则提示:该数据无冲突,进入s314;

s305:按时间戳的升序对查询结果记录进行排序,设定p、q为记录指针;

s306:p指向第一条记录;

s307:读取p记录中的“{值}”;

s308:q=p 1;

s309:读取q记录中的“{值}”,对p、q两条记录的“{值}”进行比较;

s310:如果比较结果不等,则判断“操作标识”是否为3,是则记载“节点2”并提示差异,否则记载“节点1”并提示差异;

s311:判断q是否指向最后一条记录,如果不是,进入s308;

s312:p=p 1;

s313:判断p是否指向最后一条记录,如果不是,进入s307;

s314:结束。

本发明的有益效果是:

(1)本发明利用区块链技术进行数据冲突发现,在共享域内,将所有系统的数据生产(insert)、数据维护(update或delete)、数据传播(数据的“副本”传输)行为和结果格式化成“交易”,并按发生的时间顺序写入对应的区块,存储于区块链上;再通过对区块链的检索,解析区块,将同一“数据版权”对应的存储于各区块的“数据”进行比较,可以轻松、方便、快捷地找出指定“数据”是否发生冲突;

(2)本发明借助区块链的支撑,使得解决数据冲突发现的时间复杂度由传统技术方法o(n4)降低为o(n),通过对区块链的一遍检索即可实现数据冲突发现,其方法本身具有无须增加计算能力、无须增加网络带宽、成本低、效益高的特点;另外,解决数据冲突发现问题是互联互通、信息共享工作推进中存在的刚性需求,为数据中心升级为数据版权中心、数据验证中心提供了一种可靠的技术方法,具有很高的应用价值。

附图说明

图1是数据生产、数据维护、数据传播操作入链的示意图;

图2是检索区块链的流程图;

图3是本发明基于区块链的数据冲突发现方法的流程图。

具体实施方式

下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。

首先对本发明中出现的术语进行解释,以使本发明所述方法能更易于被本领域技术人员理解。

1.1.数据

权威文献指出,数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。

一般而言,通过数字化手段将某个事实或观察结果(如:社会活动、事务处理结果)记载下来,需要通过一个或多个相关的数据集来实现。而这一个或多个相关的数据集通常就被称为这个社会活动或事务处理所对应的“数据”。且这个“数据”中用以标识其唯一性的部分被称为“键”,剩下的数据被称为“值”,即如下的元组:

数据=<键,{值}>(1)

在(1)式中,“键”用以区分不同的数据;“{值}”表示相关数据的具体数值的集合。

本发明中沿用这种习惯,以下所有“数据”皆来源于记载事务处理结果的“数据集”,皆用(1)式描述。

1.2.数据版权

数据版权是生产数据的环境、参与者,以及时间标记的计算结果。其逻辑涵义为:“参与者”们在一个特定“时刻”,通过特定“信息化系统”完成了某个“事务处理”。因此,数据版权模型可用下式表示:

数据版权=计算(<{服务对象},{服务提供者},{数据维护者},{服务工具},服务时间戳>)(2)

在(2)式中,“计算”可用sha256或国密算法sm3。

服务对象:指事务处理过程中被服务的人群;

服务提供者:指操作“服务工具”向“服务对象”提供服务的人群;

数据维护者:指维护事务处理结果数据的人群,一般为dba(databaseadministrator,数据库管理员);

服务工具:指提供服务的信息系统或业务系统;

服务时间戳:指该事务处理结束的时间戳。

利用“公式(1)和公式(2)”,可将一个事务处理的结果形式化表示为以下元组:

事务处理=<数据版权,{值}>(3)

其中,“数据版权”是“数据”的键,而{值}是该“数据版权”对应事务处理的数据变量的值的集合。

在数据生产阶段,“数据版权”得以确定。在数据维护阶段:如果是更新(update),根据(3)式可知,更新数据的{值}时,其“数据版权”不发生变化;如果是删除(delete),则数据的{值}被删除,其对应的“数据版权”同时消失。在数据传播阶段,传递数据的{值}的同时,也同时传播“数据版权”,即数据传播不改变“数据版权”。

1.3.数据冲突

是指共享域内,指定“数据版权”的“数据”的“值”在不同节点存在差异。

例2:数据版权为391ef5239da2a3904cda1fd995fb7c43的数据,

在node2节点的值为:{姓名:刘强,性别:男,民族:汉,出生年月:198607,学历:本科,学位:工学学士,职业:中学数学教师,婚姻状况:未婚}。

在node3节点的值为:{姓名:刘强,性别:男,民族:汉,出生年月:198607,学历:本科,学位:工学学士,职业:中学数学教师,婚姻状况:已婚}。

则说明,数据版权为391ef5239da2a3904cda1fd995fb7c43的数据,在node2节点与node3节点间发生冲突。

请参阅图3,一种基于区块链的数据冲突发现方法,包括以下步骤:

s1:以区块链系统为支撑,将共享域内所有系统的数据生产、数据维护、数据传播操作的结果全部按时间戳进入区块,每个区块记载一次操作,并有区分数据生产、数据维护、数据传播操作的标记;

结合图1,给出了共享域内所有业务系统的数据生产(对应图上的“新增”)、数据维护(对应图上的“修改”、“删除”)、数据传播(对应图上的“传播”)操作时,其数据入链的示意图。每个业务系统每次上述所指的操作将被格式化为一个区块进入当前区块链的链尾,在这些区块中有特定变量记载了操作的类型标识(0表示“新增”,1表示“修改”,2表示“删除”,3表示“传播”,4表示“其它”)。

s2:从区块链当前的链尾向链首或最近一次已检索位置进行顺序检索,对检索到的每一个区块文件进行解析,解析的结果写入区块解析数据表;最近一次已检索位置即每次检索的当时“链尾”区块位置记载在检索记录表中。所述检索记录表的结构如表1所示。

表1

该数据表包含两个数据字段,分别为:

“时间戳”:表示最近一次检索的时间;

“区块头的哈希值”:表示最近一次检索时的“链尾”区块的区块头哈希值。

如果该数据表的记录数为0,则表示未检索过,否则仅有的一条记录记载了最近一次检索的最终位置。

所述区块解析数据表的结构如表2所示。

表2

该数据表包含七个数据字段,分别为:

“序号”:整数,由系统自动增加并产生,是记录的key;

“数据版权”:32个字节,是公式(2)计算的结果;

“{值}”:是该区块中除“数据版权”外的其它数据项的值的集合;

“节点1”:是节点名称或节点id,不能为空。当“操作标识”为3时,表示发送数据的节点;

“节点2”:是节点名称或节点id,当“操作标识”为3时不能为空,表示接收数据的节点;

“时间戳”:略;

“操作标识”:1位数字。其中,0表示新增;1表示修改;2表示删除;3表示传播;4表示其它。

结合图2,给出了检索区块链的操作过程,每次检索都是从当前的“链尾”区块开始,一直检索到“链首”(第一次检索)或“上次检索位置区块”(非第一次检索)为止。具体过程如下:

s201:读取“检索记录表”,统计其记录数;

s202:如果“记录数>0”,则进入sa201;

s203:如果“记录数=0”,则读取区块链系统的“链尾”文件;

s204:获取当前区块;

s205:依据区块结构解析当前区块;

s206:判断当前区块是否为“链首”区块?

s207:如果不是,则将解析结果写入“区块解析数据表”,读取“前向区块”指针,进入s204;否则进入sa207;

sa201:获取“最近检索的区块位置值”;

sa202:读取区块链系统的“链尾”文件;

sa203:获取当前区块;

sa204:依据区块结构解析当前区块;

sa205:判断当前区块是否为“最近检索的区块位置值”区块?

sa206:如果不是,则将解析结果写入“区块解析数据表”,读取“前向区块”指针,进入sa203;否则进入sa207;

sa207:用当前“时间戳”和“链尾区块值”替代“检索记录表”中内容;

sa208:结束。

s3:针对指定的数据版权,从所述区块解析数据表中查询出数据版权等于指定值的所有记录,对比其数据的{值},如果发现不一致,则意味着指定的数据版权存在数据冲突,并指出其数据{值}不一致的节点名称。具体步骤包括:

s301:接收用户指定的数据版权,其值赋给变量a;

s302:在所述区块解析数据表中查询出“数据版权”=a的所有记录;

s303:如果查询结果的记录数=0,则提示:未找到对应数据,进入s314;

s304:如果查询结果的记录数=1,则提示:该数据无冲突,进入s314;

s305:按时间戳的升序对查询结果记录进行排序,设定p、q为记录指针;

s306:p指向第一条记录;

s307:读取p记录中的“{值}”;

s308:q=p 1;

s309:读取q记录中的“{值}”,对p、q两条记录的“{值}”进行比较;

s310:如果比较结果不等,则判断“操作标识”是否为3,是则记载“节点2”并提示差异,否则记载“节点1”并提示差异;

s311:判断q是否指向最后一条记录,如果不是,进入s308;

s312:p=p 1;

s313:判断p是否指向最后一条记录,如果不是,进入s307;

s314:结束。

下面结合一实施例对本发明所述方法进行详细阐述:

共享域内有三个业务系统:公安人口信息系统、社区服务平台、民政殡葬死亡登记系统。其应用场景如下:

x市y区公安分局,于1982年6月11日9时32分12秒,由工作人员张刚操作“公安人口信息管理系统”对群众杨某的人口信息进行了登记,维护该数据的dba为刘翔东。其记载的信息有:

{姓名:杨某,性别:男,民族:汉,居民身份证号码:340100********0617,居住地:z社区k1小区9栋602室,生存状态:正常}

2010年10月12日14时20分17秒,z社区服务平台工作人员柳红通过x市共享交换平台向公安局张刚申请第356号接口的执行,获得本社区居民杨某的有关信息。

因车祸事故,杨某身故,2016年8月2日10时12分16秒,x市的民政局殡葬部门工作人员尚小龙操作民政殡葬死亡登记系统,对杨某的死亡事实进行了登记,维护该数据的工作人员为赵鸿滨。其登记的信息有:

{姓名:杨某,性别:男,居民身份证号码:340100********0617,死亡时间:20160802,死亡原因:车祸}

2016年8月6日8时24分38秒,民政殡葬死亡登记系统将杨某死亡信息共享给公安人口信息系统,因此,公安人口信息系统于2016年8月6日11时8分28秒,对杨某的人口信息进行了更新。更新后的信息为:

{姓名:杨某,性别:男,民族:汉,居民身份证号码:340100********0617,居住地:z社区k1小区9栋602室,生存状态:死亡}

以下结合区块链系统对应用场景进行分析:

假定,实施例中数据版权计算假定采用sha256算法;

公安人口信息系统、社区服务平台、民政殡葬死亡登记系统在区块链网络中对应的节点名分别为n1,n2,n3。

1.公安人口信息系统:于1982年6月11日9时32分12秒进行了一次事务处理,生产了对应数据,其中,

“数据版权”=sha256(杨某,张刚,刘翔东,公安人口信息管理系统,392607132)

=0cdea35e056dcac311e1d103498286c76cfbc981877070404bba44f5dfcc66ef。

数据的“{值}”={姓名:杨某,性别:男,民族:汉,居民身份证号码:340100********0617,居住地:z社区k1小区9栋602室,生存状态:正常}

该事务处理的结果数据将被写入对应区块,包括:

0cdea35e056dcac311e1d103498286c76cfbc981877070404bba44f5dfcc66ef,{杨某,男,汉,340100********0617,z社区k1小区9栋602室,正常},392607132,n1,null,0

2.社区服务平台:与公安人口信息系统之间执行一个数据传播事务,被写入区块的数据如下:

0cdea35e056dcac311e1d103498286c76cfbc981877070404bba44f5dfcc66ef,{杨某,男,汉,340100********0617,z社区k1小区9栋602室,正常},1286864417,n1,n2,3

3.民政殡葬死亡登记系统:因对杨某的死亡进行登记,形成一次数据生产:

“数据版权”=sha256(杨某,尚小龙,赵鸿滨,民政殡葬死亡登记系统,1470103936)

=134cb96c0e2ede8af5a3071f61292cc0a0fe13a075209d174d3e375389213dac。

数据的“{值}”={姓名:杨某,性别:男,居民身份证号码:340100********0617,死亡时间:2016.8.2,死亡原因:车祸}。

该事务处理的结果数据被写入区块,包括:

134cb96c0e2ede8af5a3071f61292cc0a0fe13a075209d174d3e375389213dac,{杨某,男,340100********0617,20160802,车祸},1470103936,n3,null,0

4.民政殡葬死亡登记系统将杨某因车祸死亡的信息共享给公安人口信息系统,形成一次数据传播事务,被写入区块的数据如下:

134cb96c0e2ede8af5a3071f61292cc0a0fe13a075209d174d3e375389213dac,{杨某,男,340100********0617,20160802,车祸},1470443078,n3,n1,3

5.公安人口信息系统因接收了民政殡葬死亡登记系统共享的杨某死亡信息,对其原人口信息进行了更新,其结果被写入区块,包括:

0cdea35e056dcac311e1d103498286c76cfbc981877070404bba44f5dfcc66ef,{杨某,男,汉,340100********0617,z社区k1小区9栋602室,死亡},1470452908,n1,null,1

以下根据本发明给出的方法进行数据冲突发现的处理,假定“检索记录表”为空,则说明是第一次对区块链进行检索。

按照“图2”的处理流程,从“链尾”向“链首”进行区块检索,并解析每一个区块,解析结果写入“区块解析数据表”中,那么,检索结束后“区块解析数据表”的内容如下:

当用户输入待处理的“数据版权”值:0cdea35e056dcac311e1d103498286c76cfbc981877070404bba44f5dfcc66ef后,查询“区块解析数据表”中“数据版权”等于输入值的所有记录,并按时间戳升序排列,结果如下:

表4从“区块解析数据表”中查询出符合条件并按时间戳升序排列的记录

根据图3的处理流程,参见“表4”数据可知,指定的“数据版权”对应的数据,在n1节点与n2节点之间其“{值}”不一致,存在冲突。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。


技术特征:

1.一种基于区块链的数据冲突发现方法,包括以下步骤:

s1:以区块链系统为支撑,将共享域内所有系统的数据生产、数据维护、数据传播操作的结果全部按时间戳进入区块,每个区块记载一次操作,并有区分数据生产、数据维护、数据传播操作的标记;

s2:从区块链当前的链尾向链首或最近一次已检索位置进行顺序检索,对检索到的每一个区块文件进行解析,解析的结果写入区块解析数据表;所述区块解析数据表包含七个数据字段,分别为序号、数据版权、{值}、节点1、节点2、时间戳、操作标识;

s3:针对指定的数据版权,从所述区块解析数据表中查询出数据版权等于指定值的所有记录,对比其数据的{值},如果发现不一致,则说明指定的数据版权存在数据冲突,并指出其数据{值}不一致的节点名称。

2.根据权利要求1所述的基于区块链的数据冲突发现方法,其特征在于,所述数据为社会活动或事务处理所需的一个或多个相关的数据集,采用如下元组表示:

数据=<键,{值}>(1)

其中,键用以区分不同的数据;{值}表示相关数据的具体数值的集合。

3.根据权利要求1所述的基于区块链的数据冲突发现方法,其特征在于,所述数据版权是生产数据的环境、参与者,以及时间标记的计算结果,其逻辑涵义为:参与者们在一个特定时刻,通过特定信息化系统完成了某个事务处理,数据版权模型如下式所示:

数据版权=计算(<{服务对象},{服务提供者},{数据维护者},{服务工具},服务时间戳>)(2)

在(2)式中,计算采用sha256或国密算法sm3;

服务对象:指事务处理过程中被服务的人群;

服务提供者:指操作“服务工具”向“服务对象”提供服务的人群;

数据维护者:指维护事务处理结果数据的人群;

服务工具:指提供服务的信息系统或业务系统;

服务时间戳:指该事务处理结束的时间戳。

4.根据权利要求2或3所述的基于区块链的数据冲突发现方法,其特征在于,一个事务处理的结果形式化表示为以下元组:

事务处理=<数据版权,{值}>(3)

其中,数据版权是数据的键,而{值}是该数据版权对应事务处理的数据变量的值的集合。

5.根据权利要求1所述的基于区块链的数据冲突发现方法,其特征在于,步骤s3的具体步骤包括:

s301:接收用户指定的数据版权,其值赋给变量a;

s302:在所述区块解析数据表中查询出“数据版权”=a的所有记录;

s303:如果查询结果的记录数=0,则提示:未找到对应数据,进入s314;

s304:如果查询结果的记录数=1,则提示:该数据无冲突,进入s314;

s305:按时间戳的升序对查询结果记录进行排序,设定p、q为记录指针;

s306:p指向第一条记录;

s307:读取p记录中的“{值}”;

s308:q=p 1;

s309:读取q记录中的“{值}”,对p、q两条记录的“{值}”进行比较;

s310:如果比较结果不等,则判断“操作标识”是否为3,是则记载“节点2”并提示差异,否则记载“节点1”并提示差异;

s311:判断q是否指向最后一条记录,如果不是,进入s308;

s312:p=p 1;

s313:判断p是否指向最后一条记录,如果不是,进入s307;

s314:结束。

技术总结
本发明公开了一种基于区块链的数据冲突发现方法,包括以下步骤:以区块链系统为支撑,将共享域内所有系统的数据生产、数据维护、数据传播操作的结果全部按时间戳进入区块,每个区块记载一次操作,并有区分数据生产、数据维护、数据传播操作的标记;再通过对区块链的检索,解析区块,将同一“数据版权”对应的存储于各区块的“数据”进行比较,可以轻松、方便、快捷地找出指定“数据”是否发生冲突。本发明借助区块链的支撑,使得解决数据冲突发现的时间复杂度由传统技术方法O(n4)降低为O(n),通过对区块链的一遍检索即可实现数据冲突发现,具有无须增加计算能力、无须增加网络带宽、成本低、效益高的特点。

技术研发人员:张家锐
受保护的技术使用者:合肥学院
技术研发日:2019.12.11
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-21516.html

最新回复(0)