基于云计算的多区块链的链上数据存储系统及方法与流程

文档序号:22677817发布日期:2020-10-28 12:35阅读:247来源:国知局
基于云计算的多区块链的链上数据存储系统及方法与流程

本发明涉及云计算及区块链领域,具体涉及了一种基于云计算的多区块链的链上数据存储系统及方法。



背景技术:

在区块链网络中,众多计算节点构成一个对等网络,共同维护链上数据(或称为区块,block),该链上数据具有不可篡改、不可否认、可追踪等特征,通常以文件系统及键值数据库的形式存储在计算节点的本地存储空间。在以太坊(ethereum)区块链网络环境中,计算节点在本地存储完整的链上数据,即所有的区块,并在本地建立所有区块的索引数据库和世界状态数据库,区块数据对于网络中的计算节点是完全可视的。在超级账本(hyperledger)区块链网络环境中,计算节点在本地存储所参与的联盟链或私有链的链上数据,并建立键值数据库。由于hyperledger的计算节点并不存储所有的链上数据,相对于ethereum而言,数据规模相对较小。

云存储从云计算演变而来,提供一种透明的、按需分配、弹性扩充的存储资源服务,存储容量可以超出单个计算节点的存储权限,是对计算节点本地存储的容量扩充。

一个计算节点参与多个区块链网络是常见的应用场景,在此应用场景下计算节点需要存储多个区块链的链上数据。即使在hyperledger区块链应用网络中,一个计算节点参与多个联盟链或私有链,也会导致链上数据的存储量激增,而且随着应用时间的增长,链上数据存储量必然越来越大,甚至超出单个计算节点的存储极限。



技术实现要素:

本发明的目的在于至少解决现有技术中存在的技术问题之一,提供了一种基于云计算的多区块链的链上数据存储系统,该系统包括多个区块链网络、多个区块链客户端及云存储,多个一个或多个所述区块链客户端构成区块链的计算节点;所述云存储包括区块数据模块、用户数字证书模块、密码引擎模块、键值数据库及api接口;所述区块链客户端设置有一个或多个云存储,所述区块链客户端用于对多个区块链的链上数据通过所述区块数据模块、所述用户数字证书模块、所述密码引擎模块、所述键值数据库及所述api接口集中存储于所述云存储;所述区块链客户端设置有云存储接口,所述云存储接口与所述api接口进行通信。

根据所述的基于云计算的多区块链的链上数据存储系统,其中区块数据模块用于对所述区块链客户端产生原始区块数据时,将所述原始区块数据及对应的编号、起始地址、长度及用户数字签名合并为所述区块数据。

根据所述的基于云计算的多区块链的链上数据存储系统,其中用户数字证书模块用于对原始数字证书进行封装,封装之后的所述用户数字证书至少包括原始数字证书、签发机构、签发时间、有效期、用户数字签名及有效状态。

根据所述的基于云计算的多区块链的链上数据存储系统,其中用户数字签名被配置为通过云存储传递数字证书时,通过自身私钥对原始数字证书、签发机构、签发时间、有效期的hash值进行数字签名。

根据所述的基于云计算的多区块链的链上数据存储系统,其中密码引擎模块包括非对称密码器、随机数生成器、数字摘要计算器,用于对所述区块链客户端与所述云存储的交互进行加密验证,所述随机数生成器产生一次性的随机数以及唯一性标识编号;所述非对称密码器用于验证数字签名;所述数字摘要计算器用于计算hash值。

根据所述的基于云计算的多区块链的链上数据存储系统,其中键值数据库用于对多个区块链的链上数据建立键-值数据库记录,对多个区块链的用户数字证书建立键-值数据库记录,其中多个区块链的链上数据共用一个数据库引擎。

根据所述的基于云计算的多区块链的链上数据存储系统,其中api接口用于向所述区块链客户端提供链上数据、用户数字证书的访问、管理与维护功能,其中维护功能至少包括区块的初始化、注销、更新、写区块、检索及同步之一。

根据所述的基于云计算的多区块链的链上数据存储系统,其中api接口通过对应的通讯协议完成区块的初始化、注销、更新、写区块、检索及同步。

根据所述的基于云计算的多区块链的链上数据存储系统,其中该系统还包括用户客户端,所述用户客户端用于通过一个或多个所述计算节点部署相同、部分相同、不同的所述区块链客户端,通过区块链客户端访问云存储的链上数据。

