星际文件系统IPFS简介

网络 2020-01-12 1172 次浏览 次点赞



星际文件系统是一种点对点超媒体协议,旨在使Web更快,更安全,更开放。

ipfs.png

星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。

Ipfs-logo-1024-ice-text.png

历史

在2014年,IPFS协议利用比特币区块链协议和网络基础设施的优势来存储不可更改的数据,移除网络上的重复文件,以及获取存储节点的地址信息——用以搜索网络中的文件。

当前的实现采用Go和JavaScript,并有Python的实现正在发展。Go实现被认为是开发正式规范时的“参考实现”。

描述

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

该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统可使其面向全世界可用。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个基于BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。IPFS有一个称为IPNS的名称服务,它是一个基于PKI的全局名字空间,用于构筑信任链,这与其他NS兼容,并可以映射DNS、.onion、.bit等到IPNS。

Merkle数据格式

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

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

工作原理

IPFS的机制是用加密算法计算文件的哈希值,这个哈希值作为文件的地址,称为内容标识符(CID),实现基于文件内容的寻址。当更新文件时,哈希值不同会生成新的CID,因此存储在 IPFS 上的文件可以抵抗篡改和审查。另外,IPFS 可以使用星际名称系统(InterPlanetary Name System,IPNS)找到文件的最新版本 ,并且 DNSLink 可用于将 CID 映射到人类可读的 DNS 名称。

详细的 How IPFS works

When you add a file to IPFS, your file is split into smaller chunks, cryptographically hashed, and given a unique fingerprint called a content identifier (CID). This CID acts as an permanent record of your file as it exists at that point in time.

When other nodes look up your file, they ask their peer nodes who's storing the content referenced by the file's CID. When they view or download your file, they cache a copy — and become another provider of your content until their cache is cleared.

A node can pin content in order to keep (and provide) it forever, or discard content it hasn't used in a while to save space. This means each node in the network stores only content it is interested in, plus some indexing information that helps figure out which node is storing what.

If you add a new version of your file to IPFS, its cryptographic hash is different, and so it gets a new CID. This means files stored on IPFS are resistant to tampering and censorship — any changes to a file don't overwrite the original, and common chunks across files can be reused in order to minimize storage costs.

However, this doesn't mean you need to remember a long string of CIDs — IPFS can find the latest version of your file using the IPNS decentralized naming system, and DNSLink can be used to map CIDs to human-readable DNS names.

使用方法

为使浏览器支持 ipfs:// 地址,需要为浏览器安装 IPFS Companion 插件,IPFS Companion 与在本地计算机上运行的 IPFS 节点协同工作,因此需确保在安装此插件之前已安装节点,方法是事先安装 IPFS Desktop。IPFS Desktop 捆绑了 IPFS 节点、文件管理器、对等管理器和内容浏览器等功能。

当然还有更多访问 IPFS 的方法,比如独立软件 go-ipfs

go-ipfs 是 Go 语言实现 ipfs 的官方客户端。启动 ipfs.exe,通过 http://localhost:5001/webui 可以进入 IPFS 可视化操作界面,如同 IPFS Desktop。

示范应用

20211107192909.png

创世纪图书馆 Library Genesis 宣布,该项目已经完全基于 IPFS 实现去中心化,代码、文件、数据库、甚至域名都不是集中托管的。2020 年,国内 SaltyLeo 将 i-Book.in 开源,这是一个基于 IPFS 的电子书搜索引擎,曾公开提供过短暂服务。i-Book.in 的灵感来源于 LoreFree,但后者是基于 EOS 还需要 Filecoin,SaltyLeo 不认同这种模式。

bg2021092302.jpg

Fleek 帮助客户将网站或应用程序托管在 IPFS 网络,并指向 ENS 或 HNS 分散式域名。

gatsby.video

Gatsby 是一个开源的点对点视频分享平台,视频存放在 IPFS 上面。

资源

Protocol Labs https://ipfs.io/
IPFS Shipyard https://github.com/ipfs-shipyard
IPFS一问一答 https://www.chaindesk.cn/witbook/24

👍



本文由 泰丽康健 整理发布,参考 CC-BY-SA 3.0 协议共享,欢迎转载、引用或改编。
感谢您的支持,以让我们共同致力于互联网的商业观点和事业创新!

楼主残忍的关闭了评论