IPFS 使用入门

在上一篇文章介绍了IPFS要做什么, 本篇文章介绍下IPFS怎么用, 按照本站的风格,我不会仅仅把一个个命令列出来,同时会说明命令在后面为我们做了什么。

IPFS 安装

要使用IPFS, 第一步肯定是先把IPFS安装好,IPFS在Mac OS X 、Linux及Window平台均有提供, 可以通过这个链接下载对应平台可执行文件的压缩包。

对于Mac OS X 及 Linux 平台,使用一下命令进行安装:

$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh

上面先使用tar 对压缩包进行解压,然后执行install.sh 进行安装,安装脚本install.sh其实就是把可执行文件ipfs移动到$PATH目录下。安装完成之后,可以在命令行终端敲入ipfs试试看,如果显示一堆命令说明,则说明IPFS安装成功。

在Windows平台也是类似,把ipfs.exe移动到环境变量%PATH%指定的目录下。

IPFS 基本用法

IPFS初始化

安装完成之后,要使用IPFS第一步是要对IPFS进行初始化,使用ipfs init进行初始化

> ipfs init
initializing ipfs node at /Users/Emmett/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva
to get started, enter:

  ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

上面是执行命令即对应输出,在执行ipfs init进行初始化时,会有一下行为:

  1. 生成一个秘钥对并产生对应的节点id, 即命令提示:peer identity后面的hash值。

节点的id用来标识和连接一个节点,每个节点的id是独一无二的, 因此大家看到的提示也会和我的不一样。

  1. 在当前用户的主目录(~ 目录)下产生一个.ipfs 的隐藏目录,这个目录称之为库(repository)目录,ipfs 所有相关的数据都会放在这个目录下。
    如同步文件数据块放在.ipfs/blocks 目录,秘钥在.ipfs/keystore 目录,ipfs配置文件为:.ipfs/config。

IPFS 配置修改

在IPFS初始化之后,可以根据需要修改配置(可选),修改方法如下:

cd ~/.ipfs
export EDITOR=/usr/bin/vim
ipfs config edit

或者直接编辑 ~/.ipfs/config 文件。

上传文件到IPFS

我们先创建一个upchain.pro.txt文件,可以使用如下方式:

> echo "登链学院:区块链教育领先品牌" >> upchain.pro.txt

ipfs 使用add 命令来添加内容到节点中, 在命令行输入:

> ipfs add upchain.pro.txt
added QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi upchain.pro.txt
 43 B / 43 B [=====================================================] 100%

当它文件添加到节点时,会为文件生成唯一的hash: QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi, 可以使用ipfs cat 查看文件的内容:

> ipfs cat QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi
登链学院:区块链教育领先品牌

注意,此时文件仅仅是上传在本地的IPFS节点中,如果需要把文件同步到网络,就需要开启 daemon 服务, 使用命令:

> ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.18-
Repo version: 7
System version: amd64/darwin
Golang version: go1.11.1
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.8.105/tcp/4001
Swarm listening on /ip6/2408:84f3:82e:cfcd:409:fee2:e261:4dc3/tcp/4001
Swarm listening on /ip6/2408:84f3:82e:cfcd:a9c6:116b:349f:8c2b/tcp/4001
Swarm listening on /ip6/2408:84f3:82e:cfcd:ec89:145d:cf27:4/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /ip6/fd1d:43b:e89b:eb9b:c405:56af:8f52:67df/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.8.105/tcp/4001
Swarm announcing /ip6/2408:84f3:82e:cfcd:409:fee2:e261:4dc3/tcp/4001
Swarm announcing /ip6/2408:84f3:82e:cfcd:a9c6:116b:349f:8c2b/tcp/4001
Swarm announcing /ip6/2408:84f3:82e:cfcd:ec89:145d:cf27:4/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
Swarm announcing /ip6/fd1d:43b:e89b:eb9b:c405:56af:8f52:67df/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

开启 daemon 之后,Swarm 就会尝试连接其他的节点,同步数据,同时在本地还会开启两个服务:API服务及Web网关服务,下面分别介绍下:

  1. API服务,默认在5001端口,可以通过 http://localhost:5001/webui 进行访问,界面如:

这也是IPFS的一个Web版的管理控制台, 可以通过这个控制台添加文件,查看节点连接情况等等。

  1. 网关服务,默认在8080端口, 由于当前浏览器还不支持通过IPFS协议(ipfs://)来访问文件,如果我们要在浏览器里访问文件的话,就需要借助于IPFS 提供的网关服务,由浏览器先访问到网关,网关去获取IPFS网络杀过了的文件。 有了网关服务,就可以通过这个链接:http://localhost:8080/ipfs/QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi 来访问刚刚上传到ipfs 的文件。
top Created with Sketch.