基于区块链的文件系统实现方法、装置、设备和存储介质与流程

文档序号:17476020发布日期:2019-04-20 06:07阅读:193来源:国知局
基于区块链的文件系统实现方法、装置、设备和存储介质与流程

本发明实施例涉及区块链技术领域,尤其涉及一种基于区块链的文件系统实现方法、装置、设备和存储介质。



背景技术:

目前的区块链系统所采用的底层数据存储技术有多种,其中比较广泛采用的一种就是键值对(keyvalue,简称kv)存储系统。kv存储系统在区块链系统应用层的控制下,支持区块链系统的数据读写等访问处理。

在kv存储系统中,会使用到很多键值对分别存储区块链系统所需存储的各种数据。但是,kv存储系统的数据结构有限,无法为上层应用软件日益丰富的存储需求提供有效支持。典型的是,目前人们都比较习惯使用文件管理系统,如word、pdf等应用软件,但是现有采用底层kv存储系统的区块链系统是无法支持文件的管理方式的。

目前区块链系统的应用层,都是采用的专用程序,并在专用界面上以固有格式呈现交互界面,通常需要专业人员通过操作代码的方式来控制智能合约。这与普通消费者所熟悉的文件管理系统,如常见的windows文件管理系统是明显不同的。所以作为普通消费者的用户无法通过可视化界面进行便捷的文件管理。



技术实现要素:

本发明实施例提供了一种基于区块链的文件系统实现方法、装置、设备和存储介质,从而为用户提供便捷的文件管理方式。

第一方面,本发明实施例提供了一种基于区块链的文件系统实现方法,该方法包括:

交互模块获取可视化文件系统产生的第一文件处理请求;

所述交互模块根据所述第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用所述区块链应用层的文件智能合约,产生文件事务请求,其中,所述文件事务请求用于在区块链节点中进行文件数据处理的操作;

所述交互模块从所述区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

第二方面,本发明实施例还提供了一种基于区块链的文件系统实现方法,应用于区块链节点,该方法包括:

区块链应用层从交互模块获取第二文件处理请求;

区块链应用层根据所述第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行所述文件事务请求,对目标文件中的目标数据进行处理,其中,所述文件事务请求在执行过程中产生文件处理请求;

所述区块链应用层将文件数据处理结果反馈给所述交互模块。

第三方面,本发明实施例还提供了一种基于区块链的文件系统实现装置,配置于交互模块中,该装置包括:

第一请求获取模块,用于获取可视化文件系统产生的第一文件处理请求;

第二请求发起模块,用于根据所述第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用所述区块链应用层的文件智能合约,产生文件事务请求,其中,所述文件事务请求用于在区块链节点中进行文件数据处理的操作;

数据获取模块,用于从所述区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

第四方面,本发明实施例还提供了一种基于区块链的文件系统实现装置,配置于区块链节点的区块链应用层中,该装置包括:

第二请求获取模块,用于从交互模块获取第二文件处理请求;

事务请求发起模块,用于根据所述第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行所述文件事务请求,对目标文件中的目标数据进行处理,其中,所述文件事务请求在执行过程中产生文件处理请求;

数据反馈模块,用于将文件数据处理结果反馈给所述交互模块。

第五方面,本发明实施例提供了一种设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面中任意所述的基于区块链的文件系统实现方法,或者实现第二方面中任意所述的基于区块链的文件系统实现方法。

第六方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本第一方面中任意所述的基于区块链的文件系统实现方法,或者实现第二方面中任意所述的基于区块链的文件系统实现方法。

本发明实施例提供的基于区块链的文件系统实现方法、装置、设备及存储介质,交互模块获取到可视化文件系统产生的第一文件处理请求后,根据第一文件处理请求向区块链应用层发起第二文件处理请求,以使区块链应用层调用本地文件智能合约产生文件事务请求,并将该文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果;而后交互模块可从区块链应用层获取反馈的文件数据处理结果,并将该文件数据处理结果反馈给可视化文件系统,进而使可视化文件系统依据文件数据处理结果进行数据更新。本方案,通过采用交互模块与可视化文件系统,以及区块链应用层进行数据交互,即可实现对文件的管理,为用户提供了便捷的文件管理方式。相比于现有的技术方案,本方案对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

附图说明

图1为本发明实施例所适用的区块链节点的系统构架图;

图2为本发明实施例一提供的一种基于区块链的文件系统实现方法的流程图;

图3为本发明实施例二提供的一种基于区块链的文件系统实现方法的流程图;

图4为本发明实施例三提供的一种基于区块链的文件系统实现方法的流程图;

图5a为本发明实施例四提供的一种基于区块链的文件系统实现方法的流程图;

图5b为本发明实施例四提供的一种基于区块链的文件系统实现过程示意图;

图6为本发明实施例五提供的一种基于区块链的文件系统实现方法的流程图;

图7a为本发明实施例六提供的一种基于区块链的文件系统实现方法的流程图;

图7b为本发明实施例六提供的文件系统基于键值对的存储结构示例图;

图8为本发明实施例七提供的一种基于区块链的文件系统实现装置的结构示意图;

图9为本发明实施例八提供的一种基于区块链的文件系统实现装置的结构示意图;

图10为本发明实施例九提供的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。

在介绍本发明各实施例之前,先对本发明实施例中系统架构及可使用的底层存储系统进行说明。如图1所示,本实施例的设备可以包括应用层,逻辑数据接口层,以及物理存储层。该设备优选是区块链节点设备。

其中,应用层可以是实现任何功能的软件,需产生各种数据处理请求。优选是,应用层为实现区块链节点功能的软件,区块链应用层的软件主要功能是产生事务请求,事务请求的执行过程会产生数据处理请求。该应用层包括用于支撑区块链节点本地区块链正常运行所需部署的软件,如可以包括虚拟机以及其他与区块链相关的应用软件等。

逻辑数据接口层包括实现至少一种数据处理逻辑的接口,如文件系统接口、数据结构接口和搜索引擎接口,可以用于将应用层传输的不同数据形式(如文件形式、数据结构形式或搜索语句形式等)的逻辑数据处理请求映射为基于物理存储层的数据存储结构。

