• 译文出自:登链翻译计划 [1]

  • 译者:翻译小组 [2]

  • 校对:Tiny 熊 [3]

好了,我们已经按需求实现了智能合约,测试了前台的用户界面 (UI),测试了每一个边缘情况,已经准备好部署到测试网上了。

按照 scaffold-eth 文档 [4],我们需要遵循以下步骤:

  1. packages/hardhat/hardhat.config.js 中的 defaultNetwork 改为你想使用的测试网(在我的例子中是 rinkeby)。

  2. 在 Infura[5] 上创建项目并更新 infuraProjectId

  3. yarn generate 生成一个部署账户。这个命令会生成两个 .txt 文件,一个代表账户地址,另一个是所生成的账户的助记词

  4. 运行 yarn account 查看账户的细节,如不同网络的 eth 余额。

  5. 确保 mnemonic.txtrelative account 文件不会与你的 git 库一起 push(放入 .gitignore),否则任何人都可以得到你的合约的所有权!

  6. 给部署账户转一些币。你可以用即时钱包 [6] 向你刚才在控制台看到的 QR 码发送资金。

  7. yarn deploy 部署合约 !

如果一切顺利,你应该在你的控制台看到类似下面的:

    yarn run v1.22.10      $ yarn workspace @scaffold-eth/hardhat deploy      $ hardhat run scripts/deploy.js && hardhat run scripts/publish.js      📡 Deploying...      🛰  Deploying: ExampleExternalContract       📄 ExampleExternalContract deployed to: 0x96918Bd0EeAF5BBe10deD67f796ef44b2f5cb2A3       🛰  Deploying: Staker       📄 Staker deployed to: 0x96918Bd0EeAF5BBe10deD67f796ef44b2f5cb2A3       💾  Artifacts (address, abi, and args) saved to:  packages/hardhat/artifacts/       💽 Publishing ExampleExternalContract to ../react-app/hide/contracts       📠 Published ExampleExternalContract to the frontend.       💽 Publishing Staker to ../react-app/hide/contracts       📠 Published Staker to the frontend.      ✨  Done in 11.09s.  

部署元数据存储在 /deployments 文件夹中,并通过 yarn deploy 命令中的 --export-all 标志自动复制到 /packages/react-app/hide/contracts/hardhat_contracts.json(见 /packages/hardhat/packagen.json)。

如果你想检查已部署的合约,你可以在 Etherscan Rinkeby 上搜索它们:

  • 外部合约实例 (ExampleExternalContract)[7]

  • 质押合约 (Staker Contract)[8]

更新前端程序,并将其部署到 Surge 上

我们将使用 Surge[9],但你也可以将你的应用程序部署在 AWS S3 或 IPFS 上,这取决于你。

之后,我也会尝试添加一些手动(CLI)和通过 GitHub Actions CI/CD 部署到 Vercel 的基本方法。

scaffold-eth 文档 [10] 里都有,但我下面总结你应该做什么:

  1. 如果你准备在主网部署合约,你应该在 Etherscan 上验证合约。这个流程将为你的应用程序增加可信度。你可以参考指南 [11]。

  2. 关闭调试模式(它会打印出大量的 console.log 日志,这不会是你希望在 Chrome 开发者控制台看到的,相信我!)。打开 App.jsx,找到 const DEBUG = true; 并把它改为 false

  3. 看一下 App.jsx,删除所有不用的代码,只保留你真正需要的东西。

  4. 确保你的 React 程序指向正确的网络(就是你刚刚部署合约那个)。寻找 const targetNetwork = NETWORKS[“localhost”]; 并将 localhost 替换为部署合约的网络。在我们的例子中是 rinkeby

  5. 确保你使用的是自己的节点,而不是 Scaffold-eth 中的节点,因为它们是公共的,不能保证不会被关闭或限制速率。看看看 App.jsx 的第 58 和 59 行。

  6. 更新 constants.js 并替换 InfuraEtherscan、和 Blocknative 的 API 密钥,如果你想使用他们的服务的话。

准备好了吗?

现在用 yarn build 构建你的 React 程序,当构建脚本完成后,用 yarn surge 将其部署到 Surge。

如果一切顺利,你应该看到类似下面的结果。你的 DApp 现在已经在 Surge 上线了 !

scaffold-eth 挑战:将合约部署到测试网(Part4)

你可以在这里查看我们部署的 dApp:https://woozy-cable.surge.sh/

回顾和结论

下面是我们到目前为止所学到的和所做的事情:

  • 克隆 scaffold-eth

  • 学习了几个基本概念(记得继续阅读 Solidity 案例、Hardhat 文档、Solidity 文档、Waffle 文档)

  • 从零开始创建一个智能合约

  • 为合约创建一套完整的测试用例

  • 在 hardhat 网络上对合约进行本地测试

  • 在 Rinkeby 上部署合约

  • 在 Surge 上部署 dApp

如果一切都按预期进行,你就可以把一切都部署在以太坊主网上了

本项目的 GitHub Repo。scaffold-eth-challenge-1-decentralized-staking[12]

你喜欢这个内容吗?关注我,获取更多 !

  • GitHub: https://github.com/StErMi

  • Twitter: https://twitter.com/StErMi

  • Medium: https://medium.com/@stermi

  • Dev.to: https://dev.to/stermi


本翻译由 CellETF[13] 赞助支持。

来源:https://stermi.medium.com/how-to-write-your-first-decentralized-app-scaffold-eth-challenge-1-staking-dapp-b0b6a6f4d242

参考资料

[1]

登链翻译计划 :https://github.com/lbc-team/Pioneer

[2]

翻译小组 :https://learnblockchain.cn/people/412

[3]

Tiny 熊 :https://learnblockchain.cn/people/15

[4]

scaffold-eth 文档 :https://docs.scaffoldeth.io/scaffold-eth/solidity/deploying-your-contracts

[5]

Infura:https://infura.io/

[6]

即时钱包 :https://instantwallet.io/

[7]

外部合约实例 (ExampleExternalContract):https://rinkeby.etherscan.io/address/0x96918Bd0EeAF5BBe10deD67f796ef44b2f5cb2A3

[8]

质押合约 (Staker Contract):https://rinkeby.etherscan.io/address/0x3380Be31610732c7DEF9f6862e157e4D3Dfd2481

[9]

Surge:https://surge.sh/

[10]

scaffold-eth 文档 :https://docs.scaffoldeth.io/scaffold-eth/deployment/shipping-your-app

[11]

指南 :https://docs.scaffoldeth.io/scaffold-eth/infraestructure/etherscan

[12]

scaffold-eth-challenge-1-decentralized-staking:https://github.com/StErMi/scaffold-eth-challenge-1-decentralized-staking

[13]

CellETF:https://celletf.io/?utm_souce=learnblockchain

scaffold-eth 挑战:将合约部署到测试网(Part4)