77

我一直在尝试实现和理解 IPFS 的工作原理,并且有一些不清楚的地方。

我尝试过的事情:
在我的系统上实施 IPFS 并在其上存储文件。即使我从系统中删除文件并关闭 ipfs 守护程序,我仍然可以通过 IPFS 从另一台机器访问文件。
我注意到我的主目录中有一个.ipfs文件夹,其中包含我添加到 IPFS 的部分数据块。

问题:

  1. 这些块是否也本地存储在我的系统上?
  2. 数据还存储在哪里?在我连接到的其他对等方上?因为如果我关闭我的 ipfs 守护程序,我仍然可以访问该文件。
  3. 如果这是真的,并且数据存储在多个地方,如果所有对等方都断开网络连接,丢失数据的可能性仍然存在?
  4. 网络上的每个对等点是存储整个文件还是只存储文件的一部分?
  5. 如果在 p2p 网络上分发数据副本,是否意味着数据被多次复制?这在存储方面的效率如何?
  6. 我们也存储其他同行上传的数据?
  7. 运行 IPFS 的最低系统要求?我们只需要丰富的存储,不一定是强大的系统?

提前致谢!

4

2 回答 2

71

当您上传某些内容时,该文件由 ipfs 分块并存储在您的缓存文件夹 (.ipfs) 中

如果您检查网络的另一个对等点(例如主网关 ipfs.io)上的文件存在,该对等点向您请求文件并缓存它。

如果稍后您关闭您的守护程序,您仍然可以在网关上看到该文件,这可能是因为网关或网络上的其他一些对等方仍然缓存了它。

当对等方想要下载文件但内存不足(无法再缓存)时,它会丢弃最旧的使用文件以释放空间。

如果您想深入研究该技术,请先检查以下基础知识:

  • git 是如何工作的
  • 去中心化哈希表(DHT)
  • 卡德利亚
  • 默克尔树

后者应该让您或多或少地了解该机制是如何工作的。

现在,让我们逐点回答

  1. 这些块是否也本地存储在我的系统上?

是的

  1. 数据还存储在哪里?在我连接到的其他对等方上?因为如果我关闭我的 ipfs 守护程序,我仍然可以访问该文件。

请求您的文件的所有对等方缓存它

  1. 如果这是真的,并且数据存储在多个地方,那么丢失数据的可能性仍然存在,如果所有对等方都断开网络连接?

当不再可能从缓存了部分文件的所有对等方(包括您自己)重建文件时,您就会丢失文件

  1. 网络上的每个对等点是存储整个文件还是只存储文件的一部分?

可以只获取其中的一部分,想象您正在看一部电影,而您在一半时或多或少地停下来……就是这样,您只缓存了一半。

  1. 如果数据副本通过 p2p 网络分发,是否意味着数据被多次复制?这在存储方面的效率如何?

当您在 YouTube 上观看视频时,您的浏览器会将其缓存(这意味着复制!)... ipfs 在流量方面更有效,假设您关闭浏览器并在 2 分钟后再次观看。Ipfs 从您的缓存中获取它,YouTube 让您再次下载它。还有一个关于 delta 存储(与 git 相关)以及从哪里获得它(可能在你的局域网内......这意味着快速)的有趣问题,但我想坚持这些问题。

  1. 我们也存储其他同行上传的数据?

如果你得到数据,你会缓存它,所以......

  1. 运行 IPFS 的最低系统要求?我们只需要丰富的存储,不一定是强大的系统?

主守护进程是用 go 编写的。Go 是高效的,但不如在 C++、C、Rust 上编写它……而且,这项技术还很年轻,它会随着时间的推移而改进。你拥有的空间越多,你可以缓存的越多,CPU 能力就不是那么重要了。

如果您对以 p2p 方式存储数据的方式感兴趣,这里有一些有趣项目的链接。

于 2017-12-19T17:59:19.813 回答
4

文件存储在 IPFS 对象中,最大 256kb。IPFS 对象还可以包含指向其他 ipfs 对象的链接。大于 256 kb 的文件、图像或视频。这些被分成多个大小均为 256 kb 的 ipfs 对象,之后,系统将创建一个空的 IPFS 对象,该对象链接到文件的所有其他部分。每个对象都经过哈希处理,并被赋予一个唯一的内容标识符 (CID),用作指纹。这使得将小块数据快速存储在网络上变得更快、更容易。

因为 IPFS 使用基于内容的寻址,所以一旦添加某些内容就无法更改。它是一个不可变的数据存储,很像区块链。IPFS 可以帮助您以一种可以节省大量资金的方式交付内容。

IPFS 删除网络中的重复项并跟踪每个文件的版本历史记录。IPFS 还提供高性能和集群持久性。

由于 IPFS 支持文件的版本控制。假设您想通过 ipfs 与某人共享一个重要文件。IPFS 将创建一个新的提交对象。这是非常基本的。它只是告诉 ipfs 哪个提交在它之前进行,并链接到文件的 IPFS 对象。让我们说一段时间后你想更新一个文件。您只需将更新的文件添加到 IPFS 网络,软件将为您的文件创建一个新的提交对象。这个提交对象现在链接到上一个提交。这可以无休止地进行。IPFS 将确保您的文件及其整个历史记录可供网络上的其他节点访问。

IPFS 的最大问题是保持文件可用。网络上的每个节点都会保存它下载的文件的缓存,并在其他人需要时帮助共享它们。但是,如果特定文件由 4 个节点托管,并且如果这些节点脱机,那么这些文件将变得不可用,并且没有人可以获取它的副本。这个问题有两种可能的解决方案。

我们要么鼓励人们存储文件并使其可用,要么我们可以主动分发文件并确保网络上始终有一定数量的可用副本。这正是 file coin 打算做的事情。File coin 是由创建 IPFS 的同一组人创建的。它基本上是一个建立在 IPFS 之上的区块链,想要创建一个去中心化的存储市场。如果您有一些空闲空间,您可以将其出租给其他人并在此过程中从中赚钱。

IPFS 和区块链完美契合。您可以使用 IPFS 处理大量数据,并将不可变的 IPFS 链接放入区块链事务中。这可以为您的内容添加时间戳并保护您的内容,而无需将数据放在链本身上。

于 2022-01-14T23:46:59.327 回答