物理存储层用于对逻辑接口层传输的物理数据处理请求进行处理,并存储。本发明实施例中,可选用键值对(keyvalue,简称kv)存储系统作为物理存储层,更进一步的,该kv存储系统为多版本kv存储系统。

在多版本kv存储系统中,每个键值对的存储单元中包括键域(key)和值域(value)。其中,键域存储有键标识和版本标识,版本标识可以作为键域中存储内容的一部分,例如,前缀或后缀。键标识可以为能体现数据实际含义的标识,如区块标识、事务标识、或账号名称等;键值对的值域可以用于存储数据本身。版本标识用于标识该键值对是在哪个版本所对应的物理数据处理请求执行过程中所修改的。

一个版本所对应的物理数据处理请求可以是一个,也可以是多个。例如,一个区块产生的过程中,会涉及多个事务请求,也会需要执行多个物理数据处理请求,如写入数据、删除数据、读取数据、更改数据等。那么可以配置为一个区块产生过程中所需执行的多个物理数据处理请求对应于一个版本标识。下一个区块则对应下一个版本标识。

例如,一个区块中的事务请求为a账户向b账户转移设定数额的货币,则a账户和b账户存储账户余额的键值对,都会因为该事务请求的执行而发生变化。将a账户和b账户的账户余额的旧键值对仍然保留,并产生账户余额的新键值对,前后两个键值对的版本标识发生变化。

当然,一个版本标识也可以对应于一次事务请求的处理过程,或多个区块的处理过程,可根据情况具体配置。在区块链节点中,记录键标识与各个版本标识的对应关系,区块链应用层可以通过键标识和版本标识的组合,访问到所需数据。

实施例一

图2为本发明实施例一提供的一种基于区块链的文件系统实现方法的流程图,本实施例可适用于如何使用户便捷地利用区块链对文件进行管理的情况。整套基于区块链的文件系统实现方法可由交互模块与区块链应用层,区块链应用层与逻辑数据接口层中的文件系统接口、物理存储层(多版本键值对存储系统)之间相互配合执行来实现。

其中,交互模块可以与区块链应用层进行数据交互;可选的,交互模块与区块链应用层一样,配置于区块链节点的计算设备中,可直接与区块链节点交互;还可以独立于区块链节点的计算设备,配置于其他计算设备中,如第三方设备,但可通过区块链节点提供的数据交互平台(如客户端界面或网页等)与区块链节点进行远程交互等。示例性的,交互模块可以是能够用于支持用户空间文件系统(fuse)接口的重载接口模块。

本发明实施例的方案应用于交互模块,该方法可由基于区块链的文件系统实现装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于作为区块链节点的计算设备中,或者其他计算设备中等,参见图2,该方法具体包括:

s210,交互模块获取可视化文件系统产生的第一文件处理请求。

本实施例中,文件系统是指负责管理和存储文件信息的软件,可以集成于操作系统中,也可以为独立于操作系统的应用软件;对应的,可视化文件系统是指以交互界面等方式直观形象地展示文件系统的运行过程,便于用户进行文件管理,如word。

第一文件处理请求是指用户在需要进行文件管理时,通过可视化文件系统所产生的请求;可选的,第一文件处理请求中可以包括待处理的目标文件、文件名称、目标文件中的目标数据、操作者以及操作类型,还可以包括目标文件及目标数据在虚拟磁盘的存储路径、操作时间等。其中,操作者是指操作目标文件的用户,或者说是第一文件处理请求的发起者;操作类型可以包括文件的读、写(如在文件中写入数据,或者新建文件等)、修改、删除等。

具体的,用户在需要进行文件管理时,通过可视化文件系统产生第一文件处理请求,并传输给交互模块;交互模块获取可视化文件系统产生的第一文件处理请求。

s220,交互模块根据第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用区块链应用层的文件智能合约,产生文件事务请求,其中,文件事务请求用于在区块链节点中进行文件数据处理的操作。

本实施例中,文件事务请求是指操作对象为文件的事务请求;智能合约是指基于插件机制所编写的可供区块链网络中的节点调用并执行的代码段,一个智能合约的执行可实现至少一种功能或处理一类事务请求。文件智能合约是智能合约中的一种,专门用于产生文件事务请求。

第二文件处理请求是指交互模块依据所获取的第一文件处理请求产生的,可用于请求区块链应用层调用文件智能合约,产生文件事务请求。第二文件处理请求中可以包括待处理的目标文件、目标数据以及操作方式等相关信息。

需要说明的是,本实施例中,获取第二文件处理请求的区块链应用层与发起第二文件处理请求的交互模块可在同一设备上,也可在不同设备上。可选的,交互模块与区块链应用层配置于同一设备上,与配置于不同设备上,两者之间的通迅方式有所差别。

示例性的,交互模块根据第一文件处理请求,向区块链应用层发起第二文件处理请求可以包括:交互模块根据第一文件处理请求,通过进程间通讯方式或远程过程调用通讯方式,向区块链应用层发送第二文件处理请求。

本实施例中,进程间通迅(interprocesscommunication,ipc)方式是指同一设备,不同进程间进行数据共享和数据交换等的方式;远程过程调用(remoteprocedurecall,rpc)通迅方式是指不同设备,进程之间相互进行数据共享和数据交换等的方式。

若发起第二文件处理请求的交互模块与获取第二文件处理请求的区块链应用层均配置于同一区块链节点的计算设备中,也就是说,某一区块链节点的交互模块向本地区块链应用层发起第二文件处理请求;交互模块则可以依据同一设备中,不同进程间的通迅方式即进程间通信方式,向区块链应用层发送第二文件处理请求。

若发起第二文件处理请求的交互模块与获取第二文件处理请求的区块链应用层配置于不同区块链节点的计算设备中,也就是说,某一区块链节点的交互模块向其他节点的区块链应用层发起第二文件处理请求;交互模块则可以采用不同设备之间远程过程调用通讯方式,向区块链应用层发送第二文件处理请求。

此外,若发起第二文件处理请求的交互模块配置于第三方设备中,而区块链应用层配置于区块链节点的计算设备中,也就是说,第三方设备通过区块链节点提供的数据交互平台向区块链应用层发起第二文件处理请求;交互模块也可以采用不同设备之间远程过程调用通讯方式,向区块链应用层发送第二文件处理请求。

