IPFS掃盲

第二屆深圳區塊鏈技術與應用大會暨展覽會,深圳區塊鏈存儲與IPFS技術應用大會暨展覽會於2019年4月9日在深圳會展中心6號館舉行。那麼這個IPFS是什麼?和區塊鏈有什麼關係?有什麼用?又怎麼用呢?接下來小編會爲您詳細解析。html

目錄

 

什麼是IPFS
  簡單地說
  枯燥地說
  有啥用
原理是什麼
  八層協議棧
  IFPS的理想
操做
  編譯
  安裝啓動
  基本操做
  對接RESTful
實例
  部署我的博客
  作電商網站
  FileCoin
  疑問與解決方案
  有價值的參考資料
git

 

什麼是IPFS

簡單地說

IPFS = Bittorrent + git + SFS + BITSWAPgithub

枯燥地說

      IPFS(The InterPlanetary File System,星際文件系統), 是一個面向全球的、點對點的分佈式版本文件系統,目標是爲了補充(甚至是取代)目前統治互聯網的超文本傳輸協議(HTTP),將全部具備相同文件系統的計算設備鏈接在一塊兒。
      原理用基於內容的地址替代基於域名的地址,也就是用戶尋找的不是某個地址而是儲存在某個地方的內容,不須要驗證發送者的身份,而只須要驗證內容的哈希,經過這樣可讓網頁的速度更快、更安全、更健壯、更持久。web

有啥用

1.私人網盤(能夠隨時隨地像訪問本地存儲同樣,訪問家裏電腦裏存的文件)
2.迷你CDN(相似百度金礦,讓普通人能夠把自家的帶寬像商品同樣出售給別人)
3.文件共享(知道BitTorrent麼,IPFS不但能夠共享文件還能共享目錄)
4.版本管理(此功能和Web結合起來,之後很難再見到404了)
5.虛擬機的根目錄(想一想你把一個操做系統裝到IPFS上)
6.分佈式文件系統(把家裏磁盤的使用權像產品同樣出售給別人)
7.數據安全(這是去中心化的天賦,想要入侵數據庫就要攻擊全部人)
8.取代HTTP(基於內容尋址,網絡利用率高)
。。。數據庫

原理是什麼

八層協議棧

  • 網絡:傳輸層(WebRTC)、可靠性(uTP或SCTP)、可鏈接性(ICE)、完整性、可驗證性json

  • 路由:DSHT,用於肯定同伴或內容的地址,簡單說可讓你知道到那個節點去找那個文件;api

  • 塊交換:Bittorrent+Bitswap, 節點必須以塊的形式彼此提供直接的值跨域

  • 對象:Merkle DAG, 路徑、本地對象、對象鎖定、發佈對象、對象加密級別安全

  • 文件:Blok、List、Tree、Commit、文件系統路徑、將文件分隔成LISTS和BLOBSbash

  • 命名:IPNS、DAG命名可變、人類友好名稱,IPFS一問世就有不少人瘋狂地去IPFS上註冊域名,這就歸功於此。

IFPS的理想

IPFS的思想是幾十年成功的分佈式系統的探索和開源的產物。IPFS綜合了不少迄今爲止很成功的系統中優秀的思想。除了BitSwap新協議以外,IPFS最大的特點就是系統的耦合以及設計的綜合性。

  • IPFS是去中心化網絡基礎設施的一個野心設想,不少不一樣類型的應用均可以創建在IPFS上。
  • 最低限度,它能夠用來做爲一個全局的,掛載性,版本控制文件系統和命名空間,或者做爲下一代的文件共享系統。
  • 而最好的狀況是,IPFS可讓Web升級一個層次,當發佈一個有價值的信息時,任何感興趣的人均可以進行發佈而不會強迫性的必須只容許發佈機構進行發佈,用戶能夠信任信息的內容,信不信任信息的發送者都是可有可無的,還有一個特色就是,一些重要但很老的文件也不會丟失。
  • IPFS期待着帶咱們進入到一個Permanent Web的世界。

