如何使用IPFS+ENS托管您的Dapp并通过EthDNS访问它

以下内容由以太坊技术工程师发表在Medium上,星通科技翻译并编辑整理。

人们常常问我ENS是否可以指向一个IP地址来托管一个网站yourname.eth。我通常建议将您的网站上传到分布式内容系统,如IPFS或Swarm,并通过ENS提供。



我自己从未这样做过,所以我将ENSManager复制到IPFS中,设置ensmanager.matoken.eth为解决它,并通过一个名为EthDNS的鲜为人知的ENS gem在http://ensmanager.matoken.eth.link下提供服务。

第1步:更改您的应用

我们的应用程序基于create-react-app。除了大量使用GraphQL之外,我认为它是一个非常标准的React应用程序。我们不使用任何Dapp框架(例如Embark或Truffle),因为前端应用程序通过npm包导入所有智能合约ABI。

您需要做的唯一重大改变是更改路由BrowserRouter,HashRouter以便URL变为/#/name/matoken.eth而不是/name/matoken.eth。此更改不仅适用于通过IPFS服务,也适用于任何托管环境,在该环境中,您无法设置动态路由规则以将任何URL重定向到具有路由的SPA(单页面应用程序)。



完成更改后,请确保应用程序通过运行yarn start或运行npm run start。如果您的应用程序没有损坏,那么您可以像任何其他项目一样运行构建脚本。

$npm run build

>ens-app@1.0.0build/Users/makoto/work/ens/ens-app>CI=false react-scripts build

我经常做的一件事是尝试在构建反应项目之外提供构建的资产文件,以确保它有效。最简单的检查方法是通过python的内置http服务器提供服务。

$cd build$python-m SimpleHTTPServer

如果您的应用程序正在运行,那么它应该已准备好发布到IPFS。

第2步:将构建文件发布到IPFS

我没有详细介绍如何设置和运行IPFS守护进程,完成所有设置后,将刚刚编译的目录添加到IPFS中。

$cd..$ipfsadd-rbuildadded QmRmZbHSSidZUNFjrBnKcp9JSxv9yx9abGtgbxEo1rbZLb build/200.html....addedQmTDm1Eefrow9dYUtQXm2dsnMjx2eoUv5EwXtxnbcsTNxmbuild/static/media/yellowwarning.3bb0411e.svgaddedQma2DREgySELRPVtGsHwi519aYX51Mk6i57Sfc2ZkzJjWBbuild/static/jsaddedQmcyit4och1e1mDw66vuwLwuNNayWqDK3XS7phecojiRu5build/staticaddedQmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrzbuild12.74MiB/12.74MiB [===========================================================================================================================================================================]

100.00%

最后一个哈希

QmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrz是项目的根哈希,让我们确保它包含所有文件。

$ipfslsQmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrzQmRmZbHSSidZUNFjrBnKcp9JSxv9yx9abGtgbxEo1rbZLb2529200.htmlQmaSibqpd8RVpMXUdaDnseGeRWh6DYqzS4KjvttQCHdUZh14160android-chrome-144x144.pngQmcvAhioQFMEpZGd1Zhk7NYJbDkehtNnNubX76CYsaSooK7372apple-touch-icon.png

...

QmTuM7NhF7XVJvtBK74x6wKTVsLe5u5X4Dmtpd4HrnHhFb291site.webmanifestQmcyit4och1e1mDw66vuwLwuNNayWqDK3XS7phecojiRu5-static/

第3步:将contenthash设置为ENS

如果此时您没有ENS名称,现在注册一个。只需转到ENS管理器注册新名称,设置公共解析器,然后通过选择“内容”记录类型将IPFS添加到您的ENS记录中。



设置后,它应显示指向IPFS网关地址的链接。



点击链接和... tada!它显示了我们的ENS管理应用程序。



第4步:通过EthDNS访问它

如果您通过ENS contenthash支持的浏览器/钱包(例如Status.im、Opera浏览器或带有Metamask的浏览器)打开它,您应该能够看到相同的内容ensmanager.matoken.eth 。但是,您不能指望所有的朋友和家人都可以通过ENS支持的浏览器看到您的内容,这就是EthDNS的用武之地。



EthDNS是由Jim McDonald开发的一个项目,得益于Protocol Labs的开发许可。它是coreDNS服务器的一个分支,它连接到ENS以检查给定ENS名称的ENS记录中是否有contenthash记录,然后通过IPFS网关提供内容。

ENS团队获得了eth.link域并将其DNS名称服务器指向EthDNS服务器。作为Dapp开发人员,您无需进行任何设置。您需要做的(作为用户)是.link在浏览器中附到您的ENS名称(例如http://ensmanager.matoken.eth.link)。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();