前言
本文主要介绍如何使用IPFS及常规操作
一、IPFS开发基础
在这部分主要介绍IPFS的环境搭建及常用操作。
1.安装IPFS
1.1 通过安装包安装
IPFS有多种语言的实现方式,主流的是Go语言和JavaScript实现的版本,本文主要介绍Go语言版本。
首先安装IPFS之前,需要安装大于1.7版本的Go语言环境。
1.在IPFS官网(https://dist.ipfs.io/#go-ipfs)下载go-ipfs的预编译版本。
Mac OS X系统用户请下载darwin Binary amd64。
·Linux系统用户请下载linux Binary amd64。
·Windows系统用户请下载windows Binary amd64.
国内用户也可以通过官方开放在GitHub上的源 码仓库来获取最新发布的安装包:https://github.com/ipfs/go-ipfs/releases。
以centos为例:
依次执行以下操作:
tar xvfz go-ipfs_v0.4.16_darwin-amd64.tar.gz
cd go-ipfs
./install.sh
执行ipfs -help命令,会出现如下界面,表示安装完成
1.2 通过ipfs-update安装
ipfs-update是一个用来更新IPFS版本的命令行工具
我们可以通过 下面两种方式获得该命令:
1)直接从https://dist.ipfs.io/#ipfs-update 下载,解压安装包,运行 install.sh脚本进行安装。
2)如果Go语言版本高于1.8,也可以直接用以下方式安装:
>go get -u github.com/ipfs/ipfs-update
通过ipfs-update versions命令,可以列出所有可下载的IPFS版本
>ipfs-update versions
v0.3.2
v0.3.4
v0.3.5
v0.3.6
v0.3.7
v0.3.8
v0.3.9
通过ipfs-update install latest命令更新并下载最新的go-ipfs版本
$ipfs-update install latest
fetching go-ipfs version v0.4.7-rc1
binary downloaded, verifying...
success!
stashing old binary
installing new binary to /home/hector/go/bin/ipfs
checking if repo migration is needed...
Installation complete!
2 IPFS仓库配置初始化
2.1 初始化
1.使用ipfs init命令来初始化IPFS仓库。
$ ipfs init
initializing ipfs node at /Users/daijiale/.go-ipfs
generating 2048-bit RSA keypair...done
peer identity: Qmcpo2iLBikrdf1d6QU6vXuNb6P7hwrbNPW9kLAH8eG67z
to get started, enter:
ipfs cat/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
2.通过IPFS查看文件的指令打开IPFS的readme
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
配置成功之后会出现以下界面:
2.2 访问配置文件
IPFS本地仓库文件默认存储在~/.ipfs路径下
>ls ~/.ipfs blocks datastore keystore config datastore_spec version
下面介绍几个仓库归档文件的作用:
·blocks:本地仓库存储的CID文件块链接目录。
·keystore:密钥对文件存储目录。
·datastore:LevelDB数据文件目录。
·datastore_spec:LevelDB数据文件缓存目录。
·config:仓库配置文件。 ·version:版本信息文件。
配置文件是json格式,我们可以通过ipfs config show或vim config命 令来查看和编辑内容。
3.与IPFS文件系统进行交互
下面将介绍本地文件与IPFS文件系统交互的几种常用方式。
1.添加文件到IPFS
//切换到本地桌面目录下
$ cd ~/Desktop
//新建ipfs-test文件目录
$ mkdir ipfs-test
//切换到ipfs-test文件目录
$ cd ipfs-test
//新建文件的同时写入一串字符串:"version 1 of my text"
$ echo "version 1 of my text" > mytextfile.txt
//查看mytextfile.txt文件内容
$ cat mytextfile.txt version 1 of my text
//将mytextfile.txt文件添加到IPFS文件系统中
$ ipfs add mytextfile.txt
added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
2.我们可以通过ipfs cat CID命令读取IPFS网络中文件内容。
//在IPFS网络中查看验证刚才上传的mytextfile.txt文件内容
$ ipfs cat QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
version 1 of my text
3.内容唯一性验证
我们可以直接将文件内容添加到IPFS中来测试文件hash(CID)是否与文件内容本身一一对应。
我们可以通过三种方式进行验证。
1)将内容添加到IPFS文件系统中
$ echo "version 1 of my text" | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
QmZtmD2qt6fJot32nabSP3CUjicnypEB
2).将相同内容的文本添加到IPFS文件系统中
$ ipfs add mytextfile.txt added
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
3).将mytextfile.txt文本中的内容取出加入IPFS文件系统中
$ cat mytextfile.txt | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
QmZtmD2qt6fJot32nabSP3CUjicnypEB
通过3种方式对比校验,我们可以看出,只有内容保存不变,得到的CID也会不变。
4.在IPFS中写入内容文件名称和目录信息
使用ipfs add -w CID命令再一次向IPFS中添加mytextfile.txt
$ ipfs add -w mytextfile.txt
added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
added QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w
由此可见,将会得到两个哈希值。第一个与之前的相同,第二个代表IPFS
Wrapped ,它包括了与内容相关的目录和文件名等信息。
5.展示IPFS Wrapped信息
我们可以通过ipfs ls -v 来获取IPFS Wrapped所包含都全部信息
$ ipfs ls -v QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w
Hash Size Name
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy 29 mytextfile.txt
6.通过父目录内容哈希来获取文件内容
我们可以通过如下父目录内容哈希路径格式来获取文件内容
$ ipfs cat QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w/mytextfile.txt
version 1 of my text
4.加入IPFS网络环境
1)通过ipfs daemon命令,我们可以把本机的IPFS文件系统接入IPFS网络
> ipfs daemon
Initializing daemon...
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway server listening on /ip4/127.0.0.1/tcp/8080
2)如果接入成功,可以在
在运行ipfs swarm peers时能够看到p2p网络中对等 方的IPFS节点地址信息
> ipfs swarm peers
/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx
/ip4/134.121.64.93/tcp/1035/ipfs/QmWHyrPWQnsz1wxHR219ooJDYTvxJPyZuDUPSDpdsAovN5
/ip4/178.62.8.190/tcp/4002/ipfs/QmdXzZ25cyzSF99csCQmmPZ1NTbWTe8qtKFaZKpZQPdTFB
5.与HTTP Web交互
要与HTTP Web交互,需要先启动守护进程连接网络服务。
ipfs daemon
1.从本地HTTP网关中获取IPFS数据
我们可以在浏览器输入以下命令
http://localhost:8080/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
2.从公共HTTP网关获取IPFS数据
公共网关是指可用于访问IPFS网络中任何内容的公共HTTP网络地址,官方提供了ipfs.io的域名网关地址。
//ipfs.io由官方提供
https://ipfs.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
//ipfs.infura.io 由CONSENSYS团队提供
https://ipfs.infura.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
3.IPFS Web控制台
IPFS提供了本地的Web控制台服务。浏览器输入http://localhost:5001/webui,可以直接访问Web控制台。如图:
6.API使用
IPFS搭建好之后除了命令行操作,还可以 使用API的方式调用。
1.IPFS命令行用法
IPFS命令行由-config(配置文件路径)、-debug(Debug模式操 作)、-help(帮助文档)等多种选项和一系列(子命令)构 成,命令格式如下:
ipfs [--config= <config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L
1).选项
IPFS命令行选项如下图:
2).子命令
操作IPFS的基本命令如下图:
操作IPFS数据结构的命令如下图:
操作IPFS的高级命令如下图:
操作IPFS网络通信相关的命令:
控制IPFS相关辅助工具的命令如下:
IPFS在本地文件系统中有一个仓库,其默认位置为~/.ipfs,可以通 过设置环境变量IPFS_PATH改变仓库位置
export IPFS_PATH=/path/to/ipfsrepo
【遇到的坑】
在服务器端执行ipfs daemon后,关闭终端会相应造成守护进程停止,因此我们需要将ipfs服务
1.基于Linux服务器创建一个服务。
cd /lib/systemd/system/
vim ipfs.service
2.粘贴以下代码让IPFS遇到故障后能自动重启服务
[Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
3.保存退出后执行命令
systemctl start ipfs
未对IPFS设置跨域会出现以下错误
1.在控制台执行以下命令
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT","GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'
2.最后命令行重新启动IPFS即可文章来源:https://www.toymoban.com/news/detail-743889.html
systemctl start ipfs
二、IPFS开发进阶
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。文章来源地址https://www.toymoban.com/news/detail-743889.html
到了这里,关于IPFS技术系列之IPFS实践应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!