IPFS系列 - 工作原理和机制

IPFS的工作原理和机制

(1) IPFS为每⼀个文件分配一个独一无⼆的哈希值(文件指纹:根据文件的内容进行创建),即使是两个文件内容只有1个比特的不相同,其哈希值也不相同。这个方式使得IPFS可以支持基于文件内容进行寻址;

(2) IPFS在整个网络范围内去掉重复的文件,并且为文件建立版本管理;

(3) 查询文件的时,IPFS网络根据文件的哈希值(全网唯一)进行查找;

(4) 哈希值不容易记忆,会产生传播造成困难,IPFS利用IPNS 将哈希值映射为容易记的名字;

(5) 每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置。用来进行文件的查询下载;

(6) IPFS实质上为我们解决的最终要内容是:数据存储。它能够极大的降低数据存储的成本,提升数据下载速度。IPFS 的诞生是为了解决目前互联网所存在的弊端;

IPFS架构-身份层及路由层

身份层和路由层属于捆绑性质。对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定,KAD 协议实质是构建了一个分布式松散Hash表,简称 DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。

在这里插入图片描述

DHT(Distributed Hash Table)主要思想如下:全网维护一个巨大的文件索引哈希表,这个哈希表的条目形如<Key,Value>。这里Key通常是文件的某个哈希算法下的哈希值(也可以是文件名或者文件内容描述),而Value则是存储文件的IP地址。查询时,仅需要提供Key,就能从表中查询到存储节点的地址并返回给查询节点。当然,这个哈希表会被分割成小块,按照一定的算法和规则分布到全网各个节点上。每个节点仅需要维护一小块哈希表。这样,节点查询文件时,只要把查询报文路由到相应的节点即可。

IPFS系统保存数据可靠吗?

IPFS系统采用了的冗余备份技术是Erasurecoding,简称“EC”,简单讲:n份原始数据,增加m份校验数据,此时可以通过 n+m份数据中的任意 n份数据来恢复原始数据,也就是可容忍的最大失效的数据数量为m。

例如,如果想容错 4 个盘,采用 n+4 模式。传统的 RAID6 允许两个盘失效,对应 EC就是 n+2模式。

IPFS存储文件信息安全问题

如果你存储的文件是不想别人看到的文件,在存入 IPFS 之前对文件进行加密即可,这样即便是别人拥有了文件哈希,还需要私钥来查查看数据。

MerkleDAG树形结构的搭建及使用原理:

在IPFS上存储文件时,首先会将文件切片,切割成256KB 大小的文件。

之后循环调用(MerkleDAG.Add)方法构建文件MerkleDAG [Merkle directed acyclic graph(默克有向无环图)]。
在这里插入图片描述

文件hash值创建流程:

a.将切片之后的文件进行sha-256运算

b.将运算结果选取0~31位

c.将选取结果根据base58编码,运算结果前追加Qm 即为最后结果作为文件的46位hash值,根据IPFS底层代码计算,Merkle DAG为多叉树结构,最多为174叉树。

DAGService维护在源代码之中通常使用DAGService维护MerkleDAG,为MerkleDAG提供删除和增加的权限。

每个节点的数据都是全的吗, 节点间会自动同步数据吗

  • 不会, 同样文件,IPFS网络中只存储一次,而一次会在IPFS网络中做三份备份。
  • IPFS 使用分布式哈希表,快速找到拥有数据的节点进行检索
  • 客户端民检索到的节点相连, 再下载

同步的内容, 索引表每个节点是不是全的

每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置。用来进行文件的查询下载

IPFS的文件的网络检索是如何进行的

IPFS 使用分布式哈希表,快速找到拥有数据的节点进行检索,使用哈希验证其是否是正确的数据,找到对应的文件;

为提高网络强壮和使用效率,删除重复具有相同哈希值的文件,跟踪每个文件的版本历史记录,判断冗余重复。

冗余备份的能力

  • 备份几次由订单决定, IPFS有最基本的备份机制,默认的基础冗余为相同文件最低备份三份,虽上不设限,但市场效应会使得不被经常访问的额外冗余被存储提供方主动删除。

IPFS网络上同样的文件只有一份吗?

  • 同样文件,IPFS网络中只存储一次,而一次会在IPFS网络中做三份备份。
  • 如果把人们都有的某个文件,做一次hash计算,只字不差的两个文件hash值相同,再次上传时不会进行多次备份。
  • 这个IPFS网络上同样的 hash对应的文件只会保存一次。只需要使用相同的hash值,就可以访问那个文件,这个hash值就是文件的地址。
  • 而改动一个字,就成为了一个新版本,hash值会变化,也就需要再次存储。

数据丢失问题

  • IPFS是采用冗余备份技术,纠删码来解决数据丢失这个问题的。

  • IPFS 采用的是f(n,m)的计算方法来增加数据存储的安全性,只要增加m的校验数据,即可以得到原始数据N,但是存储的费用也有所增加,就看用户需求。

  • 另外IPFS自带修复数据技能,IPFS如果检测到系统有丢失的文件时系统会进行自动修复。

  • 硬件要求

    • 开个docker就能运行IPFS节点, 要求不高
  • IPFS的生态, 活跃度

    • Github: https://github.com/ipfs/go-ipfs
    • Star: 10.1k
  • 除了Filecoin,还有没有别的链与IPFS结合
    链没了, IPFS生态内还有 IPLD、Multiformats

猜你喜欢

转载自blog.csdn.net/wcc19840827/article/details/127974993