操做

編譯

以Ubuntu爲例

$ go get -u -d github.com/ipfs/go-ipfs
cd $GOPATH/src/github.com/ipfs/go-ipfs
$ make install

安裝啓動

$ ipfs init
$ ipfs daemon &

基本操做

# 添加文件
$ ipfs add a.txt
# QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS是add以後生成的
$ ipfs cat QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS
aaaaaaaaaaaaaa
# 建立文件夾並複製文件
$ ipfs files mkdir libai
$ ipfs files cp /ipfs/QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS /libai/file.txt
# 瀏覽剛複製過去的文件
$ ipfs files ls /libai
# 將IPFS中的文件取到本地
$ ipfs get /ipfs/QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS -o ./

用https的方式瀏覽咱們剛纔上傳的文件

對接RESTful

API的官方文檔:https://ipfs.io/docs/api/
對接API的js開源代碼:https://github.com/ipfs/js-ipfs
具體操做步驟以下:

  • 編輯ipfs的config文件:將127.0.0.1換成0.0.0.0
  • 添加跨域共享
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
  • 訪問IPFS的管理頁面:http://[NodeIP]:5001/webui
  • 添加文件(路徑前必定要加」@」符號)
curl -F file=@myfile 「http://localhost:5001/api/v0/add?recursive=false&quiet=<value>&quieter=<value>&silent=<value>&progress=<value>&trickle=<value>&only-hash=<value>&wrap-with-directory=<value>&hidden=<value>&chunker=<value>&pin=true&raw-leaves=<value>&nocopy=<value>&fscache=<value>&cid-version=0&hash=sha2-256「    

實例

看完操做步驟,相信您對IPFS的功能有了一些瞭解,咱們進一步開下腦洞,看看能用IPFS幹什麼。

部署我的博客

ipfs add -r ipfs_blog/
ipfs name publish QmebnxXBK7BgxRy2VsCE6z89epc9teZDh6ih8MCQUjDCZW
ipfs name resolve Qmczs7Qzf9r5Efgi25gofF7VD1rrFuoz49eEgWwh2xdf4X

 

作電商網站


如圖利用IPFS存儲資源文件,利用比特幣提供支付,本身寫個後臺提供接口,簡直美滋滋(是否是少了不少審覈流程),國外的Openbazaar就是這樣的一個去中心化的電商,既沒有交易費用,也不用擔憂審查。

FileCoin

Filecion是在IPFS基礎上創建的項目,已經通過ICO,代幣爲「FIL」,用戶經過向礦工支付FIL獲取存儲資源,從而激勵有閒置資源的公衆參與其中。FileCoin用複製證實(PoRep)和時空證實(Post)兩種方式來證實礦工的價值,相比於依賴於工做量證實法(Pow)的比特幣,FileCoin挖礦不會耗費那麼多的電力和CPU。

疑問與解決方案

  1. 長長的一串哈希值不容易被記住。
    答:IPFS能夠配置人類友好型域名,ipns就是解決這個問題的。
  2. 不想和世界聯網,只想本身組個私網。
    答:IPFS支持搭建私網,生成一個swarm.key放到IPFS數據目錄便可。

有價值的參考資料

Filecoin白皮書: https://filecoin.io/filecoin.pdf
Filecoin白皮書中文: http://chainx.org/paper/index/index/id/13.html
IPFS中文官網: http://ipfser.org/
IPFS白皮書: https://raw.githubusercontent.com/ipfs/ipfs/master/papers/ipfs-cap2pfs/ipfs-p2p-file-system.pdf
IPFS白皮書中文: https://gguoss.github.io/2017/05/28/ipfs/
IPFS源碼: https://github.com/ipfs/go-ipfs
IPFS安裝: https://ipfs.io/docs/install/
IPFS-js-api: https://github.com/ipfs/js-ipfs 

相關文章
相關標籤/搜索