IPFS技术系列之IPFS实践应用

这篇具有很好参考价值的文章主要介绍了IPFS技术系列之IPFS实践应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文主要介绍如何使用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的预编译版本。
ipfs使用,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命令,会出现如下界面,表示安装完成
ipfs使用,IPFS,区块链,分布式

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

配置成功之后会出现以下界面:
ipfs使用,IPFS,区块链,分布式

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控制台。如图:
ipfs使用,IPFS,区块链,分布式

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命令行选项如下图:
ipfs使用,IPFS,区块链,分布式
2).子命令
操作IPFS的基本命令如下图:
ipfs使用,IPFS,区块链,分布式
操作IPFS数据结构的命令如下图:
ipfs使用,IPFS,区块链,分布式操作IPFS的高级命令如下图:
ipfs使用,IPFS,区块链,分布式
ipfs使用,IPFS,区块链,分布式
操作IPFS网络通信相关的命令:
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提供了大量能使我们快速便捷地处理数据的函数和方法。
文章来源地址https://www.toymoban.com/news/detail-743889.html

到了这里,关于IPFS技术系列之IPFS实践应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【区块链 | IPFS】IPFS cluster私有网络集群搭建

    对于联盟链的业务中搭建一个私有网络的 IPFS 集群还是很有必要的,私有网络集群允许 IPFS 节点只连接到拥有共享密钥的其他对等节点,网络中的节点不响应来自网络外节点的通信。 IPFS-Cluster 是一个独立的应用程序和一个 CLI 客户端,它跨一组 IPFS 守护进程分配、复制和跟踪

    2024年02月08日
    浏览(31)
  • IPFS系列03-搭建 IPFS 私有网络

    本文讲述如何使用 IPFS 搭建自己的私有存储网络,如果你对 IPFS 还了解的话,建议你先看看下面两篇文章 IPFS系列01-IPFS 前世今生 IPFS系列02-IPFS 与 web3.0 有两种安装方式,一种是 clone 源码 编译安装(前提是你已经安装了 Go 语言的运行环境): 项目源码依赖较多,编译需要一

    2024年02月02日
    浏览(42)
  • IPFS系列04-IPFS 存储性能测试

    本文是对 IPFS 存储性能测试的一个报告。 Note: 本次测试使用的都是单台服务器,主要测试 IPFS 读写性能,以及哪些因素会影响 IPFS 的存储效率。 统计方式:每组操作执行5次,然后取平均值 考虑到硬件对存储性能的影响,我们这里分别使用了两台不同配置的台式机进行了测试

    2024年01月23日
    浏览(35)
  • 【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

    通过 ipfs init 在本地计算机建立一个 IPFS 节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 执行ipfs init初始化节点之后,会生成一个.ipfs的文件夹,用于存储相关的信息,比如节点ID、环境配置信息、数据存储等 如果使用

    2024年02月07日
    浏览(41)
  • 基于区块链与IPFS的数据共享搭建步骤

    购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介 视频演示: https://www.bilibili.com/video/BV1y24y1v7RX 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证;用户发送的数据将存储于IPFS, IPFS返回的CID(IPFS Hash)使用用户的RSA公钥加密后存储于

    2024年02月03日
    浏览(40)
  • 基于区块链与IPFS的数据共享系统之区块链部分设计

    本节对数据共享系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。 购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介 启动脚本为启动区块链网络以及IPFS容器,之后使用sed命令更换区块链浏览器、tape配置文件中的私钥。 这里解

    2024年02月15日
    浏览(38)
  • 基于区块链与IPFS的数据共享系统搭建步骤

    购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介 视频演示: https://www.bilibili.com/video/BV1y24y1v7RX 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证;用户发送的数据将存储于IPFS, IPFS返回的CID(IPFS Hash)使用用户的RSA公钥加密后存储于

    2024年02月03日
    浏览(47)
  • 《基于区块链与IPFS的数据共享系统》专栏简介

    本专栏包含了“基于区块链与IPFS的数据共享系统”的全部源码与从0开始的搭建视频(订阅专栏后请站内私信)、搭建教程与系统设计分析。对专栏内文章有疑问可以评论,一般一天内回复,然后会整理到:数据共享系统专栏问题汇总 演示视频:Bilibili 需要注意: 不含任何形

    2024年02月12日
    浏览(39)
  • 基于区块链与IPFS的视频版权存证系统搭建步骤

    购买专栏前请认真阅读:《基于区块链与IPFS的视频版权存证系统》专栏简介 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证,这里的用户包括普通用户(创作者)与机构;用户登记版权的视频将存储于IPFS, IPFS返回的CID(IPFS Hash)以及详细的版权信息存

    2024年02月04日
    浏览(45)
  • 基于区块链与IPFS的数据共享系统设计与搭建(附区块链部分源码与搭建视频)

    购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介 视频演示: https://www.bilibili.com/video/BV1y24y1v7RX 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证;用户发送的数据将存储于IPFS, IPFS返回的CID(IPFS Hash)使用用户的RSA公钥加密后存储于

    2023年04月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包