開發指南:在 Crust 上部署去中心化網頁 /DApp

“Crust 提供了 Web3 生態系統的去中心化存儲網絡,支持包括 IPFS 在內的多種存儲層協議,並對應用層提供接口。Crust 的技術棧還能夠支持去中心化計算層。Crust 旨在構建一個重視數據隱私和所有權的分佈式雲生態系統。”

開發指南:在 Crust 上部署去中心化網頁 /DApp

1

開發指南:在 Crust 上部署去中心化網頁 /DApp

2

Uniswap 在其自動化部署的代碼中集成了 Crust 網絡的存儲功能。Crust 已經爲 Uniswap 網頁 (app.uniswap.org) 提供了 100 多個 IPFS 文件副本。也就是說,當用戶訪問 Uniswap 時,頁面將從數以百計的 Crust 網絡的節點處獲得。

參見:

https://github.com/Uniswap/uniswap-interface/pull/1342

此外,PolkaApps 也已合併代碼,將其前端頁面部署在 Crust 網絡中,實現真正的去中心化網頁部署。

參見:

https://github.com/polkadot-js/apps/pull/4933

同時,Crust 技術社區貢獻了開源 CI flow,支持在 Crust 網絡中去中心化地部署網站和 DApp。

更多技術詳情可加入 Crust Discord 羣組:https://discord.gg/UtbAuQt

在 IPFS 上搭建網站 / DApp 擁有衆多好處,例如無服務器架構、對 DNS 劫持有潛在抵禦能力(在使用 IPNS / ENS 技術時)以及可以確保網站的可靠性。Uniswap 作爲目前最廣爲人知的去中心化交易所之一,已經與 IPFS 合作集成長達一年,同時他們也在自己的博客中介紹了 IPFS 的集成信息。

本文詳細地闡述了整個過程,同時也介紹了使用 Crust 以更去中心化的方式來部署網站的方法。

1.在 IPFS 上管理 Uniswap

**

**

步驟 1:構建 Uniswap 網站

Uniswap 構建網站,最新版本的 Uniswap 的所有內容都會包含在一個 Build Folder 中。

步驟 2:上傳網站至 IPFS

通過 Pinata (一種 IPFS 生態的存儲服務,又叫 Pin 服務),Uniswap 上傳 Build Folder 到 IPFS 網絡,上傳後,任何人都可以通過 IPFS 網絡檢索到這個 BuildFolder。

**
**

步驟 3:在 IPFS 上 Pin 住

Uniswap 前端與 IPFS Pin 服務集成。目前集成的 Pin 服務包含:pinata.cloud 和 Crust Network,確保了 Build Folder 擴散在整個網絡中。

步驟 4:更新 DNS 記錄

Uniswap 前端的 DNS 配置,使網站能通過可讀的 URL app.uniswap.org 進行訪問。DNS 記錄配置如下:

● app.uniswap.org 的 CNAME 記錄,配置爲 cloudflare-ipfs.com

●_dnslink.app.uniswap.org 的 TXT 記錄,配置爲 dnslink=/ipfs/QmRELxvJy8rNA5EoCpYQkWKzxi5y1zCMmcM4UveBaNGuLo

在撰寫本文時,Uniswap 前端的 Content ID 爲 QmRELxvJy8rNA5EoCpYQkWKzxi5y1zCMmcM4UveBaNGuLo, 一旦 Uniswap 前端更新,該 ID 可能發生變化。

持續集成及部署 CICD

Uniswap 將上述步驟集成到 GitHub Actions 中,建立了自動化的 CI/CD 管道。

2.去中心化的 Uniswap 前端部署

Uniswap 使用 Crust Network 作爲其 Pin 服務之一,將部署去中心化。每當 Uniswap 前端更新時,相應的部署工作流程將會被自動執行,同時觸發 Crust IPFS Pin Actions。

Crust IPFS Pin Action 會幫助調用者在 Crust Network 上生成存儲訂單(一個包含網站 BuildFolder 的 IPFS 文件 ID 的鏈上訂單)。完成此操作後,網站的 build folder 將會通過 Crust Network 的存儲節點進行存儲和分發。下訂單的過程和文件分發過程均是去中心化的。

生成存儲訂單後,可以在鏈上查看到包括文件狀態和副本數量等信息,並可以通過 Crust Apps 進行查看。

開發指南:在 Crust 上部署去中心化網頁 /DApp

從上圖可以看出,Uniswap 頁面文件

(具有 CID QmbvfctPrBHtSBrvBY8ENRbkaFzeJt2rP7gu6cTdBKJNVe) Pin 在 Crust 網絡中的 122 個節點上。

3.一個通用的網站 /DApp 部署流程

Crust 提供了一個通用的 Github 工作流程,開發者可以使用它來去中心化的部署網站 /DApp,詳情可參考:

IPFS Crust 工作流程固定模板:

https://github.com/crustio/ipfs-crust-pinner/blob/main/.github/workflows/template.yml

結合此工作流程,整個部署過程如下所示(以網站部署爲例):

步驟 1: 創建網站

與 Uniswap 網頁的構建步驟相同,網頁文件也需被包括在一個 Build Folder 中。

步驟 2: 上傳網站至 IPFS

操作此步驟時,將觸發 Crust IPFS Upload Action。

將網頁的 Build Folder 上傳到一個公共 IPFS 網關 -crustwebsites.net 上。

步驟 3:在 IPFS 上 Pin 住網頁文件

這個步驟將觸發 Crust IPFS Upload Action。網站 Build Folder 將被 Crust Network 的存儲節點 Pin 住和分發。

步驟 4:更新 DNS 記錄

開發者最後需要參考此文檔進行 DNS 配置更新。此外,Crust 也提供了一個標準的 Github 工作流程來幫助自動更新 Cloudflare 的 DNS 記錄。

進一步去中心化

開發人員可以集成諸如以太坊域名解析服務(ENS)之類的工具,爲其網站 /DApp 提供更安全且去中心化的服務,並有效防止被 DNS 劫持。

本文的相關關鍵詞可在下文鏈接中查閱。

4. 參考資料

IPFS 參考資料

● What is IPFS

https://docs.ipfs.io/concepts/what-is-ipfs/

● IPFS Pinning

https://docs.ipfs.io/concepts/persistence/

● DNS Link

https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/

Crust 參考資料

Crust 提供了 Web3 生態系統的去中心化存儲網絡。

● Crust Network

https://crust.network/

● Crust JS

https://github.com/crustio/crust.js/tree/main/packages/crust-pin

● Crust IPFS Action

https://github.com/crustio/ipfs-crust-action

● Crust IPFS Upload Action

https://github.com/crustio/ipfs-upload-action

● IPFS Crust Pinner

https://github.com/crustio/ipfs-crust-pinner

● A Demo of Website Hosting

https://github.com/crustio/crust-demo/tree/main/website-hosting-demo

關於 Crust Network

Crust 提供了 Web3 生態系統的去中心化存儲網絡,支持包括 IPFS 在內的多種存儲層協議,並對應用層提供接口。Crust 的技術棧還能夠支持去中心化計算層。Crust 旨在構建一個重視數據隱私和所有權的分佈式雲生態系統。

力求與 Crust 主網功能相同的 Crust Maxwell 預覽網於 2 月 4 日正式上線,集成 Crust 所有核心功能,包括代幣質押、去中心化存儲市場 DSM 及文件檢索機制等

Crust Network 先後加入 Substrate Builders Program、Web3.0 Bootcamp,以及獲得 Web3 基金會 Grant 。

Crust 相關:

Crust Network 技術白皮書 v1.9.8

Crust Network 經濟白皮書 v.1.1

Crust Network 代幣指標 & 經濟學

官網:https://crust.network/

Twitter:@CrustNetwork

Medium:https://medium.com/@crustnetwork

GitHub:https://github.com/crustio

Telegram:https://t.me/CrustNetwork

開發指南:在 Crust 上部署去中心化網頁 /DApp