戴嘉樂是前百度高級研發工程師,ipfser.org&巴比特專欄做者。戴嘉樂去年8月參與了FileCoin的衆籌,從而瞭解到IPFS技術,獨立開發了兩款基於IPFS的開源應用,一個是與IPFS有關的wiki系統,另外一個是IPFS相關的地理位置檢索系統。
IPFS的中文名是星際文件系統,由Juan Benet在2014年5月份發起。Juan Benet的我的經歷很傳奇,他畢業於斯坦福大學,在建立IPFS項目以前,他創辦的第一家公司被雅虎收購。2015年,他建立的IPFS在YCombinator孵化競賽中拿到了鉅額的投資,同時成立了協議實驗室。這個實驗室團隊由14位核心開發者以及社區中上百位代碼貢獻者組成的。node
IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分佈式存儲、傳輸協議,目標是補充甚至取代過去20年裏使用的超文本媒體傳輸協議(HTTP),但願構建更快、更安全、更自由的互聯網時代。算法
咱們天天上網使用APP刷朋友圈、微博都在使用HTTP協議,它基於TCP/IP的計算機應用層面,從服務器傳輸超文本數據到本地瀏覽器,本地瀏覽器或APP渲染後呈現給用戶。基於這樣的網絡環境構成了CS或BS架構,最後注入BAT這樣大型網絡提供商。編程
互聯網平臺所提供的網絡服務大體通過了三種模式的迭代歷程:瀏覽器
前兩種模式容易產生一些弊端:在第一種模式裏,服務高度依賴中心網絡。大公司或者創業公司沒法承受宕機,運維有一個KPI指數叫SLA,穩定性沒有到99.9%的話,基本不合格。SLA須要消耗特別大的成本,大公司須要僱一批運維專家或專業人士,去保障系統的穩定性。在第二種模式裏,存儲數據有丟失的風險。你們常常開玩笑的電纜被挖斷,員工刪庫跑路,都是隱患。同時,這兩種模式的帶寬成本相對高不少,會形成必定帶寬資源的浪費。好比《中國有嘻哈》第一期海選的視頻播放量有10億次,假設視頻文件大小是1GB,播放整個視頻須要消耗1000PB的帶寬量。若是按照0.001美圓1GB帶寬成本,愛奇藝光一期節目須要支付一百萬美金給ISP(互聯網服務提供商)。緩存
HTTP協議使用的域名尋址,最終會映射到最底層,找到某個域名所對應的IP地址下的某個主機,以及某個文件目錄的某個文件。它不關心是否存在相同的文件,但內容尋址會經過惟一的標識去訪問,而且提早檢驗這個標識是否已經被存儲過。若是被存儲過,直接從其它節點讀取它,不須要重複存儲,必定意義上節約了空間。安全
舉個具體場景的例子。假設我想要看《環太平洋》這部電影,小明以前下載過這部電影,他啓動了IPFS節點,將這個視頻文件加入了IPFS網絡。他會獲得一個哈希指紋b,同時發佈到公共網關,獲得了一個/IPFS/b的路徑名。他把哈希指紋和路徑名都告訴我,我要作的事情是啓動一個本地節點,對該網關發一個尋址PIN的請求,IPFS自動索引分佈式哈希表的哈希值,找到指紋b所對應的節點列表。大的視頻一般不會都存在一個節點,可能分片存在其它一些子節點上,IPFS把這些節點列表所有並行抓取,最後由本地的manager拼成完整的文件。並行的速度遠遠大於直接下載完整文件的速度,我很快就能在本地化的瀏覽器上看到電影,還能夠繼續分享給其餘人。服務器
IPFS至少有八層子協議棧,從上至下爲身份、網絡、路由、交換、對象、文件、命名、應用,每一個協議棧各司其職,又互相搭配。微信
IPFS團隊把BitTorrent進行了創新,叫做Bitswap,它增長了信用和賬單體系來激勵節點去分享,我推斷FileCoin有很大機率是基於Bitswap,用戶在Bitswap裏增長數據會增長信用分,分享得越多信用分越高。若是用戶只去檢索數據而不存數據,信用分會愈來愈低,其它節點會在嵌入鏈接時優先選擇信用分高的。網絡
這一設計能夠解決女巫攻擊,信用分不可能靠機器刷去提升,一直刷檢索請求,信用分越刷越低。請求次數和存儲量的變量之間有一個比較精妙的算法,相似一個拋物線,前期能夠容忍不少東西,達到必定次數後再也不信任。數據結構
新的技術取代老的技術,無非就兩點:第一,能提升系統效率;第二,可以下降系統成本。IPFS把這兩點都作到了。
我整理了一個IPFS族譜關係圖,同時也是一個縱向數據流圖。剛纔所說的八層協議,其實每一層的實現都綁定在對應的模塊下,進行了一個直觀的圖表設計。
IPFS的團隊在開發時,採用高度模塊集成化的方式,像搭積木同樣去開發整個項目。協議實驗室團隊2015年創立,到17年的時間裏都在作IPLD、LibP2P、Multiformats這三個模塊的開發,它們服務於IPFS底層。
IPFS應用了這幾個模塊的功能,集成爲一種容器化的應用程序,運行在獨立節點上,以Web服務的形式,供你們使用訪問。
我更但願你們把IPFS和FileCoin分開來看,若是IPFS玩得好,能夠建立不少FileCoin項目出來,它自己的價值和意義沒有IPFS這麼大。
第一,能夠爲內容創做帶來必定的自由。Akasha是一個典型的應用,它是一個基於以太坊和IPFS的社交博客創做平臺,用戶創做的博客內容經過一個IPFS網絡進行發佈,而非中心服務器。同時,用戶和以太坊錢包帳戶進行綁定,用戶能夠對優質內容進行ETH打賞,內容創做者能以此賺取ETH,如同人腦挖礦同樣。它沒有太多監管的限制,也沒有中間商抽成,內容收益直接歸創做者全部。
第二,能夠下降存儲和帶寬成本。我以前也舉過愛奇藝的例子,而作視頻比較成功的項目叫「Dtube」。它是一個搭建在Steemit上的去中心化視頻播放平臺,其用戶上傳的視頻文件都通過IPFS協議進行存儲,具備惟一標識。相較於傳統視頻網站,它下降了同資源冗餘程度,同時大大節約了海量用戶在播放視頻時所產生的帶寬成本。
第三個,能夠與區塊鏈完美結合。區塊鏈的本質是分佈式帳本,自己的瓶頸之一就是帳本的存儲能力,目前大部分公鏈的最大問題是無法存儲大量的超媒體數據在本身的鏈上。比特幣至今所有的區塊數據也才30-40G左右,以太坊這樣可編程的區塊鏈項目也只能執行和存儲小段合約代碼,DApp想發展成超級App,受到了極大的限制。
運用IPFS技術解決存儲瓶頸是目前來看的過渡方案,最典型的應用就是EOS。EOS引覺得傲的是能夠支持百萬級別TPS的併發量,其中除了DPOS共識機制的功勞以外,還歸功於其底層存儲設計是採起IPFS來解決大型數據的傳輸效率。
EOS將本身打包好的區塊數據經過IPLD進行異構處理,統一成一種便於內容尋址的數據結構類型,並掛載到IPFS的link上,讓IPFS網絡承擔存儲和P2P檢索的邏輯,而不消耗EOS區塊鏈系統自己太多的計算資源。
第四,能夠爲傳統應用提供分佈式緩存方案。 IPFS-GEO 是我本身以前寫的,它是一個爲傳統LBS應用提供分佈式緩存的項目,能夠將地理位置座標數據經過GeoHash算法轉化成一維字符串,並將與之相關聯的具備檢索價值的數據存入IPFS網絡,由IPFS網絡標識惟一性,並分佈在各個鄰近節點上。
當檢索請求到來時,系統先經過字符串近似度範圍比較,縮小檢索範圍,加快檢索效率,經過NodeID從附近節點拿到超媒體數據,達到相似分佈式緩存的效果,大大提升了LBS應用整個檢索動做的效率。
OpenBazaar是IPFS上的一個明星應用,我給它取了一箇中文名叫開放集市,前一段時間剛拿到比特大陸500萬美圓的投資。
在以前的1.0版本,OpenBazaar被稱之爲黑市,那時沒有應用IPFS,利用ZeroMQ來實現P2P交易,必定程度也繞過了中心化的檢查,把交易的手續費做爲紅利給到用戶。同時它整合了比特幣做爲支付渠道,轟動一時,用戶數量在短期內迅速提高。
開放集市在2.0版本發佈以後,考慮到法律等因素,官方加入了一層審查機制,同時支持了比特幣以外的BCH等數字貨幣,而且整合和重構IPFS,取代了以前的ZeroMQ。
如今,衆多開放集市上的商店在沒有用戶上線的狀況下,也能夠在主機上就被運行。之前必須同時登錄才能夠交易,如今利用IPFS至關於實現了離線店鋪。這同時意味着,訪問你的店鋪的人越多,店鋪數據被複制越多,有利於優質的店鋪宣傳和推廣,這是必定意義上的價值迴歸。
我把它稱爲明星項目,不光由於它是基於IPFS並且作得不錯,還由於它對IPFS所有的重構,它把IPFS全部的源碼、協議和各類配套設施都從新開,不只重構了IPFS的分支,改了協議名,同時也更改了協議頭,必定意義上把OB的網絡和主的IPFS網絡隔離開。
OpenBazaar但願有更集中化的控制,想創建本身的礦場和機房來保證服務的穩定,在去中心和中心化之間選擇了一箇中間點。我以爲目前大部分的傳統應用和公司,也能夠這樣去考慮。徹底去中心化不太可能,因此能夠取其精華、去其糟粕。
[ 【董天一】什麼是IPFS?(一)]()
圓方圓學院聚集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。
公開課地址:https://ke.qq.com/course/345101