(1) IPFS为每⼀个文件分配一个独一无⼆的哈希值(文件指纹:根据文件的内容进行创建),即使是两个文件内容只有1个比特的不相同,其哈希值也不相同。这个方式使得IPFS可以支持基于文件内容进行寻址;
(2) IPFS在整个网络范围内去掉重复的文件,并且为文件建立版本管理;
(3) 查询文件的时,IPFS网络根据文件的哈希值(全网唯一)进行查找;
(4) 哈希值不容易记忆,会产生传播造成困难,IPFS利用IPNS 将哈希值映射为容易记的名字;
(5) 每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置。用来进行文件的查询下载;
(6) IPFS实质上为我们解决的最终要内容是:数据存储。它能够极大的降低数据存储的成本,提升数据下载速度。IPFS 的诞生是为了解决目前互联网所存在的弊端;
身份层和路由层属于捆绑性质。对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定,KAD 协议实质是构建了一个分布式松散Hash表,简称 DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。

DHT(Distributed Hash Table)主要思想如下:全网维护一个巨大的文件索引哈希表,这个哈希表的条目形如
IPFS系统采用了的冗余备份技术是Erasurecoding,简称“EC”,简单讲:n份原始数据,增加m份校验数据,此时可以通过 n+m份数据中的任意 n份数据来恢复原始数据,也就是可容忍的最大失效的数据数量为m。
例如,如果想容错 4 个盘,采用 n+4 模式。传统的 RAID6 允许两个盘失效,对应 EC就是 n+2模式。
如果你存储的文件是不想别人看到的文件,在存入 IPFS 之前对文件进行加密即可,这样即便是别人拥有了文件哈希,还需要私钥来查查看数据。
在IPFS上存储文件时,首先会将文件切片,切割成256KB 大小的文件。
之后循环调用(MerkleDAG.Add)方法构建文件MerkleDAG [Merkle directed acyclic graph(默克有向无环图)]。

a.将切片之后的文件进行sha-256运算
b.将运算结果选取0~31位
c.将选取结果根据base58编码,运算结果前追加Qm 即为最后结果作为文件的46位hash值,根据IPFS底层代码计算,Merkle DAG为多叉树结构,最多为174叉树。
DAGService维护在源代码之中通常使用DAGService维护MerkleDAG,为MerkleDAG提供删除和增加的权限。
每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置。用来进行文件的查询下载
IPFS 使用分布式哈希表,快速找到拥有数据的节点进行检索,使用哈希验证其是否是正确的数据,找到对应的文件;
为提高网络强壮和使用效率,删除重复具有相同哈希值的文件,跟踪每个文件的版本历史记录,判断冗余重复。
IPFS是采用冗余备份技术,纠删码来解决数据丢失这个问题的。
IPFS 采用的是f(n,m)的计算方法来增加数据存储的安全性,只要增加m的校验数据,即可以得到原始数据N,但是存储的费用也有所增加,就看用户需求。
另外IPFS自带修复数据技能,IPFS如果检测到系统有丢失的文件时系统会进行自动修复。
硬件要求
IPFS的生态, 活跃度
除了Filecoin,还有没有别的链与IPFS结合
链没了, IPFS生态内还有 IPLD、Multiformats