如何使用 IPFS 在區塊鏈上存儲文件?
在本系列中,我們將討論在區塊鏈上存儲文件文檔的鏈上和鏈下方法。
稍后,我們將學習如何使用由Moralis[1]和Infura IPFS[2]提供支持的星際文件系統 (IPFS) 網絡在鏈下存儲圖像、PDF 或任何其他數字資產等文件。
在本教程系列結束時,您將能夠在 IPFS 網絡上存儲和訪問文件。
區塊鏈作為數據庫
作為數據庫,區塊鏈是一個不可變的數字交易賬本,分布在多個計算機網絡上。它使我們能夠存儲數據,即NFT 元數據[3](包括文件),并以與任何其他數據庫相同的方式檢索它們。
在區塊鏈上存儲文件(鏈上)
鏈上是指直接在區塊鏈上發生的經過驗證的活動或交易。在這種情況下,將文件直接上傳到區塊鏈也是一種鏈上活動。
但是,我們應該直接在鏈上存儲文件嗎?將文件保存在鏈上是個好主意嗎?區塊鏈存儲成本是多少?
在區塊鏈上存儲文件的成本(鏈上)
在區塊鏈上存儲大文件的成本可能非常昂貴。根據 IBM第 9 頁[4]的“區塊鏈技術的存儲需求 - 觀點文檔” ,1GB 的存儲在區塊鏈上的成本約為 100 美元,比傳統存儲貴 500 倍。
區塊鏈(On-Chain)文件存儲性能
除了昂貴之外,在區塊鏈上存儲大量文件會增加文件的訪問延遲[5](增加從區塊鏈上傳/下載文件所需的時間)。
文件存儲需要低延遲才能快速訪問。但是,當文件過重導致延遲增加時,這可能會降低區塊鏈系統的性能,并使維護變得非常困難。
不建議將文件、合同、文檔、PDF 和個人信息等非交易數據直接存儲在區塊鏈上,但您應該考慮將它們存儲在鏈下。
將文件存儲在區塊鏈之外(鏈下)
術語“鏈下”是指發生在區塊鏈之外的活動或交易。在這種情況下,鏈下資產是不直接上傳到區塊鏈上的文件。
由于不建議存儲非交易數據,因此文件被上傳到另一個服務器或數據庫(IPFS、MongoDB、Oracle 等),為上傳的文件生成的 HashID 將作為元數據存儲在區塊鏈上。
什么是 IPFS?
Web3 數據庫
星際文件系統(IPFS)是一個去中心化的存儲系統。一種協議和點對點 (p2p) 網絡,用于在區塊鏈等分布式文件系統中存儲、訪問和共享數據。
IPFS 基于基于內容的身份 (CID) 或基于內容的尋址,其創建速度比保存文件的傳統基于位置的尋址方法更快。
什么是基于位置的尋址?
HTTP:“哪里”是你想要的內容?♂?
基于位置的尋址是訪問 Internet 上的照片、音樂和文件等內容的傳統方法,它需要通過提供內容的絕對路徑或地址來指定內容的托管位置,如下所示:
基于位置的尋址的局限性在于它使用集中式服務器,如果托管它們的服務器出現故障,則內容將不可用。
在 Twitter 和 Facebook 等集中式服務器中,它們獨立控制用戶保存的內容的傳遞方式(即 URL),您只能通過 Twitter URL 而不是 Facebook URL 訪問 Twitter 個人資料圖像。
什么是基于內容的尋址?
IPFS:你想要“什么”內容
在基于內容的尋址或內容尋址存儲 (CAS) 中,每個上傳的內容都有自己的唯一標識符,稱為Hash,可以將其與指紋進行比較,并且沒有兩個內容可以共享相同的哈希。
照片、音樂和文件等內容可以通過其唯一的 IPFS 哈希而不是它們的位置來訪問。
任何上傳到 IPFS 的內容都可以通過支持的 IPFS 公共網關訪問。例如,當通過 Moralis IPFS 上傳文件時,我們可以使用 Infura IPFS URL 訪問文件。
上傳的內容存儲在一個 IPFS 對象中,該對象是一個具有兩個字段的數據結構,一個數據可以容納最多 256 KB 的 blob 數據,另一個是links,它是指向其他 IPFS 對象的鏈接數組。
/* IPFS Object Example */
{
Data: "",
Links: [
{
Name: “”,
Hash: “”,
Size: 256000
}
]
}
當內容大小超過 256kb 時,IPFS 會自動將其分解為多個對象并創建一個空 IPFS 以將所有哈希鏈接在一起。
存儲在 IPFS 上的內容不能像在區塊鏈上那樣更改。相反,IPFS 支持您的內容的版本控制,稱為 IPFS 提交對象,它連接到以前的版本對象。
IPFS 最初由 Protocol Labs 的創始人 Juan Benet 于 2015 年 2 月創建。
IPFS 數據存儲在哪里?
緩存文件夾
存儲在 IPFS 上的數據保存在本地計算機的緩存文件夾中,并提供給通過 IPFS 網關請求它的其他人。數據也緩存在新用戶的計算機上。
緩存的數據在垃圾收集期間被丟棄,這可能導致數據丟失。為了將您的數據永久保存在 IPFS 上,您需要將其固定到 IPFS 網絡之一。
IPFS 的優勢是什么?
1. 快速記錄檢索。
2. 它適用于所有技術。
3. 只能存儲單個內容實例(不能重復)。
4. 上傳的內容具有唯一標識符是真實的。
5. 上傳的內容不能更改。
IPFS 和 HTTP 存儲之間的區別
IPFS(基于內容的尋址)HTTP(基于位置的尋址)它基于分散的服務器它基于一個集中的源服務器它利用內容尋址它利用位置尋址具有相同內容的所有對象只存儲一次所有具有相同內容的對象都可以存儲多次文件在多個節點之間共享并且始終可以訪問服務器關閉時無法訪問文件它有很大的市場它的市場低不可變(版本控制)可變的。
總結
星際文件系統(IPFS)是一種可靠的去中心化存儲系統。它也被廣泛認為是文件存儲的未來。
在本文中,我們了解了 HTTP 和 IPFS 存儲之間的區別,以及在區塊鏈上存儲文件的鏈上和鏈下(IPFS)方法。
引用鏈接
[1] Moralis: https://moralis.io/
[2] Infura IPFS: https://infura.io/
[3] NFT 元數據: https://docs.opensea.io/docs/metadata-standards
[4] 根據 IBM第 9 頁: https://www.ibm.com/downloads/cas/LA8XBQGR
[5] 訪問延遲: https://www.igi-global.com/dictionary/access-latency/267