前言
本文主要介紹如何使用IPFS及常規(guī)操作
一、IPFS開發(fā)基礎(chǔ)
在這部分主要介紹IPFS的環(huán)境搭建及常用操作。
1.安裝IPFS
1.1 通過安裝包安裝
IPFS有多種語言的實(shí)現(xiàn)方式,主流的是Go語言和JavaScript實(shí)現(xiàn)的版本,本文主要介紹Go語言版本。
首先安裝IPFS之前,需要安裝大于1.7版本的Go語言環(huán)境。
1.在IPFS官網(wǎng)(https://dist.ipfs.io/#go-ipfs)下載go-ipfs的預(yù)編譯版本。
Mac OS X系統(tǒng)用戶請(qǐng)下載darwin Binary amd64。
·Linux系統(tǒng)用戶請(qǐng)下載linux Binary amd64。
·Windows系統(tǒng)用戶請(qǐng)下載windows Binary amd64.
國內(nèi)用戶也可以通過官方開放在GitHub上的源 碼倉庫來獲取最新發(fā)布的安裝包:https://github.com/ipfs/go-ipfs/releases。
以centos為例:
依次執(zhí)行以下操作:
tar xvfz go-ipfs_v0.4.16_darwin-amd64.tar.gz
cd go-ipfs
./install.sh
執(zhí)行ipfs -help命令,會(huì)出現(xiàn)如下界面,表示安裝完成
1.2 通過ipfs-update安裝
ipfs-update是一個(gè)用來更新IPFS版本的命令行工具
我們可以通過 下面兩種方式獲得該命令:
1)直接從https://dist.ipfs.io/#ipfs-update 下載,解壓安裝包,運(yùn)行 install.sh腳本進(jìn)行安裝。
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
配置成功之后會(huì)出現(xiàn)以下界面:
2.2 訪問配置文件
IPFS本地倉庫文件默認(rèn)存儲(chǔ)在~/.ipfs路徑下
>ls ~/.ipfs blocks datastore keystore config datastore_spec version
下面介紹幾個(gè)倉庫歸檔文件的作用:
·blocks:本地倉庫存儲(chǔ)的CID文件塊鏈接目錄。
·keystore:密鑰對(duì)文件存儲(chǔ)目錄。
·datastore:LevelDB數(shù)據(jù)文件目錄。
·datastore_spec:LevelDB數(shù)據(jù)文件緩存目錄。
·config:倉庫配置文件。 ·version:版本信息文件。
配置文件是json格式,我們可以通過ipfs config show或vim config命 令來查看和編輯內(nèi)容。
3.與IPFS文件系統(tǒng)進(jìn)行交互
下面將介紹本地文件與IPFS文件系統(tǒng)交互的幾種常用方式。
1.添加文件到IPFS
//切換到本地桌面目錄下
$ cd ~/Desktop
//新建ipfs-test文件目錄
$ mkdir ipfs-test
//切換到ipfs-test文件目錄
$ cd ipfs-test
//新建文件的同時(shí)寫入一串字符串:"version 1 of my text"
$ echo "version 1 of my text" > mytextfile.txt
//查看mytextfile.txt文件內(nèi)容
$ cat mytextfile.txt version 1 of my text
//將mytextfile.txt文件添加到IPFS文件系統(tǒng)中
$ ipfs add mytextfile.txt
added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
2.我們可以通過ipfs cat CID命令讀取IPFS網(wǎng)絡(luò)中文件內(nèi)容。
//在IPFS網(wǎng)絡(luò)中查看驗(yàn)證剛才上傳的mytextfile.txt文件內(nèi)容
$ ipfs cat QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
version 1 of my text
3.內(nèi)容唯一性驗(yàn)證
我們可以直接將文件內(nèi)容添加到IPFS中來測(cè)試文件hash(CID)是否與文件內(nèi)容本身一一對(duì)應(yīng)。
我們可以通過三種方式進(jìn)行驗(yàn)證。
1)將內(nèi)容添加到IPFS文件系統(tǒng)中
$ echo "version 1 of my text" | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
QmZtmD2qt6fJot32nabSP3CUjicnypEB
2).將相同內(nèi)容的文本添加到IPFS文件系統(tǒng)中
$ ipfs add mytextfile.txt added
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
3).將mytextfile.txt文本中的內(nèi)容取出加入IPFS文件系統(tǒng)中
$ cat mytextfile.txt | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
QmZtmD2qt6fJot32nabSP3CUjicnypEB
通過3種方式對(duì)比校驗(yàn),我們可以看出,只有內(nèi)容保存不變,得到的CID也會(huì)不變。
4.在IPFS中寫入內(nèi)容文件名稱和目錄信息
使用ipfs add -w CID命令再一次向IPFS中添加mytextfile.txt
$ ipfs add -w mytextfile.txt
added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt
added QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w
由此可見,將會(huì)得到兩個(gè)哈希值。第一個(gè)與之前的相同,第二個(gè)代表IPFS
Wrapped ,它包括了與內(nèi)容相關(guān)的目錄和文件名等信息。
5.展示IPFS Wrapped信息
我們可以通過ipfs ls -v 來獲取IPFS Wrapped所包含都全部信息
$ ipfs ls -v QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w
Hash Size Name
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy 29 mytextfile.txt
6.通過父目錄內(nèi)容哈希來獲取文件內(nèi)容
我們可以通過如下父目錄內(nèi)容哈希路徑格式來獲取文件內(nèi)容
$ ipfs cat QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w/mytextfile.txt
version 1 of my text
4.加入IPFS網(wǎng)絡(luò)環(huán)境
1)通過ipfs daemon命令,我們可以把本機(jī)的IPFS文件系統(tǒng)接入IPFS網(wǎng)絡(luò)
> 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)如果接入成功,可以在
在運(yùn)行ipfs swarm peers時(shí)能夠看到p2p網(wǎng)絡(luò)中對(duì)等 方的IPFS節(jié)點(diǎn)地址信息
> 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交互,需要先啟動(dòng)守護(hù)進(jìn)程連接網(wǎng)絡(luò)服務(wù)。
ipfs daemon
1.從本地HTTP網(wǎng)關(guān)中獲取IPFS數(shù)據(jù)
我們可以在瀏覽器輸入以下命令
http://localhost:8080/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
2.從公共HTTP網(wǎng)關(guān)獲取IPFS數(shù)據(jù)
公共網(wǎng)關(guān)是指可用于訪問IPFS網(wǎng)絡(luò)中任何內(nèi)容的公共HTTP網(wǎng)絡(luò)地址,官方提供了ipfs.io的域名網(wǎng)關(guān)地址。
//ipfs.io由官方提供
https://ipfs.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
//ipfs.infura.io 由CONSENSYS團(tuán)隊(duì)提供
https://ipfs.infura.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
3.IPFS Web控制臺(tái)
IPFS提供了本地的Web控制臺(tái)服務(wù)。瀏覽器輸入http://localhost:5001/webui,可以直接訪問Web控制臺(tái)。如圖:
6.API使用
IPFS搭建好之后除了命令行操作,還可以 使用API的方式調(diào)用。
1.IPFS命令行用法
IPFS命令行由-config(配置文件路徑)、-debug(Debug模式操 作)、-help(幫助文檔)等多種選項(xiàng)和一系列(子命令)構(gòu) 成,命令格式如下:
ipfs [--config= <config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L
1).選項(xiàng)
IPFS命令行選項(xiàng)如下圖:
2).子命令
操作IPFS的基本命令如下圖:
操作IPFS數(shù)據(jù)結(jié)構(gòu)的命令如下圖:操作IPFS的高級(jí)命令如下圖:
操作IPFS網(wǎng)絡(luò)通信相關(guān)的命令:
控制IPFS相關(guān)輔助工具的命令如下:
IPFS在本地文件系統(tǒng)中有一個(gè)倉庫,其默認(rèn)位置為~/.ipfs,可以通 過設(shè)置環(huán)境變量IPFS_PATH改變倉庫位置
export IPFS_PATH=/path/to/ipfsrepo
【遇到的坑】
在服務(wù)器端執(zhí)行ipfs daemon后,關(guān)閉終端會(huì)相應(yīng)造成守護(hù)進(jìn)程停止,因此我們需要將ipfs服務(wù)
1.基于Linux服務(wù)器創(chuàng)建一個(gè)服務(wù)。
cd /lib/systemd/system/
vim ipfs.service
2.粘貼以下代碼讓IPFS遇到故障后能自動(dòng)重啟服務(wù)
[Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
3.保存退出后執(zhí)行命令
systemctl start ipfs
未對(duì)IPFS設(shè)置跨域會(huì)出現(xiàn)以下錯(cuò)誤
1.在控制臺(tái)執(zhí)行以下命令
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.最后命令行重新啟動(dòng)IPFS即可文章來源:http://www.zghlxwxcb.cn/news/detail-743889.html
systemctl start ipfs
二、IPFS開發(fā)進(jìn)階
總結(jié)
提示:這里對(duì)文章進(jìn)行總結(jié):
例如:以上就是今天要講的內(nèi)容,本文僅僅簡(jiǎn)單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-743889.html
到了這里,關(guān)于IPFS技術(shù)系列之IPFS實(shí)踐應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!