IPFS入门 | 关于IPFS的50个问题(五)
IPFS入门 | 关于IPFS的50个问题(五)
IPFS(InterPlanetary File System)是一种新型的分布式存储系统,它采用点对点网络和内容寻址机制,旨在提供更安全、更高效的文件存储和传输方式。本文将通过问答形式,深入浅出地介绍IPFS的核心概念、技术细节及其与其他存储解决方案的区别。
36. 数据丢失问题
IPFS采用冗余备份技术和纠删码来解决数据丢失问题。具体来说,IPFS使用f(n,m)的计算方法来增加数据存储的安全性。只要增加m个校验数据,就可以从n+m个数据中恢复原始数据,但存储费用也会相应增加。此外,IPFS系统自带数据修复功能,能够自动检测并修复丢失的文件。
37. IPFS与SC、STORJ的区别
IPFS是一个完全去中心化的分布式存储解决方案,结合Filecoin作为激励层后可以在市场中自运转,同时支持多个激励层。而SC和STORJ是公司化运作的存储解决方案,为单独的主链,不与IPFS互通。
38. IPFS网络上的文件存储机制
在IPFS网络中,相同的文件只会存储一次,并进行三份备份。通过哈希计算,如果两个文件完全相同,再次上传时不会进行多次备份。这个IPFS网络上相同的hash对应的文件只会保存一次。只需要使用相同的hash值,就可以访问那个文件,这个hash值就是文件的地址。而改动一个字,就成为了一个新版本,hash值会变化,也就需要再次存储。
39. IPFS系统保存数据的可靠性
IPFS系统采用了冗余备份技术,即Erasure coding(EC)。简单来说,就是将n份原始数据增加m份校验数据,通过n+m份数据中的任意n份数据就可以恢复原始数据,最大可容忍m个数据失效。例如,如果想容错4个盘,采用n+4模式;传统的RAID6允许两个盘失效,对应EC就是n+2模式。
40. IPFS存储文件的信息安全问题
如果存储的文件是敏感信息,可以在存入IPFS之前对文件进行加密。这样即便他人获得了文件哈希,也需要私钥才能查看数据。
41. IPFS的文件网络检索机制
IPFS使用分布式哈希表快速定位拥有数据的节点,通过哈希验证确保数据的正确性。为了提高网络的强壮性和使用效率,IPFS会删除重复的具有相同哈希值的文件,并跟踪每个文件的版本历史记录,判断冗余重复。
42. IPFS可以提供的服务
- 点对点定位内容和协调交付的协议
- 可在本地系统上安装IPFS文件系统,像访问本地系统一样访问远程资源
- 提供网络功能的模块化方法,如路由和虚拟电路
- 无需服务器的文件点对点传输
- 基于公钥基础设施(PKI)的全局命名空间
- 确保文件的完整性和版本控制的系统
- 多元化的浏览器,支持http://和ipfs://访问信息
43. IPFS的组成部分
IPFS其实是一个家族,由IPFS、Filecoin、libp2p、IPLD、Multiformats五个项目组成。我们常接触的是IPFS和Filecoin,后面的三项主要涉及技术层面。
44. IPFS中的IPLD项目
IPLD通过定义一系列规范,让基于内容寻址、加密哈希的分布式系统中的数据变得具有互操作性。它实现了跨协议遍历链接,允许用户探索数据,而不管底层协议是什么。IPLD的主要特点包括:
- 规范化数据模型
- 协议独立
- 可升级
- 跨格式的互操作
- 向后兼容
- 所有协议的命名空间
45. IPFS中的libp2p内容及作用
libp2p类似于现实世界的快递公司,负责分发数据和查找数据。它综合了各种协议和框架,连接着千百万个节点,使用它就能实现去中心化的传输需求。libp2p包含:
- Transports:传输层
- Discovery:网络发现层
- Peer Routing:节点路由
- NAT Traversal:NAT穿越层
- Content Routing:内容寻址
46. Merkle DAG与Merkle Tree
Merkle DAG与Merkle Tree在功能上有很大不同。Merkle Tree主要用于验证,例如验证数字签名和比特币Merkle Proof。而Merkle DAG的主要功能包括:
- 内容寻址:使用多种哈希来唯一识别一个数据块的内容
- 防篡改:方便检查哈希值确认数据是否被篡改
- 去重:相同内容的数据块有相同哈希值,可去掉重复数据,节省存储空间
在IPFS上存储文件时,首先会将文件切片,切割成256KB大小的文件。之后循环调用(MerkleDAG.Add)方法构建文件Merkle DAG。文件hash值创建流程包括:
- 将切片之后的文件进行sha-256运算
- 将运算结果选取0~31位
- 将选取结果根据base58编码,运算结果前追加Qm即为最后结果作为文件的46位hash值
- 根据IPFS底层代码计算,Merkle DAG为多叉树结构,最多为174叉树
- DAGService维护在源代码之中,通常使用DAGService维护Merkle DAG,为Merkle DAG提供删除和增加的权限
47. IPFS中的Multiformats项目
Multiformats项目为IPFS协议专门打造,允许协议相互操作,保持协议的灵活性、可扩展性和可升级性,打造一个永不过时的系统。目前应用在IPFS和libp2p模块上,在IPFS体系中主要负责身份的加密和数据的自我描述,是未来安全系统的协议集合。通过增强自我描述的格式值来实现,自描述格式可以让系统互相协作和升级。Multiformats协议包含:
- multihash:自描述哈希
- multiaddr:自描述网络地址
- multibase:自描述基编码
- multicodec:自描述序列化
- multistream:自描述流网络协议
- multigram(WIP):自描述分组网络协议
48. IPFS的文件表现形式
IPFS定义了一系列的对象构建了支持版本控制的文件系统,它与Git的对象模型非常类似,所有文件对象其实都通过Protobuf进行了二进制编码。IPFS文件可以通过list和blob进行表示:
- blob不包含任何的链接,只包含数据
- list包含了一个blob和list的有序队列
- tree文件对象与Git中的tree非常相似,它表示一个从名字到哈希的文件目录
- 最后的commit表示任意对象的快照
49. 什么是CAS存储?IPFS与CAS的关系
CAS是英文“Content Addressing storage”的缩写,中文意义为固定内容寻址存储。这里所指的固定内容就是指一旦生成就不再发生改变的信息,比如数字媒体(图像、音视频等)、法律和参考文档、医疗影像、电子邮件、银行票据等。IPFS就是给予内容寻址的技术,就存储技术上来讲,IPFS归属于CAS的范畴。
50. CAS存储与传统存储的区别
CAS存储与传统NAS、SAN最大的不同点就是CAS的免维护性。这种免维护性,一方面减少了维护系统的人工成本开销,在NAS和SAN的情况下,一个管理员最多只能管理十几个TB的数据,而在CAS的情况下,一个管理员则能够轻松管理500TB的数据。另一方面,免维护性也增加了数据的安全性和可靠性,例如,在NAS和SAN中,管理员可能在维护过程中意外甚至有意地删除、修改数据,在CAS中,数据的修改是无法实现的,系统会根据最初数据存储的情况自动修复。