本发明的技术方案还包括一种基于云计算的多区块链的链上数据存储方法,根据上述任一所述的基于云计算的多区块链的链上数据存储系统,其特征在于:设置一个或多个云存储,通过所述云存储对多个区块链的链上数据进行存储;对区块链的原始区块数据及原始数字证书进行封装并存储至所述云存储的对应空间;通过所述密码引擎模块完成所述区块链客户端与云存储的加密交互;通过所述键值数据库中对用户数字证书、区块数据建立键值数据库记录;通过所述api接口对区块链客户端至少提供区块链的初始化、更新、写区块、检索、同步、注销功能,以及,对链上数据、用户数字证书的管理与维护;以及,通过所述区块链客户端的云存储接口与所述云存储的api接口进行对接通信。

本发明的有益效果为:为用户提供区块链链上数据的自定义存储方式,集中存储多个区块链的链上数据。

附图说明

下面结合附图和实施例对本发明进一步地说明;

图1为根据本发明实施方式的单用户的多区块链云存储示意图。

图2为根据本发明实施方式的多区块链云存储结构图。

图3为根据本发明实施方式的云存储区块的结构图。

图4为根据本发明实施方式的单用户云存储系统的数字证书结构图。

图5为根据本发明实施方式的多区块链云存储初始化流程图。

图6为根据本发明实施方式的更新用户数字证书流程图。

图7为根据本发明实施方式的存储链上数据流程图。

图8为根据本发明实施方式的是链上数据同步流程图。

图9为根据本发明实施方式的是释放区块数据及云存储空间流程图。

图10为根据本发明实施方式的是多区块链云存储系统实施例

具体实施方式

本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。

如图1所示,支持多区块链的链上数据云存储方法,将区块链客户端读写链上数据的操作映射到云存储系统。云存储系统独立部署在云端,例如idc;计算节点可以是桌面型或移动型pc、移动电子设备(例如智能手机)等。用户可以使用多个计算节点(pc、智能手机等)来访问云存储系统,也就是说,用户拥有多个计算节点,这些计算节点部署相同、部分相同、不同的区块链客户端,通过区块链客户端访问云存储的链上数据。一个云存储系统由一个用户独占使用,一个用户可独占使用多个云存储系统。

多区块链的云存储由区块数据、键值数据库、用户数字证书、密码引擎和api接口构成,见图2所示。

区块数据模块存储多个区块链的链上数据。链上数据以文件系统形式存储,不同区块链之间使用相互独立的文件系统存储区。每个区块链的第一个区块是创世区块,其他是普通区块。区块结构包括编号、起始地址、长度、用户数字签名和原始区块数据,见图3所示。其中,

原始区块数据是指区块链客户端产生的区块数据;

编号是单个云存储系统范围内唯一性标识,由api接口模块生成;

起始地址是指该区块在所属区块链的文件系统中的存储地址,创世区块的起始地址缺省为0,由api接口模块生成;

用户数字签名是指用户使用自己的私钥对该区块进行数字签名;

长度是指包括编号、起始地址、长度、用户数字签名、原始区块在内的字节数量,由api接口模块计算生成。

用户数字证书模块存储用户在多个区块链上的数字证书,包括当前正使用的数字证书和失效的历史数字证书。属于同一个区块链的数字证书构成一个列表,以创世区块编号和用户数字证书序号作为索引键,每个数字证书包括原始数字证书、签发机构、签发时间、有效期、用户数字签名、有效状态,见图4所示,其中,

原始数字证书,是区块链网络签发给用户的数字证书,例如hyperledger的caserver给用户签发的数字证书;

签发机构,是原始数字证书的签发组织,能提供数字证书的有效性鉴别;

签发时间,是原始数字证书的签发日期和时间;

有效期,是原始数字证书的有效使用的时间长度;

用户数字签名,是用户向云存储传递数字证书时用自己的私钥对原始数字证书、签发机构、签发时间、有效期的hash值进行数字签名;

有效状态,是原始数字证书的有效使用状态,用户在每个区块链上最多有一个有效状态的数字证书,其他为失效数字证书。

