要理解这个问题,我们需要了解IPFS存储文件的原理。当用户上传文件到IPFS系统时,系统会将文件切分成若干碎片,并将每个碎片存储在系统的多个节点上。这些节点是随机选择的,有些可能离用户很近,而有些可能离用户很远。
举个例子,假设一个文件A被切分成A1、A2、A3。A1存储在节点N1、N2、N3,A2存储在节点N4、N5、N6,A3存储在节点N7、N8、N9。当用户下载或调用这个文件时,IPFS系统会从多个节点中获取每个碎片,并将它们拼接成完整的文件提供给用户。
在上面的例子中,系统在获取A1这个碎片时,如果发现N1节点失效了,它会找N2和N3来获取。通常情况下,由于N1、N2和N3是不同的节点,很少发生同时失效的情况,所以通常可以从这三个节点中获取到一份A1。
但是,如果A1存储的时间很长,有可能由于某些原因导致N1、N2和N3三个节点都失效了,这时文件A就无法再获取到了。
目前有许多基于IPFS构建的网站和应用程序。在之前的分享中,我介绍过一个基于IPFS的搜索应用Almonit。它是一个基于ENS和IPFS的去中心化搜索引擎,官网是almonit.eth或almonit.eth.link。
当我们点击主页上的“Discover”后,会看到各种分类。如果我们点击其中一个链接,比如“午夜咖啡”,过去我们可以看到相应的页面。然而,当我们进入这个应用程序并点击“PragmaticPurist”的链接时,却看到一个页面不存在的提示。
为什么会这样?根本原因是IPFS文件系统仅仅是一个应用协议,它只能保证文件被随机和抗审查地存储为多个备份,但无法约束存储这些备份的节点永远有效地保存这些文件。
因此,为了让系统正常运行,需要一种机制,即采用激励和惩罚的措施来约束每个存储节点在用户指定的时间内保存这些文件,这就是Filecoin的作用。
在Filecoin的机制中,提供存储服务的节点必须抵押一定数量的代币。如果存储文件备份的节点在用户规定的时间内失效,它将受到惩罚并丧失抵押的代币。通过这种约束,节点将竭尽全力确保自己的系统安全稳定地运行,以便随时提供用户所需的文件。
所以,IPFS+Filecoin是一个完美的组合,IPFS单独运行是不完美的。