星际文件系统

星际文件系统（，缩写）是從2014年開始發展的开放源代码项目，目的是实现文件分布式存储、共享和持久化的网络传输协议，它是一种的对等超媒体分发协议，在IPFS网络中的节点构成一个集群文件系统。

 历史 
在2014年，IPFS协议是类似于比特币区塊链的网络基础设施，有着存储不可更改的数据的优势，可以移除网络上的冗余文件，获取存储节点的地址信息——以搜索网络中的文件。

目前的实现采用Go和JavaScript，并有Python实现（上次提交时间2020年1月29日）。Go实现被认为是开发正式规范时的“参考实现”。

 描述 
IPFS是一个对等的分布式文件系统，它尝试为所有计算设备连接到同一个文件系统。在某些方面，IPFS类似于万维网，也可以被视作一个BitTorrent节点群、在同一个Git仓库中交换对象。
换种说法，IPFS提供了一个高吞吐量、按内容寻址的块存储模型，及与内容相关超連結。这形成了一个广义的Merkle有向无环图（DAG）。IPFS结合了分散式雜湊表、鼓励块交换和一个自我认证的命名空间。IPFS没有单点故障，并且节点不需要相互信任。分布式内容传递可以节约服务器带宽，并防止HTTP方案可能遇到的DDoS攻击。

该文件系统可以通过多种方式访问，包括FUSE与HTTP。将本地文件添加到IPFS文件系统后，其他用户通过IPFS网关进行访问。文件表示基于其哈希，因此有利于缓存。文件的分发采用一个类似BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。

IPFS有一个称为IPNS的名称服务，可以绑定域名或者用户公钥，固定访问的链接，但是访问的内容可以更新。

 使用 

用户通过ipfs网关上传文件后，获得文件cid，再通过cid在ipfs网关访问文件，访问者可以无需安装客户端。

ipfs官方提供了一个网关，同时也有用户自行搭建的网关，ipfs官方的网关在中国大陆地区已经被屏蔽。

部分浏览器内置ipfs的支持，可以使用网关或者本地节点访问ipfs资源内容。

 不足 

一个文件如果没有节点进行存储，也会丢失，无法访问。

NAT网络内的一个节点内的文件，其它网关很难访问。

非热门资源，存储的节点过少，网关的访问速度很慢。

 Merkle数据格式 

每个Merkle都是一个有向无环图 ，因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希，它们的子节点使用它们的哈希而非完整内容来命名。因此，在创建后将不能编辑节点。这可以防止循环（假设没有哈希碰撞），因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。

对任何Merkle来说，要创建一个新的分支或验证现有分支，通常需要在本地内容的某些组合体（例如列表的子哈希和其他字节）上使用一种哈希算法。IPFS中有多种散列算法可用。

 使用案例 

 在2017年9月至10月間的舉辦的2017年加泰隆尼亞獨立公投，因被西班牙宪法法院認定違法而使網站被封鎖。此後，加泰隆尼亞海盜黨將網站整個鏡像到IPFS上以迴避加泰隆尼亞高等法院的封鎖命令。
 IPFS被用於建立維基百科的鏡像，讓那些住在維基百科被國家法律封鎖的地方的人民能繼續存取到維基百科的內容。不過那份被鏡像的維基百科是一份被限制改動的複製本且無法被更新。
 文件币也與IPFS有關，其是由Juan Benet和合作開發的一套基於IPFS的協作存儲雲。
 Cloudflare營運有一個分佈式Web網關，使用户可在無本地節點的情況下，簡化、加速且安全的訪問IPFS。
 IPLF是Dean Reynaud在2001年發表於「Data Science」的一篇開創性文章中創造的一個術語。
 博客平台 Matters 发布的文章会自动被分布存储到ipfs上，并生成唯一的文章指纹。此后文章无法被他人删改，并可以在IPFS的公共节点上通过文章指纹被找到。

 参见 
 ZeroNet

 分散式檔案系統
 分散式雜湊表


 Kademlia

 OpenBazaar
 IPFS Mining Hero

 Freenet

 参考资料 

 外部链接 

Category:2015年面世
Category:应用层协议
Category:分散式檔案系統
Category:文件传输协议
Category:网际协议
Category:网络协议
Category:全球資訊網
Category:对等计算