本申请涉及区块链,具体而言,涉及一种文件存储方法、装置、电子设备及存储介质。
背景技术:
1、区块链作为价值传输的使能技术,具有去中心化、不可篡改、公开透明、全程追溯、安全隐私等诸多特点。按开放程度,可将区块链划分为公有链、联盟链以及私有链,公有链系统最为开放,任何人都可以参与区块链数据的维护和读取,容易部署应用程序。联盟链是是需要注册许可才能访问的区块链,从使用对象来看,联盟链仅限于联盟成员参与。私有链最为封闭,适用于个体内部使用。
2、智能合约是存储在区块链上的数字合约,在满足预先确定的条款和条件时会自动执行这些合约。现在的智能合约是无法上传文件,只能传输一定大小的字符数据,需要依靠引入第三方存储系统、bt节点或者第三方文件分发系统来解决该文件存储的问题,这种方式导致文件传输效率较低。
技术实现思路
1、本申请实施例的目的在于一种文件存储方法、装置、电子设备及存储介质,在区块链服务端添加转换层,通过转换层接收链码参数和待处理文件并对链码参数进行识别,在确定传输的为文件之后,与区块链服务端建立连接,将文件传输至区块链服务端,提高文件传输效率。
2、第一方面,本申请实施例提供了一种文件存储方法,包括:通过区块链服务端的转换层接收链码参数和待处理文件;识别链码参数,在确认链码参数包括文件标识之后,由转换层与区块链服务端建立连接,并将待处理文件传输至区块链服务端;对待处理文件进行分片处理,获得文件分片;对文件分片进行摘要计算,获得每一文件分片的分片哈希值;将分片哈希值在区块链服务端中进行分布式存储。
3、在上述的实现过程中,通过区块链服务端的转换层接收链码参数和待处理文件,并对链码参数进行识别,在确定传输的为文件之后,与区块链服务端建立连接,将文件传输至区块链服务端,实现将文件存储至区块链服务端,无需依赖第三方,提高文件传输效率。
4、可选的,在本申请实施例中,将分片哈希值在区块链服务端中进行分布式存储,包括:将分片哈希值通过默克尔树数据结构存储在区块链服务端中;默克尔树包括叶子节点和非叶子节点;每一叶子节点中存储一个分片哈希值;非叶子节中存储非叶子节点对应的子节点哈希值;子节点哈希值为对非叶子节点对应的子节点中存储的分片哈希值进行计算获得。
5、在上述的实现过程中,将分片哈希值通过默克尔树数据结构存储在区块链服务端中,默克尔树以分层的方式存储哈希值,能够极大地减少存储空间的需求,实现高效存储。
6、可选的,在本申请实施例中,非叶子节点包括根节点;在将分片哈希值通过默克尔树数据结构存储在区块链服务端中之后,方法还包括:基于默克尔树中每一叶子节点中存储的分片哈希值,获取默克尔树中根节点存储的根节点哈希值;通过调用链码,将根节点哈希值写入区块链服务端,以使对待处理文件进行上链处理。
7、在上述的实现过程中,默克尔树可以仅通过根哈希值来确认数据完整性,而无需了解实际数据内容,从而保护了数据的隐私性。并且将数据的哈希值上链,确保数据的不可篡改性和可追溯性。
8、可选的,在本申请实施例中,在获取默克尔树中根节点存储的根节点哈希值之后,方法还包括:获取预先设置的校验哈希值;校验哈希值用于对待处理文件对应的文件分片进行校验;将校验哈希值和根节点哈希值进行比对校验,获得文件校验结果;文件校验结果用于表征待处理文件对应的文件分片是否被篡改;通过调用链码,将根节点哈希值写入区块链服务端,包括:在文件校验结果表征待处理文件对应的文件分片未被篡改的情况下,通过调用链码,将根节点哈希值写入区块链服务端。
9、在上述的实现过程中,通过比较少量的哈希值来验证大量数据的完整性。如果数据没有被篡改,则根节点哈希值将会与校验哈希值相匹配,从而确认数据完整性。无需验证整个数据集,从而节省了计算资源。
10、可选的,在本申请实施例中,在对待处理文件进行分片处理,获得文件分片之后,方法还包括:对每一文件分片进行编码,获得每一文件分片对应的冗余数据块;将每一冗余数据块分别存储至不同的存储节点中;存储节点包括磁盘或硬盘。
11、在上述的实现过程中,采用纠删码技术对数据进行保护,将每一冗余数据块分别存储至不同的存储节点中,为数据提供冗余和容错能力。
12、可选的,在本申请实施例中,将每一冗余数据块分别存储至不同的存储节点中之后,方法还包括:获取数据读取请求;基于数据读取请求从存储节点中读取冗余数据块;若确定预设数量的冗余数据块读取失败,则利用读取成功的冗余数据块,对读取失败的冗余数据块进行数据修复处理,获得读取失败的冗余数据块对应的修复数据块;利用解码器将读取成功的冗余数据块和修复数据块进行解码,获得待处理文件对应的分片文件。
13、在上述的实现过程中,采用纠删码技术对数据进行保护,通过冗余数据块进行数据的冗余保护和容错恢复,提高数据的可靠性,同时节省了更多的存储空间。
14、可选的,在本申请实施例中,对待处理文件进行分片处理,获得文件分片,包括:获取预设的分片配置;分片配置包括文件分片参数和分片规则;基于分片参数和分片规则,对待处理文件进行分片处理,获得文件分片。
15、在上述的实现过程中,对待处理文件进行分片处理,获得文件分片提高数据执行的并行性、提供更好的容错能力和更高效的传输。利于分布式存储系统中的数据处理和分发。
16、第二方面,本申请实施例还提供了一种文件存储装置,包括:接收模块,用于通过区块链服务端的转换层接收链码参数和待处理文件;传输模块,用于识别链码参数,在确认链码参数包括文件标识之后,由转换层与区块链服务端建立连接,并将待处理文件传输至区块链服务端;文件分片模块,用于对待处理文件进行分片处理,获得文件分片;摘要计算模块,用于对文件分片进行摘要计算,获得每一文件分片的分片哈希值;存储模块,用于将分片哈希值在区块链服务端中进行分布式存储。
17、第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
18、第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上面描述的方法。
19、采用本申请提供文件存储方法、装置、电子设备及存储介质,通过区块链服务端的转换层接收链码参数和待处理文件,并对链码参数进行识别,在确定传输的为文件之后,与区块链服务端建立连接,将文件传输至区块链服务端,实现将文件存储至区块链服务端,提高文件传输效率,无需依赖第三方,提高数据安全性。
1.一种文件存储方法,其特征在于,应用于区块链服务端,包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述分片哈希值在所述区块链服务端中进行分布式存储,包括:
3.根据权利要求2所述的方法,其特征在于,所述非叶子节点包括根节点;在所述将所述分片哈希值通过默克尔树数据结构存储在所述区块链服务端中之后,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在所述获取所述默克尔树中所述根节点存储的根节点哈希值之后,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,在所述对所述待处理文件进行分片处理,获得文件分片之后,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述将每一所述冗余数据块分别存储至不同的存储节点中之后,所述方法还包括:
7.根据权利要求1-6任一所述的方法,其特征在于,所述对所述待处理文件进行分片处理,获得文件分片,包括:
8.一种文件存储装置,其特征在于,应用于区块链服务端,包括:
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。