摘要:區塊鏈是一個分布式系統,但包括以太坊、EOS在內的諸多公鏈本身實現的都只是數據的分布式計算,而沒有提供數據的分布式存儲,這導致分布式的區塊鏈系統無法真正徹底地做到分布式。
作者丨李畫
編輯|熊吉
區塊鏈是一個分布式系統,但包括以太坊、EOS在內的諸多公鏈本身實現的都只是數據的分布式計算,而沒有提供數據的分布式存儲,這導致分布式的區塊鏈系統無法真正徹底地做到分布式。
IPFS(Inter Planetary File System,星際文件系統)協議解決的正是這樣一個問題,它是分布式文件系統,可以實現數據的分布式存儲。同時它也是一個去中心化網絡的基礎設施,包括公鏈在內的不同類型的應用都可以構建在它的基礎之上。
如果說公鏈是高速公路,IPFS則是高速公路路面之下的層層地基中重要的一層,它為不同的公鏈和應用提供數據的分布式存儲這一支持。
IPFS并非全新發明,它是幾十年來分布式系統探索的產物,綜合了包括DHT(Distributed Hash Table),BitTorrent,Git和SFS(Self-Certified Filesystems)在內的優秀思想。IBFS對它們做出適合區塊鏈系統的改進,并通過分層設計將它們組合成一個新的系統。
本文將去繁從簡,以數據的存取過程為線索,通過對IPFS最關鍵的三個系統技術的分析,看它是如何滿足區塊鏈數據的分布式存儲需求的。
01 Merkle DAG
當把文件存儲到IPFS系統中時,文件并不是以一個完整的個體被存儲,文件數據以平均分割法的方式被切分成若干個256KB大小的塊。這些塊在經過哈希運算后,也并不是存儲在單個中心化的服務器上,而是分開存儲在網絡中的各個分布式的節點之中,沒有節點擁有特權。
這一分布式存儲的難點不在于文件的切割或加密,而在于如何把這些被分割的和被分開存儲的數據重新組合成一個文件,這正是IPFS協議的第一個關鍵技術——Merkle DAG(Merkle Directed Acyclic Graph,默克爾有向無環圖)。
Merkle DAG從Git系統(林納斯·托瓦茲創作的分布式版本控制系統)改造而來,是在Merkle Tree(如下圖所示)的基礎上構建,儲存的是哈希值。IPFS上大部分數據對象都是以Merkle DAG的結構存在。
當從網絡中獲取文件時,先從可信的節點獲得文件的Merkle Tree樹根哈希值。一旦獲得了樹根,就可以從其他不可信的節點獲取Merkle Tree的各個節點的哈希值。通過可信的樹根來檢查接收到的Merkle Tree節點,如果Merkle Tree某節點是損壞的或者虛假的,就從其他存儲節點獲得另一個Merkle Tree節點,直到最終獲得一個與可信樹根匹配的Merkle Tree。
這樣一來,從上至下,直到獲得最底層的被切割成小塊的數據的哈希,最終形成一個完整的正確的文件。
由于Merkle DAG是基于哈希值的,而哈希值取決于數據塊的內容,因此IPFS協議擁有內容尋址的功能(HTTP是基于域名尋址),此外它還有防篡改和去重復的功能。防篡改是因為可以通過檢查哈希值來確認數據是否被篡改;去重復是由于相同內容的數據塊哈希是相同的,可以去掉重復的數據,節省存儲空間。
02 DHT
依靠Merkle DAG,可以構建一個數據結構用于實現分布式的數據存儲,但還缺最后一步,Merkle DAG存儲的哈希值如何定位到具體存儲數據的節點,也就是說,應該把數據分配到哪一個網絡節點去存儲,以及去從哪一個網絡節點獲得存儲數據。DHT(Distributed Hash Table,分布式哈希表)便是用來解決這一問題的方法。
哈希表是一種存儲“鍵值對( Key/Value Pairs)”的容器,它能方便快速地通過key值來獲得 value值。在DHT中,key是被存儲數據的哈希值,通過K/V可以實現數據塊與目標節點的映射關系。
哈希表被分割成不連續的塊,每個節點被分配一個屬于自己的哈希塊,也稱做區間表,并成為這個哈希塊的管理者,當用戶存儲數據時,系統對數據進行哈希運算,根據哈希運算的結果決定此數據由哪個節點負責儲存,并生成哈希表。
當用戶提取數據的時候,用同樣的算法計算數據的哈希,然后從哈希表獲得對應的數據存儲位置(如下圖所示)。
DHT是分布式系統的關鍵技術,實現它的方法有很多種,IPFS采用的是基于S / Kademlia和Coral的算法。
03 BitSwap
僅僅實現數據的分布式存儲還遠遠不夠,數據還需要在節點之前有效的交換,從而使得整個系統能夠高效運轉。IPFS協議 受BitTorrent 的啟發,通過對等節點間交換數據塊來分發數據。
BitTorrent 是一種點對點傳輸的網絡協議,它可以在存有不信任對等節點的網絡中分發數據,對于一個文件,下載的用戶數越多,下載的速度就越快,部分的網絡擁堵或服務器宕機也不會對整個系統造成大的影響。不過BitTorrent有一個致命的缺點,就是節點往往更多的是索取而不是貢獻。
如何激勵節點分享數據?IPFS在BitTorrent的基礎上進行了創新,增加了包括信用、策略、帳單在內的體系,這一體系之上的新的數據交換協議被稱做BitSwap。
在BitSwap協議下,發送數據給其他節點可以增加節點信用值,而從其他節點接受數據則會降低節點信用值。
也就是說,如果一個節點持續分享數據,其他節點給它發送數據的概率就會越來越大;而如果一個節點只接收數據而不分享數據,其他節點給它發送數據的概率就會越來越低,直到低到被其他節點忽略(如下圖所示)。
此外,BitSwap獲取數據塊的時候不限于從同一組對等節點中,在該協議里存在一個對等節點形成的大集群,它包括所有的數據塊,這使得BitSwap的效率相比于BitTorrent更高。
04 結語
Juan Benet在2014年5月成立了Protocol Labs協議實驗室,并在2015年1月發布了IPFS。IPFS在本質上是一個內容尋址的分布式存儲和傳輸協議。
IPFS被寄予厚望,它是目前階段最好的分布式存儲解決方案之一,人們甚至認為它可能取代超文本傳輸協議(HTTP,HyperText Transfer Protocol)。但另一方面,它在目前階段還不夠成熟,仍面臨著包括安全性、可用性在內的諸多問題。
最后,簡單介紹一下Filecoin和Filenet。
Filecoin和Filenet都是運行在IPFS上的激勵層,通過Token激勵讓節點有動力為網絡提供存儲空間,從而在IPFS協議的基礎上構建一個分布式的存儲網絡。但Filecoin和Filenet彼此獨立,是兩個不同的項目,采用的也是不同的Token分發模式。從某種角度而言,任何組織都可以在IPFS上搭建自己的激勵層。
【本文為投資家網原創文章,轉載或內容合作請聯系投資家網,違規轉載,法律必究。】
媒體一致認為,Consensus2024在區塊鏈和加密領域具有廣泛的影響力,是TRON展示其比較新進...
2024年11月6日,歐瑞澤公布2024年前三季度業績,資產管理業務持續增長,退出規模加速,契合集團...
11月8日早上,廣東晶科電子股份有限公司(下稱“晶科電子”),股票代碼2551.HK,以每股定價3....
11月2日上午嘉桐科技創新(深圳)有限公司啟動赴美納斯達克上市的啟動儀式,暨與世界上市聯合會戰略合作...
這款新近實現“展品變商品”的明星產品俗稱“腦起搏器”,可用于治療帕金森病,未來將為國內帕金森患者提供...
作為本次研討會“戰略合作伙伴”和中國白酒風味研究領域的引領企業,五糧液深度參與此次風味科學領域盛會,...
五糧液作為進博會“核心支持企業”及虹橋國際經濟論壇“鉆石會員”,連續七年深度參與進博會,旨在向世界展...
投資家網(m.51baobao.cn)是國內領先的資本與產業創新綜合服務平臺。為活躍于中國市場的VC/PE、上市公司、創業企業、地方政府等提供專業的第三方信息服務,包括行業媒體、智庫服務、會議服務及生態服務。長按右側二維碼添加"投資哥"可與小編深入交流,并可加入微信群參與官方活動,趕快行動吧。