ipfs是什麼?

ipfs是星際網絡協議,它提供一個全球節點的分佈式存儲能力,不僅僅是文件,還包括了數據結構。

ipfs不是什麼?

ipfs不是區塊鏈項目。ipfs提供的技術其實並不陌生,主要有p2p網絡通訊技術,git中使用的文件傳輸協議和dag數據結構。

但是ipfs不是一個新的bitTorrent。它不需要種子服務器,也不需要節點間信任的機制,是沒有單點故障的超對等網絡。

ipfs還有哪些特點:

IPFS是一個協議,類似http協議。

  1. 定義了基於內容的尋址文件系統
  2. 內容分發
  3. 使用的技術分佈式哈希、p2p傳輸、版本管理系統

IPFS是一個文件系統

  1. 有文件夾和文件
  2. 可掛載文件系統

IPFS是一個web協議

  1. 可以像http那樣查看互聯網頁面
  2. 未來瀏覽器可以直接支持 ipfs:/ 或者 fs:/ 協議

IPFS是模塊化的協議

連接層:通過其他任何網絡協議連接
路由層:尋找定位文件所在位置 數據塊交換:採用BitTorrent技術 IPFS是一個p2p系統
世界範圍內的p2p文件傳輸網絡

分佈式網絡結構

沒有單點失效問題
IPFS天生是一個CDN
文件添加到IPFS網絡,將會在全世界進行CDN加速 bittorrent的帶寬管理

IPFS擁有命名服務

IPNS:基於SFS(自認證系統)命名體系
可以和現有域名系統綁定

如何安裝使用呢

這裏我們僅僅展示ubuntu下面的使用,因爲之後的教程會推出服務器上公共節點的運行和一步一步的建立起我們自己的文件上傳網站。

下載安裝:

$ sudo adduser ipfsuser # 保障安全我們建立一個新的用戶來使用ipfs
$ sudo adduser ipfsuser sudo #新的用戶具有sudo 權限
$ wget https://dist.ipfs.io/go-ipfs/v0.4.23/go-ipfs_v0.4.23_linux-amd64.tar.gz #下載ipfs
$ tar xvfz go-ipfs.tar.gz 
$ cd go-ipfs
$ sudo ./install.sh

現在我們測試以下ipfs命令是否可用

$ ipfs help
USAGE:

    ipfs - Global p2p merkle-dag filesystem.
...

接下來我們創建一個測試文件test.txt來驗證安裝的ipfs的可用性

$ cd && touch test.txt
$ echo 'hello ipfs' >> test.txt # 寫入文件內容爲hello, ipfs

初始化我們ipfs節點

$ ipfs init
initializing IPFS node at /home/ipfsuser/.ipfs
...

將test.txt加入ipfs

$ ipfs add text.txt
added [得到的一串cid數值] test.txt #您的hash數值可能不一樣

從ipfs中讀取文件內容

$ ipfs cat [上個命令得到的cid數據]
hello, ipfs ## 輸出了之前寫入的內容

那麼我們怎麼保證這條內容能夠全網都可以得到呢,換言之我們如何使用ipfs全網內容尋址的能力。

首先我們應當讓這個節點和網絡通訊,同步狀態:

$ ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.23-
Repo version: 7
System version: amd64/linux
Golang version: go1.13.7
Swarm listening on /ip4/127.0.0.1/tcp/4001
...

接着我們開一個新的命令行終端,輸入:

$ curl http://localhost:8080/ipfs/[文件的cid值]
hello, ipfs
$ curl https://ipfs.io/ipfs/[文件的cid值] #這裏是官方gateway,速度會比較慢,等待太長就別等了,只要知道任意一個公共網關都可以通過cid選址到內容即可,我們之後會搭建自己公共網關 

中國大陸讀者,這實踐此教程的過程中請科學上網,這是提升技術的必要工具,辛苦了

下一篇:

ipfs教程(2)ipfs公共节点的建立
在上壹篇中我們介紹了ipfs是什麽,以及ipfs的安裝和簡單使用。沒有了解的讀者請點擊以下: ipfs教程(1)ipfs簡介和安裝今天起,我將開一系列教程,一步一步完成實戰的ipfs的應用,期間會穿插很多nodejs知識和react知識,希望對大家有幫助 巫小蠻爲道之惑meaning ask [/ipfsjiao-cheng-1-ipfsjian-jie-he-an-zhuang/] 下面我們要達成的目標的如何使用公共節點作為自己的圖床。 首先需要一臺裝有ubuntu server的vps,本文使用ubuntu18.04, 另外您還需要一個解析到此伺服器的域名:假設是 yourdomain…