在B站看了黎躍春老師的教學(xué)視頻巷疼,結(jié)合網(wǎng)上的資源和自己的操作整理的筆記搀擂,知識(shí)無(wú)價(jià)汽绢,感謝分享吗跋!
1.IPFS:
IPFS (InterPlanetary File System)是個(gè)點(diǎn)對(duì)點(diǎn)的分布式超媒體分發(fā)協(xié)議,它整合了過(guò)去幾年最好的分布式系統(tǒng)思路宁昭,為所有人提供全球統(tǒng)的可尋址空間跌宛,包括Git、自證明文件系統(tǒng)SFS积仗、BitTorrent 和DHT,同時(shí)也被認(rèn)為是最有可能取代HTTP的新一代互聯(lián)網(wǎng)協(xié)議疆拘。
IPFS用基于內(nèi)容的尋址替代傳統(tǒng)的基于域名的尋址,用戶(hù)不需要關(guān)心服務(wù)器的位置寂曹,不用考慮文件存儲(chǔ)的名字和路徑哎迄。我們將一個(gè)文件放到IPFS節(jié)點(diǎn)中,將會(huì)得到基于其內(nèi)容計(jì)算出的唯一加密哈希值隆圆。 哈希值直接反映文件的內(nèi)容漱挚,哪怕只修改1比特,哈希值也會(huì)完全不同.當(dāng)IPFS被請(qǐng)求一個(gè)文件哈希時(shí)渺氧,它會(huì)使用一個(gè)分布式哈希表找到文件所在的節(jié)點(diǎn)旨涝,取回文件并驗(yàn)證文件數(shù)據(jù)。
IPFS是通用目的的基礎(chǔ)架構(gòu)阶女,基本沒(méi)有存儲(chǔ)上的限制颊糜。大文件會(huì)被切分成小的分塊,下載的時(shí)候可以從多個(gè)服務(wù)器同時(shí)獲取秃踩。IPFS的網(wǎng)絡(luò)是不固定的衬鱼,細(xì)粒度的,分布式的網(wǎng)絡(luò)憔杨,可以很好的適應(yīng)內(nèi)容分發(fā)網(wǎng)絡(luò)的要求鸟赫。這樣的設(shè)計(jì)可以很好的共享各類(lèi)數(shù)據(jù),包括圖像、視頻流抛蚤、分布式數(shù)據(jù)庫(kù)台谢、整個(gè)操作系統(tǒng)。
IPFS提供了一個(gè)友好的WEB訪問(wèn)接口岁经,用戶(hù)可通過(guò)[http://ipfs](http://ipfs/.io/hash獲取IPFS網(wǎng)絡(luò)中的內(nèi)容,也許在不久的將來(lái)朋沮,IPFS協(xié)議將會(huì)徹底替代傳統(tǒng)的HTTP協(xié)議。
大量數(shù)據(jù)上傳區(qū)塊鏈成本非常高缀壤,把數(shù)據(jù)上傳到IPFS樊拓,把哈希傳到區(qū)塊鏈拂盯,通過(guò)哈希到IPFS上進(jìn)行尋址乐疆。
IPFS的工作原理:
每個(gè)文件及其中的所有塊都被賦予一個(gè)稱(chēng)為加密散列的唯一指紋。
IPFS通過(guò)網(wǎng)絡(luò)刪除重復(fù)具有相同哈希值的文件税手,通過(guò)計(jì)算是可以判斷哪些文件是冗余重復(fù)的图呢。并跟蹤每個(gè)文件的版本歷史記錄条篷。
每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)只存儲(chǔ)它感興趣的內(nèi)容,以及一些索引信息蛤织,有助于弄清楚誰(shuí)在存儲(chǔ)什么赴叹。
查找文件時(shí),你通過(guò)文件的哈希值就可以在網(wǎng)絡(luò)查找到儲(chǔ)存改文件的節(jié)點(diǎn)指蚜,找到想要的文件稚瘾。
-
使用稱(chēng)為IPNS(去中心化命名系統(tǒng)),每個(gè)文件都可以被協(xié)作命名為易讀的名字姚炕。通過(guò)搜索摊欠,就能很容易地找到想要查看的文件。
從IPFS的介紹可以看出柱宦, IPFS設(shè)想的是讓所有的網(wǎng)絡(luò)終端節(jié)點(diǎn)不僅僅只充當(dāng) Browser或Client的角色些椒,其實(shí)人人都可以作為這個(gè)網(wǎng)絡(luò)的運(yùn)營(yíng)者,人人都可以是服務(wù)器掸刊。
“如果你把它(分布式賬本)加到IPFS里免糕,然后通過(guò)哈希算法把它錄入?yún)^(qū)塊里,那么你就可以通過(guò)IPFS直接在網(wǎng)上瀏覽交易以及文件忧侧。IPFS協(xié)議與區(qū)塊鏈技術(shù)結(jié)合是個(gè)“完美的婚姻”石窑。” ------Benet(IPFS創(chuàng)始人)
2. IPFS本地環(huán)境安裝
2.1下載ipfs壓縮包
百度搜索IPFS 蚓炬,點(diǎn)擊 try it
下載后松逊,解壓縮存檔文件,并將ipfs二進(jìn)制文件移動(dòng)到可執(zhí)行文件$PATH中的某個(gè)位置肯夏,使用install.sh腳本:
$ tar xvfz go-ipfs_v0.4.21_linux-amd64.tar.gz
$ cd go-ipfs
$ sudo ./install.sh
$ ipfs version
測(cè)試一下:
$ ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem.
恭喜你!現(xiàn)在经宏,您的計(jì)算機(jī)上已經(jīng)安裝了一個(gè)可以工作的IPFS犀暑。
Installing with ipfs-update
ipfs-update是一個(gè)命令行工具,用于安裝和升級(jí)ipfs二進(jìn)制文件烁兰。
Getting ipfs-update
ipfs-update can be downloaded for your platform at: https://dist.ipfs.io/#ipfs-update
If you have a working Go environment (>=1.8), you can also install it with:
$ go get -u [github.com/ipfs/ipfs-update](http://github.com/ipfs/ipfs-update)
安裝ipfs的新版本或升級(jí)時(shí)耐亏,請(qǐng)確保使用最新版本的ipfs-update。
Installing ipfs with ipfs-update
ipfs-update版本列出所有可供下載的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
v0.3.10
v0.3.11
v0.4.0
v0.4.1
v0.4.2
v0.4.3
v0.4.4
v0.4.5
v0.4.6
v0.4.7-rc1
ipfs-update install latest 將安裝最新可用的版本:
$ 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!
請(qǐng)注意沪斟,最新的可用版本可能不穩(wěn)定(即表單中的候選版本vX.X.X-rcX)广辰。因此,建議指定要安裝的版本主之,例如:ipfs-update install v0.4.6轨域。
3. 如何在本地創(chuàng)建一個(gè)IPFS節(jié)點(diǎn)
文件夾存儲(chǔ)相關(guān)數(shù)據(jù)
通過(guò)節(jié)點(diǎn)連接的形式同步,將數(shù)據(jù)上傳到整個(gè)IPFS網(wǎng)絡(luò)杀餐。
cd ~/ 到主頁(yè)面
在ubuntu下查看隱藏的文件和文件夾
ls -a 可以查看到隱藏的文件
此外 ,進(jìn)入自己主目錄朱巨,按ctrl+h也能看見(jiàn)以點(diǎn)號(hào)開(kāi)頭的隱藏文件
ipfs init 節(jié)點(diǎn)創(chuàng)建成功
ls -a 這回可以看到ipfs文件
cd .ipfs
節(jié)點(diǎn)已經(jīng)創(chuàng)建成功史翘,默認(rèn)存儲(chǔ)空間是10G,
我們要添加數(shù)據(jù)的時(shí)候冀续,會(huì)先添加到本地的節(jié)點(diǎn)中琼讽,只有通過(guò)網(wǎng)絡(luò)同步之后,才會(huì)把數(shù)據(jù)同步到整個(gè)IPFS網(wǎng)絡(luò)洪唐,如果同步到IPFS網(wǎng)絡(luò)后钻蹬,就可以直接在公網(wǎng)查詢(xún)數(shù)據(jù)。如果沒(méi)有同步凭需,就只能在本地即本機(jī)查詢(xún)问欠。
查看本地默認(rèn)的存儲(chǔ)空間是多大,如何修改:
執(zhí)行完ipfs init命令后粒蜈,會(huì)在根目錄生成一個(gè).ipfs的文件夾存儲(chǔ)節(jié)點(diǎn)數(shù)據(jù)顺献。.ipfs節(jié)點(diǎn)默認(rèn)存儲(chǔ)空間為10個(gè)G。
如果你自己想修改節(jié)點(diǎn)默認(rèn)存儲(chǔ)空間枯怖,可打開(kāi)終端執(zhí)行下面的命令注整,還是在.ipfs下。
$ export EDITOR=/usr/bin/vim
$ ipfs config edit
本步驟出問(wèn)題是因?yàn)闆](méi)有安裝vim度硝,打開(kāi)一個(gè)新的terminal安裝vim:
'$ sudo apt install vim'
再重新執(zhí)行上面的兩個(gè)語(yǔ)句肿轨。
執(zhí)行完ipfs config edit命令后會(huì)打開(kāi)一個(gè)文件,在這個(gè)文件中找到下圖中繪制紅線的位置蕊程,將10GB修改成你自己想要的存儲(chǔ)空間椒袍。修改完畢,保存退出藻茂。(PS:輸入i可以開(kāi)始編輯槐沼,編譯完畢后按esc鍵曙蒸,再輸入:,再次輸入wq保存并且退出)岗钩。
如何區(qū)分本機(jī)節(jié)點(diǎn)和其他電腦的節(jié)點(diǎn):
ipfs id
可以查看ID纽窟,ID是電腦的唯一標(biāo)識(shí),用于標(biāo)識(shí)節(jié)點(diǎn)兼吓。
cd .. 切換回桌面
cd Desktop/
ls
mkdir 1124
cd 1124/
cat > file.txt
微信:liyc1215
Ctrl C退出
cat file.txt 查看當(dāng)前文件的內(nèi)容
如何將數(shù)據(jù)添加到本地的節(jié)點(diǎn)當(dāng)中
ipfs add file.txt
將數(shù)據(jù)添加到ipfs中會(huì)返回一個(gè)哈希
QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T file.txt
已經(jīng)往我們本地節(jié)點(diǎn)儲(chǔ)存了一份數(shù)據(jù)
數(shù)據(jù)的文件名就是這個(gè)哈希臂港,可以通過(guò)這個(gè)哈希找到這個(gè)文件的內(nèi)容。
驗(yàn)證:
ipfs cat + hash
ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
返回當(dāng)前寫(xiě)入節(jié)點(diǎn)中的數(shù)據(jù)
vi file.txt
修改數(shù)據(jù)视搏,按i可以編輯审孽,寫(xiě)完后,按ESC鍵浑娜,:wq 保存并退出
ipfs add file.txt
產(chǎn)生新的哈希
added QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y.txt
ipfs cat QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y
若想外網(wǎng)也可以訪問(wèn)佑力,ipfs.io/ipfs/QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y
就需要把數(shù)據(jù)同步到整個(gè)網(wǎng)絡(luò)當(dāng)中,現(xiàn)在只是存儲(chǔ)在本地中筋遭。
4.同步打颤、啟動(dòng)節(jié)點(diǎn)服務(wù)器
就可以將節(jié)點(diǎn)和其他節(jié)點(diǎn)進(jìn)行同步,依然在./1124下漓滔。
ipfs daemon
ipfs.io/ipfs/QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y
需要耐心等待
5.跨域資源共享CORS配置
為了后續(xù)的開(kāi)發(fā)方便编饺,我們還需要對(duì)跨域資源共享( CORS )進(jìn)行配置,ctrl- c退出ipfs响驴,然后按照下面的步驟進(jìn)行跨域配置透且。
ctrl- c退出ipfs
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"]'
驗(yàn)證
- 啟動(dòng)服務(wù)器
$ ipfs daemon
- 新建終端執(zhí)行下面的命令
$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
localhost:~ yuechunli$
瀏覽器輸入下面的網(wǎng)址
打開(kāi)http://localhost:5001/webui會(huì)看到一個(gè)漂亮的UI界面。