【區塊鏈】#區塊鏈 ipfs介紹及環境配置

        需要在答辯之前做一點demo進行展示,好給評委老師展示我們的預期成果,組長最後挑選了IPFS作爲初級的展示工具。我們的第一次在鏈上操作就開始了。區塊鏈具有去中心化、不可篡改、智能合約的一些特性。其實大家都知道區塊鏈是這幾年因爲比特幣的火而趕上風口的東西,ipfs就是一個實現。

這裏借用網絡的一些資源簡要介紹一下IPFS的東西。

部分內容來源於黎躍春區塊鏈博客--IPFS環境配置

IPFS簡介

IPFS(InterPlanetary File System)是一個點對點的分佈式超媒體分發協議,它整合了過去幾年最好的分佈式系統思路,爲所有人提供全球統一的可尋址空間,包括Git、自證明文件系統SFSBitTorrentDHT,同時也被認爲是最有可能取代HTTP的新一代互聯網協議。

IPFS用基於內容的尋址替代傳統的基於域名的尋址,用戶不需要關心服務器的位置,不用考慮文件存儲的名字和路徑。我們將一個文件放到IPFS節點中,將會得到基於其內容計算出的唯一加密哈希值。哈希值直接反映文件的內容,哪怕只修改1比特,哈希值也會完全不同。當IPFS被請求一個文件哈希時,它會使用一個分佈式哈希表找到文件所在的節點,取回文件並驗證文件數據。

IPFS是通用目的的基礎架構,基本沒有存儲上的限制。大文件會被切分成小的分塊,下載的時候可以從多個服務器同時獲取。IPFS的網絡是不固定的、細粒度的、分佈式的網絡,可以很好的適應內容分發網絡的要求。這樣的設計可以很好的共享各類數據,包括圖像、視頻流、分佈式數據庫、整個操作系統、模塊鏈、8英寸軟盤的備份,還有靜態網站。

IPFS提供了一個友好的WEB訪問接口,用戶可通過http://ipfs.io/hash 獲取IPFS網絡中的內容,也許在不久的將來,IPFS協議將會徹底替代傳統的HTTP協議。

/* end*/

其實這些區塊鏈的實現的關鍵技術都有類似的,例如點對點,分佈式,這個也是一種發展趨勢。這裏不多做解釋,如果想要深入瞭解區塊鏈架構,可以去找尋一點 例如白話區塊鏈 圖解區塊鏈 深入理解區塊鏈  區塊鏈架構之類的書籍去看看。

IPFS的環境配置

博主在Windows系統上和Linux系統上都試着裝過ipfs的環境,現在機器上也有ipfs的環境,整個安裝過程給人感覺很簡單,一步一步走下去就ok,坑幾乎沒有,前提是網絡啊 機器啊一些底層環境都存在。

做到結束 能在本地打開你的ipfs的一個HelloWorld的web端,輸入一個數字,返回一串hash值,就很安逸,大功告成。

因爲Ubuntu系統對於開發者、對於作爲服務器端具有更好的性能,我們這裏首先以Ubuntu爲例開始講,參考的還是黎躍春區塊鏈博客--IPFS環境配置

首先去IPFS官網www.ipfs.io下載它的對應你係統的安裝包,

之後的通過ipfs訪問hash的操作也是才能看到。也可以去CSDN或者網盤去搜下載的     一個windows的下載地址

一個Ubuntu的下載地址  還是建議去官網下最新的。

如圖所示

在Try it 後的頁面找到install ipfs找到屬於自己的系統平臺,下載對應的文件即可。

Linux下就是tar.gz壓縮包、windows下就是zip壓縮包。在Ubuntu下後需要拷貝到一個給定的目錄,建議這個目錄不要太深,比較好找,因爲你可能經常需要終端操作。

可以通過ls命令看到在home下的

使用 tar xvfz go-ipfs_xxxx.tar.gz命令解壓 也就是tar xvfz加上你的文件名 結果如圖所示

czb@ubuntu:~$ tar xvfz  go-ipfs_v0.4.17_linux-amd64.tar.gz
go-ipfs/build-log
go-ipfs/install.sh
go-ipfs/ipfs
go-ipfs/LICENSE
go-ipfs/README.md
czb@ubuntu:~$ 

然後再用ls命令 可以發現文件目錄中多了一個 go-ipfs文件夾 就是解壓得到的

使用cd命令進入go-ipfs文件夾 因爲裏面有可執行的文件

czb@ubuntu:~$ cd go-ipfs
czb@ubuntu:~/go-ipfs$ ls
build-log  install.sh  ipfs  LICENSE  README.md

因爲這個ipfs文件是其可執行安裝的文件,有的人會把這個進行移動,我沒移動,以後就都得在這個文件夾中執行了。你在當前文件夾下直接打開ipfs 也就是終端輸入ipfs 會發現就像-help一樣 已經好了 可以執行操作了    (因爲相當於你直接打開)

 我們使用ipfs init在你的機器上初始化 創建第一個結點, 

