Flowchain 挖礦指南 #1:認識 IPFS

本系列文章的目標:實現 IPFS + HLS + FFmpeg + Flowchain 的直播(Live)系統

IPFS 社群的願景之一,就是期待 IPFS 能完全取代 HTTP。做為全球資訊網(World Wide Web — WWW)通訊協定教主的 HTTP 如果有朝一日,真的被 IPFS 擠下這個教主的寶座,最大的受益者,當然就是身為網路使用者的我們(為什麼?)。

IPFS 首頁直白地定義了它的用途「Distributed Web(分散式全球資源網)」。下圖很清楚描繪出 Distributed Web 的網路拓撲邏輯。

Source: https://www.unleashgroup.io/news/technology-people-analysts-need

WWW 本身就是一個大型的分散式系統(Distributed System),這個龐大的分散式系統由千百萬計的 Clients 與 Servers 所共同組成,並以文件做為基礎(Document-based)來交換資訊,每個文件都以專屬的 URL(Uniform Resource Locator)來索引;HTTP 就是這個龐大系統的通訊協定。

分散式系統又可以分為垂直分散(Vertical Distribution)與水平分散(Horizontal Distribution)二種做法(Andrew S. Tanenbaum, 2002);早已融入我們日常生活的「WWW + HTTP」就是屬於水平式分散式系統。

水平式分散式系統再分為 2 種架構,第一種架構只讓 Servers 間複製(Replication)與同步資料,這種架構就是知名的 Client-Server 架構。第二種架構就是讓 Client 也分散化,讓 Client 也複製並同步資料,這種架構就是 Peer-to-Peer。

WWW + IPFS 同樣是水平式分散式系統,但有別於 WWW + HTTP 的 Client-Server 架構,其採用的就是 Peer-to-Peer 架構。下圖很清楚地區分 HTTP 與 IPFS 的技術差異。

HTTP vs. IPFS [Source: https://www.maxcdn.com/one/visual-glossary/interplanetary-file-system/]

HTTP 讓 Client 端都向 Server 請求文件,IPFS 則是讓 Client 直接向「臨近」的 Client 請求文件;更進一步來說,因為 Client 也能保存文件並提供文件,因此就不需要 Server 了。

Flowchain 最想做的事情,就是實現 Peer-to-Peer 架構的區塊鏈網路,因此底層結合 IPFS 是很自然不過的選擇。在第二篇文章中,將說明「Flowchain/IPFS 是什麼?」並且在第三與第四篇文章中,將結合 IPFS、HLS 與 FFmpeg 實現一個「視訊直播」的系統。