具体的,交互模块从可视化文件系统获取第一文件处理请求后,可以对第一文件处理请求进行处理,产生第二文件处理请求;而后按照设定的通信方式向区块链应用层发起第二文件处理请求;区块链应用层调用文件智能合约,将目标数据等作为文件智能合约的参数,产生文件事务请求,并将文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果。

s230,交互模块从区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

具体的,区块链应用层将文件数据处理结果反馈给交互模块,交互模块从区块链应用层获取反馈的文件数据处理结果后,将该文件数据处理结果反馈给可视化文件系统,以使可视化文件系统依据文件数据处理结果进行数据更新。

本发明实施例提供的技术方案,交互模块获取到可视化文件系统产生的第一文件处理请求后,根据第一文件处理请求向区块链应用层发起第二文件处理请求,以使区块链应用层调用本地文件智能合约产生文件事务请求,并将该文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果;而后交互模块可从区块链应用层获取反馈的文件数据处理结果,并将该文件数据处理结果反馈给可视化文件系统,进而使可视化文件系统依据文件数据处理结果进行数据更新。本方案,通过采用交互模块与可视化文件系统,以及区块链应用层进行数据交互,即可实现对文件的管理,为用户提供了便捷的文件管理方式。相比于现有的技术方案,本方案对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

实施例二

图3为本发明实施例二提供的一种基于区块链的文件系统实现方法的流程图,本实施例在上述实施例的基础上,进一步对交互模块根据第一文件处理请求,向区块链应用层发起第二文件处理请求进行解释说明,提供了一种依据第一文件处理请求产生第二文件处理请求的方案。如图3所示,该方法包括以下具体步骤:

s310,交互模块获取可视化文件系统产生的第一文件处理请求。

s320,交互模块根据第一文件处理请求中的文件处理参数,以及本地预存的文件智能合约模板,产生第二文件处理请求,并向区块链应用层发送;其中,文件处理参数可以包括操作者、操作类型、文件名称和目标数据。

本实施例中,文件智能合约模板是预先设置的,用于产生第二文件处理请求的通用代码段。文件处理参数中可以包括操作者、操作类型、文件名称和目标数据,还可以包括目标文件及目标数据在虚拟磁盘的存储路径、操作时间等。其中,操作者是指操作目标文件的用户,或者说是第一文件处理请求的发起者;操作类型可以包括文件的读、写、修改、删除等。文件的读可以包括从文件中读取目标数据;文件的写可以包括在目标文件中写入数据,或者新建目标文件等;文件的修改可以包括修改目标文件中的目标数据,以及修改目标文件的属性(如文件名称、创建时间、使用权限等);文件的删除可以包括删除目标文件中的目标数据,以及删除目标文件等。

具体的,交互模块获取到可视化文件系统所发送的第一文件处理请求后,可以从第一文件处理请求中获取文件处理参数,而后将第一文件处理请求中的文件处理参数作为文件智能合约模板的输入参数,通过执行该文件智能合约模板产生第二文件处理请求;进而采用进程间通讯方式或远程过程调用通讯方式将该第二文件处理请求发送至区块链应用层,以请求区块链应用层调用本地文件智能合约,产生文件事务请求,并在区块链节点中进行文件数据处理的操作。

可以理解的是,交互模块的主要功能之一在于将第一文件处理请求中的文件处理参数,转换为可供区块链节点的应用层识别的形式,并能够据此产生文件事务请求。

s330,交互模块从区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

具体的,交互模块在反馈文件数据处理结果时可以进行逆向转换,将结果转换为可视化文件系统可识别的形式。具体要转换的形式,以及转换手段,可以根据实际需求设计。

本发明实施例提供的技术方案,交互模块获取可视化文件系统产生的第一文件处理请求后;根据第一文件处理请求中的文件处理参数,以及本地预存的文件智能合约模块,产生第二文件处理请求,并向区块链应用层发送。为交互模块根据可视化文件系统产生的第一文件处理请求,产生第二文件处理请求提供了一种方案;且依据文件智能合约模板产生第二文件处理请求,保证了向区块链应用层所传输的第二文件处理请求,与区块链应用层所能识别并处理的请求格式相符。

实施例三

图4为本发明实施例三提供的一种基于区块链的文件系统实现方法的流程图,本实施例在上述实施例的基础上,在物理存储层为多版本键值对存储系统的情况下,进一步对交互模块根据第一文件处理请求,向区块链应用层发起第二文件处理请求进行解释说明。如图4所示,该方法包括以下具体步骤:

s410,交互模块获取可视化文件系统产生的第一文件处理请求。

s420,交互模块获取版本信息。

本实施例中,版本信息可以用于表示数据被写入的事务请求所属区块的信息,如可以是区块标识。区块标识是指用于唯一识别某一区块的标志,如区块id。可选的,交互模板可以在本地随机生成一个版本信息,还可以获取用户输入的版本信息,也可以默认获取当前区块的版本信息等;此外,若交互模块与区块链应用层位于同一设备上,则交互模块还可以从共享内存中获取版本信息。

示例性的,交互模块获取版本信息可以包括下述至少一项:1)交互模块从共享内存中读取区块链应用层写入的当前区块的区块标识,作为版本信息;2)交互模块根据本地版本生成模块生成的区块标识或用户输入的区块标识,作为版本信息。

本实施例中,共享内存是指同一设备上,不同线程之间进行数据交互的区域。当前区块的区块标识即为最新版本信息。可选的,交互模块默认从共享内存中读取最新版本信息。

版本生成模块可以是专门用于生成区块标识的模块,可选的,版本生成模块可依据前一区块的区块标识或版本信息生成当前区块的区块标识,或者依据已有区块(历史任一区块)的区块标识或版本信息生成一区块标识;也可依据区块标识的格式,随机生成一个区块标识等,例如区块标识的格式为流水号,随机生成的区块标识可以是任意整数。

可选的,版本生成模块生成的区块标识或用户输入的区块标识可以是当前区块的区块标识;也可以是任一历史区块的区块标识;还可以是与区块链中区块的区块标识格式相同,但是不属于当前区块链中任意一个区块的区块标识等。

