大多數(shù)人熟悉的傳統(tǒng)網(wǎng)絡(luò)存在于集中式服務(wù)器上,傳統(tǒng)互聯(lián)網(wǎng)的中心化方面存在著很多潛在的問(wèn)題,服務(wù)器也很容易遭到黑客攻擊或崩潰,從而使用戶(hù)無(wú)法獲得信息和數(shù)據(jù)。IPFS是領(lǐng)先的分布式 P2P(點(diǎn)對(duì)點(diǎn))存儲(chǔ)網(wǎng)絡(luò),有可能消除與傳統(tǒng)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)相關(guān)的一些問(wèn)題。在本文中,將由鑫鏈財(cái)經(jīng)(xinchaincaijing.com)的小編分享上傳文件到ipfs分布式存儲(chǔ)服務(wù)器的方法。
什么是 IPFS(星際文件系統(tǒng))?
IPFS 或“星際文件系統(tǒng)”于 2015 年由 Protocol Labs 公司開(kāi)始開(kāi)發(fā)。IPFS 是一種去中心化協(xié)議,用于存儲(chǔ)網(wǎng)站、應(yīng)用程序和文件等數(shù)據(jù)。IPFS 的主要好處是它消除了中心化的一些問(wèn)題,例如單點(diǎn)故障和審查制度。
IPFS 能夠通過(guò)使用稱(chēng)為基于內(nèi)容的尋址的概念來(lái)實(shí)現(xiàn)去中心化存儲(chǔ)系統(tǒng)。許多其他系統(tǒng)使用基于位置的尋址,這意味著根據(jù)數(shù)據(jù)的位置找到內(nèi)容。在基于內(nèi)容的尋址中,我們根據(jù)內(nèi)容本身查找內(nèi)容。因此,我們不需要告訴我們的計(jì)算機(jī)文件所在的位置,而是可以查詢(xún)我們要查找的內(nèi)容。
該系統(tǒng)允許我們分發(fā)內(nèi)容,而不是將所有內(nèi)容集中在服務(wù)器中。因此,沒(méi)有任何一個(gè)實(shí)體可以控制數(shù)據(jù),因此不能審查內(nèi)容。通過(guò)分布式,我們還可以消除與中心化相關(guān)的單點(diǎn)故障問(wèn)題。
IPFS 是如何工作的?
IPFS是一個(gè)P2P存儲(chǔ)網(wǎng)絡(luò),其中的內(nèi)容和文件可以通過(guò)對(duì)等點(diǎn)訪問(wèn)。這些對(duì)等點(diǎn)可以位于任何地方并中繼/存儲(chǔ)信息。IPFS的一個(gè)核心方面是內(nèi)容尋址,其中文件、網(wǎng)站等是根據(jù)內(nèi)容而不是位置找到的。
但是,要了解其工作原理的來(lái)龍去脈,您需要掌握三個(gè)基本原則:
通過(guò)內(nèi)容尋址進(jìn)行識(shí)別——IPFS使用所謂的內(nèi)容尋址來(lái)查找文件、網(wǎng)站、應(yīng)用程序等。內(nèi)容是通過(guò)“其中的內(nèi)容”而不是“它所在的位置”找到的。從本質(zhì)上講,這意味著 IPFS 協(xié)議中的每一條內(nèi)容都有一個(gè) CID(內(nèi)容標(biāo)識(shí)符),它是一個(gè)哈希值。每個(gè)散列對(duì)于內(nèi)容的來(lái)源都是唯一的。
通過(guò) DAG(有向無(wú)環(huán)圖)進(jìn)行內(nèi)容鏈接——IPFS使用分布式系統(tǒng),該系統(tǒng)利用稱(chēng)為 DAG(有向無(wú)環(huán)圖)的數(shù)據(jù)結(jié)構(gòu)。更具體地說(shuō),IPFS使用 Merkle DAG,其中所有節(jié)點(diǎn)都有一個(gè)標(biāo)識(shí)符,其形式為節(jié)點(diǎn)內(nèi)容的哈希值。
此外,為了構(gòu)建用戶(hù)內(nèi)容的 Merkle DAG 表示,IPFS通常將其拆分為塊的各個(gè)部分。因此,不同的文件部分可以來(lái)自多個(gè)來(lái)源并有效地進(jìn)行身份驗(yàn)證。這類(lèi)似于使用BitTorrent,它可以同時(shí)從多個(gè)對(duì)等點(diǎn)獲取文件。
通過(guò) DHT(分布式哈希表)進(jìn)行內(nèi)容發(fā)現(xiàn)——為了找出哪些節(jié)點(diǎn)正在托管您正在查詢(xún)的內(nèi)容,IPFS使用 DHT(分布式哈希表)。哈希表是鍵到值的數(shù)據(jù)庫(kù)。因此,DHT是分布式網(wǎng)絡(luò)中跨節(jié)點(diǎn)拆分的表格,要查找內(nèi)容,您需要詢(xún)問(wèn)這些節(jié)點(diǎn)。
為什么要上傳文件到 IPFS?– IPFS 的好處
由于 IPFS 是一種去中心化的 P2P 協(xié)議,它為傳統(tǒng)的存儲(chǔ)和訪問(wèn)內(nèi)容的方式提供了幾個(gè)好處。因此,探索 IPFS 的一些主要優(yōu)勢(shì)來(lái)回答“為什么要將文件上傳到 IPFS? ”這個(gè)問(wèn)題是很有趣的?!?。
高效且便宜——在傳統(tǒng)的 HTTP 系統(tǒng)中,文件一次從一臺(tái)服務(wù)器下載。相比之下,IPFS 的 P2P 系統(tǒng)同時(shí)從多個(gè)節(jié)點(diǎn)檢索內(nèi)容。這使得系統(tǒng)更加高效,因?yàn)樗梢怨?jié)省大量帶寬。此外,效率的提高有助于降低系統(tǒng)成本。
彈性——根據(jù) IPFS 的網(wǎng)站,網(wǎng)站的平均壽命是 100 天,然后才會(huì)完全消失,IPFS 認(rèn)為系統(tǒng)不應(yīng)該那么脆弱。IPFS 通過(guò)簡(jiǎn)化創(chuàng)建用于鏡像數(shù)據(jù)的網(wǎng)絡(luò)來(lái)提供更具彈性的系統(tǒng)。此外,內(nèi)容尋址確保 IPFS 的內(nèi)容是自主版本化的。
去中心化——當(dāng)前互聯(lián)網(wǎng)的一個(gè)普遍特征和存儲(chǔ)內(nèi)容的方法是中心化。中心化使得審查信息變得容易,并產(chǎn)生單點(diǎn)故障問(wèn)題。IPFS 的去中心化特性通過(guò)提供一個(gè)扁平和開(kāi)放的網(wǎng)絡(luò)消除了這些問(wèn)題。
可用性——IPFS 有助于創(chuàng)建彈性網(wǎng)絡(luò),從而實(shí)現(xiàn)更持久的可用性。例如,這會(huì)導(dǎo)致發(fā)展中國(guó)家的連接性增加,或者僅僅是在使用糟糕的咖啡店 WiFi 時(shí)。
這涵蓋了該系統(tǒng)的一些主要優(yōu)點(diǎn)以及您應(yīng)該將文件上傳到 IPFS 的原因?,F(xiàn)在,如果您想更深入地研究 IPFS,以下部分將簡(jiǎn)要介紹 IPFS 工作原理的復(fù)雜性!
如何通過(guò)6個(gè)簡(jiǎn)單步驟上傳到 IPFS
由于 Moralis 原生支持 IPFS,因此將文件上傳到 IPFS 的過(guò)程變得相對(duì)簡(jiǎn)單。因此,我們可以只用一行代碼上傳文件。為了展示與 Moralis 合作的力量,我們將在本文中創(chuàng)建一個(gè)簡(jiǎn)單的 dApp,用戶(hù)可以在其中將NFT等文件上傳到 IPFS。
在創(chuàng)建dApp之前,我們首先需要一個(gè)Moralis帳戶(hù)。造成這種情況的眾多原因之一是我們需要初始化Moralis,為此,我們需要?jiǎng)?chuàng)建自己的服務(wù)器。因此,如果您沒(méi)有帳戶(hù),可以先注冊(cè)Moralis。擁有帳戶(hù)后,我們就可以開(kāi)始設(shè)置我們自己的Moralis服務(wù)器的第一步。
第 1 步:創(chuàng)建 Moralis 服務(wù)器
因此,該過(guò)程的第一步是創(chuàng)建 Moralis 服務(wù)器。為此,我們需要做的就是單擊 Moralis 界面右上角的“+ 創(chuàng)建新服務(wù)器”。
如果我們單擊此按鈕,將出現(xiàn)一個(gè)小的下拉菜單,其中包含三個(gè)不同的選項(xiàng)。對(duì)于本教程,選擇哪一個(gè)并不重要。但是,我們將選擇“主網(wǎng)服務(wù)器”替代方案。如果選擇了其中任何一個(gè)選項(xiàng),我們將看到一個(gè)新窗口,我們需要在其中輸入名稱(chēng)、選擇區(qū)域并選擇網(wǎng)絡(luò)。由于 Moralis 支持跨鏈兼容,我們可以選擇多個(gè)網(wǎng)絡(luò)。
完成所有選項(xiàng)后,我們可以單擊“添加實(shí)例”按鈕來(lái)啟動(dòng)實(shí)例。這可能需要一段時(shí)間,但服務(wù)器很快就會(huì)啟動(dòng)并運(yùn)行。
有了服務(wù)器,我們可以點(diǎn)擊“查看詳細(xì)信息”按鈕。這將為我們提供各種信息。從細(xì)節(jié)來(lái)看,我們主要對(duì)“Server URL”和“Application ID”感興趣。我們可以繼續(xù)復(fù)制此信息,因?yàn)槲覀儗⒃谙乱徊街惺褂盟?
第 2 步:如何上傳到 IPFS——從 Moralis 導(dǎo)入樣板代碼
一旦我們有了服務(wù)器、服務(wù)器 URL 和應(yīng)用程序 ID,我們就可以繼續(xù)創(chuàng)建應(yīng)用程序本身。在我們從 Moralis 獲取樣板代碼之前,我們需要?jiǎng)?chuàng)建一個(gè) HTML 文件。我們將該文件稱(chēng)為“ipfs.html”,但您可以隨意調(diào)用它。
準(zhǔn)備好文件后,我們可以訪問(wèn)Moralis 文檔。我們需要做的就是將代碼復(fù)制并粘貼到我們的 HTML 文件中并進(jìn)行一些調(diào)整。
代碼做的第一件事是安裝 Moralis SDK(軟件開(kāi)發(fā)工具包)。安裝 SDK 后,我們繼續(xù)編寫(xiě) HTML 代碼。最初,樣板代碼包含兩個(gè)按鈕,一個(gè)用于登錄,一個(gè)用于注銷(xiāo)。對(duì)于這個(gè)演示,我們將刪除這些并實(shí)現(xiàn)我們自己的一些字段和按鈕。
首先,我們將標(biāo)題更改為“IPFS Demo”。在此之后,我們添加一個(gè)登錄按鈕,后跟元數(shù)據(jù)名稱(chēng)的輸入字段。然后我們?yōu)樵獢?shù)據(jù)描述添加一個(gè)文本區(qū)域,后面是一個(gè)文件輸入字段。最后,我們有一個(gè)按鈕,它承載一個(gè)觸發(fā)我們功能之一的“onclick”事件。
第 3 步:如何上傳到 IPFS——?jiǎng)?chuàng)建登錄功能
現(xiàn)在,服務(wù)器啟動(dòng)并運(yùn)行并實(shí)現(xiàn)了樣板代碼,我們可以繼續(xù)創(chuàng)建 dApp 的第一個(gè)功能。我們將開(kāi)發(fā)一個(gè)登錄功能,允許用戶(hù)通過(guò)MetaMask對(duì)自己進(jìn)行身份驗(yàn)證。
我們可以從創(chuàng)建一個(gè)稱(chēng)為“l(fā)ogin()”的異步函數(shù)開(kāi)始。再一次,我們可以從Moralis 文檔中獲取一個(gè)模板,我們可以將其復(fù)制并粘貼到我們的函數(shù)中。
默認(rèn)情況下,使用 Moralis 對(duì)用戶(hù)進(jìn)行身份驗(yàn)證是通過(guò) MetaMask 進(jìn)行的。因此,一旦該功能被觸發(fā),用戶(hù)的 MetaMask 擴(kuò)展程序?qū)⒋蜷_(kāi),允許他們通過(guò)錢(qián)包進(jìn)行身份驗(yàn)證。但是,也可以使用 WalletConnect 等進(jìn)行身份驗(yàn)證。
第四步:如何上傳到IPFS——上傳圖片功能
我們將繼續(xù)創(chuàng)建另一個(gè)用于將圖像上傳到 IPFS 的異步函數(shù)。我們可以將此函數(shù)稱(chēng)為“uploadImage()”,與上一個(gè)函數(shù)一樣,我們將從Moralis 文檔中獲取必要的代碼。
將文件保存到 IPFS 后,我們可以訪問(wèn)文件的 URL 及其哈希值。訪問(wèn)這兩個(gè)元素的命令在上圖中注釋掉的行中。我們可以將這些備選方案中的任何一個(gè)記錄到控制臺(tái),但這不是必需的。但是,我們要確保該函數(shù)返回“file.IPFS”,這將返回文件的 URL。
第五步:如何上傳到IPFS——上傳元數(shù)據(jù)對(duì)象函數(shù)
NFT 等代幣附有元數(shù)據(jù)是很常見(jiàn)的。因此,我們將創(chuàng)建一個(gè)將元數(shù)據(jù)對(duì)象上傳到 IPFS 的功能。在此示例中,對(duì)象的元數(shù)據(jù)將是名稱(chēng)、描述和圖像。因此,我們可以創(chuàng)建一個(gè)名為“uploadMetadata(imageURL)”的新函數(shù)。
在我們創(chuàng)建元數(shù)據(jù)對(duì)象之前,我們需要獲取名稱(chēng)、描述和用戶(hù)輸入到我們 dApp 的 UI 中的圖像。為此,我們可以創(chuàng)建一個(gè)名為“name”的變量,從中獲取 HTML 元素的信息。然后我們可以繼續(xù)為變量“description”做同樣的事情。另一方面,對(duì)于圖像,我們不會(huì)這樣做,因?yàn)槲覀儠?huì)將圖像的 URL 作為函數(shù)的參數(shù)傳遞。
第 6 步:如何上傳到 IPFS——?jiǎng)?chuàng)建一個(gè)函數(shù)來(lái)執(zhí)行代碼
“uploadMetadata()”函數(shù)中缺少一個(gè)元素,它是我們要作為函數(shù)參數(shù)傳遞的 URL。因此,為此,我們將創(chuàng)建另一個(gè)函數(shù),將 dApp 的其他函數(shù)聯(lián)系在一起。
我們將調(diào)用此函數(shù)“gogogo()”,一旦用戶(hù)點(diǎn)擊 UI 的“gogogo”按鈕,它就會(huì)觸發(fā)。
如何將文件上傳到 IPFS——總結(jié)
作為 Moralis 用戶(hù),我們可以快速輕松地構(gòu)建用于將文件上傳到 IPFS 的 dApp。我們可以這樣做,因?yàn)槲覀兛梢詮?Moralis 文檔中訪問(wèn)已經(jīng)準(zhǔn)備好的樣板代碼,并提供一個(gè)已經(jīng)管理的后端基礎(chǔ)設(shè)施。因此,我們可以按照以下六個(gè)簡(jiǎn)單步驟創(chuàng)建我們的 dApp:
1. 創(chuàng)建莫拉利斯服務(wù)器。
2. 從 Moralis 導(dǎo)入樣板代碼。
3. 創(chuàng)建一個(gè)登錄函數(shù)。
4. 創(chuàng)建用于上傳圖像的函數(shù)。
5. 創(chuàng)建用于上傳元數(shù)據(jù)對(duì)象的函數(shù)。
6. 創(chuàng)建一個(gè)函數(shù)來(lái)執(zhí)行代碼。
按照這六個(gè)步驟,我們可以創(chuàng)建這個(gè) dApp,我們可以用它在幾分鐘內(nèi)輕松地將文件上傳到 IPFS。
以上內(nèi)容介紹了把文件上傳到IPFS服務(wù)器的方法。IPFS技術(shù),在一定程度上優(yōu)于現(xiàn)在的集中式服務(wù)器,可以有效的降低數(shù)據(jù)丟失與被黑客攻擊的風(fēng)險(xiǎn)。
風(fēng)險(xiǎn)提示:本站所提供的資訊不代表任何投資暗示。投資有風(fēng)險(xiǎn),入市須謹(jǐn)慎。