本文详细地阐述了整个过程,同时也介绍了使用Crust以更去中心化的方式来部署网站的方法。
Crust 提供了 Web3 生态系统的去中心化存储网络,支持包括 IPFS 在内的多种存储层协议,并对应用层提供接口。Crust 的技术栈还能够支持去中心化计算层。Crust 旨在构建一个重视数据隐私和所有权的分布式云生态系统。
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:构建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管道。
Uniswap使用Crust Network作为其Pin服务之一,将部署去中心化。每当Uniswap前端更新时,相应的部署工作流程将会被自动执行,同时触发Crust IPFS Pin Actions。
Crust IPFS Pin Action会帮助调用者在Crust Network上生成存储订单(一个包含网站BuildFolder的IPFS 文件ID的链上订单)。完成此操作后,网站的build folder将会通过Crust Network的存储节点进行存储和分发。下订单的过程和文件分发过程均是去中心化的。
生成存储订单后,可以在链上查看到包括文件状态和副本数量等信息,并可以通过Crust Apps进行查看。
从上图可以看出,Uniswap页面文件
(具有CID QmbvfctPrBHtSBrvBY8ENRbkaFzeJt2rP7gu6cTdBKJNVe
)Pin在Crust网络中的122个节点上。
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劫持。
本文的相关关键词可在下文链接中查阅。
IPFS 参考资料
https://docs.ipfs.io/concepts/what-is-ipfs/#decentralization
https://docs.ipfs.io/concepts/persistence/#pinning-in-context
https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/#domain-name-service-dns
Crust 参考资料
Crust 提供了 Web3 生态系统的去中心化存储网络。
https://github.com/crustio/crust.js/tree/main/packages/crust-pin
https://github.com/crustio/ipfs-crust-action
https://github.com/crustio/ipfs-upload-action
https://github.com/crustio/ipfs-crust-pinner
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 相关:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!