具体的,区块链应用层可以在开始处理当前区块时,则将当前区块的区块标识写入共享内存中;若交互模块与区块链应用层位于同一区块链节点的计算设备中,交互模块则可以从共享内存中读取区块链应用层写入的当前区块的区块标识,作为版本信息。

此外,无论交互模块与区块链应用层是否位于同一设备上,交互模块均可以根据本地版本生成模块生成的区块标识或用户输入的区块标识,作为版本信息。

s430,交互模块根据第一文件处理请求和版本信息,向区块链应用层发起第二文件处理请求,以调用区块链应用层的文件智能合约,产生文件事务请求,其中,第二文件处理请求中携带版本信息,文件事务请求用于在区块链节点中进行文件数据处理的操作。

具体的,交互模块从可视化文件系统获取第一文件处理请求后,可以对第一文件处理请求进行处理,产生第二文件处理请求,如可以根据第一文件处理请求中的文件处理参数,以及本地预存的文件智能合约模板,产生第二文件处理请求,并将版本信息添加至第二文件处理请求的预设字段中;而后采用进程间通讯方式或者远程过程调用通讯方式向区块链应用层发起第二文件处理请求;区块链应用层调用文件智能合约,将目标数据等作为文件智能合约的参数,产生文件事务请求,并将文件处理请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件处理请求进行文件数据处理的操作并反馈文件数据处理结果。

需要说明的是,本实施例中,交互模块只需将版本信息添加至第二文件处理请求中,发送给区块链应用层,无需关注版本信息是否正确;版本信息的正确性可由区块链节点在后续处理文件事务请求过程中进行纠正,优选是采用当前区块的区块标识作为版本信息。

s440,交互模块从区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

本发明实施例提供的技术方案,交互模块获取到可视化文件系统产生的第一文件处理请求后,依据获取的第一文件处理请求以及版本信息产生第二文件处理请求,并向区块链应用层发起第二文件处理请求,以使区块链应用层调用本地文件智能合约产生文件事务请求,并将该文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果;而后交互模块可从区块链应用层获取反馈的文件数据处理结果,并将该文件数据处理结果反馈给可视化文件系统,进而使可视化文件系统依据文件数据处理结果进行数据更新。本方案,通过采用交互模块与可视化文件系统,以及区块链应用层进行数据交互,即可实现对文件的管理,为用户提供了便捷的文件管理方式。相比于现有的技术方案,本方案对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

实施例四

图5a为本发明实施例四提供的一种基于区块链的文件系统实现方法的流程图,图5b为基于区块链的文件系统实现过程示意图,本实施例在上述实施例的基础上,在交互模块为用户空间文件系统的重载接口模块的情况下,进一步对交互模块获取可视化文件系统产生的第一文件处理请求进行解释说明。如图5a和5b所示,该方法包括以下具体步骤:

s510,部署于操作系统内核的用户空间文件系统接口获取可视化文件系统从内核态透传到用户态的第一文件处理请求,并记录第一文件处理请求中文件及目标数据的虚拟文件地址。

本实施例中,操作系统是管理和控制计算机硬件与软件资源的计算机程序,如可以是windows操作系统,ios操作系统或linux操作系统等;内核是操作系统工作的基础,用于管理操作系统的进程、内存、设备驱动程序、文件和网络系统等,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,内核必须为上层应用提供访问的接口。对于文件系统而言,用户空间文件系统是指可在用户态实现的文件系统。对应的,用户空间文件系统接口即为内核为上层可视化文件系统提供的文件访问接口。

虚拟文件地址是一种对用户可见的存储路径,可以是文件及目标数据在虚拟磁盘中的存储路径,例如虚拟文件地址为:d盘/xx文件夹/xx文件等。

具体的,用户在需要进行文件管理时,可通过可视化文件系统产生第一文件处理请求,并通过操作系统内核透传至用户态;进而使部署于操作系统内核的用户空间文件系统接口可以获取可视化文件系统从内核态透传到用户态的第一文件处理请求,并记录第一文件处理请求中文件及目标数据的虚拟文件地址。

s520,重载接口模块获取从用户空间文件系统接口传输的第一文件处理请求。

具体的,用户空间文件系统接口获取到第一文件处理请求后,可以将第一文件处理请求透传至重载接口模块,重载接口模块获取从用户空间文件系统接口传输的第一文件处理请求。

s530,重载接口模块根据第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用区块链应用层的文件智能合约,产生文件事务请求,其中,文件事务请求用于在区块链节点中进行文件数据处理的操作。

具体的,重载接口模块可以从第一文件处理请求中获取文件处理参数,以及从共享内存中读取区块链应用层写入的当前区块的区块标识,作为版本信息;而后将第一文件处理请求中的文件处理参数作为文件智能合约模板的输入参数,通过执行该文件智能合约模板产生第二文件处理请求,并将版本标识添加至第二文件处理请求中的预设字段内;进而采用进程间通讯方式将该第二文件处理请求发送至区块链应用层,以请求区块链应用层调用本地文件智能合约,产生文件事务请求,并在区块链节点中进行文件数据处理的操作。

还可以是,重载接口模块从第一文件处理请求中获取文件处理参数,以及根据本地版本生成模块生成的区块标识或用户输入的区块标识,作为版本信息;而后将第一文件处理请求中的文件处理参数作为文件智能合约模板的输入参数,通过执行该文件智能合约模板产生第二文件处理请求,并将版本标识添加至第二文件处理请求中的预设字段内;进而采用远程过程调用通讯方式将该第二文件处理请求发送至区块链应用层,以请求区块链应用层调用本地文件智能合约,产生文件事务请求,并在区块链节点中进行文件数据处理的操作。

s540,重载接口模块从区块链应用层获取反馈的文件数据处理结果。

s550,重载接口模块将文件数据处理结果传输给用户空间文件系统接口。

具体的,重载接口模块从区块链应用层获取反馈的文件数据处理结果后,可以将文件数据处理结果传输给用户空间文件系统接口。

s560,用户空间文件系统接口根据记录的第一文件处理请求中文件及目标数据的虚拟文件地址,将文件数据处理结果从内核态透传给可视化文件系统,以进行可视化文件系统显示数据的更新。

