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

[复制链接]
9970 |0
发表于 2019-6-29 12:00:48 | 显示全部楼层 |阅读模式



介绍
人们常常问我ENS是否可以指向一个IP地址来托管一个网站yourname.eth。我通常建议将您的网站上传到分布式内容系统,如IPFS或Swarm,并通过ENS提供。(本文由IPFS中国社区编译)
我自己从未这样做过,所以我将ENS经理复制到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
> [email protected] build /Users/makoto/work/ens/ens-app
> CI=false react-scripts build
我经常做的一件事是尝试在build您的反应项目之外提供构建的资产文件,以确保它有效。最简单的检查方法是通过python的内置http服务器提供服务
$cd build
$python -m SimpleHTTPServer
如果您的应用程序正在运行,那么它应该已准备好发布到IPFS。
第2步:将构建文件发布到IPFS
我没有详细介绍如何设置和运行ipfs守护进程(但它应该只是一个问题ipfs daemon)。
完成所有设置后,将build刚刚编译的目录添加到IPFS中。
$cd ..
$ipfs add -r build
added QmRmZbHSSidZUNFjrBnKcp9JSxv9yx9abGtgbxEo1rbZLb build/200.html
....
added QmTDm1Eefrow9dYUtQXm2dsnMjx2eoUv5EwXtxnbcsTNxm build/static/media/yellowwarning.3bb0411e.svg
added Qma2DREgySELRPVtGsHwi519aYX51Mk6i57Sfc2ZkzJjWB build/static/js
added Qmcyit4och1e1mDw66vuwLwuNNayWqDK3XS7phecojiRu5 build/static
added QmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrz build
12.74 MiB / 12.74 MiB [===========================================================================================================================================================================] 100.00%
最后一个哈希QmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrz是项目的根哈希。让我们确保它包含所有文件。
$ipfs ls QmSGKPTuRdhsvQmz2KFMgsNfBFaoxP6QTBVzAFKNuCJKrz
QmRmZbHSSidZUNFjrBnKcp9JSxv9yx9abGtgbxEo1rbZLb 2529 200.html
QmaSibqpd8RVpMXUdaDnseGeRWh6DYqzS4KjvttQCHdUZh 14160 android-chrome-144x144.png
QmcvAhioQFMEpZGd1Zhk7NYJbDkehtNnNubX76CYsaSooK 7372 apple-touch-icon.png
...
QmTuM7NhF7XVJvtBK74x6wKTVsLe5u5X4Dmtpd4HrnHhFb 291 site.webmanifest
Qmcyit4och1e1mDw66vuwLwuNNayWqDK3XS7phecojiRu5 - 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)。





作者:makoto_inoue

本文由IPFS中国社区编译,原文链接:
https://medium.com/the-ethereum-name-service/how-to-host-your-dapp-with-ipfs-ens-and-access-it-via-ethdns-c96046059d87


ifmvtna3pur.png

ifmvtna3pur.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表