IPFS 简介

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

历史

IPFS 的创始人 Juan Benet 在 2014 年首次提出了 IPFS 的概念。他的目标是开发一种新的互联网文件传输协议,旨在解决现有 HTTP 协议的局限性,如:

  • 中心化问题: 传统的 HTTP 依赖中心化服务器存储文件,如果服务器宕机或受到攻击,文件将无法访问。
  • 重复存储和带宽浪费: 同一个文件可能会被多次重复存储,导致存储浪费和带宽的浪费。
  • 内容不可追溯: HTTP 协议下,文件的内容随时可以更改,且无法有效追溯文件的历史版本。

IPFS 允许用户通过内容的哈希值(内容寻址)来访问文件,将文件存储分布在全球多个节点上。

  • 2015 年: IPFS 作为一个开源协议正式发布。开始它被视为许多区块链项目的底层存储技术,但随着区块链技术的普及,IPFS 逐渐被当做 HTTP 的替代协议来对待。
  • 2017 年 8 月: IPFS 在仅仅出售了 10% 的代币,就募集到 2.5 亿美金。

应用场景

  • 去中心化应用
  • 数字资产存储
  • 内容分发网络(CDN)

安装使用 IPFS

安装包

进入官方网站:https://docs.ipfs.tech

Mac OS X 和 Linux

当你下载好安装包之后,解压并将 ipfs 的库文件拷贝到可执行的路径下,使用 install.sh 脚本进行安装:

1
2
3
tar xvfz go-ipfs.tar.gz
cd go-ipfs
./install.sh

测试一下:

1
ipfs help

Windows

在官网下载对应安装包, 点击安装包进行安装就可以了。

IPFS 浏览器扩展

IPFS Companion 是可用于 Chrome, Edge, Brave, Firefox 和 Opera 的网络浏览器插件。

它可以让你在浏览器中与 IPFS 桌面和你安装的 IPFS 节点进行交互。它还为不支持 ipfs:// 的浏览器添加了支持。

  • Firefox
  • Chrome 插件页面

使用 ipfs-update 安装

你也可以通过通过 ipfs-update 安装进行安装 (ipfs-update 是一个命令行工具,用来安装与升级 ipfs 库文件)

进入以下网址选择合适的版本下载: https://dist.ipfs.io/#ipfs-update

如果拥有 Go 环境(>=1.8), 可以通过命令来安装:

1
go get -u github.com/ipfs/ipfs-update

安装完成 ipfs-update 后输入: ipfs-update versions 列出所有可以使用的可以下载的 ipfs 版本

1
2
3
4
$ ipfs-update versions
v0.3.2
v0.3.4
...

输入:ipfs-update install latest 安装最新的可用版本:

1
2
3
4
$ ipfs-update install latest
fetching go-ipfs version v0.4.7-rc1
...
Installation complete!

升级/降级 IPFS

可以通过使用 fs-repo-migrations 工具进行升级或者降级

使用 ipfs-update 升级

当你需要时安装最新、历史版本的时候,可以使用 ipfs-update install 这将会会下载并执行 fs-repo-migrations 升级版本

对于降级:

ipfs-update versions 列出所有可用的 IPFS 版本

选择你想降级到的版本,并运行以下命令:

ipfs-update install 特定版本 安装特定版本

比如,如果你要降级到 v0.4.6 版本:

ipfs-update install v0.4.6

如果 ipfs-update 不可用

如果无法使用 ipfs-update 工具,或者出现其他的问题,你可以手动下载并安装指定版本的 IPFS。

你可以访问 IPFS 官方下载页面并找到你想要安装的 IPFS 版本:
https://dist.ipfs.tech/#go-ipfs

下载好特定版本的安装包后,解压并将 ipfs 文件放到你的系统路径下,覆盖现有的 ipfs 文件就可以了。

怎么上传下载文件?

  1. 下载 IPFS 安装包 适用于你的操作系统安装,或者通过 ipfs-update 下载安装。

  2. 解压文件并安装 IPFS:

    • Mac OS/Linux:
      1
      2
      3
      tar xvfz go-ipfs.tar.gz
      cd go-ipfs
      ./install.sh
    • Windows:
      将 ipfs.exe 放到环境变量的路径中。
  3. 初始化 IPFS 节点:

    1
    ipfs init
  4. 启动 IPFS 守护进程(daemon):

    1
    ipfs daemon

使用 IPFS 上传文件

  1. 上传文件:

    可以使用以下命令将文件上传到 IPFS:

    1
    ipfs add <文件路径>

    例如,上传名为 example.txt 的文件:

    1
    ipfs add example.txt
  2. 获取文件的 CID:

    上传文件后,IPFS 会返回文件的 CID(内容标识符),例如:

    1
    added QmTzQ1v3pDz… example.txt

    其中 QmTzQ1v3pDz… 就是文件的 CID,通过这个 CID,可以在 IPFS 网络中下载文件。

  3. 通过 CID 访问文件: 你可以通过以下几种方式访问文件:

    • 使用公共 IPFS 网关:

      1
      https://ipfs.io/ipfs/< CID >

      例如,文件 CID 为 QmTzQ1v3pDz…,就可以通过以下链接访问:

      1
      https://ipfs.io/ipfs/QmTzQ1v3pDz…
    • 本地 IPFS 节点:

      你也可以从本地 IPFS 节点获取文件。如果在本地运行了 IPFS 节点,你可以通过以下命令获取文件:

      1
      ipfs cat < CID >

使用 IPFS 下载文件

要从 IPFS 下载文件,可以使用以下几种方法:

  1. 通过本地 IPFS 节点下载:

    使用 IPFS 的 get 命令下载文件到本地目录:

    1
    ipfs get < CID > -o <保存的文件名>

    例如,下载文件并保存为 downloaded_example.txt:

    1
    ipfs get QmTzQ1v3pDz… -o downloaded_example.txt
  2. 通过 IPFS 网关下载:

    如果没有运行本地 IPFS 节点,则可以使用公共 IPFS 网关来下载文件。通过访问像是这样的链接下载文件:

    1
    https://ipfs.io/ipfs/< CID >

    你只需在浏览器中安装扩展,输入该链接,或者使用桌面程序,就可以下载文件啦。

列出本地 IPFS 节点上的文件:

如果你想查看本地 IPFS 节点上存储的文件及其状态,可以使用以下命令:

1
ipfs files ls 

更加具体的信息,可以在 IPFS 技术文档上查看

资料相关: