用於去中心化使用者介面的 IPFS
你寫了一個超棒的全新去中心化應用程式 (dapp)。你甚至為它寫了一個使用者介面。但現在你擔心有人會試圖審查它,方法是關閉你的使用者介面(它只不過是雲端中的一台伺服器)。在本教學中,你將學習如何透過將使用者介面放上**星際檔案系統 (IPFS) (opens in a new tab)** 來避免審查,這樣任何有興趣的人都能將其固定 (pin) 在伺服器上,以便未來存取。
你可以使用像 Fleek (opens in a new tab) 這樣的第三方服務來完成所有工作。本教學是為那些想要深入了解自己在做什麼的人準備的,即使這需要花費更多心力。
在本機開始
有許多第三方 IPFS 供應商 (opens in a new tab),但最好先從在本機執行 IPFS 進行測試開始。
-
建立一個包含你網站的目錄。如果你使用的是 Vite (opens in a new tab),請使用此指令:
pnpm vite build -
在 IPFS Desktop 中,點擊 Import > Folder(匯入 > 資料夾),然後選擇你在上一個步驟中建立的目錄。
-
選擇你剛剛上傳的資料夾,然後點擊 Rename(重新命名)。給它一個更有意義的名稱。
-
再次選擇它並點擊 Share link(分享連結)。將 URL 複製到剪貼簿。該連結會類似於
https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ。 -
點擊 Status(狀態)。展開 Advanced(進階)分頁以查看閘道地址。例如,在我的系統上,地址是
http://127.0.0.1:8080。 -
將連結步驟中的路徑與閘道地址結合,以找到你的地址。例如,對於上面的範例,URL 是
http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ。在瀏覽器中開啟該 URL 以查看你的網站。
上傳
現在你可以使用 IPFS 在本機提供檔案,但這並不怎麼令人興奮。下一步是讓這些檔案在你離線時也能供全世界存取。
有許多知名的固定服務 (pinning services) (opens in a new tab)。選擇其中一個。無論你使用哪種服務,你都需要建立一個帳戶,並向其提供 IPFS Desktop 中的內容識別碼 (CID)。
就我個人而言,我發現 4EVERLAND (opens in a new tab) 是最容易使用的。以下是它的使用說明:
-
瀏覽至儀表板 (opens in a new tab)並使用你的錢包登入。
-
在左側側邊欄中點擊 Storage > 4EVER Pin。
-
點擊 Upload > Selected CID。為你的內容命名,並提供來自 IPFS Desktop 的 CID。目前,CID 是一個以
Qm開頭的字串,後面跟著 44 個字母和數字,代表一個以 base-58 編碼 (opens in a new tab)的雜湊,例如QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ,但這很可能會改變 (opens in a new tab)。 -
初始狀態為 Queued(排隊中)。重新載入頁面,直到狀態變為 Pinned(已固定)。
-
點擊你的 CID 以取得連結。你可以在此處 (opens in a new tab)查看我的應用程式。
-
你可能需要啟用你的帳戶,才能將其固定超過一個月。帳戶啟用費用約為 1 美元。如果你關閉了提示,請登出再重新登入,系統會再次要求你啟用。
從 IPFS 使用
此時,你有一個連結指向提供你 IPFS 內容的中心化閘道。簡而言之,你的使用者介面可能稍微安全了一些,但它仍然不具備抗審查能力。為了實現真正的抗審查,使用者需要直接從瀏覽器 (opens in a new tab)使用 IPFS。
一旦你安裝了它(並且桌面版 IPFS 正常運作),你可以在任何網站上前往 /ipfs/<CID> (opens in a new tab),你將以去中心化的方式取得該內容。
缺點
你無法可靠地刪除 IPFS 檔案,因此只要你還在修改使用者介面,最好還是讓它保持中心化,或者使用星際名稱系統 (IPNS) (opens in a new tab),這是一個在 IPFS 之上提供可變性的系統。當然,任何可變的東西都可能被審查,在 IPNS 的情況下,可以透過向持有對應私鑰的人施壓來達成。
此外,某些套件在 IPFS 上會有問題,因此如果你的網站非常複雜,這可能不是一個好解決方案。當然,任何依賴伺服器整合的東西,都無法僅僅透過將用戶端放在 IPFS 上來實現去中心化。
透過 ENS 的可發現性
如果你將一個 ENS 名稱(例如 vitalik.eth)指向你的網站,它將被視為一個完全去中心化的網頁,並會被 dweb3.wtf (opens in a new tab) 服務自動固定,同時也能透過 web3compass.net (opens in a new tab) 搜尋引擎進行搜尋,就像 DuckDuckGo、Brave Search 或 Google 對傳統網路所做的那樣。
結論
就像以太坊讓你能夠將 dapp 的資料庫和業務邏輯方面去中心化一樣,IPFS 讓你能夠將使用者介面去中心化。這讓你能夠關閉另一個針對你 dapp 的攻擊向量。