IPFS的基本工作原理与八层架构
IPFS的基本原理
目标
为了补充(甚至是取代)目前统治互联网的超文字传输协议(HTTP),将所有具有相同档案系统的计算装置连线在一起。IPFS想打造一个点对点的网络拓扑,相当于颠覆HTTP所代表的分布关系,它具有内容可定址的特点,通过档案内容生成唯一的杂凑标识,在一定程度上节约了空间开销的成本,我们每个人既是终端也是使用者。
工作原理
每个档案及其中的所有块都被赋予一个称为加密杂凑的唯一指纹。
IPFS通过网络删除重复具有相同杂凑值的档案,通过计算可以判断哪些档案是冗余重复的,并跟踪每个档案的版本历史记录。每个网络节点只储存它感兴趣的内容,以及一些索引资讯,有助于弄清楚谁在储存什么。查询档案时,你通过档案的杂凑值就可以在网络查询到储存该档案的节点,找到想要的档案。

使用称为IPNS(去中心化命名系统),每个档案都可以被协作命名为易读的名字。通过搜寻,就能很容易地找到想要检视的档案。
IPFS的网络上执行着一条区块链,即用来储存互联网档案的杂凑值表,每次有网络访问,即要在链上查询该内容(档案)的地址。
通过使用Filecoin的激励作用,让各节点有动力去储存资料。Filecoin是一个由加密资产驱动的储存网络。矿工通过为网络提供开放的硬盘空间获得Filecoin,而使用者则用Filecoin来支付在去中心化网络中储存加密档案的费用。
八大架构
IPFS至少有八层子协议栈,从上至下为身份、网络、路由、交换、物件、档案、命名、应用,每个协议栈各司其职,又互相搭配。
身份层和路由层可以一起解释。对等节点身份资讯的生成以及路由规则是通过Kademlia协议生成制定,KAD协议实质是构建了一个分散式松散Hash表,简称DHT,每个加入这个DHT网络的人都要生成自己的身份资讯,然后才能通过这个身份资讯去负责储存网络里的资源资讯和其他成员的联络资讯。如同微信名片分享,在无法通过直接搜寻微讯号的情况下,如果你要找一个人,可以通过有这个人联络方式的朋友分享名片来建立联络。DHT被广泛用于协调和维护关于对等系统的元资料。比如,MainlineDHT是一个去中心化杂凑表,它可追踪、查询所有的对等节点。

网络层比较核心,使用的LibP2P可以支援任意传输层协议。NAT技术能让内网中的装置共用同一个外网IP,我们都体验过的家庭路由器就是这个原理。
交换层,是类似迅雷这样的BT工具。迅雷其实是模拟了P2P网络,并建立中心服务器,当服务器登记使用者请求资源时,让请求同样资源的使用者形成一个小丛集swarm,在这里分享资料。这种方式有弊端,因为服务器是由迅雷统一维护,如果出现了故障、宕机时,下载操作无法进行。
中心化服务还会限制一些下载请求,人们发明了一种更聪明的方式就是BitTorrent,让每一个种子节点所要储存的资料,通过杂凑表储存在里面,BT工具相对不太受监管,服务更加稳定。

物件层和档案层适合结合来谈,它们管理的是IPFS上80%的资料结构,大部分资料物件都是以MerkleDag的结构存在,这为内容定址和去重提供了便利。档案层是一个新的资料结构,和DAG并列,采用Git一样的资料结构来支援版本快照。
命名层具有自我验证的特性(当其他使用者获取该物件时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeID匹配,这验证了使用者释出物件的真实性,同时也获取到了可变状态),并且加入了IPNS这个巧妙的设计来使得加密后的DAG物件名可定义,增强可阅读性。
最后是应用层,IPFS核心价值就在于上面执行的应用程序,我们可以利用它类似CDN的功能,在成本很低的带宽下,去获得想要的资料,从而提升整个应用程序的效率。

协议实验室几大专案
Mutiformats是一系列Hash加密算法和自描述方式(从值上就可以知道值是如何生成)的集合,它具有SHA1SHA256SHA512Blake3B等6种主流的加密方式,用以加密和描述NodeID以及指纹资料的生成。
LibP2P是IPFS核心中的核心,面对各式各样的传输层协议以及复杂的网络装置,它可以帮助开发者迅速建立一个可用P2P网络层,快速且节约成本,这也是为什么IPFS技术被众多区块链专案青睐的缘由。

IPLD其实是一个转换中介软件,将现有的异构资料结构统一成一种格式,方便不同系统之间的资料交换和互操作。
IPFS应用了这几个模组的功能,整合为一种容器化的应用程序,执行在独立节点上,以Web服务的形式,供大家使用访问。
Filecoin把这些应用的资料价值化,通过类似比特币的激励政策和经济模型,让更多的人去建立节点和使用IPFS。

