星际文件系统(IPFS)是一个网络传输协议,旨在创建持久和分布式存储和共享文件。它是一个具有可寻址内容的点对点超媒体分布协议。IPFS网络中的节点将形成一个分布式文件系统。目前的实现是在Go和JavaScript中,Python的实现也在开发中,Go的实现被认为是官方规范开发的 "参考实现"。
IPFS是一个对等的分布式文件系统,试图为所有计算设备连接相同的文件系统。在某些方面,IPFS类似于万维网,但它也可以被认为是一个独立的BitTorrent蜂群,在同一个Git仓库中交换对象。换句话说,IPFS提供了一个高吞吐量、内容可寻址的块存储模型,并有内容相关的超链接。这就形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分布式哈希表,鼓励块交换,以及自我认证的命名空间。分布式内容交付节省了带宽,防止了HTTP方案可能遇到的DDoS攻击。
文件系统可以通过多种方式访问,包括FUSE和HTTP,将本地文件添加到IPFS文件系统中,使其在全球范围内可用。文件的表示是基于它的哈希值,因此有利于缓存。文件使用基于BitTorrent的协议进行分发。IPFS有一个名为IPNS的名称服务,它是一个基于PKI的全球名称空间,用于构建信任链,它与其他NS兼容,可以将DNS、.onion、.bit等映射到IPNS。