本发明属于数据交换技术领域,具体涉及一种基于区块链技术的数据交换方法。
背景技术:
如今已经进入大数据时代。除了数据的采集、分析等环节,数据的交换与共享也变得益发重要。当前,各个领域通常都建立了数据详实的数据库,但是社会各行各业甚至同一行业不同单位的数据库往往针对自身的业务需求进行定制,这使得系统环境、数据平台等存在巨大差异。建设之初通常又缺乏数据交换与共享的设计,形成了数据交换的“壁垒”。
当用户意识到数据交换的重要性时,数据交换技术也有一定程度上的发展与进步,比如点对点数据交换和通过设立数据中心来交换。点对点数据交换方式往往在小范围内应用,大范围应用将暴露其效率低下的弊端,显然无法适应当下大数据时代的要求;设立数据中心进行数据交换比起点对点模式可以应用到更广的范围,交换效率也有所提高,但所有数据均需要经过数据中心交换使得数据中心的建设维护成本高昂,并且数据交换效率的提升也比较受限。
随着比特币等数字加密货币的发明,渐兴起了一种全新的、去中心化的、称为区块链的分布式基础架构及数据运算方式。去中心化、分布式集体维护、以及节点共识算法的特点使得区块链技术非常适宜构建分散自治系统,提升系统的运维效率。目前,区块链技术已经引起了金融机构、各国政府及资本市场的高度关注,但其在数据交换领域尚未有相关应用,如何利用区块链技术构建数据交换体系与平台,从而实现数据的高效交换共享是值得研究的问题。
技术实现要素:
鉴于上述,本发明提供了一种基于区块链技术的数据交换方法,通过构建分散自治式数据交换体系,能够实现数据的高效交换与共享。
一种基于区块链技术的数据交换方法,包括如下步骤:
(1)构建分散自治式数据交换体系;
(2)使体系中每个节点将自己所存储的数据进行区块化封装;
(3)将体系中各节点封装完成后的独立区块连接成区块链;
(4)设计节点之间的共识算法,体系中任意两个节点采用该共识算法可读取获得对方所存储的数据;
(5)在节点之间数据交换的过程中对数据进行加密保护。
进一步地,在所述步骤(1)构建的分散自治式数据交换体系中,每个数据库即对应为一个节点,整个体系中的众多节点均是平等的,每个节点均能够独立地完成数据整理、封装、加密的自治管理,并且能够与体系中的其他所有节点进行数据交换。与点对点数据交换体系相比,分散自治式数据交换体系中每个节点可以实现1对n-1的数据交换,数据交换效率大幅提高;与经过数据中心进行传送的体系相比,分散自治式数据交换体系中每个节点分散自治,无需设立独立的数据中心,大大节省了建设与维护费用。
进一步地,所述步骤(2)中节点将自己所存储的数据进行区块化封装所采用的区块结构由区块头和区块体组成,区块头是独立区块的基本信息栏,其内部封装有区块当前的版本号、上一个区块的地址、时间戳、当前区块的哈希值、随机数以及下一个区块地址;区块体内则封装了当前节点的数据数量以及区块创建过程中生成的且经过验证的所有数据变更记录,所有数据变更记录通过Hash过程寻找Merkle树的根且所述根被记入区块头中。
进一步地,所述步骤(3)中将每个独立区块按时间戳的先后顺序连接成区块链,若存在两个及两个以上时间戳相同的区块,则使数据数量大的节点优先连接,由此区块链中不存在支链,便于数据的查询和交换。
进一步地,所述步骤(4)中共识算法的具体过程如下:
4.1输入记录数据T,统计其中各普通属性的记录条数,分别记为N1~Nd,进而将其中每一条记录当作一维空间中的点,使S表示所有记录对应的点集合;d为输入记录数据T中的普通属性数量,N1~Nd分别为第1~d个普通属性的记录条数;
4.2取N1~Nd中的最大值赋予参数gcnt;初始化第i个记录子集QIi为空集,第i个记录子集ci为空集,从点集合S中任意移除一个点p,更新记录子集QIi=QIi∪p,更新记录子集ci=ci∪p,使Si表示移除点p后S中剩余点的集合;进而根据上述遍历i=1~gcnt;
4.3对于集合Si,逐个移除Si中的点;对于被移除的任一点s,若distance(s,z)≠0z∈cj,则更新记录子集QIj=QIj∪s,更新记录子集cj=cj∪s,1≤j≤gcnt且j≠i;
且k≠j≠i,若则更新记录子集QIi=QIj∪s,更新记录子集cj=cj∪s;
其中:z为记录子集cj中的任一条记录,x为记录子集ci中的任一条记录,y为记录子集ck中的任一条记录,distance(s,m)为点s所对应的记录与记录m的不相似标准函数,m=x、y或z;
4.4若记录子集QIj中的第q条记录rq满足以下条件,则将其置换后的结果{r'·A1,···,r'·Ad,r'·AS,j}写入至输出记录数据T*中;
r'·A1=rq·A1,···,r'·Ad=rq·Ad,r'·AS=rF(q)·AS
其中:q∈{1,···,|QIj|},|QIj|为记录子集QIj中的记录条数,A1~Ad对应为输入记录数据T中的第1~d个普通属性,AS为输入记录数据T中的重要属性,rq·A1~rq·Ad对应为第1~d个普通属性中记录rq的属性值,rF(q)为记录子集QIj中的第F(q)条记录,F(q)=|QIj|+1-q,rF(q)·AS为重要属性中记录rF(q)的属性值,r'·AS为重要属性中记录r'的属性值,r'为集合Si中最后移除的一条记录。
所述不相似标准函数distance(s,m)的具体表达如下:
其中:sn为点s所对应记录中的第n个元素值,mn为记录m中的第n个元素值,N为记录的维度。
进一步地,所述步骤(5)中采用椭圆曲线加密算法(ECC)对数据进行加密保护,即在加密和解密过程中使用两个非对称的密码:公钥和私钥,其中对数据进行初始化封装的节点利用公钥对数据明文进行加密,其他节点在获取数据密文后利用私钥进行密文进行解密。该技术方案可以极大程度的保证数据传输过程中的安全性,能够有效防止数据的泄露与非法篡改。
本发明充分利用区块链技术去中心化这一数据组织特点,改变了点对点以及依托特定中心平台进行多点数据通信的传统数据交换方式,显著地提升数据交换效率,降低数据转存及交换成本,实现数据的高效交换与共享。
附图说明
图1为本发明分散自治式数据交换体系的框架示意图。
图2为本发明基于区块链技术的数据交换流程示意图。
图3为本发明中数据区块化封装成区块链的结构示意图。
图4为本发明中加密及解密的流程示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
本发明基于区块链技术的数据交换方法,具体实施过程如下:
(1)构建基于区块链技术的分散自治式数据交换体系。
传统的数据交换体系有点对点交换以及经过数据中心进行交换两种,二者分别具有传输效率低、运维成本高的缺点。在本发明分散自治式体系中,每个数据库为一个数据节点,整个数据网络中的众多节点是平等的,每个节点都可以独立的完成数据整理、封装、加密等自治管理,并且能与网络中其他所有采取一致共识算法的节点进行数据交换,如图1所示。
与点对点数据交换体系相比,本发明体系中每个节点可以实现1对n-1的数据交换,数据交换效率大幅提高;与经过数据中心进行传送的体系相比,本发明体系中每个节点分散自治,无需设立独立的数据中心,大大节省了建设与维护费用。如图2所示,每个节点将自己所存储的数据进行区块化封装并将众多加密后的独立区块链接成区块链。不同节点之间存在共识算法,两节点可以通过该共识算法获得并读取互相存储的数据。
(2)节点的数据封装采用了被广泛应用于虚拟货币的区块链技术,即采用如图3所示的独立区块结构对数据进行区块化封装,每个区块细分为区块头和区块体两部分。其中,区块当前的版本号、前后区块的地址、时间戳、当前区块哈希值与随机数封装在区块头内;当前区块的数据数量以及经过验证的、区块创建过程中生成的所有数据变更记录封装在区块体中。这些数据变更记录通过哈希过程寻找Merkle树的根记入区块头。
封装完成后,需要将封装有数据的众多独立区块链接成区块链,采取以下原则:每个独立节点按照其所封装数据的先后顺序将独立区块链接成区块链,若存在多个同时封装的区块则链接顺序按照每个区块中封装数据数量的多少来确定,数据量大的优先链接。按照上述成链方法,区块链中不存在支链,便于数据的查询和交换。
(3)构建网络中众多节点的共识算法,打通任意节点间数据交换的通道;共识算法的具体过程如下:
a.输入记录数据T,统计其中各普通属性的记录条数,分别记为N1~Nd,进而将其中每一条记录当作一维空间中的点,使S表示所有记录对应的点集合;d为输入记录数据T中的普通属性数量,N1~Nd分别为第1~d个普通属性的记录条数;
b.取N1~Nd中的最大值赋予参数gcnt;初始化第i个记录子集QIi为空集,第i个记录子集ci为空集,从点集合S中任意移除一个点p,更新记录子集QIi=QIi∪p,更新记录子集ci=ci∪p,使Si表示移除点p后S中剩余点的集合;进而根据上述遍历i=1~gcnt;
c.对于集合Si,逐个移除Si中的点;对于被移除的任一点s,若distance(s,z)≠0z∈cj,则更新记录子集QIj=QIj∪s,更新记录子集cj=cj∪s,1≤j≤gcnt且j≠i;
且k≠j≠i,若则更新记录子集QIi=QIj∪s,更新记录子集cj=cj∪s;
其中:z为记录子集cj中的任一条记录,x为记录子集ci中的任一条记录,y为记录子集ck中的任一条记录,distance(s,m)为点s所对应的记录与记录m的不相似标准函数,m=x、y或z;
其中:sn为点s所对应记录中的第n个元素值,mn为记录m中的第n个元素值,N为记录的维度。
d.若记录子集QIj中的第q条记录rq满足以下条件,则将其置换后的结果{r'·A1,···,r'·Ad,r'·AS,j}写入至输出记录数据T*中;
r'·A1=rq·A1,···,r'·Ad=rq·Ad,r'·AS=rF(q)·AS
其中:q∈{1,···,|QIj|},|QIj|为记录子集QIj中的记录条数,A1~Ad对应为输入记录数据T中的第1~d个普通属性,AS为输入记录数据T中的重要属性,rq·A1~rq·Ad对应为第1~d个普通属性中记录rq的属性值,rF(q)为记录子集QIj中的第F(q)条记录,F(q)=|QIj|+1-q,rF(q)·AS为重要属性中记录rF(q)的属性值,r'·AS为重要属性中记录r'的属性值,r'为集合Si中最后移除的一条记录。
(4)完善节点数据交换过程中的加密与解密过程。
本发明采取椭圆曲线加密算法(ECC)这一非对称加密算法,在加密和解密过程中使用两个非对称的密码,分别称为公钥和私钥。图4给出了相应的数据加密解密流程,其中对数据进行初始化封装的节点利用公钥对著作明文加密,其他节点在获取数据密文后利用私钥进行密文解密。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。