IPFS介绍与使用
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 | tar xvfz go-ipfs.tar.gz |
测试一下:
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 | $ ipfs-update versions |
输入:ipfs-update install latest 安装最新的可用版本:
1 | $ ipfs-update install latest |
升级/降级 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 文件就可以了。
怎么上传下载文件?
下载 IPFS 安装包 适用于你的操作系统安装,或者通过 ipfs-update 下载安装。
解压文件并安装 IPFS:
- Mac OS/Linux:
1
2
3tar xvfz go-ipfs.tar.gz
cd go-ipfs
./install.sh - Windows:
将 ipfs.exe 放到环境变量的路径中。
- Mac OS/Linux:
初始化 IPFS 节点:
1
ipfs init
启动 IPFS 守护进程(daemon):
1
ipfs daemon
使用 IPFS 上传文件
上传文件:
可以使用以下命令将文件上传到 IPFS:
1
ipfs add <文件路径>
例如,上传名为 example.txt 的文件:
1
ipfs add example.txt
获取文件的 CID:
上传文件后,IPFS 会返回文件的 CID(内容标识符),例如:
1
added QmTzQ1v3pDz… example.txt
其中 QmTzQ1v3pDz… 就是文件的 CID,通过这个 CID,可以在 IPFS 网络中下载文件。
通过 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 下载文件,可以使用以下几种方法:
通过本地 IPFS 节点下载:
使用 IPFS 的 get 命令下载文件到本地目录:
1
ipfs get < CID > -o <保存的文件名>
例如,下载文件并保存为 downloaded_example.txt:
1
ipfs get QmTzQ1v3pDz… -o downloaded_example.txt
通过 IPFS 网关下载:
如果没有运行本地 IPFS 节点,则可以使用公共 IPFS 网关来下载文件。通过访问像是这样的链接下载文件:
1
https://ipfs.io/ipfs/< CID >
你只需在浏览器中安装扩展,输入该链接,或者使用桌面程序,就可以下载文件啦。
列出本地 IPFS 节点上的文件:
如果你想查看本地 IPFS 节点上存储的文件及其状态,可以使用以下命令:
1 | ipfs files ls |
更加具体的信息,可以在 IPFS 技术文档上查看
资料相关:
- IPFS 官方论坛: https://discuss.ipfs.tech
- wiki 资料: https://www.wikiwand.com/zh-tw/articles/星际文件系统
- IPFS 中文技术文档: https://ipfs.netlify.app/
- ips 官网: https://ipfs.tech/




