1. 程式人生 > 其它 >IPFS在windows平臺下的安裝與簡單使用-更新中

IPFS在windows平臺下的安裝與簡單使用-更新中

理論基礎

IPFS(星際檔案系統),是一個分散式檔案系統協議。IPFS協議定義了檔案在分散式系統中如何儲存、索引、傳輸。IPFS的目標是通過一個檔案系統將網路中的所有的裝置連線在起來

簡介

  1. 基於內容定址,而非基於域名定址。檔案具有唯一存在的唯一性,一個檔案加入到IPFS的網路,基於計算對內容賦予一個唯一加密的雜湊值
  2. 提供檔案的歷史版本控制器(如git),並且讓多個節點使用儲存不同版本的檔案;
  3. IPFS的網路執行著一條區塊鏈,即用來儲存網際網路檔案的雜湊值表,每次有網路訪問,即要在鏈上查詢該內容(檔案)的地址;
  4. 通過使用代幣(FileCoin)的激勵作用,讓各節點有動力去儲存資料。FileCoin是一個由加密貨幣驅動的儲存網路。礦工通過為網路提供開放的硬碟空間獲得FileCoin,而使用者則用FileCoin來支付在去中心化網路中儲存加密檔案的費用。

工作機制

IPFS為每一個檔案分配一個獨一無二的hash值,這個方式使得IPFS可以支援基於檔案內容定址。IPFS在整個網路範圍內去掉重複的檔案,並且為每一個檔案建立版本管理。

當查詢檔案的時候,IPFS網路根據檔案的hash值進行查詢。為了讓使用者更好的記檔案存放的hash,IPFS利用IPNS將hash值對映一個比較容易記憶的IPNS名字,每個節點除了儲存自己需要的資料,還需要儲存一張hash表,用來記錄檔案儲存的位置,進行檔案的查詢下載。

實驗操作

IPFS環境搭建

Ubuntu 18.04.5 LTS 在此平臺開發用正常步驟 之後演示是在win10平臺

sudo apt-get update

更新一下軟體列表

還需安裝golang sudo apt-get install golang-go -y,安裝過的可以忽略

下載IPFS

wget https://gitee.com/plusz/go-ipfs.git 這裡用gitee同步的github映象

或者直接 git clone https://gitee.com/plusz/go-ipfs.git

WINDOWS平臺下載地址:https://dist.ipfs.io/#go-ipfs (選windows binary,需要梯子)

配置環境變數

將解壓的路勁新增到PATH環境變數,不加也行

在解壓路徑下ipfs version 檢視版本

初始化本地倉庫

和git類似,ipfs節點也需要先初始化一個本地倉庫

執行 ipfs init

此處的peer identity 即是屬於自身的IPFS網路雜湊值,相當於ID,通過ID可以訪問到節點

安裝

輸入上面最後一行的內容

出現這個即為安裝成功

ipfs安裝的預設配置

IPFS安裝後的配置放在系統使用者資料夾目錄下C:\Users\xxxx.ipfs , xxxx 為pc名,config為配置資訊,可以按需修改,這裡暫時不修改

執行

1. 輸入 ipfs daemon 啟動IPFS服務監聽

目的是用於監聽IPFS網路通訊資料,使用的監聽埠是5001。注意要並保持開啟狀態,才能守護監聽的程序。

2. IPFS的基礎命令

通過ipfs help可以檢視一些基礎命令

此時我們通過ipfs id 可以檢視屬於自己的通訊ID資訊

輸入ipfs config show 可以檢視配置資訊

ipfs swarm peers 檢視附近也在使用IPFS網路節點的夥伴,如果沒有資料說明附近沒人使用。

這裡可以看到附近還是有很多IPFS節點的

3. 呼叫IPFS網路中的檔案

輸入 ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg >cat.jpg

我們即從ID為QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ的節點裡下載了名為cat.jpg的一張圖片到本地。

4. 上傳檔案

資料夾內新建一個測試檔案

通過命令ipfs add ipfsTest.txt 上傳檔案,並且返回一個唯一雜湊值

在命令列輸入ipfs cat + 雜湊值既可以看到內容

視覺化頁面

在IPFS網路狀態開啟時可以通過http://localhost:5001/webui檢視到IPFS視覺化操作介面

檢視節點訊息

與上面在命令列裡檢視是一樣的ID

將剛才上傳的檔案hash複製到搜尋框檢查後

從上圖可知,這個CID值的HASH值不是我們想要的HASH值,這是由於原本的hash太長了,一堆數字讀起來不容易,所以需要再進行編碼,壓縮其長度,且容易被傳播,為此,IPFS採用了Base58這種編碼。

在右側可以看到CID資訊

IPFS現在的multihash值,都是以1220開頭的,按照Base58的演算法,算出來的結果都是以Qm開頭的。
IPFS如何計算檔案hash?
IPFS採用了SHA2-256演算法,對任意長度的內容,生成的hash值長度固定,都是32個位元組。在Linux下,直接用sha256sum可以計算SHA2-256格式的HASH值。雖然目前用的是SHA-256,但是可以支援多種HASH演算法,可以升級演算法,但是不會有大的架構改動。於是,IPFS採用了multihash這種簡單的HASH表示方法,支援多種HASH演算法。如果未來修改演算法,用的仍然是multihash,保證了表達方式的持續性。
multihash是一種自識別hash。multihash多重雜湊遵循TLV模式(type-length-value)。其實就是一個字串,由三部分組成:HASH演算法編碼、HASH值得長度(位元組數)、HASH值。
SHA2-256的編碼為Ox12,其HASH摘要長度為32位元組(十六進位制數為0x20)。把1220加到前面所得HASH至的開頭。例如本例檔案的multihash編碼(十六進位制)。

簡而言之:

原始資料新增元資料封裝為IPFS檔案—>計算SHA2-256—>封裝成multihash—>轉化為Base58