密码引擎模块,包括非对称密码器、随机数生成器、数字摘要计算器。随机数生成器产生一次性的随机数以及唯一性标识编号;非对称密码器用于验证数字签名;数字摘要计算器用于计算信息散列值,即hash值。

键值数据库模块,对多个区块链的链上数据建立键-值数据库记录,对多个区块链的用户数字证书建立键-值数据库记录,多个区块链的链上数据共用一个数据库引擎。

api接口模块,向区块链客户端提供链上数据、用户数字证书的访问、管理与维护功能,至少包括初始化、注销、更新、写区块、检索、同步功能模块,见图2所示。其中,

初始化功能模块,提供申请分配云存储空间的功能。云存储系统从云存储资源池中分配必需的存储空间,初始化区块数据的文件系统、用户数字证书存储区,部署密码引擎和键值数据库引擎的配置,部署api接口模块,见图5所示。

更新功能模块,提供更新用户数字证书的功能。有2种更新接口,第1种是新用户向云存储上传第1个用户数字证书,更新流程见图6所示。

通信协议1:数字证书更新1

步骤:(1)区块链客户端提交用户数字证书及其私钥签名,用户数字证书结构见图4所示;

(2)更新功能模块用数字证书中的公钥验证签名,如果成功则转入(3),否则转入(5);

(3)更新功能模块在签发机构鉴别数字证书的有效性,如果成功则转入(4),否则转入(5);

(4)调用密码引擎的随机数生成器,产生一个唯一性创世区块编号,新建一个用户数字证书列表,将用户数字证书写入列表,转入(5);

(5)如果成功,返回创世区块编号,否则返回失败,结束。

第2种是用新数字证书更新旧数字证书,在旧数字证书即将或已失效的情况下使用,更新流程见图6所示。

通信协议2:数字证书更新2

步骤:(1)区块链客户端提交新用户数字证书、创世区块编号及旧私钥签名,其中旧私钥签名是指,用旧数字证书中的私钥对新用户数字证书及创世区块编号的hash值签名;

(2)更新功能模块以创世区块编号找到指定区块链的有效数字证书,从中取出公钥验证旧私钥签名的有效性,如果成功则转入(3),否则转入(6);

(3)用新用户数字证书中的公钥验证新用户数字证书中的签名,如果成功则转入(4),否则转入(6);

(4)检查新用户数字证书的有效日期,如果有效则转入(5),否则转入(6);

(5)将创世区块编号对应的有效数字证书置为失效,存入新用户数字证书并置为有效,转入(6);

(6)返回结果,结束。

写区块功能模块,向区块链客户端提供写入链上数据的功能,即将区块存储到区块数据对应的文件系统中,同时更新键值数据库。流程见图7所示。

通信协议3:写入链上数据

步骤:(1)区块链客户端提交创世区块编号、新原始区块及数字签名,新原始区块及数字签名分别指图3的原始区块数据和用户数字签名;

(2)云存储系统依据创世区块编号取得用户数字证书的公钥,并验证数字签名,如果成功则转入(3),否则转入(5);

(3)计算新区块的编号、长度和起始地址,区块编号规则为:创世区块编号+递增的正整数序号,起始地址为区块在区块链文件系统中的存储偏移量,长度是整个新区块的字节数量;

(4)按图3格式填写新区块,写入区块链对应的文件系统,更新键值数据库的记录;

(5)返回结果,结束。

检索功能模块,向区块链客户端提供检索链上数据的功能。区块链客户端提供创世区块编号及检索关键字,检索功能模块在指定的区块链存储区查找对应的区块并返回检索结果。检索关键字可以是区块编号、区块hash、交易hash等。

同步功能模块,用于单用户独占使用多个云存储系统的场景,在多个云存储系统之间同步指定区块链的链上数据及用户在该区块链的数字证书,其中被同步的云存储系统标以主标识,同步到的云存储系统标以从标识,见图8所示。

通信协议4:同步

步骤:(1)区块链客户端向云存储2发起请求,传递云存储1地址、创世区块编号、从标识;

(2)云存储2应答就绪;

(3)区块链客户端向云存储1发起请求,传递云存储2地址、创世区块编号、主标识;

(4)云存储1应答就绪;

(5)云存储1向云存储2建立连接,云存储2响应连接;

(6)云存储1向云存储2发送指定区块链的用户数字证书列表;

(7)云存储2接收并更新用户数字证书列表,应答;

