最后一步:将合约部署到测试网
好了,我们已经按需求实现了智能合约,测试了前台的用户界面(UI),测试了每一个边缘情况,已经准备好部署到测试网上了。
按照scaffold-eth 文档,我们需要遵循以下步骤:
packages/hardhat/hardhat.config.js
中的defaultNetwork
改为你想使用的测试网(在我的例子中是 rinkeby)。infuraProjectId
yarn generate
生成一个部署账户。这个命令会生成两个.txt
文件,一个代表账户地址,另一个是所生成的账户的助记词。yarn account
查看账户的细节,如不同网络的 eth 余额。mnemonic.txt
和relative account
文件不会与你的 git 库一起 push(放入.gitignore),否则任何人都可以得到你的合约的所有权!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/src/contracts
📠 Published ExampleExternalContract to the frontend.
💽 Publishing Staker to ../react-app/src/contracts
📠 Published Staker to the frontend.
✨ Done in 11.09s.
部署元数据存储在
/deployments
文件夹中,并通过yarn deploy
命令中的--export-all
标志自动复制到/packages/react-app/src/contracts/hardhat_contracts.json
(见/packages/hardhat/packagen.json
)。
如果你想检查已部署的合约,你可以在 Etherscan Rinkeby 上搜索它们:
我们将使用Surge,但你也可以将你的应用程序部署在 AWS S3 或 IPFS 上,这取决于你。
之后,我也会尝试添加一些手动(CLI)和通过GitHub Actions CI/CD 部署到 Vercel的基本方法。
scaffold-eth 文档里都有,但我下面总结你应该做什么:
App.jsx
,找到const DEBUG = true;
并把它改为false
。App.jsx
,删除所有不用的代码,只保留你真正需要的东西。const targetNetwork = NETWORKS[“localhost”];
并将localhost
替换为部署合约的网络。在我们的例子中是rinkeby
。App.jsx
的第58和59行。constants.js
并替换Infura、Etherscan、和Blocknative 的 API 密钥,如果你想使用他们的服务的话。准备好了吗?
现在用yarn build
构建你的 React 程序,当构建脚本完成后,用yarn surge
将其部署到 Surge。
如果一切顺利,你应该看到类似下面的结果。你的 DApp 现在已经在 Surge 上线了!
你可以在这里查看我们部署的 dApp:https://woozy-cable.surge.sh/
下面是我们到目前为止所学到的和所做的事情:
如果一切都按预期进行,你就可以把一切都部署在以太坊主网上了
本项目的 GitHub Repo。scaffold-eth-challenge-1-decentralized-staking
本翻译由 CellETF 赞助支持。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!