IPFS 網絡如何保存文件

FledgeXu
·
·
IPFS
·

因為我經常寫一些和IPFS 相關的文章,我發現不了解IPFS 的普通人經常問的一個問題是:「是不是我只要把文件上傳到IPFS 上,這個文件就能分佈式保存、永不消失了?」。這個是個不易回答的問題,因為正確的答案是:「是也不是」。為了解釋這個答案,我們需要了解一下IPFS 網絡是如何運作的。

假設下圖是IPFS 網絡。

在IPFS 網絡中有三種操作:Add(添加)、Get(獲取)以及Pin(固定)。

假設我們使用Add 操作,將一個文件添加到IPFS 網絡中之後,IPFS 網絡會變成下面的樣子。 (我們用綠色來表示,一個IPFS 節點裡有文件的緩存)

這個時候你只是將文件添加進了IPFS 的緩存之中,當緩存滿了以後,IPFS 會觸發所謂的「GC(垃圾回收)」將多餘的沒有被「固定」的文件刪除。所以如果你只是添加了文件沒有固定文件而且還沒有向別人分享文件的話,在觸發垃圾回收之後,IPFS 網絡又會變成空的狀態了。

當然你也可以選擇固定你緩存中的文件。固定完成之後,就不會被垃圾回收所刪除了。 (我們用藍色來表示,IPFS 節點固定了某個文件)

這時候你就會問,那麼這樣不還是只有本地保存了文件,說好的分佈式保存呢?對,確實沒錯。如果你想要IPFS 的分佈式發揮它的能力,你得分享你的文件。

當你分享了文件之後,有一部分人獲取了這個文件之後IPFS 網絡的樣子。

當然這些人中,可能會有人覺得這個文件對他也很重要,他也選擇了固定這個文件。

因為IPFS 網絡每個節點只要有緩存就可以幫助分發一個文件(實際上情況下,你的緩存裡有這個文件的碎片就可以幫助分發,不一定需要完整的文件,因為不同文件可能會有相同的分塊,這樣可以加速整個網絡和節約儲存空間)。假設我們遇見一個情況,我們上傳且分享了一個文件,但是一個不小心,弄丟了本地的IPFS緩存。也就是像這樣。

但是因為這時IPFS 網絡中有其他的節點幫助你保存了這個文件,你仍舊可以重新獲得這個文件。

當然在這種情況下,即使文件最初的發布者不再擁有這個文件了,想要獲取這個文件的人,也可以從其他節點那裡獲取到這個文件。 (我們假設左上角的節點為最初的發布者)。


原文鏈接

CC BY-NC-ND 2.0 授權

喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!