(8)云存储1向云存储2发送指定区块链的所有区块;

(9)云存储2接收并更新本地区块及数据库,应答;

(10)云存储1向区块链客户端发送同步确认;

(11)云存储2向区块链客户端发送同步确认;

(12)结束。

注销功能模块,提供删除指定区块链的链上数据的功能,如果删除最后一个区块链的链上数据,则释放云存储空间,见图9所示。

通信协议5:注销

步骤:(1)区块链客户端发送创世区块编号;

(2)注销功能模块调用随机数生成器产生1个随机数,依据创世区块编号用对应区块链的有效数字证书的公钥加密,发送密文;

(3)区块链客户端用私钥解密获得随机数,发回随机数;

(4)注销功能模块对比前后2个随机数,如一致则转入(5),否则转发(8);

(5)清除创世区块编号指定的区块链的区块数据及其数据库记录,清除对应的用户数字证书;

(6)检查云存储的区块数据是否为空,如是转入(7),否则转入(8);

(7)释放云存储空间,归还到存储资源池;

(8)返回结果,结束。

以太坊(ethereum)区块链网络以及超级账本(hyperledger)区块链网络的链上数据缺省存储在区块链客户端的本地存储空间,区块数据存储在文件系统的一个或多个文件中。hyperledger的客户端是fabric,以hyperledger区块链网络为例说明本发明的具体实施方式。

fabric缺省将链上数据存储在本地的文件系统,首先改造fabric读写区块文件系统的本地存储接口,新增一个云存储系统的模块接口,即图10所示的云存储接口,按照图2所示api接口的各功能模块实施区块链客户端与云存储系统之间的接口,接口通信采用webservice、grpc或者其他形式实施。

在hyperledger区块链网络中,采用docker容器实施单用户多区块链的云存储系统,1个docker容器实例对应1个云存储系统,单用户可以独占使用多个docker容器。也可以采用vmware、virtualbox或kvm虚拟机实施云存储系统,1个虚拟机实例对应1个云存储系统。在云存储系统内,采用webservice、gprc或者其他形式实施接口通信,与fabric的通信方式保持一致。

在云存储系统内,采用文件系统存储多个区块链的链上数据,即所有的区块。每个区块链的链上数据存储到一个或者多个文件中,并规定多个文件的先后顺序。图3所示的起始地址实施为区块在多个文件中的存储偏移量,相邻区块在文件中的存储位置相邻。不同区块链的文件相互隔离,采用文件夹的形式加以分类存储,也可采用不同文件系统分区存储,或者采用raid磁盘阵列存储。

在云存储系统内,采用文件系统存储所有的用户数字证书,每个用户数字证书对应2个文件。其中1个文件是用户数字证书原始文件,其内容是图4所示的原始数字证书,另1个文件记录对应原始数字证书的其他信息,2个文件的文件名相同,以扩展名区分。不同区块链的用户数字证书可采用文件夹的形式分类存储。用户数字证书也可采用关系型数据库加以存储,用表和记录表示用户数字证书。

在云存储系统内,键值数据库采用leveldb、couchdb或其他适宜的数据库引擎加以实施,主要存储图3所示的区块数据,即区块链的链上数据。采用区块编号、原始区块hash、交易hash等关键字作为键(key),采用区块起始地址作为值(value)。键值数据库能够依据区块编号、原始区块hash、交易hash提供基本的区块检索与定位功能,还可根据实际需要扩充其他关键字的检索与查询。

在云存储系统内,密码引擎至少提供随机数生成器、非对称密码器、hash计算器。密码引擎可以由硬件实施,例如tpm芯片或者tcm芯片,也可以由程序代码实施伪随机数、非对称密码计算和hash计算功能。根据实际需要,密码引擎可扩充其他计算功能,例如对称密码计算器等。

在云存储系统内,api接口是对外提供云存储服务的接口,至少包含初始化、更新、写区块、检索、同步、注销等功能模块,每个云存储系统包括1个独立的api接口,并分配1个ip地址和独立的端口。根据实际需要,api接口可扩充其他的管理与业务功能模块。

在ethereum区块链网络中,区块链客户端geth在读写链上数据方面具有类似于fabric的部分特性,可采用类似的实施方式,即在geth内部增加1个云存储接口,并按本发明的通信协议实施接口功能。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1