前言

本文主要介绍如何使用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 versionsv0.3.2 v0.3.4v0.3.5 v0.3.6v0.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 QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAyversion 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 QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAyQmZtmD2qt6fJot32nabSP3CUjicnypEB

通过3种方式对比校验,我们可以看出,只有内容保存不变,得到的CID也会不变。

4.在IPFS中写入内容文件名称和目录信息

使用ipfs add -w CID命令再一次向IPFS中添加mytextfile.txt

$ ipfs add -w mytextfile.txtadded QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt added QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w

由此可见,将会得到两个哈希值。第一个与之前的相同,第二个代表IPFS
Wrapped ,它包括了与内容相关的目录和文件名等信息。

5.展示IPFS Wrapped信息

我们可以通过ipfs ls -v 来获取IPFS Wrapped所包含都全部信息

$ ipfs ls -v QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w
Hash                                          Size NameQmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy 29 mytextfile.txt

6.通过父目录内容哈希来获取文件内容

我们可以通过如下父目录内容哈希路径格式来获取文件内容

$ ipfs cat QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w/mytextfile.txtversion 1 of my text

4.加入IPFS网络环境

1)通过ipfs daemon命令,我们可以把本机的IPFS文件系统接入IPFS网络

> ipfs daemonInitializing daemon...API server listening on /ip4/127.0.0.1/tcp/5001Gateway 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即可

systemctl start ipfs

二、IPFS开发进阶

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

IPFS技术系列之IPFS实践应用相关推荐

  1. IPFS技术系列之IPFS简单介绍

    前言   随着社会网络的不断发展,当前时代人们对网络资源的渴求越来越大,从文本.图片乃至视频文件.然而在人们的日常使用中,传统的HTTP协议的诟病一一浮现出来,于此同时其他的传输协议也不断兴起,IPF ...

  2. IPFS技术系列之IPFS底层基础

    前言   本文主要介绍IPFS相关的一下底层基础,包括分布式哈希表(DHT).块交换协议(BitTorrent).版本控制(Git).自验证文件系统(SFS).Merkle Tree和Merkle D ...

  3. IPFS技术逐渐走到关键时刻!留给散户的时间真的不多了!

    前言: Filecoin 问世以来,一直受众多投资者青睐,IPFS强大的实用价值一直受关注着,在底层协议方面承担着重要的使命. 近日,杨林科通过社交媒体宣布:经过了几个月的前期准备,将正式进入IPFS ...

  4. 云信技术系列课 | RTC 系统音频弱网对抗技术发展与实践

    导读:本文整理自线上直播[MCtalk Live#2 :RTC 系统音频弱网对抗技术发展与实践]网易云信资深音视频引擎开发专家崔承宗分享内容,文末也可查看直播回顾视频. 文|崔承宗 网易云信资深音视频 ...

  5. Kratos技术系列|从Kratos设计看Go微服务工程实践

    导读 github.com/go-kratos/kratos(以下简称Kratos)是一套轻量级 Go 微服务框架,致力于提供完整的微服务研发体验,整合相关框架及周边工具后,微服务治理相关部分可对整体 ...

  6. OCR技术系列实践:银行卡、身份证、门牌号、护照、车牌、印刷体汉字识别

    OCR技术系列: 身份证识别 深度学习实践系列之--身份证上汉字及数字识别系统的实现 https://github.com/Raymondhhh90/idcardocr:web部署,第二代居民身份证信 ...

  7. 大力呼吁国内Fil厂商利用IPFS技术赋能实体经济,实现数据安全存储,已十分重要且紧迫了

    ​重大:<数据安全法>颁布,国家支持数据开发利用和数据安全技术研究:"数据"已成为和土地.资本.劳动力并列的"生产要素",具有重大价值,数据安全成为 ...

  8. 【学习教程】全系统各类型工程水土保持方案编制实践技术系列

    (内容涵盖八大专题:点型项目.市政工程.线型工程.矿山工程.水利工程.取土场/弃渣场.补报项目.水土保持监测验收) [学习教程]全系统各类型工程水土保持方案编制实践技术系列 (qq.com) 课程一: ...

  9. 【技术解读】IPFS的八层技术架构是什么?

    [技术解读]IPFS的八层技术架构是什么? IPFS有八层子协议栈,从上至下为身份.网络.路由.交换.对象.文件.命名.应用,每个协议栈各司其职,又互相搭配. 身份层和路由层可以一起解释: 对等节点身 ...

最新文章

  1. 04.卷积神经网络 W1.卷积神经网络(作业:手动/TensorFlow 实现卷积神经网络)
  2. pyecharts 绘制地图
  3. jsonobject转list集合_怎样优雅的操作集合,CollectionUtils工具类正确使用姿势
  4. 2008秋-计算机软件基础-第三章- 二叉排序树
  5. 快速创建UI控件的 方法 ,值得总结1
  6. mac能开发android吗,怎么在Mac上开发Android应用
  7. Qt三方库开发技术:Qt应用内部打开PDF文件
  8. 全网最全讲解最详细的PS教程(第一期:基础教程1.0)
  9. 浩方对战平台原理分析
  10. Windows API ShowWindow和UpdateWindow
  11. 设置foxmail通过ccproxy代理收发邮件
  12. ios 根据日期知道周几_iOS-通过日期计算是周几
  13. 苹果退款_苹果App Store竟然还可以退款?App Store退款教程
  14. 打开 Excel 提示 “文件格式和扩展名不匹配,文件可能已损坏或不安全” 的解决办法
  15. RAID的基本工作模式
  16. 关于Latex中pdf和eps图片的处理
  17. Struts2 鲜为人知的调试技巧
  18. Git Stash 贮藏命令
  19. VS2013环境下配置glut、glew、freeglut、gltools
  20. 基于ssm(spring mybatis) java超市进销存系统源码设计

热门文章

  1. 12v转±5v、3.3v电路
  2. 软件工程师陈国冬:人工智能机器意识语言难题或已突破
  3. Regenerate Points 实现解析! Marching Squares !
  4. 客户数据管理的最佳实践-构建客户统一视图
  5. 香港理工大学酒店管理html,香港理工大学的酒店管理硕士申请要求有哪些?
  6. docker-compose 实现自动化部署(真实项目使用)
  7. suse 11 进入单用户
  8. 点云 3D 目标检测 - CenterPoint:Center-based 3D Object Detection and Tracking(CVPR 2021)
  9. Home键改了 iPhone 7该如何进入DFU模式
  10. 什么是智慧园区?华宽通智慧园区如何建设?