具体的,用户空间文件系统接口从重载接口模块获取到文件数据处理结果后,可以依据本地记录的第一文件处理请求中文件及目标数据的虚拟文件地址,将文件数据处理结果从内核态透传给可视化文件系统,以使可视化文件系统依据文件数据处理结果进行数据更新。

例如,可视化文件系统产生的第一文件处理请求为从目标文件中写入目标数据,将步骤s510至s530的处理操作,重载接口模块从区块链应用层获取的文件数据处理结果为目标数据写入到目标文件中,因此可视化文件系统向用户展示的页面将是包括目标数据的目标文件。

本发明实施例提供的技术方案,用户在需要进行文件管理时,可通过可视化文件系统产生第一文件处理请求,并通过操作系统内核透传至用户态,用户空间文件系统接口将获取的第一文件处理请求传输至重载接口模块,重载接口模块获取到第一文件处理请求后,根据第一文件处理请求向区块链应用层发起第二文件处理请求,以使区块链应用层调用本地文件智能合约产生文件事务请求,并将该文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果;而后重载接口模块可从区块链应用层获取反馈的文件数据处理结果,并将该文件数据处理结果通过用户空间文件系统接口反馈给可视化文件系统,进而使可视化文件系统依据文件数据处理结果进行数据更新。本方案,通过采用重载接口模块与可视化文件系统,以及区块链应用层进行数据交互,即可实现对文件的管理,为用户提供了便捷的文件管理方式。相比于现有的技术方案,本方案对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

实施例五

图6为本发明实施例五提供的一种基于区块链的文件系统实现方法的流程图,本实施例可适用于如何使用户便捷地对区块链的文件进行管理的情况。整套区块链的文件系统实现方法可由交互模块与区块链应用层,区块链应用层与逻辑数据接口层中的文件系统接口、物理存储层(多版本键值对存储系统)之间相互配合执行来实现。本发明实施例的方案应用于区块链节点,该方法可由基于区块链的文件系统实现装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于作为区块链节点的计算设备中,作为区块链应用层,参见图6,该方法具体包括:

s610,区块链应用层从交互模块获取第二文件处理请求。

本实施例中,第二文件处理请求是指交互模块依据所获取的第一文件处理请求产生的,可用于请求区块链应用层调用文件智能合约,产生文件事务请求。第二文件处理请求中可以包括待处理的目标文件、目标数据以及操作方式等。其中,第一文件处理请求是指用户在需要进行文件管理时,通过可视化文件系统所产生的请求。

需要说明的是,本实施例中,获取第二文件处理请求的区块链应用层与发起第二文件处理请求的交互模块可在同一设备上,也可在不同设备上。可选的,交互模块与区块链应用层配置于同一设备上,与配置于不同设备上,两者之间的通迅方式。示例性的,区块链应用层从交互模块获取第二文件处理请求可以包括:区块链应用层通过进程间通讯方式或远程过程调用通讯方式,从交互模块获取第二文件处理请求。

具体的,若发起第二文件处理请求的交互模块与区块链应用层位于同一设备上,区块链应用层则可以通过进程间通迅方式,从交互模块获取第二文件处理请求;若发起第二文件处理请求的交互模块与区块链应用层位于不同一设备上,区块链应用层则可以通过远程过程调用通讯方式,从交互模块获取第二文件处理请求。

s620,区块链应用层根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,其中,文件事务请求在执行过程中产生文件处理请求。

本实施例中,文件事务请求是指操作对象为文件的事务请求;智能合约是指基于插件机制所编写的可供区块链网络中的节点调用并执行的代码段,一个智能合约的执行可实现至少一种功能或处理一类事务请求。文件智能合约是智能合约中的一种,专门用于产生文件事务请求。

具体的,区块链应用层可以从第二文件处理请求中获取目标数据以及目标数据的版本信息等,而后调用文件智能合约,将目标数据,或目标数据和版本信息等作为文件智能合约的参数,产生文件事务请求,并将该文件事务请求传输至区块链网络,以请求本地区块链节点或其他区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果。其中,区块链节点在执行文件事务请求的过程中将产生文件处理请求。

s630,区块链应用层将文件数据处理结果反馈给交互模块。

具体的,区块链应用层可以从本地区块链节点获取文件数据处理结果,或者从其他区块链节点获取文件数据处理结果;而后将文件数据处理结果反馈给交互模块,以使交互模块将文件数据处理结果反馈给可视化文件系统,以便进行数据更新。

本发明实施例提供的技术方案,区块链应用层获取到交互模块发送的第二文件处理请求后,可以根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,而后将文件数据处理结果反馈给交互模块。本方案,基于区块链节点的系统构架,实现了基于键值对文件系统的管理方式,也为区块链应用层对于文件形式的数据存储需求提供了支持。此外,对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

实施例六

图7a为本发明实施例六提供的一种基于区块链的文件系统实现方法的流程图,本实施例在上述实施例的基础上,在物理存储层为多版本键值对存储系统的情况下,进一步的优化。如图7a所示,该方法包括以下具体步骤:

s701,区块链应用层从交互模块获取第二文件处理请求。

s702,区块链应用层根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,其中,文件事务请求在执行过程中产生文件处理请求。

区块链应用层所获取的第二文件处理请求中可能包括版本信息。应用层可进一步检验或纠正版本信息。具体是,用户对某个文件的处理,从创建到删除文件,可能是在不同时间分多次完成的。而创建文件、更改文件数据、删除文件等操作,可能是在连续或不连续的多个区块中以多次文件事务请求的方式来实现的。

在本发明实施例中,通过多版本kv存储系统,实现了在各个区块中以不同的版本标识来标识出该区块内事务请求所更改的数据键值对。从用户角度来看,被删除或覆盖的文件数据,仍然是被存储着的,只是历次被修改时键值对的版本标识不同,以取分各次修改。

在本实施例中,区块链应用层中可记录基于各次文件事务请求对文件进行操作的版本信息。例如,记录在发起a文件的文件创建事务请求时的区块id,作为版本信息;随后发起针对a文件的文件数据更新事务请求时的区块id,并具体记录针对a文件中哪些目标数据进行添加、删除或更改的目标数据。最后在发起a文件的文件删除事务请求时,也可对应记录此次文件删除事务请求的区块id,作为版本信息。