czb@ubuntu:~/go-ipfs$  ipfs init
initializing IPFS node at .ipfs
generating 2048-bit RSA keypair...done
peer identity: QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP
to get started, enter:

	ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme

應該就是這樣,因爲我的已經早之前init過,這裏提示不能再init。接着你就可以用ls 和 cd命令查看目錄了。

此時其實已經可以用了 只是一些功能受限,它對我們只是一個庫,通過它完成自己的APP還得設置很多。

修改節點默認存儲空間

可以在ipfs根目錄.ipfs 使用export EDITOR=/usr/bin/vim 和ipfs config edit 進行修改默認存儲空間。

查看節點id

本來想給大家展示如何查看節點id的,但是顯示我這個鎖上了,

通過先ipfs repo fsck刪除鎖 再通過ipfs daemon啓動即可解鎖      (ipfs daemon命令經常用到)

czb@ubuntu:~/go-ipfs$ ipfs id
Error: api not running
czb@ubuntu:~/go-ipfs$ ipfs fsck
Error: Unknown Command "fsck"

czb@ubuntu:~/go-ipfs$ ipfs repo fsck
Lockfiles have been removed.
czb@ubuntu:~/go-ipfs$ ipfs daemon
Initializing daemon...
Successfully raised file descriptor limit to 2048.

然後再打開一個新的終端,試着ipfs id即可查看結點  如圖

czb@ubuntu:~$ ipfs id
{
	"ID": "QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC48Jx6BLYcHXNwBDTq/WNEDBxN+J8Mpq3BNWBbZkeSEtthP4bwdIZGjf+BmSJgUfOg3bUpdwvmFui9BMsl/QtTgGxGq7SWVbEj0V8x9VoQ/ySgvicYJXulajuZSdeLxAjvY8EWqi0L3+fzMGJc2NN/xDwac6HtBuGJ82gf2gRCH4b5q2cOQhUdOehYMyLo4EKh+NTiBRAv2RVT22H2NviuzoVtHQE1lkO3BpbnUpB2SSmwO2sQku7+38e2UXIDDASc4fyYocUWe/QFWa+7IUGFTWUXpNDCIWo0Zdf6eC1FWSKI/w+6srigRBpQnQPJ6FyoTKyhPIAQYFBUdf/WtrgTAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",
		"/ip6/::1/tcp/4001/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9"
	],
	"AgentVersion": "go-ipfs/0.4.17/",
	"ProtocolVersion": "ipfs/0.1.0"
}

以下字符串爲你的ID的hash值 之後可以通過它去官網上查看你的主頁。

	"ID": "QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",

一點關於複製粘貼的建議,Ubuntu的終端 如果你ctrl + c就會默認中止當前命令 如果你執行一些較長的命令,切記不要ctrl+c 直接鼠標右鍵 copy  即可。

啓動結點服務器

前面提到的 ipfs daemon命令 就是啓動結點服務器的命令,在給鏈上傳文件、傳字符串的之後daemon一下。可以認爲是同步節點的過程和打開本地服務器的過程 ,主要是打開本地服務器,就像apache一樣,給你提供了一個端口,你啓動之後,通過127.0.0.1:5001/webui 進行訪問。這裏要建議的是 建議不要出現全角字符,不然會莫名報錯。

daemon的命令產出的結果是這樣

czb@ubuntu:~/go-ipfs$ ipfs daemon
Initializing daemon...
Successfully raised file descriptor limit to 2048.
21:19:09.061 ERROR       core: mdns error: No multicast listeners could be started core.go:271
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

跨域資源共享CORS配置

這個可以認爲是爲了傳輸而適應底層的一些協議而設置的東西,Windows和Ubuntu都有差別,在Ubuntu上簡單的按照要求即可,Windows的配置後續會說。

對跨域資源共享( CORS )進行配置,先ctrl- c退出ipfs,然後按照下面的步驟進行跨域配置。

press 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 daemon

然後新建終端執行下面的命令

ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

這個裏面的hash不是我的,命令直接輸入即可,看結果即可

會在終端畫一個這樣的東西,表示你的環境安裝成功了。大功告成

czb@ubuntu:~$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

ipfs daemon成功後  也可打開127.0.0.1:5001/webui 即可看到它預設的網頁 裏面包含你的結點信息、上傳的文件、IPFS區塊鏈的分佈情況等。如圖

 

我們已經完成了本次ipfs基本的配置和說明,關於windows的配置和更多操作之後進行分享,特別鳴謝黎躍春區塊鏈博客--IPFS環境配置 祝大家使用順利。

一點說明 是ipfs已經打好了基礎的區塊鏈,也具有一定規模的結點和羣體,具有基本的足夠的操作。程序員可以直接操作傳值傳文件返回hash值,但是加密解密,實現hash到用戶還是需要程序員想辦法,這只是冰山一角的工作,思考更合理的邏輯,更安全有效的加密方式纔是我們做應用需要的工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章