mcpField
H
hardhat

hardhat

github.com/alphaonedev开发46 次安装
代码仓库

关于 hardhat

hardhat 是面向 Ethereum 开发者的 Solidity 开发环境,涵盖合约编译、测试与部署,并支持配置网络和插件扩展。

主要功能

  1. 01编译 Solidity 合约
  2. 02运行 Mocha 测试
  3. 03向网络部署合约
  4. 04分叉主网进行测试
  5. 05通过插件扩展

适用场景

  1. 01编译 Solidity 项目
  2. 02在本地区块链测试合约
  3. 03向测试网部署合约

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill hardhat

安装后在 Claude Code 中输入/hardhat确认已加载。

详细介绍

hardhat

用途

Hardhat 是一个用于 Ethereum 的开发环境,可高效地编译、测试和部署 Solidity 智能合约。它能为专业区块链开发者自动化工作流。

使用场景

当你需要本地区块链模拟器、自动化测试,或部署到 Goerli 等测试网时,可使用 Hardhat 进行 Ethereum 智能合约开发。适用于需要编译 Solidity 代码的项目,尤其是调试或集成 dApp 时。非 Ethereum 区块链或简单脚本任务不适合使用它。

主要功能

  • 使用可自定义的编译器版本编译 Solidity 文件(例如,通过 hardhat.config.js 设置:solidity: "0.8.17")。
  • 使用 Mocha 或 Hardhat API 运行单元测试,支持 expect(await contract.balance()).to.equal(100) 等断言。
  • 使用 ethers.js 将合约部署到网络,并内置支持分叉主网进行测试。
  • 通过插件扩展功能(例如,@nomiclabs/hardhat-ethers),以支持 Gas 报告等高级功能。
  • 在配置中处理多个网络,例如,通过 RPC URL 和 accounts 数组定义 Goerli。

使用模式

要设置 Hardhat 项目,请在新目录中运行 npx hardhat init,然后将 Solidity 文件添加到 contracts 文件夹,并将测试添加到 test 文件夹。对于工作流,请务必先在 hardhat.config.js 中配置网络和 Solidity 设置。使用脚本进行部署:在 scripts 中编写一个导入 ethers 并部署合约的 JS 文件。迭代测试:先编译,再运行测试,然后部署。敏感数据务必使用环境变量,例如在脚本中使用 process.env.PRIVATE_KEY。

常用命令/API

  • 编译合约:运行 npx hardhat compile --force,重新构建所有文件并忽略缓存。
  • 运行测试:运行 npx hardhat test test/MyContract.js,使用 Mocha 执行指定测试。
  • 部署到网络:运行 npx hardhat run scripts/deploy.js --network goerli,其中 deploy.js 可能如下所示:
    const hre = require("hardhat");
    async function main() { const MyContract = await hre.ethers.deployContract("MyContract"); await MyContract.waitForDeployment(); }
    main();
    
  • 查看网络信息:运行 npx hardhat node,启动本地区块链进行测试。
  • API 用法:在脚本中,通过 hre.ethers.getSigners() 获取账户;配置使用 hardhat.config.js 格式:
    module.exports = { networks: { goerli: { url: process.env.GOERLI_RPC_URL, accounts: [process.env.PRIVATE_KEY] } }, solidity: "0.8.17" };
    
  • 设置环境变量:运行命令前,导出 export PRIVATE_KEY=0xYourPrivateKey 等密钥。

集成说明

通过安装 @nomiclabs/hardhat-ethers 并在脚本中导入它,将 Hardhat 与 ethers.js 集成,以管理钱包和提供者。对于 CI/CD,可将它与 GitHub Actions 搭配使用:在工作流 YAML 中添加类似 npx hardhat test 的步骤。还可将它与 Foundry 等工具结合进行高级测试,或与 Truffle 结合编写迁移脚本。如果使用 Infura 或 Alchemy,请通过环境变量设置 RPC URL(例如,export GOERLI_RPC_URL=https://goerli.infura.io/v3/$INFURA_API_KEY)。请确保项目之间的 Solidity 版本一致,以保持兼容性。

错误处理

遇到编译错误时,请检查控制台输出中的 Solidity 问题,例如 “ParserError: Expected token”——修复 .sol 文件中的语法。遇到网络错误时,请在脚本中使用 try-catch:

try { await contract.deploy(); } catch (error) { console.error("Deployment failed:", error.message); process.exit(1); }

常见问题:私钥无效——请使用 ethers.utils.isHexString(process.env.PRIVATE_KEY) 确认格式。对于 RPC 故障,请验证 URL 并添加重试:使用 hre.network.provider.send("eth_getBalance", [address]) 并检查错误。调试时务必记录带时间戳的错误。

具体用法示例

  1. 示例:设置并编译简单合约
    创建项目:运行 npx hardhat init,添加文件 contracts/Greeter.sol,内容如下:

    pragma solidity ^0.8.0; contract Greeter { string public greeting; constructor() { greeting = "Hello"; } }
    

    然后编译:npx hardhat compile。这会在 artifacts/ 中生成构建产物。

  2. 示例:部署到 Goerli 测试网
    在 scripts/deploy.js 中编写:

    const hre = require("hardhat"); async function main() { const Greeter = await hre.ethers.deployContract("Greeter"); console.log("Deployed to:", await Greeter.getAddress()); } main();
    

    设置环境变量:export PRIVATE_KEY=0xYourKey && export GOERLI_RPC_URL=https://goerli.infura.io/v3/your-key。运行:npx hardhat run scripts/deploy.js --network goerli。

图关系

  • 相关标签:ethereum、solidity、smart-contracts
  • 所属集群:blockchain
  • 通过嵌入关联:开发、测试、部署

评论

支持 Markdown