由此,保存了文件中各个具体数据被添加或修改的历次事务请求所对应的版本信息。在用户需要打开a文件时,用户不需要关注打开文件的哪个版本,而是由区块链应用层来确定文件以及其具体数据所对应的最近版本信息,并将版本信息传输给逻辑层的文件系统接口,文件系统接口又将版本信息传输给物理存储系统,获取最近的正确版本的具体数据,从而向用户反馈正确的文件数据。区块链应用层可在调用虚拟机执行智能合约的同时确定版本信息,也传入新版本信息。当然,本领域技术人员可以理解,区块链节点也可以采用其他手段记录文件数据的版本信息并按照需要使用各次版本信息。

s703,文件系统接口获取区块链应用层的文件处理请求。

具体的,区块链应用层向区块链网络发起文件事务请求后,区块链网络中的区块链节点(本地区块链节点或其他区块链节点)获取到该文件事务请求后,可以通过本地区块链应用层执行该文件事务请求,且在执行该文件事务请求的过程中产生文件处理请求,向文件系统接口传输;文件系统接口获取区块链应用层的文件处理请求,并对该文件处理请求进行处理。

s704,文件系统接口确定文件处理请求的目标文件的文件基础键值对。

由于物理存储层为键值对存储系统,更进一步的,该kv存储系统为多版本kv存储系统,因此文件系统接口需将获取的文件处理请求转换为键值对的数据形式。可选的,可为每个存储文件设置一个文件基础键值对,也可以称为基础文件列表。文件基础键值对还可以通过层级关系包括至少一个关联键值对来扩展文件的存储空间。每个文件基础键值对包括键域(key)和值域(value),键域用于存储键标识,值域用于存储与键域中键标识相关联的目标数据的地址内容;键标识可以是目标文件的名称,可选的,文件基础键值对的键域用于存储文件名称。如图7b所示,文件存储至文件基础键值对700中,其中,文件基础键值对700的键域715中存储文件名称,文件基础键值对700的值域720中存储地址内容。

本实施例中,由于文件基础键值对是每个文件的存储基础,当锁定了文件基础键值对即可确定整个文件下各数据的存储地址。因此可以根据文件处理请求确定目标文件的文件名称,而后以文件名称为索引即可确定目标文件的文件基础键值对。

需要说明的是,若文件系统接口中未存储目标文件的文件基础键值对,则可以产生新文件基础键值对作目标文件的文件基础键值对,将目标文件的文件名称写入新文件基础键值对的键域,将目标文件中各数据的地址内容写入新文件基础键值对的值域。

s705,文件系统接口在文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址。

本实施例中,文件基础键值对值域中还可以包括寻址区域,寻址区域用于记录文件中各数据内容的逻辑地址,逻辑地址是指按照数据在逻辑数据接口层的存储逻辑给出的目标数据的存储路径,例如,一个文件可能的逻辑地址是包括文件中各个数据的存储位置,存储位置是连续的。逻辑地址与物理地址有对应关系,此对应关系通常有物理存储层来管理;物理地址是真正存储目标数据的位置,如由磁盘的柱面、头、段等物理位置所确定的地址。例如,在物理存储层中该文件各个数据的存储位置可能是不连续的。

可选的,物理存储层存储有目标数据对应键值对即数据键值对,数据键值对存储于物理存储层的存储空间内,数据键值对的键域存储键标识,数据键值对的值域用于存储数据。文件系统接口存储的地址键值对的键标识与物理存储层存储的数据键值对的键标识相同。

具体的,文件系统接口在确定目标文件的文件基础键值对之后,可从文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址。

可选的,如图7b所示,值域720中的寻址区域可以包括直接寻址区域722、间接寻址区域723、双间接寻址区域724、三间接寻址区域725以及具有更多层级关系相关联的扩展存储空间。其中,直接寻址区域722中直接记录有数据对应键值对的逻辑地址,即存储一级地址键值对,一级地址键值对的键域存储有键标识,值域存储数据键值对的逻辑地址。

间接寻址区域723值域的寻址区域中记录有指向一级地址键值对741的存储地址,一级地址键值对741值域的寻址区域中记录有数据对应键值对的逻辑地址。其中,地址键值对与文件基础键值对的结构相似,地址键值对的键域中用于存储键标识,而地址键值对值域中的寻址区域用于存储与键标识相关联的且指向数据对应键值对的逻辑地址或下一级地址键值对的存储地址。

双间接寻址区域724值域的寻址区域中记录有指向二级地址键值对742的存储地址,二级地址键值对742值域的寻址区域中记录有指向一级地址键值对741的存储地址,相应的,一级地址键值对741值域的寻址区域中记录有指向数据对应键值对的逻辑地址。同理,三间接寻址区域725值域的寻址区域中记录有指向三级地址键值对743的存储地址,三级地址键值对743值域的寻址区域中记录有指向二级地址键值对742的存储地址,以此类推。

需要说明的是,各寻址区域之间是层级递进的,且不同的寻址区域所能存储的地址数量不同,也可相同。例如,如果直接寻址区域722所能存储的地址数量达到设定条件,则可从文件基础键值对700值域720的间接寻址区域723中进行寻址;当寻址层级较少的间接寻址区域所能存储的地址数量达到设定条件,则从相邻的寻址层级较多的间接寻址区域中进行寻址,以此类推,直到确定一级键值对的地址,并通过一级键值对确定数据对应键值对的逻辑地址。

示例性的,结合具体的文件处理场景,如果需要向文件中写入数据,则在目标文件的文件基础键值对的基础上,将所要写入数据的逻辑地址依据寻址层级关系依次顺序写入文件基础键值对的寻址区域中。如果需要从文件中读取数据,则依据寻址层级关系从文件基础键值对的寻址区域中获取待读取数据所对应键值对的逻辑地址。

示例性的,文件系统接口在文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址可以包括:文件系统接口根据文件处理请求中目标数据在文件中的位置,在文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址。

s706,文件系统接口根据文件处理请求确定目标数据的版本信息。

本实施例中,版本信息可以用于表示目标数据被写入的事务请求所属区块的信息,如可以是区块标识。区块标识是指用于唯一识别某一区块的标志,如区块id。可选的,版本信息可以包括事务请求所属区块的区块标识;和/或目标数据最近被写入的事务请求所属区块的区块标识。不同的区块所对应的版本信息不同。

