星际文件系统(IPFS)

2019-04-18 19:39:47

  许多人认为块链是某种通用存储。这部分是正确的,因为块链确实是一个大规模冗余,因此是非常安全的存储,但它不是一般目的。目前流行的区块链(比特币,以太坊等)的大小也驱使许多Gigabies只包含几个字节的交易。想象一下将家庭相册保留在积木上会是什么样子。此问题的一般解决方案是将大文件放在分散但较少冗余的存储库而不是块链上,并且只在块块上放置一个链接。这种存储解决方案是InterPlanetary文件系统或IPFS


  我想在此指出,IPFS有许多其他替代方案(例如,在以太坊的情况下,Swarm主要由匈牙利人开发),但是,IPFS可能是最知名的。此外,其他替代解决方案与IPFS类似,因此如果我们了解IPFS的工作原理,我们也将了解这些替代解决方案的工作原理。


  与其他文件系统一样,IPFS由块组成。每个块可能包含一些数据以及指向其他块的链接表。每个名称都可以给出一个名称,并且它显示的块的大小不同,因为块的大小可能不同。构建文件系统的基本结构实际上非常简单。可以通过块内容的散列来访问各个块。这个微不足道的系统功能为IPFS带来了丰富的魔力。


  想象一下,在IPFS中存储一个短文本文件。创建散列所属的块。在文件系统中,您甚至可以制作数百万份文本文件,每个版本将显示相同的数据包,不会创建重复的副本。已知的托管服务提供商也可以通过类似的解决方案节省空间 假设有10个人订阅了1Tb Dropbox存储空间。这里存储和重叠其硬盘驱动器的内容。例如,您可以找到2到3人的相同mp3文件。在这种情况下,这种基于散列的文件系统将仅在一个副本中呈现给定的mp3,因此Dropbox可以在5Tb空间中存储10x1Tb。用户越多,重叠越多,您可以节省的越多。但是GitHub以类似的方式工作。GitHub的理念是,如果您想参与项目的开发,请复制整个项目(我们轮换存储库),在我们自己的版本中进行更改,然后宣布项目将改进合并到主存储库中。可能有巨大的,多Gb Git容器,但叉子需要一些时间。这也是可能的,因为每个文件只存储在一个副本中,因此实际上只创建一个引用,不复制任何内容。类似地,IPFS也适用于仅生成块1x的块。当然,为了安全和快速访问,这个块可以由许多人存储,就像torrent协议一样。如果有人在获得内容后需要一些内容,他也会存储它 所以你下次可以得到它。由于这个操作,块在系统中“模糊”,因此它们更安全(它们备份在多台机器上)并且更易于访问(可从几个更近的位置获得)。


  另一个重要结果是,无论内容如何变化,哈希都会发生变化。因此,文件不能被秘密更改或篡改,因为任何更改都将导致新块。为了更好地理解这一点,让我们看看IPFS中的目录结构是什么样的。如果要在IPFS中存储完整的文件结构,则需要先将文件拆分为块。每个文件将由一个块表示,该块指向描述其内容的块。此聚合块中没有数据,我们只使用链接列表。因此,这样的阻塞块表示文件。库的构建非常相似。在链接表中,每个链接名称都是文件名,并指向该文件或另一个目录块。这就是全部。使用这种简单的结构,可以实现任何复杂的目录结构,并且可以通过散列来解决任何级别的结构,散列实际上像URL一样起作用。现在想象一下文件中的某些内容正在发生变化,在这种情况下,包含更改的块接收另一个哈希,必须在阻止块中更改。但是,合并块的散列也会发生变化,需要在目录条目块中进行更改,这也会更改其散列。这就是变化如何升至最高水平。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。并且任何级别的结构都可以通过哈希来解决,哈希实际上用作URL。现在想象一下文件中的某些内容正在发生变化 在这种情况下,包含更改的块接收另一个哈希,必须在阻止块中更改。但是,合并块的散列也会发生变化,需要在目录条目块中进行更改,这也会更改其散列。这就是变化如何升至最高水平。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。并且任何级别的结构都可以通过哈希来解决,哈希实际上用作URL。现在想象一下文件中的某些内容正在发生变化 在这种情况下,包含更改的块接收另一个哈希,必须在阻止块中更改。但是,合并块的散列也会发生变化,需要在目录条目块中进行更改,这也会更改其散列。这就是变化如何升至最高水平。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。在这种情况下,包含更改的块接收另一个哈希,必须在阻止块中更改。但是,合并块的散列也会发生变化,需要在目录条目块中进行更改,这也会更改其散列。这就是变化如何升至最高水平。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。在这种情况下,包含更改的块接收另一个哈希,必须在阻止块中更改。但是,合并块的散列也会发生变化,需要在目录条目块中进行更改,这也会更改其散列。这就是变化如何升至最高水平。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。因此,如果您更改任何内容,则需要新链接,您需要生成新的URL。这种不可变性与块链的功能非常类似,其中过去不能改变,只能添加新块。


  最后,ENVIENTA我想告诉你为什么上面的属性是有益的,为什么我在块链存储中命名IPFS。ENVIENTA平台的目的是允许任何人上传他们的开源发明,任何人都可以修改,创建新版本或促进发明的发展(类似GitHub的合作开发)。此外,该平台还标记了存在证明的所有版本,发明人可以证明这些版本已经在牧场上发布了设计。这可能有助于解决争议甚至足以起诉法院的专利申请(例如,可以通过专利巨头审理)。让我们看看它在IPFS中的作用。如果计划存储在IPFS中,则会立即解决安全,分散存储的问题。不需要中央服务器(或仅缓存),用户可以在自己的机器上存储块,就像在torrent协议的情况下一样。由于哈希寻址,自动解决了快速拷贝创建(分支)和版本管理。这一切都由IPFS完成,并以分散的方式完成。您不需要中央Git服务器或任何其他解决方案。因为使用散列进行寻址可确保不变性,所以只需将链接写入以太坊网络即可进行时间戳。同时,我们还将有一个版本列表,可用于检索旧版本的计划。由于与给定散列相关联的目录结构是不可更改的,因此就像将文件本身存储在块面板上一样。这就是我提到IPFS的原因


  从上面可以看出,由于其有利的特性,没有任何外部设备的ENVIENTA平台文件的存储库功能实际上由IPFS解决。由于基于散列的寻址,如果我们在IPFS中存储并将链接写入块链,就像将整个文件存储在块链中一样,除了冗余更小(块链存储在每个节点,IPFS)只有几个)。可以在IPFS和块链的帮助下创建分散的torrent跟踪器。通过以太坊名称服务(ENS),我们可以构建一个完整的分散式Web。


最新推荐