CN111782615A - 基于区块链的大文件存储方法、系统和计算机设备 - Google Patents
基于区块链的大文件存储方法、系统和计算机设备 Download PDFInfo
- Publication number
- CN111782615A CN111782615A CN202010649706.6A CN202010649706A CN111782615A CN 111782615 A CN111782615 A CN 111782615A CN 202010649706 A CN202010649706 A CN 202010649706A CN 111782615 A CN111782615 A CN 111782615A
- Authority
- CN
- China
- Prior art keywords
- file
- block chain
- version number
- fragments
- fragment
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于区块链的大文件存储方法、系统、计算机设备和存储介质,通过区块链获取第一文件经过分片后得到的文件碎片;根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号,实现了大文件的存储篡改可恢复,提高了文件的安全性和可靠性。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于区块链的大文件存储方法、系统、计算机设备和存储介质。
背景技术
区块链为分布式数据库,参与区块链行为的各个节点存储的数据经过共识保持数据一致性。企业之间构建的区块链联盟链网络,解决企业间协作过程中出现的信任问题,企业间协作往来往往是通过具备法律效力的纸质化文件加盖印章之后由多方保留,以为企业间协作提供法律保障,为达成的事实提供法律依据。借助区块链技术的不可篡改,原本生成的多份协作文件在区块链上仅仅保留一份即可。然而,对于较大的文件在区块链上的存储,相关技术中采用区块链与星际文件系统(Inter Planetary File System,IPFS)协作的方式,将大文件的文件分片存在另一处自建文件系统网络中,利用区块链的无法篡改,历史可追溯的特性将分片文件的摘要信息进行共识,对源文件与现有文件的一致性进行校验,但文件系统网络中的文件并不具备不被篡改的特性,而且源文件被篡改后无法对源文件进行恢复。
针对相关技术中,区块链上的文件存储篡改无法恢复的问题,目前尚未提出有效的解决方案。
发明内容
基于此,有必要针对上述技术问题,提供一种基于区块链的大文件存储方法、装置、计算机设备和存储介质。
根据本发明的一个方面,提供了一种基于区块链的大文件存储方法,所述方法包括:
区块链获取第一文件经过分片后得到的文件碎片;
根据预设的智能合约,以交易形式在所述区块链上存储所述文件碎片,在所述区块链上生成并且记录与所述第一文件对应的第一文件版本号,其中,所述区块链上的节点根据所述第一文件版本号,从所述区块链上获取所述文件碎片,根据所述文件碎片获取所述第一文件。
在其中一个实施例中,所述生成与所述第一文件对应的第一文件版本号包括:
对所述第一文件的文件碎片进行哈希计算,确定碎片哈希值;
对所述碎片哈希值进行哈希计算,生成所述第一文件版本号。
在其中一个实施例中,所述生成并且记录与所述第一文件对应的第一文件版本号之后,所述方法包括:
区块链获取第二文件经过分片后得到的文件碎片,其中,所述第二文件包括修改后的所述第一文件的文件碎片;
根据所述第二文件的文件碎片,生成所述第二文件版本号;
在所述区块链上记录所述第二文件、所述第二文件版本号,以及记录所述第二文件与所述第一文件之间的继承关系。
在其中一个实施例中,所述在所述区块链上记录所述第二文件、所述第二文件版本号,以及记录所述第二文件与所述第一文件之间的继承关系之后,所述方法包括:
区块链获取第三文件经过分片后得到的文件碎片,其中,所述第三文件包括修改后的所述第二文件的文件碎片,并且所述第二文件是所述第三文件最接近的文件版本;
根据所述第三文件的文件碎片,确定所述第三文件版本号,在所述区块链上记录所述第三文件、所述第三文件版本号,以及所述第三文件与所述第二文件之间的继承关系。
在其中一个实施例中,所述根据所述第二文件的碎片获取所述第二文件的版本号之后,所述方法包括:
在所述区块链上记录所述第二文件与所述第一文件有差异的文件碎片以及差异内容,所述第二文件版本号以及所述第二文件与所述第一文件之间的继承关系。
在其中一个实施例中,所述根据所述第二文件碎片获取所述第二文件的版本号包括:
对修改后的第一文件碎片进行哈希计算,确定修改后的第一碎片哈希值,其中,所述第一文件碎片为所述第一文件与所述第二文件有差异的文件碎片;
根据所述修改后的第一碎片哈希值与所述第一文件中未修改的碎片哈希值,通过哈希计算生成所述第二文件的版本号。
在其中一个实施例中,所述区块链获取第一文件经过分片和序列化后得到的文件碎片之前,所述方法包括:
获取所述第一文件,以及所述第一文件的文件类型;
根据所述文件类型确定分片方式,根据所述分片方式对所述第一文件进行分片以及序列化,得到所述文件碎片。
根据本发明的另一个方面,还提供了一种基于区块链的大文件存储系统,所述系统包括部署在区块链上的文件管理模块和版本管理模块:
所述文件管理模块用于获取第一文件经过分片和序列化后得到的文件碎片;根据预设的智能合约,以交易形式在所述区块链上存储所述文件碎片;
所述版本管理模块用于生成并且在所述区块链上记录与所述第一文件对应的第一文件版本号,其中,所述区块链上的节点根据所述第一文件版本号,获取所述文件碎片,根据所述文件碎片获取所述第一文件。
根据本发明的另一个发明,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述计算机程序时实现上述基于区块链的大文件存储方法。
根据本发明的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于区块链的大文件存储方法的步骤。
上述基于区块链的大文件存储方法、系统、计算机设备和存储介质,通过区块链获取第一文件经过分片后得到的文件碎片;根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号,实现了大文件的存储篡改可恢复,提高了文件的安全性和可靠性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本发明一个实施例中基于区块链的大文件存储方法的应用场景图;
图2是根据本发明一个实施例中基于区块链的大文件存储方法的流程图;
图3是根据本发明一个实施例中的基于区块链的大文件存储文件版本号计算示意图;
图4是根据本发明一个实施例中基于区块链的第二文件存储方法的流程图;
图5是根据本发明一个实施例中基于区块链的第二文件存储方法示意图;
图6是根据本发明一个实施例中基于区块链的第三文件存储方法流程图;
图7是根据本发明一个实施例中基于区块链的大文件存储版本管理的示意图;
图8是根据本发明一个实施例中基于区块链的大文件存储版本树的示意图;
图9是根据本发明一个实施例中智能合约的文件处理流程图;
图10是根据本发明一个实施例中基于区块链的大文件存储系统的结构示意图;
图11是根据本发明一个实施例中基于区块链的大文件存储系统架构示意图;
图12是根据本发明一个实施例中应用服务器对文件进行甄别和分类的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
区块链为分布式数据库,参与区块链行为的各个节点存储的数据经过共识保持数据一致性。企业之间构建的区块链联盟链网络,解决企业间协作过程中出现的信任问题,企业间协作往来往往是通过具备法律效力的纸质化文件加盖印章之后由多方保留,为企业间协作提供法律保障,为达成的事实提供法律依据。借助区块链技术的不可篡改,原本生成的多份协作文件在区块链上仅仅保留一份即可。在企业间协同的过程中,同一份文件往往由多个签署方,共同签属留存。在使用区块链保存相同的文件时,不需要多方进行多次上传,只需要使用区块链记录文件多方签署的动作,记录由哪些参与方发起,签署在哪一份文件上即可。这样可以大大减少区块链对进行大文件持久化之后带来的性能损耗,同时也保证了协作文件的一致性与不可篡改。本申请提出利用区块链使用场景和大文件的持久化结合来实现待存储文件的存储,待存储文件可以是普通用户上传的各类型文件,例如视频文件、音频文件、文本文件等,也可以是金融机构上传的金融相关文件,例如审计文件、会计文件等,也可以是各类单位机构通过自身局域网向外部广域网发布的各类信息文件,例如网页文件、推送文件等。
为便于理解本申请文件存储系统中的区块链网络,先对本申请采用的区块链技术进行举例说明。在一些实施例中,电子设备运行该区块链技术以成为该区块链网络的节点,该区块链平台基础架构包括区块链的展现层、应用层、服务层,以及区块链核心支撑模块。
其中,展现层用于将系统功能进行展示,进而实现用户交互,各个文件主体可通过系统客户端登陆相应展现层显示的界面访问应用层并以获取信息资源,包括注册界面、操作执行界面、查询界面、应用管理界面、管理员界面等。应用层用于展示区块链网络的具体功能,是文件存储的重要环节,按功能的不同可划分为用户管理、权限控制、目录管理等。服务层用于通过分布式服务器对应用相关功能进行有效的整合和管理,例如用户注册、用户身份管理、加解密服务、分布式账本服务、智能合约服务、数据管理服务等。
区块链核心支撑模块包括数据层、网络层、共识层和合约层。其中,数据层用于封装底层数据区块以及相关的数据加密和时间戳等技术。
网络层封装了区块链网络系统的P2P组网方式、消息传播协议和数据验证机制等要素,使各节点地位对等且以扁平式拓扑结构相互连通和相互,拥有分布式、自治性、开放可自由进出等特性。区块链网络中每一个节点都能参与区块数据的校验和记账过程,仅当区块数据通过全网大部分节点验证后,才能记入区块链。区块链这种去中心化设计保证文件数据不可篡改、不可伪造。
共识层,封装了在决策权高度分散的拓扑网络中快速完成共识的方法,以参与区块链网络的共识机制。
合约层,封装有数据访问策略的合约代码,合约代码中的条件被触发时,自动执行相应交易,同时可通过合约内容规定相应的访问条件对相应的数据进行访问等。
图1是根据本发明一个实施例中基于区块链的大文件存储方法的应用场景图,本申请提供的基于区块链的大文件存储方法,可以应用于如图1所示的应用环境中。区块链网络10包括文件节点12、记账节点14和用户节点16。文件节点12具有向区块链网络10上传待存储文件,对待存储文件进行分片、编辑、增删等操作权限,以基于本实施例的区块链网络10进行文件存储。记账节点14可进行区块链网络10的记账,每个记账节点14为具有竞争记账能力的节点,以将区块链网络10中的节点对存储于区块链网络10中的文件之间的交互操作及相关信息进行记账操作。进一步,本实施例的文件节点12也可复用为区块链网络10中的记账节点14,执行相关的记账操作。用户节点16为普通用户节点,用户节点16可在经过文件节点12的认证后通过区块链网络10获取由文件节点12提交而存储于区块链网络10中的待存储文件。在一些实施例中,文件节点12对第一文件进行分片以及序列化之后,将第一文件的文件碎片上传至区块链网络10,区块链网络10获取文件碎片,根据预设的智能合约以交易形式将文件碎片存储在区块链网络10上,智能合约对所有序列化的文件碎片进行管理,生成与第一文件对应的第一文件版本号并记录在区块链网络10上。用户节点16根据第一文件版本号,可以从区块链网络10上读取第一文件对应的文件碎片,并通过文件合成器将文件碎片合成为第一文件,从而进行调用查看。
上述文件节点12、用户节点14和记账节点16具体可以为任意电子设备,例如服务器、手机、计算机、平板电脑等。可以理解的是,上述文件节点12、用户节点14和记账节点16之间可相互通信。另外,上述节点的区分均是根据通过该节点登录的身份信息确定的,在一些实施例中,上述区块链为区块私有链或区块联盟链,故事先在区块链平台上完成身份注册,上述节点的相应主体都需要事先在区块链平台上完成注册,并获取相应的公钥和私钥,确定其身份可信后,允许开展上述文件存储的相关业务。
在一个实施例中,图2是根据本发明一个实施例中基于区块链的大文件存储方法的流程图,如图2所示,提供了一种基于区块链的大文件存储方法,以该方法应用于图1中的区块链网络10为例进行说明,包括以下步骤:
步骤S210,区块链获取第一文件经过分片后得到的文件碎片。其中,第一文件为待存储的协作文件,将第一文件按照规则进行拆分,可选地,上述规则可以是根据文件页码或者行数进行拆分,也可以通过指定拆分后的文件大小,对文件进行拆分。在一些实施例中,对上传文件的类型进行甄别,根据不同的文件类型采用不同的分片方式。可选地,第一文件在打碎前通过摘要算法求出完整的第一文件内容的哈希值,作为第一文件的标识,该标识可以在用户节点在区块链上获取到文件碎片并根据文件碎片整合的过程中对整合得到的文件进行验证,以确认整合得到的文件与第一文件一致。拆分后的文件分别进行序列化,得到文件碎片;
步骤S220,根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号。序列化后的文件碎片将封装成区块链可以执行的交易,通过区块链的智能合约进行驱动,由智能合约对文件所有序列化碎片统一进行管理,智能合约将获取到的交易信息,即封装后的文件碎片,进行反序列化,并对交易信息进行签名验证,获取交易信息中的内容,而后按照智能合约中预设的存储规则将文件碎片存储到相应的文件队列中,生成并且记录与第一文件对应的第一文件版本号。可选地,智能合约中包括预设的版本号计算规则,在智能合约获取到文件碎片之后,即可根据预设的版本号计算规则计算第一文件版本号。需要说明的是,上述文件版本号通常是唯一的,因此,该文件版本号也可以被视为文件的索引号,版本号与大文件一一对应,区块链上的节点根据文件版本号,从区块链上获取文件碎片,根据文件碎片获取第一文件。因此,任何能够根据文件碎片计算出唯一版本号的版本号计算规则均可被用于本实施方案。
上述基于区块链的大文件存储方法,通过区块链获取第一文件经过分片后得到的文件碎片,根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号,区块链上所有的节点共同保存文件副本,即使其中一个节点文件被篡改,区块链依旧会根据自身共识机制得到一致认同的文件,区块链同时会发现该节点的异常文件,并通过节点恢复机制,将异常文件进行修复,从而实现了大文件的存储篡改可恢复,提高了文件的安全性和可靠性。
在一个实施例中,在区块链上生成与第一文件对应的第一文件版本号包括以下步骤:对第一文件的文件碎片进行哈希计算,确定碎片哈希值;对碎片哈希值进行哈希计算,生成第一文件版本号。图3是根据本发明一个实施例中的基于区块链的大文件存储文件版本号计算示意图,如图3所示,对智能合约账本中的文件碎片1进行哈希计算,得到碎片哈希1,对文件碎片2进行哈希计算,得到碎片哈希2,以此类推,计算出第一文件所有文件碎片对应的碎片哈希值,然后将碎片哈希按照顺序进行拼接,对拼接后的碎片哈希值进行哈希计算,将计算结果作为第一文件版本号。本实施例提供了一种文件版本号的计算方式,根据文件碎片的内容经过哈希计算确定文件版本号,提高了文件版本号的准确性,并提高了智能合约进行大文件管理的管理效率。
在一个实施例中,图4是根据本发明一个实施例中基于区块链的第二文件存储方法的流程图,如图4所示,生成并且记录与第一文件对应的第一文件版本号之后,包括以下步骤:
步骤S410,区块链获取第二文件经过分片后得到的文件碎片。其中,第二文件包括修改后的第一文件的文件碎片。图5是根据本发明一个实施例中基于区块链的第二文件存储方法示意图,如图5所示,第一文件包括四个文件碎片,分别为文件碎片1、文件碎片2、文件碎片3和文件碎片4,第二文件是基于第一文件中的文件碎片1修改后得到,其余三个文件碎片均未改变,即第二文件包括新版文件碎片1、文件碎片2、文件碎片3和文件碎片4。
步骤S420,根据第二文件的文件碎片,生成第二文件版本号。根据步骤S410中获取到的新版文件碎片1、文件碎片2、文件碎片3和文件碎片4,并根据智能合约中预设的版本号计算规则,计算出第二文件的版本号;
步骤S430,在区块链上记录第二文件、第二文件版本号,以及记录第二文件与第一文件之间的继承关系。除了第二文件与第二文件的版本号,还在区块链上记录了第二文件与第一文件之间的继承关系,上述继承关系用于指示第一文件是第二文件的基板,即第二文件可以由第一文件直接修改得到;
步骤S410至步骤S430中,提供了一种版本管理的方法,在文件更新迭代的过程中,记录当前文件版本的基础版本,从而使得修改记录以及各个版本均可追溯,提高了文件存储的有序性和易用性。
在一个实施例中,图6是根据本发明一个实施例中基于区块链的第三文件存储方法的流程图,如图6所示,在区块链上记录第二文件、第二文件版本号,以及记录第二文件与第一文件之间的继承关系之后,包括以下步骤:
步骤S610,区块链获取第三文件经过分片后得到的文件碎片。其中,第三文件包括修改后的第二文件的文件碎片,并且第二文件是第三文件最接近的文件版本,例如,第二文件是步骤S410中所描述的文件,包括新版文件碎片1、文件碎片2、文件碎片3和文件碎片4,第三文件则包括新版文件碎片1、新版文件碎片2、文件碎片3和文件碎片4,则相比于第一文件,第二文件是第三文件最接近的文件版本;
步骤S620,根据第三文件的文件碎片,确定第三文件版本号,在区块链上记录第三文件、第三文件版本号,以及第三文件与第二文件之间的继承关系。根据智能合约中的版本号计算规则出第三文件版本号后,在区块链上记录第三文件以及第三文件版本号,以及第三文件与第二文件之间的继承关系,指示第三文件可以由第二文件修改得到。
步骤S610至步骤S620中,提供了一种版本管理的方法,在文件更新迭代的过程中,记录当前文件版本最接近的版本,从进一步提高修改记录的追溯效率,进一步提高了文件存储的有序性和易用性。
在一个实施例中,根据第二文件的碎片获取第二文件的版本号之后,在区块链上记录第二文件与第一文件有差异的文件碎片以及差异内容,第二文件版本号以及第二文件与第一文件之间的继承关系。在本实施例中,在记录修改文件时仅记录当前文件相比于修改基础文件有所修改的文件碎片以及修改内容。以图5所示的第二文件为例,图7是根据本发明一个实施例中基于区块链的大文件存储版本管理的示意图,如图7所示,在第一文件中的碎片1经过修改得到第二文件的情况下,与第二文件对应的版本节点上仅记录第二文件中的新版文件碎片1,新版文件碎片1相对于文件碎片1所修改的内容以及第二文件与第一文件之间的继承关系。本实施例中提供的实施方式减少了因文件内容局部修改而造成整份文件所需要的存储空间而带来的空间与资源的浪费,也进一步提高了大文件存储的版本管理效率。
在一个实施例中,根据第二文件碎片获取第二文件的版本号包括:对修改后的第一文件碎片进行哈希计算,确定修改后的第一碎片哈希值,其中,第一文件碎片为第一文件与第二文件有差异的文件碎片;根据修改后的第一碎片哈希值与第一文件中未修改的碎片哈希值,通过哈希计算生成第二文件的版本号。在本实施例中,提供了一种计算修改后的文件版本号的方式,计算过程中仅对有修改的文件碎片进行哈希计算,用修改的碎片哈希替换原完整碎片哈希字符串中修改的文件碎片对应的哈希值,再经过一次哈希计算最终得到第二文件版本号。本实施例中提供的实施方式,在文件版本号的计算过程中,无需对无修改的文件碎片重复进行碎片哈希的计算,提高了文件版本号的计算效率,今儿进一步提高了大文件存储过程中版本管理的效率。
在一个优选实施例中,根据上述第二文件与第三文件的实施方式,在实际应用中,智能合约采用版本树的形式对各个版本的大文件进行版本管理。图8是根据本发明一个实施例中基于区块链的大文件存储版本树的示意图,如图8所示,随着需求变更,需要对大文件的内容进行变更,当文件变更所在的基板文件碎片发生变化,如版本节点1到版本节点2所发生的更新,版本节点2中记录了发生更改的文件碎片1,并对更新之后的各个文件碎片进行哈希计算,确定版本节点2对应的文件的版本号,也记录在文件版本树的版本节点2中。之后版本节点3在版本节点2的基础上进行了文件碎片2的修改,版本节点4则在版本节点3的基础上进行了文件碎片4的修改,上述变更均在版本节点2的基础上进行更新迭代。当文件的内容变更,与以往本件得变更版本相差较大,则需要在最相近得文件支点列出文件分支,对原有文件历史版本进行变基操作。例如版本节点5中的文件是对文件碎片1和文件碎片3进行的修改,则该文件无法在版本节点4中的文件基础上进行修改,因此将定位至最接近的文件版本即版本节点2所对应的文件,在版本节点2的基础上进行变基,得到版本节点5对应的文件版本,该文件版本可以视为是一个新的基版,该基版会对原版本索引指针进行多级索引,在此基础上,同样地,在版本节点5中记录新的文件碎片,并对新的文件碎片进行哈希计算,并将计算结果与其他未修改的文件碎片结果进行哈希计算,得出的结果为该变基版本的版本号。该基版也可以作为一个新的更新支路,持续进行版本更新迭代,例如版本节点6的更新。可选地,智能合约为每一条更迭支路生成新的文件队列,用于存储该更迭支路的文件碎片。每次经过变基则会生成一份文件新的版本,新的基线版本与原有文件基板都可以持续进行更新迭代。
在上述优选实施例中,图9是根据本发明一个实施例中智能合约的文件处理流程图,如图9所示,区块链上的智能合约对大文件的处理流程如下:
步骤S910,智能合约接收通过交易上传至区块链的文件碎片,智能合约将交易信息进行反序列化,找到对应的方法签名与参数开始执行;
步骤S920,智能合约将文件碎片存储到文件对应的文件队列;
步骤S930,文件传输完成后,为文件生成唯一的文件版本号;
步骤S940,要对文件文本发生修改时,判断文件是否变基;
步骤S950,在文件发生变基的情况下,则为变基的文件生成新的文件队列,并标记基础版本;
步骤S960,在文件未发生变基的情况下,则延续上一版本进行内容更新,在原有的版本队列中逐次递增,维护文件版本独立性;
步骤S970,为修改后的文件生成新的版本号。
上述的大文件存储以及版本迭代方式,文件的历史版本及状态变化,可以通过区块链本身特点对其进行追溯,从技术上对其唯一性与不可违约性进行约束。当不同的区块链接入方,想依据己方基于区块链数据定制的上层应用特点对区块链上数据进行拓展,只需要满足智能合约对文件的限制即可开发满足自身需求的应用场景,而对其他原有应用不造成影响。同时上传的原版文件,可以通过使用文件的摘要哈希,以最终确定文件是否在上传的过程中被篡改,保证文件的最终一致性。在智能合约中使用了文件版本管理机制,在文件内容发生变化的时,可以以最小的代价,实现文件内容动态变更,在上层应用使用区块链上文件时,只需指定唯一版本号,并根据版本指定文件,进行事务协同即可。
应该理解的是,虽然图2至图9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,图10是根据本发明一个实施例中基于区块链的大文件存储系统的结构示意图,如图10所示,提供了一种基于区块链的大文件存储系统,系统包括部署在区块链上的文件管理模块1002和版本管理模块1004:
文件管理模块1002用于获取第一文件经过分片和序列化后得到的文件碎片;根据预设的智能合约,以交易形式在区块链上存储文件碎片;
版本管理模块1004用于生成并且在区块链上记录与第一文件对应的第一文件版本号,其中,区块链上的节点根据第一文件版本号,获取文件碎片,根据文件碎片获取第一文件。
关于基于区块链的大文件存储系统的具体限定可以参见上文中对于基于区块链的大文件存储方法的限定,在此不再赘述。上述基于区块链的大文件存储系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个优选实施例中,图11是根据本发明一个实施例中基于区块链的大文件存储系统架构示意图,如图11所示,系统架构主要为相关业务参与的四方,数据源记录方、数据源查看方、源数据索引使用方和源文件管理方。其中,源文件管理方即区块链上执行的智能合约。
数据源记录方可以是应用服务器,该应用服务器根据智能合约层对文件控制逻辑,将原始文件经过分片,将分片文件分别序列化,将序列化的文件内容封装成区块链可以执行的交易,通过区块链的智能合约进行驱动,由智能合约对文件碎片统一以树形结构进行管理,为整个大文件生成统一的版本控制体系,并为每一个版本的文件生成唯一的索引标识,即文件版本号,最终为其生成文件序列化内容随区块链区块中交易体信息进行持久化。
可选地,图12是根据本优选实施例中应用服务器对文件进行甄别和分类的示意图,如图12所示,应用服务器负责对上传文件的类型进行甄别,根据不通的文件类型采用不同的处理方式。不同的文件在打碎前通过摘要算法求出其完整内容的哈希值,作为该文件的唯一标识与索引,并将预处理文件的总数量标识,封装成区块链对应的交易信息发送至区块链,持久化在智能合约中。后将序列化的文件逐次分批分片进行序列化,并通过交易发送至智能合约进行持久化。
区块链任意节点方作为数据源查看方在使用区块链数据时,可以将区块链上数据从链上读取,并通过文件合成器将指定版本的文件碎片合成,最终缓存到应用服务器,以供使用时进行调用查看。
当文件被使用,例如签署合同协议时,协作多方需要对某一文件进行签属时,上述协作方为数据源索引适用方,通过调用并查看链上文件内容并对文件进行签属,记录到智能合约中,该合同签属操作会通过文件索引器将参与方查看到的内容进行索引,并生成唯一不可篡改的记录,标记多方达成协作关系这一事实。
根据区块链不可篡改的特性,当协作过程中出现了纠纷或不一致的情况,可以从区块链上找到对应的历史记录,为协作事宜提供可信数字化证据支持。同一份文件可以由多方多次使用。
上述基于区块链的大文件存储系统,在协作文件的使用过程中,为了保证文件的易用性、与持续扩展,可以通过智能合约对文件进行历史版本管理,系统会对文件按照规则进行拆分,并将拆分结果进行相应的摘要计算,并将计算结果保存在智能合约中,当文件内容发生迭代变化或者文件内容补充新增,会对文件指定的拆分单元内容做出修改,并进行版本迭代,以保证历史文件记录可追溯,同时保证文件使用的前后向兼容,减少因文件内容局部修改而造成整份文件修改而带来的空间与资源的浪费。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于区块链的大文件存储方法。
上述基于区块链的大文件存储计算机设备,通过区块链获取第一文件经过分片后得到的文件碎片;根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号,实现了大文件的存储篡改可恢复,提高了文件的安全性和可靠性。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述基于区块链的大文件存储方法。
上述基于区块链的大文件存储计算机可读存储介质,通过区块链获取第一文件经过分片后得到的文件碎片;根据预设的智能合约,以交易形式在区块链上存储文件碎片,在区块链上生成并且记录与第一文件对应的第一文件版本号,实现了大文件的存储篡改可恢复,提高了文件的安全性和可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于区块链的大文件存储方法,其特征在于,所述方法包括:
区块链获取第一文件经过分片后得到的文件碎片;
根据预设的智能合约,以交易形式在所述区块链上存储所述文件碎片,在所述区块链上生成并且记录与所述第一文件对应的第一文件版本号,其中,所述区块链上的节点根据所述第一文件版本号,从所述区块链上获取所述文件碎片,根据所述文件碎片获取所述第一文件。
2.根据权利要求1所述的方法,其特征在于,所述生成与所述第一文件对应的第一文件版本号包括:
对所述第一文件的文件碎片进行哈希计算,确定碎片哈希值;
对所述碎片哈希值进行哈希计算,生成所述第一文件版本号。
3.根据权利要求1所述的方法,其特征在于,所述生成并且记录与所述第一文件对应的第一文件版本号之后,所述方法包括:
区块链获取第二文件经过分片后得到的文件碎片,其中,所述第二文件包括修改后的所述第一文件的文件碎片;
根据所述第二文件的文件碎片,生成所述第二文件版本号;
在所述区块链上记录所述第二文件、所述第二文件版本号,以及记录所述第二文件与所述第一文件之间的继承关系。
4.根据权利要求3所述的方法,其特征在于,所述在所述区块链上记录所述第二文件、所述第二文件版本号,以及记录所述第二文件与所述第一文件之间的继承关系之后,所述方法包括:
区块链获取第三文件经过分片后得到的文件碎片,其中,所述第三文件包括修改后的所述第二文件的文件碎片,并且所述第二文件是所述第三文件最接近的文件版本;
根据所述第三文件的文件碎片,确定所述第三文件版本号,在所述区块链上记录所述第三文件、所述第三文件版本号,以及所述第三文件与所述第二文件之间的继承关系。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第二文件的碎片获取所述第二文件的版本号之后,所述方法包括:
在所述区块链上记录所述第二文件与所述第一文件有差异的文件碎片以及差异内容,所述第二文件版本号以及所述第二文件与所述第一文件之间的继承关系。
6.根据权利要求3所述的方法,其特征在于,所述根据所述第二文件碎片获取所述第二文件的版本号包括:
对修改后的第一文件碎片进行哈希计算,确定修改后的第一碎片哈希值,其中,所述第一文件碎片为所述第一文件与所述第二文件有差异的文件碎片;
根据所述修改后的第一碎片哈希值与所述第一文件中未修改的碎片哈希值,通过哈希计算生成所述第二文件的版本号。
7.根据权利要求1所述的方法,其特征在于,所述区块链获取第一文件经过分片和序列化后得到的文件碎片之前,所述方法包括:
获取所述第一文件,以及所述第一文件的文件类型;
根据所述文件类型确定分片方式,根据所述分片方式对所述第一文件进行分片以及序列化,得到所述文件碎片。
8.一种基于区块链的大文件存储系统,其特征在于,所述系统包括部署在区块链上的文件管理模块和版本管理模块:
所述文件管理模块用于获取第一文件经过分片和序列化后得到的文件碎片;根据预设的智能合约,以交易形式在所述区块链上存储所述文件碎片;
所述版本管理模块用于生成并且在所述区块链上记录与所述第一文件对应的第一文件版本号,其中,所述区块链上的节点根据所述第一文件版本号,获取所述文件碎片,根据所述文件碎片获取所述第一文件。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010649706.6A CN111782615B (zh) | 2020-07-08 | 2020-07-08 | 基于区块链的大文件存储方法、系统和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010649706.6A CN111782615B (zh) | 2020-07-08 | 2020-07-08 | 基于区块链的大文件存储方法、系统和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782615A true CN111782615A (zh) | 2020-10-16 |
CN111782615B CN111782615B (zh) | 2021-05-18 |
Family
ID=72759175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010649706.6A Active CN111782615B (zh) | 2020-07-08 | 2020-07-08 | 基于区块链的大文件存储方法、系统和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782615B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938324A (zh) * | 2021-12-16 | 2022-01-14 | 成都车晓科技有限公司 | 一种基于区块链的车贷信息的安全存储方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165190A (zh) * | 2018-07-11 | 2019-01-08 | 南京邮电大学 | 一种基于区块链智能合约的电子数据存证方法 |
WO2019058340A1 (en) * | 2017-09-25 | 2019-03-28 | Shared S.R.L. | METHOD FOR EXECUTING INTELLIGENT CONTRACTS VIA ELECTRONIC PROCESSING MEANS USING BLOCK CHAIN TECHNOLOGY |
CN109739827A (zh) * | 2018-12-19 | 2019-05-10 | 北京第一视频科学技术研究院有限公司 | 一种基于双链架构的区块链存储系统 |
CN110633578A (zh) * | 2019-08-26 | 2019-12-31 | 苏州全时空信息技术有限公司 | 智能共享云存储方法与系统 |
CN110675965A (zh) * | 2019-10-11 | 2020-01-10 | 重庆华医康道科技有限公司 | 一种远程问诊方法 |
CN111324613A (zh) * | 2020-03-13 | 2020-06-23 | 华东师范大学 | 一种面向联盟链的分片内数据组织管理方法 |
-
2020
- 2020-07-08 CN CN202010649706.6A patent/CN111782615B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019058340A1 (en) * | 2017-09-25 | 2019-03-28 | Shared S.R.L. | METHOD FOR EXECUTING INTELLIGENT CONTRACTS VIA ELECTRONIC PROCESSING MEANS USING BLOCK CHAIN TECHNOLOGY |
CN109165190A (zh) * | 2018-07-11 | 2019-01-08 | 南京邮电大学 | 一种基于区块链智能合约的电子数据存证方法 |
CN109739827A (zh) * | 2018-12-19 | 2019-05-10 | 北京第一视频科学技术研究院有限公司 | 一种基于双链架构的区块链存储系统 |
CN110633578A (zh) * | 2019-08-26 | 2019-12-31 | 苏州全时空信息技术有限公司 | 智能共享云存储方法与系统 |
CN110675965A (zh) * | 2019-10-11 | 2020-01-10 | 重庆华医康道科技有限公司 | 一种远程问诊方法 |
CN111324613A (zh) * | 2020-03-13 | 2020-06-23 | 华东师范大学 | 一种面向联盟链的分片内数据组织管理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938324A (zh) * | 2021-12-16 | 2022-01-14 | 成都车晓科技有限公司 | 一种基于区块链的车贷信息的安全存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111782615B (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109040012B (zh) | 一种基于区块链的数据安全保护和共享方法与系统和应用 | |
CN110024357B (zh) | 使用分布式分类帐进行数据处理的系统和方法 | |
CN111556120B (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
JP2023506634A (ja) | 部分的に順序付けられたブロックチェーン | |
US20190207748A1 (en) | Blockchain storage device | |
EP3869376B1 (en) | System and method for blockchain based decentralized storage with dynamic data operations | |
CN112308561A (zh) | 基于区块链的存证方法、系统、计算机设备和存储介质 | |
EP3709568A1 (en) | Deleting user data from a blockchain | |
CN110855777A (zh) | 一种基于区块链的节点管理方法及装置 | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN111488372A (zh) | 一种数据处理方法、设备及存储介质 | |
CN112163240A (zh) | 一种基于区块链的分布式政务架构统一方法及系统 | |
US12010226B2 (en) | Blockchain data segregation | |
CN112231755B (zh) | 一种基于区块链的数据授权方法、装置及系统 | |
CN112084186A (zh) | 拆分和合并存储 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN115130075A (zh) | 一种数字签章方法、装置、电子设备及存储介质 | |
CN111782615B (zh) | 基于区块链的大文件存储方法、系统和计算机设备 | |
CN117993017A (zh) | 数据共享系统、方法、装置、计算机设备及存储介质 | |
CN112052473B (zh) | 地理位置合规性 | |
JP2023520634A (ja) | 文脈完全性の維持 | |
CN115514470A (zh) | 一种社区矫正数据安全性的存储方法及系统 | |
CN112988852B (zh) | 基于区块链的数据管理方法、设备以及介质 | |
CN115270195A (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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Jiang Yong Inventor after: Chen Yufeng Inventor after: Wang Zewei Inventor after: Zhang Sitong Inventor after: Zhou Xin Inventor after: Han Yongnan Inventor before: Jiang Yong Inventor before: Han Yongnan Inventor before: Chen Yufeng |
|
GR01 | Patent grant | ||
GR01 | Patent grant |