可选的,文件处理请求中可以包括待处理的目标文件、目标数据以及目标数据的版本信息。因此,文件系统接口可以从文件处理请求中获取目标数据以及目标数据的版本信息。

示例性的,文件系统接口获取应用层的文件处理请求之前,还可以包括:区块链应用层在执行事务请求的过程中,确定事务请求所操作的目标数据,以及目标数据的版本信息,版本信息用于添加至文件处理请求中传输给文件系统接口。

本实施例中,区块链应用层向文件系统接口所传输的文件处理请求中的目标数据,是区块链应用层执行事务请求过程中所要依赖的数据。例如,某一事务请求为账户a向账户b转账,目标数据可以包括账户a余额和账户b余额等。可选的,目标数据具体可以包括事务请求执行前所依赖数据的数值,以及事务请求执行后所依赖数据的数值。例如,事务请求执行前账户a余额值,以及事务请求执行后账户a余额值。

具体的,区块链应用层可以从本地或其他节点获取事务请求,若事务请求为智能合约,对于本地所发起的事务请求而言,区块链应用层可以调用本地虚拟机,在本地预先执行所发起的事务请求,进而确定该事务请求所操作的目标数据。对于从其他节点接收的事务请求而言,区块链应用层也可以调用本地虚拟机,执行该事务请求,进而确定该事务请求所操作的目标数据。虚拟机在执行时,可加载目标数据所对应的版本信息。

而后,如果区块链应用层确定事务请求对目标数据的操作方式是数据写入操作,则可以将当前区块的区块标识确定为目标数据的当前版本信息。如果区块链应用层确定事务请求对目标数据的操作方式是数据更改操作(如更改某一账户余额),数据删除操作(如将某一账户清空,则可以将该账户余额删除),或者数据读取操作(如需查询某一账户余额时,则可以读取该账户余额)时,则需获取目标数据的原版本信息,同时将当前区块的区块标识确定为目标数据的当前版本信息。其中,原版本信息是指执行事务请求之前,目标数据被写入的事务请求所属区块的区块标识;可以是前一区块的区块标识,也可以是历史任意区块的区块标识;还可以是默认为目标数据最近被写入的事务请求所属区块的区块标识。

区块链应用层在确定事务请求所操作的目标数据,以及目标数据的版本信息后,产生用于操作目标数据的文件处理请求,并将版本信息用于添加至文件处理请求中传输给文件系统接口;文件系统接口从文件处理请求中获取目标数据的版本信息。

需要说明的是,文件系统接口所获取的版本信息,或者可以说区块链应用层所确定的目标数据的版本信息,与交互模块向区块链应用层所传输的版本信息可能不同,也可能相同。

s707,文件系统接口根据逻辑地址和版本信息,产生物理数据处理请求,并传输给多版本键值对存储系统,以进行数据处理操作。

本实施例中,物理数据处理请求用于请求物理存储层对存储空间中的数据进行写入、删除、更改或读取等处理。可选的,物理数据处理请求中也可以包括待处理数据,以及对待处理数据的操作方式等。

具体的,文件系统接口可以根据逻辑地址和版本信息产生物理数据处理请求,并传输给物理存储层。

s708,多版本键值对存储系统根据版本信息确定版本标识。

本实施例中,版本标识是一个起到唯一标识作用的标识符,用于标识对当前物理数据处理请求所涉及数据的更新操作。可选的,版本标识与版本信息相对应,版本标识可以是版本信息,也可以是版本信息与流水号所组成,还可以是流水号等。不同区块对应不同的版本标识。例如,第100个区块的版本标识可以是0100+第100个区块的区块标识,第101个区块的版本标识可以是0101+第101个区块的区块标识。

具体的,物理存储层可以直接将物理数据处理请求中的目标数据的版本信息作为版本标识;还可以根据物理数据处理请求中的目标数据的版本信息确定版本附加标识,及流水号标识,而后将版本附加标识和流水号标识组成版本标识。其中,版本附加标识即为区块标识,流水号标识即为流水号值。

s709,多版本键值对存储系统根据逻辑地址和版本标识确定物理地址,并根据物理地址对物理键值对中的数据进行数据处理操作。

本实施例中,物理键值对即为真正存储目标数据的键值对。与地址键值对结构相同,物理键值对包括键域和值域,键域中存储有键标识和版本标识,值域中存储有数据。可选,对于同一目标数据,其在文件系统接口的地址键值对的键标识与物理存储层中的物理键值对的键标识相同。

具体的,物理存储层可以根据物理数据处理请求中的逻辑地址确定目标数据所对应的键标识;依据键标识和版本标识,确定目标数据的物理地址;而后依据物理地址对物理键值对中的数据进行数据处理操作。

s710,多版本键值对存储系统将文件数据处理结果通过文件系统接口反馈至区块链应用层。

s711,区块链应用层将文件数据处理结果反馈给交互模块。

本发明实施例提供的技术方案,文件系统接口获取到区块链应用层传输的文件处理请求后,确定文件处理请求的目标文件所关联的文件基础键值对,并从文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址;而后根据逻辑地址和版本信息产生物理数据处理请求,并传输给物理存储层;物理存储层根据版本信息确定版本标识,以及依据逻辑地址和版本标识,确定目标数据对应物理键值对的物理地址,进而对目标数据进行处理,并将文件数据处理结果通过文件系统接口反馈至区块链应用层,以使区块链应用层将文件数据处理结果反馈给交互模块。本方案,文件系统接口通过采用文件基础键值对来存储文件管理和寻址信息,从而与物理存储层中所存储的数据对应的键值对建立了关联,实现了基于键值对存储系统的文件管理方式,提高了区块链系统中文件的管理和寻址能力,为文件的快速查找、读取、写入等管理操作提供依据。

实施例七

图8为本发明实施例七提供的一种基于区块链的文件系统实现装置的结构示意图,该装置可配置于作为区块链节点的计算设备中或其他计算设备中,作为交互模块,可执行本发明实施例一至实施例四所提供的基于区块链的文件系统实现方法,具备执行方法相应的功能模块和有益效果。如图8所示,该装置包括:

