当前位置: 主页 > 皇冠官方网 > 工程案例 » 如何使用IPFS和以太坊ENS自动发布去中心化网站|皇冠官方网
皇冠官方网
本文摘要:如果您早已登记了一个不俗的ENS名称,并期望通过IPFS和以太坊名称服务使您的站点/dapp能用。
如果您早已登记了一个不俗的ENS名称,并期望通过IPFS和以太坊名称服务使您的站点/dapp能用。要使其沦为部署脚本的无缝部分,必须继续执行几个步骤。
在我们开始之前...在本指南中,我假设您早已理解如何用于IPFS和ENS托管地网站的基础知识。重点在于部署自动化和调整CI工作流程。如果您不熟知ENS和IPFS,可能会经常出现一些问号:)Node.js版本:在撰写本文时,无法将ens-updater加装在12.x或更高版本的节点上,网卓新闻网,因为某些倚赖项必须脚本模块,该脚本模块无法建构。在https://github.com/TripleSpeeder/ens-updater/issues/44中追踪了此问题。
在问题解决问题之前,请求用于节点版本10或更加低版本。要已完成的任务部署分布式的站点必须两个步骤:1. 将内容公布到IPFS,提供新的CID。2. 将ENS名称的IPFS记录设置为指向新的CID。
对于这两个步骤,都可以用于命令行工具。首先我们将详尽研究每个步骤,然后创立一个Travis配备,该配备将几乎自动化部署。第1步-公布到IPFS对于此任务,我们将用于CLI工具ipfs-deploy。
通过npm全局加装: npm install -g ipfs-deploy这个工具知道很非常简单。您只必须获取要部署的建构文件夹,然后自由选择要用于的IPFS相同服务才可。
假设应用于的生产版本坐落于文件夹版本中,则可以运营以下命令以通过公用的infura ipfs节点展开部署: ipfs-deploy build -p infura留意ipfs-deploy获取的CID字符串Qm…。这是建构的唯一标识符,必须将其加到到ENS名称中。
Ipfs部署反对许多有所不同的IPFSpinning服务,其中一些必须身份验证。这就是第一步的全部内容-您的建构现公布!步骤2 —设置您的ENS名称的contenthash记录对于此步骤,我们将用于cli工具ens-updater。
通过npm全局加装: npm install -g @triplespeeder/ens-updaterens-updater反对许多有所不同的命令来管理您的ENS名称。对于本教程,我们只期望设置名称的contenthash条目,使其指向您在步骤1中取得的CID。请求检查ens-updater --help的输入,以提供不受反对命令的阐述以及github页面的内容。
由于我们必须与ENS智能合约展开交互以改版contenthash条目,因此我们必须做到两件事:1. 采访以太坊节点以与智能合约展开交互。2. 掌控ENS名称的帐户的私钥。您可以必要或通过助记符字符串(和附加的帐户索引)间接获取私钥。
对于这两个选项,您都必须将信息放进.env文件中或设置环境变量。对于本教程,我们将私钥留存在.env文件中。关上您自由选择的文本编辑器,并在工作目录中创立文件.env:PRIVATE_KEY=private key here, without leading 0x为保证所有设置皆准确,请求用于--dry-run选项调用ens-updater。
设置此选项后,将会继续执行任何实际交易,但将报告潜在的配备或设置问题。示例:在空运营模式下,将ENS名称mysite.eth的内容哈希记录设置为ipfs CID Qmd2yEHMTswLppDkWNjEMH4WwAgeuFXYeMHSn4VcJMcvKy的原始命令: ens-updater setContenthash mysite.eth ipfs-nsQmd2yEHMTswLppDkWNjEMH4WwAgeuFXYeMHSn4VcJMcvKy --web3:8545 --verbose --dry-run检查结果输入以查阅否报告了任何错误。
否则,您最差不必— dry-run之后!现在将浏览器指向http://mysite.eth。假设您的系统设置准确,可以与.eth域一起用于,那么您应当不会看见您的网站正在运营!这就是第2步的全部操作者-现在可以通过您的ENS名称采访您的网站!之后读者以设置Travis展开自动部署。将它们放到一起展开全自动部署要用于Travis自动继续执行上述步骤,我们必须:1. 创立一个融合了ipfs-deploy和ens-updater的部署脚本,由Travis在部署阶段继续执行。
2. 设置Travis以继续执行部署脚本。3. 为Travis设置环境变量,以便ens-updater可以采访私钥。部署脚本由于ipfs-deploy通过stdout获取了CID,并且可以将ens-updater设置为从stdin中加载CID,因此我们可以将这两个命令用pipe相连在一个小型shell脚本中,如下右图:#!/bin/bashipfs-deploy build -p $1 -C -O |ens-updater setContenthash mysite.eth ipfs-ns stdin -v --web3 $2该脚本期望将pinner服务用作部署作为第一个参数,并将web3相连字符串用于第二个参数。
另外,请注意,通过将类似字符串“ stdin”登录为ens-updater的CID,它告诉从stdin中加载CID。将此脚本加到到您的项目中,使其沦为存储库的一部分并供Travis用于。Travis配备现在编辑travis.yaml以在部署阶段继续执行脚本。
这是一个现实项目中的(精简后的)样本配备,其中特别强调了最重要的部分:os: linuxlanguage: node_jsnode_js: 10jobs: include:- name: "IPFS" install:- npm ci- npm install -g ipfs-deploy- npm install -g @triplespeeder/ens-updater script: npm run build deploy:provider: scriptscript: bash scripts/deploy_ipfs.sh pinata https://mainnet.infura.io/v3/$INFURA_IDskip_cleanup: true加装阶段包括用作加装工具ipfs-deploy和ens-updater的其他命令。部署阶段用于ipfs pinner服务“ pinata”和来自infura的web3实例继续执行我们刚创立的部署脚本。不要记得skip_cleanup选项-否则,Travis将在开始部署之前清理build文件夹...最后缺乏的部分是获取ENS名称控制器帐户的私钥。让我们展开设置!1. 转至Travis中的项目页面2. 关上设置页面3. 并转到“Environment Variables”部分加到一个名称为“ PRIVATE_KEY”的新环境变量,并将您的私钥粘贴到VALUE字段中。
将BRANCH字段设置为您的master分支,因为部署将仅有从master分支运营。保证不要顺位“DISPLAY VALUE IN BUILD LOG”-否则任何人都可以在建构日志中看见您的私钥。就我而言,我还为pinata IPFS服务和Infura web3服务加到了环境变量,并为附加部署到Github页面加到了GitHub令牌。这是原始设置的屏幕截图:在这些变更所在之处后,启动时新的分解。
本文来源:皇冠官方网-www.casalillibelle.com