第一请求获取模块810,用于获取可视化文件系统产生的第一文件处理请求;

第二请求发起模块820,用于根据第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用区块链应用层的文件智能合约,产生文件事务请求,其中,文件事务请求用于在区块链节点中进行文件数据处理的操作;

数据获取模块930,用于从区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

本发明实施例提供的技术方案,交互模块获取到可视化文件系统产生的第一文件处理请求后,根据第一文件处理请求向区块链应用层发起第二文件处理请求,以使区块链应用层调用本地文件智能合约产生文件事务请求,并将该文件事务请求传输至本地区块链节点或其他区块链节点,以请求区块链节点依据文件事务请求进行文件数据处理的操作并反馈文件数据处理结果;而后交互模块可从区块链应用层获取反馈的文件数据处理结果,并将该文件数据处理结果反馈给可视化文件系统,进而使可视化文件系统依据文件数据处理结果进行数据更新。本方案,通过采用交互模块与可视化文件系统,以及区块链应用层进行数据交互,即可实现对文件的管理,为用户提供了便捷的文件管理方式。相比于现有的技术方案,本方案对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

示例性的,第二请求发起模块820可以具体用于:

根据第一文件处理请求,通过进程间通讯方式或远程过程调用通讯方式,向所述区块链应用层发送第二文件处理请求。

示例性的,第二请求发起模块820可以包括:

版本信息获取单元,用于获取版本信息;

第二请求发起单元,用于根据第一文件处理请求和版本信息,向区块链应用层发起第二文件处理请求,其中,第二文件处理请求中携带版本信息。

示例性的,版本信息获取单元可以执行下述至少一项:

从共享内存中读取区块链应用层写入的当前区块的区块标识,作为版本信息;

根据本地版本生成模块生成的区块标识或用户输入的区块标识,作为版本信息。

示例性的,第二请求发起模块820还可以具体用于:

根据第一文件处理请求中的文件处理参数,以及本地预存的文件智能合约模板,产生第二文件处理请求,并向区块链应用层发送;

其中,文件处理参数包括:操作者、操作类型、文件名称和目标数据。

示例性的,若交互模块为用户空间文件系统的重载接口模块,则还包括:

fuse模块,是部署于操作系统内核的用户空间文件系统接口,用于获取可视化文件系统从内核态透传到用户态的第一文件处理请求,并记录第一文件处理请求中文件及目标数据的虚拟文件地址;

第一请求获取模块910可以具体用于获取从用户空间文件系统接口传输的第一文件处理请求。

示例性的,若交互模块为用户空间文件系统的重载接口模块,数据获取模块830可以具体用于:

从区块链应用层获取反馈的文件数据处理结果;

将文件数据处理结果传输给用户空间文件系统接口,以使用户空间文件系统接口根据记录的第一文件处理请求中文件及目标数据的虚拟文件地址,将文件数据处理结果从内核态透传给可视化文件系统,以进行可视化文件系统显示数据的更新。

实施例八

图9为本发明实施例八提供的一种基于区块链的文件系统实现装置的结构示意图,该装置可配置于作为区块链节点的计算设备中,作为区块链应用层,可执行本发明实施例五至实施例六所提供的基于区块链的文件系统实现方法,具备执行方法相应的功能模块和有益效果。如图9所示,该装置包括:

第二请求获取模块910,用于从交互模块获取第二文件处理请求;

事务请求发起模块920,用于根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,其中,文件事务请求在执行过程中产生文件处理请求;

数据反馈模块930,用于将文件数据处理结果反馈给交互模块。

本发明实施例提供的技术方案,区块链应用层获取到交互模块发送的第二文件处理请求后,可以根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,而后将文件数据处理结果反馈给交互模块。本方案,基于区块链节点的系统构架,实现了基于键值对文件系统的管理方式,也为区块链应用层对于文件形式的数据存储需求提供了支持。此外,对于普通用户而言,无需具备相关操作代码方面的知识,即可通过可视化界面进行文件管理,提升了用户体验。

示例性的,上述装置还可以包括:数据处理模块,该数据处理模块具体可以用于:

文件系统接口获取区块链应用层的文件处理请求;

文件系统接口确定文件处理请求的目标文件的文件基础键值对;

文件系统接口在文件基础键值对值域的寻址区域中确定目标数据对应键值对的逻辑地址;

文件系统接口根据文件处理请求确定目标数据的版本信息;

文件系统接口根据逻辑地址和所述版本信息,产生物理数据处理请求,并传输给多版本键值对存储系统,以进行数据处理操作;

多版本键值对存储系统根据版本信息确定版本标识;

多版本键值对存储系统根据逻辑地址和版本标识确定物理地址,并根据物理地址对物理键值对中的数据进行数据处理操作。

示例性的,第二请求获取模块910可以具体用于:

区块链应用层通过进程间通讯方式或远程过程调用通讯方式,从交互模块获取第二文件处理请求。

实施例九

图10为本发明实施例九提供的一种设备的结构示意图,图10示出了适于用来实现本发明实施例实施方式的示例性设备的框图。图10显示的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型可以是承担区块链网络节点功能的计算设备。

如图10所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器16,系统存储器28,连接不同系统组件(包括系统存储器28和处理器16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图10未显示,通常称为“硬盘驱动器”)。尽管图10中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例所描述的实施例中的功能和/或方法。

设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理器16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于区块链的文件系统实现方法。

实施例十

本发明实施例十还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行一种基于区块链的文件系统实现方法,该方法包括:

获取可视化文件系统产生的第一文件处理请求;

根据第一文件处理请求,向区块链应用层发起第二文件处理请求,以调用区块链应用层的文件智能合约,产生文件事务请求,其中,文件事务请求用于在区块链节点中进行文件数据处理的操作;

从区块链应用层获取反馈的文件数据处理结果,且将文件数据处理结果反馈给可视化文件系统,以进行数据更新。

和/或,

从交互模块获取第二文件处理请求;

根据第二文件处理请求以及文件智能合约,产生文件事务请求,向区块链网络发起,以请求区块链节点执行文件事务请求,对目标文件中的目标数据进行处理,其中,文件事务请求在执行过程中产生文件处理请求;

将文件数据处理结果反馈给交互模块。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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