买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
Hardhat: 什么是 Hardhat?Hardhat 是一个开源开发环境,可用于编写、编译、测试、调试、部署和验证 Ethereum 智能合约。它为加密货币开发者提供结构化工作区,用于构建在 Ethereum 虚拟机(简称 EVM)上运行的应用。Hardhat 不是区块链、加密货币、钱包、代币或智能合约编程语言。它是一款开发工具,可协调编译器、测试运行器、模拟区块链网络、部署系统、库、脚本和插件。HardhatHardhat: 什么是 Hardhat?Hardhat 是一个开源开发环境,可用于编写、编译、测试、调试、部署和验证 Ethereum 智能合约。它为加密货币开发者提供结构化工作区,用于构建在 Ethereum 虚拟机(简称 EVM)上运行的应用。Hardhat 不是区块链、加密货币、钱包、代币或智能合约编程语言。它是一款开发工具,可协调编译器、测试运行器、模拟区块链网络、部署系统、库、脚本和插件。Hardhat

Hardhat

2026/10/14 17:27
#Advanced
Humanity
H$0.05512-2.02%
SynFutures
F$0.003028-3.99%
PX
PX$0.0128-1.53%
Treehouse
TREE$0.03994-5.33%
NODE
NODE$0.005213-0.55%

什么是 Hardhat?

Hardhat 是一个开源开发环境,可用于编写、编译、测试、调试、部署和验证 Ethereum 智能合约。

它为加密货币开发者提供结构化工作区,用于构建在 Ethereum 虚拟机(简称 EVM)上运行的应用。

Hardhat 不是区块链、加密货币、钱包、代币或智能合约编程语言。

它是一款开发工具,可协调编译器、测试运行器、模拟区块链网络、部署系统、库、脚本和插件。

Hardhat 官方文档将 Hardhat 描述为一个灵活且可扩展的环境,用于编写、测试、调试和部署 Ethereum 软件。

开发者可以先用 Hardhat 在本地测试合约行为,再向公开区块链发送交易;在公开链上犯错可能会造成永久且高昂的后果。

Hardhat 由 Nomic Foundation 为 Ethereum 开发社区维护。

Hardhat 当前版本

Hardhat 3 是该开发环境当前的主版本。

截至 2026 年 7 月 13 日,最新标签版本为 Hardhat 3.9.1,于 2026 年 7 月 2 日发布。

当前版本系列包括重新设计的插件系统、原生 Solidity 测试、内置代码覆盖率、多链模拟、类型化构建产物、构建配置档案和全新网络管理器。

维护旧项目的开发者在升级前应确认插件和配置文件是否支持 Hardhat 3。

项目应锁定开发依赖版本,而不应自动接受每个未来主版本。

加密开发为何使用 Hardhat

智能合约可以控制代币、协议金库、借贷仓位、质押系统、去中心化治理以及其他有价值的加密资产。

编程错误可能冻结资金、导致未经授权的转账、错误计算余额或造成可被利用的经济条件。

Hardhat 可帮助开发者在合约部署到实时区块链之前发现问题。

它可以编译 Solidity 源代码、运行自动化测试、模拟交易、显示执行追踪、估算 Gas 用量,并通过可重复流程部署合约。

它还可以帮助开发团队统一项目结构,并通过脚本和持续集成系统自动化工作。

Hardhat 可以改进开发流程,但不能保证智能合约安全。

对于生产环境中的加密应用,仍需进行独立审查、威胁建模、测试、监控和谨慎的访问控制。

Hardhat 3 架构

Hardhat 3 将大部分功能划分为核心运行时和可选插件。

核心环境会加载项目配置、管理任务、创建区块链连接,并为脚本和测试提供开发服务。

插件可以添加合约库、断言工具、部署功能、验证服务、测试运行器、硬件签名支持及其他功能。

这种模块化设计让项目只需安装实际需要的工具。

这也意味着,使用不同插件组合的 Hardhat 项目可能会表现不同。

开发者应记录所有必需插件,并在项目包配置中锁定兼容版本。

Hardhat 运行时环境

Hardhat 运行时环境是脚本、任务和插件访问 Hardhat 功能的核心对象。

它通常简称为 HRE。

HRE 可以提供配置数据、网络连接、构建产物、插件扩展和任务相关功能。

Hardhat 3 可以通过编程方式创建多个相互独立的运行时环境。

这对高级脚本、测试系统,以及需要隔离配置或同时连接多个网络的应用很有用。

Hardhat 运行时环境文档介绍了运行时如何将项目配置与插件及开发工作流连接起来。

Hardhat 项目结构

典型的 Hardhat 项目是一个 npm 包,包含项目配置文件和若干开发目录。

主配置文件通常命名为

hardhat.config.ts
。

contracts
目录通常用于存放 Solidity 智能合约。

test
目录用于存放以 Solidity 或 TypeScript 编写的自动化测试。

ignition
目录用于存放 Hardhat Ignition 部署模块。

scripts
目录用于存放自定义自动化脚本。

项目还会包含

package.json
文件,用于记录 Hardhat、插件、库和其他开发依赖。

保持项目结构一致,有助于测试、审查、团队成员上手和自动化部署。

安装 Hardhat

Hardhat 通常作为开发依赖安装在 JavaScript 或 TypeScript 项目中。

当前官方设置要求 Node.js 版本为 22.13.0 或更高。

可以使用命令

npx hardhat --init
初始化新项目。

初始化过程可以创建示例合约、测试、配置、脚本和部署模块。

开发者应使用受支持的 Node.js 版本,因为不受支持的运行环境可能导致安装失败或行为不一致。

Node.js 官方支持政策说明了 Hardhat 3 支持的 Node.js 版本系列。

Hardhat 配置

Hardhat 配置文件定义项目应如何编译、测试、连接和部署。

其中可能指定 Solidity 编译器版本、优化器设置、插件、网络、账户来源、构建配置档案和任务选项。

Hardhat 3 配置文件默认使用 ECMAScript Modules。

在环境支持的情况下,脚本和测试仍可使用其他模块格式。

应仔细审查配置,因为不同的编译器或优化器设置可能生成不同的部署字节码。

验证合约时,应使用生成已部署代码的同一编译器版本和设置。

配置变量和秘密信息

加密开发项目通常需要私钥、远程过程调用地址和其他敏感值。

Hardhat 3 支持延迟加载配置变量,只有在任务实际需要时才会读取这些变量。

这些值可以存储在源代码仓库之外,以降低意外公开的风险。

Hardhat 配置变量指南介绍了如何验证、格式化变量,以及通过外部存储系统提供变量。

Hardhat 还提供官方密钥库插件,可加密存储选定值。

加密并不能让性能较弱的计算机或被盗密码变得安全。

生产环境部署密钥应采用严格访问控制、有限余额、硬件签名、多重签名授权或其他经过仔细审查的密钥管理流程。

编译 Solidity 合约

Hardhat 会将 Solidity 源代码编译为可在 EVM 上运行的字节码。

编译过程还会生成应用程序二进制接口,通常称为 ABI。

ABI 描述合约可调用的函数、事件、错误和参数类型。

钱包、脚本、前端应用和其他合约会使用 ABI 信息对交互数据进行编码和解码。

当不同源文件需要不同版本时,Hardhat 可以在同一项目中支持多个 Solidity 编译器版本。

开发者应避免不必要的编译器版本差异,因为这会增加审查和验证复杂度。

应明确配置编译器,而不是依赖假定的默认设置。

Hardhat 构建产物

编译完成后,Hardhat 会生成包含合约信息的构建产物。

构建产物可以包含合约名称、ABI、创建字节码、部署字节码、链接引用和源代码信息。

Hardhat 3 默认还会为类型化构建产物生成 TypeScript 声明。

类型化构建产物可以帮助开发工具在运行时之前发现错误的函数名称、参数类型和合约交互。

Hardhat 构建产物规范介绍了合约构建产物和构建信息的结构。

构建产物应由可信源代码和可复现的编译器设置生成。

编译器设置、合约名称或依赖发生重大变化时,应清理旧构建产物。

构建配置档案

Hardhat 3 支持构建配置档案,可针对不同工作流定义不同的编译器设置。

开发配置档案可以优先考虑快速编译和详细调试信息。

生产配置档案可以启用部署所需的准确优化器设置。

覆盖率配置档案可能会修改字节码,以便衡量已执行的代码路径。

构建配置档案减少了反复改写同一配置的需要。

不过,团队必须明确标记每次部署使用的配置档案。

使用了错误配置档案部署合约,可能导致字节码、Gas 行为或验证结果不同。

模拟区块链网络

Hardhat 内置模拟网络,可在本地运行以供开发和测试。

模拟网络允许开发者部署合约并提交交易,而无需花费真实加密货币。

它可以创建有资金的测试账户、立即挖出区块、修改时间戳、调整余额、模拟账户身份和重置状态。

这些功能使开发者能够测试在公开区块链上难以或成本高昂地复现的特殊情况。

Hardhat 3 使用由 Rust 编写、基于 EDR 的模拟运行时。

该模拟环境旨在支持快速测试、详细错误信息、执行追踪和可控的区块链状态。

本地模拟很有用,但无法完美重现所有真实网络状况。

多链模拟

Hardhat 3 的设计目标之一是支持不同 EVM 兼容链类型的开发。

项目可以配置具有不同运行行为的多个模拟网络。

官方文档指出,Hardhat 对 Ethereum 主网和 OP Mainnet 提供一等模拟支持,也提供通用链类型以支持其他兼容环境。

Hardhat 多链文档说明,链类型可以让模拟网络更准确地复现特定链的行为。

开发者应根据合约将要部署的每个网络的实际执行规则进行测试。

在一种网络配置下正常运行的合约,在 Gas 规则、预部署合约或交易格式发生变化时,行为可能不同。

Hardhat 网络管理器

Hardhat 网络管理器负责管理与模拟区块链网络和外部网络的连接。

Hardhat 3 允许任务和脚本同时创建多个网络连接。

这对跨网络应用、跨链桥测试、部署协调,以及需要从一条链读取数据并向另一条链写入数据的应用很有用。

配置中的网络名称只是连接标签,并不能证明该连接指向预期区块链。

签署交易前,开发者应核验链 ID、最新区块、账户余额和部署目标。

网络管理指南介绍了 Hardhat 如何连接模拟网络和远程 JSON-RPC 端点。

分叉区块链网络

网络分叉功能可以让本地 Hardhat 模拟环境从指定的公开网络区块复制区块链状态。

之后,本地环境可以与现有合约、余额、账户和存储交互,而不会改变真实网络。

分叉测试适用于测试协议集成、强制平仓场景、治理变更、代币行为和合约升级。

如果需要重复性结果,应将分叉固定在特定区块高度。

若测试使用未指定的最新区块,公开链状态变化后,测试结果也可能发生变化。

远程数据提供方还可能限制请求、记录项目活动或暂时返回不完整信息。

分叉测试绝不应被误解为控制真实账户或资产的授权。

使用 Hardhat 测试智能合约

自动化测试是 Hardhat 最重要的功能之一。

Hardhat 3 支持直接用 Solidity 编写的测试,以及使用 TypeScript 编写的集成测试。

同一个项目可以同时使用这两种测试方法。

Solidity 测试在 EVM 环境中执行,适合针对合约行为进行专项测试。

TypeScript 测试适用于应用工作流、多个账户、链下逻辑、外部数据和更广泛的集成行为。

Hardhat 官方测试概述介绍了两种方法的优势。

完善的测试套件应覆盖成功操作、预期失败、访问限制、极端输入、状态转换和特殊交易顺序。

Solidity 测试

Hardhat 会根据受支持的目录和文件名约定识别 Solidity 测试文件。

公开测试函数可以部署合约、调用函数、检查状态,并在预期条件不满足时失败。

Solidity 测试可以使用作弊码修改测试环境。

作弊码可以更改调用者、推进时间、调整余额、预期事件或回滚,并检查存储。

这些控制方式便于测试原本需要长时间等待或复杂设置才能复现的情况。

作弊码只影响模拟测试环境,并非公开区块链普通用户可调用的函数。

模糊测试

模糊测试会使用生成的输入值反复执行合约函数。

它可以发现开发者在手动编写的示例中未考虑到的边缘情况。

代币计算可能对常见值有效,却在输入为零、最大整数、舍入边界或意外状态组合时出错。

模糊测试应设置合理假设,确保生成的值有意义。

模糊测试顺利通过,并不能证明合约安全,因为它只检查配置的输入和属性。

应明确编写重要不变量,让测试系统知道哪些行为必须始终成立。

不变量测试

不变量是指在多种可能的操作序列中都应保持成立的属性。

借贷协议可能要求记录的总债务等于所有用户债务之和。

代币可能要求根据其会计模型,供应总量等于所有追踪余额之和。

自动化市场系统可能要求某些储备关系始终有效。

不变量测试可以生成交易序列,并验证相关属性是否始终成立。

对于有状态的加密协议,这类测试尤为重要,因为漏洞可能只有在若干操作以特定顺序发生后才会出现。

TypeScript 测试

TypeScript 测试通过开发库和区块链连接与合约交互。

Hardhat 3 推荐的设置使用 Node.js 测试运行器和 viem。

官方插件也支持基于 ethers 和 Mocha 的设置。

TypeScript 测试可以协调多个合约、账户、文件、API 和网络连接。

它们还可以测试去中心化应用链下软件使用的相同工作流。

测试应避免不必要地依赖实时外部服务,因为服务不可用会导致结果不可靠。

代码覆盖率

代码覆盖率衡量测试运行期间执行了哪些合约语句、分支、函数和路径。

Hardhat 3 内置 Solidity 代码覆盖率功能。

可以通过测试选项

--coverage
启用覆盖率统计。

Hardhat 代码覆盖率指南说明,该工具会在覆盖率测试期间为合约插入标记。

插桩后的字节码不同于正常的生产字节码,且可能消耗更多 Gas。

高覆盖率并不能证明测试断言有效,也不能证明合约安全。

测试可以执行每一行代码,却仍未检查最重要的经济结果。

Gas 统计和 Gas 快照

Hardhat 可以测量测试执行期间合约公开函数消耗的 Gas。

支持的测试可以通过

--gas-stats
选项显示 Gas 用量统计数据。

Gas 快照可以记录预期 Gas 值,并发现代码版本之间的意外变化。

这些工具有助于开发者发现成本高昂的函数、存储密集型模式和意外的 Gas 回归。

模拟网络上的 Gas 结果可能不包含用户在生产网络上遇到的所有成本。

Layer 专属费用、数据发布成本、网络拥堵和不断变化的协议规则都可能影响最终交易费用。

Gas 优化绝不能削弱验证、授权或会计安全。

使用 Hardhat 调试

Hardhat 可以显示 Solidity 错误、解码后的日志、堆栈追踪和执行追踪。

执行追踪会显示交易涉及的合约调用和操作顺序。

Hardhat 执行追踪指南说明,详细程度设置会控制调试输出的数量。

详细追踪可以显示哪个调用发生回滚、进入了哪个函数,以及嵌套合约交互的过程。

对于涉及代理、回调、钩子、代币转账和多个关联合约的协议,追踪尤其有用。

调试输出可能包含地址、参数或其他敏感开发信息,因此在共享日志中应谨慎处理。

Solidity 控制台日志

Hardhat 支持在模拟环境中从 Solidity 代码输出开发用途的控制台日志。

开发者可以在测试或本地交易执行时打印数值。

这有助于检查状态、调用者、余额和中间计算结果。

除非有明确理由,开发日志不应留在生产代码中。

日志辅助工具可能影响字节码、合约大小和部署行为。

发布前应使用自动化测试和断言替代临时调试语句。

Hardhat 任务

Hardhat 任务是一条命名命令,用于自动化部分开发工作流。

任务可以编译合约、检查账户、生成报告、管理部署或执行项目专用操作。

插件可以注册任务,并通过命令行界面调用这些任务。

自定义任务在发送交易前应核验网络身份和用户输入。

危险任务不应在没有提示的情况下使用第一个可用账户,或默认连接生产网络。

清晰的命令名称和确认检查可以降低意外部署或转移资金的风险。

Hardhat 脚本

Hardhat 脚本是使用运行时环境和已安装插件的 TypeScript 或 JavaScript 程序。

脚本可以部署合约、调用函数、读取状态、转移管理角色或生成部署记录。

脚本很灵活,但与结构化部署系统相比,开发者需要承担更多责任。

脚本失败时,可能已有多笔交易完成,而后续交易尚未执行。

脚本应能检测现有状态,避免重复执行危险操作。

生产脚本应记录交易哈希、部署地址、参数、网络 ID 和结果。

Hardhat Ignition

Hardhat Ignition 是 Hardhat 项目官方提供的声明式部署系统。

开发者通过部署模块描述所需的合约实例和操作。

Ignition 会分析这些定义,并确定部署的执行方式。

它可以并行发送相互独立的交易、从部分错误中恢复,并继续执行中断的部署。

Hardhat Ignition 部署指南介绍了如何将合约和部署后调用编组到模块中。

声明式部署可以降低部分手动脚本风险,但仍须仔细审查模块逻辑和参数。

如果部署定义有误,自动化系统也可能稳定地重复错误。

部署智能合约

部署是指向区块链网络发送合约创建交易。

交易中包含编译后的创建字节码和构造函数参数。

交易确认后,合约会根据区块链的创建规则获得一个地址。

部署应使用预期的编译器、优化器、构造函数参数、账户、链和 Gas 设置。

发送实时交易前,团队应使用与生产环境完全相同的构建产物,完成最后一次模拟部署。

部署后还应立即核验管理角色、所有权、升级权限、金库地址和紧急控制措施。

绝不能将私钥直接提交到 Hardhat 配置文件或源代码仓库。

智能合约验证

智能合约验证会将已部署字节码与其声称的源代码和编译器设置关联起来。

已验证的源代码让用户、审计员、钱包和监控工具能够检查合约预期行为。

Hardhat 提供官方验证插件。

Hardhat 验证指南说明,验证可以证明已部署字节码是由指定源代码生成的。

验证并不能证明源代码安全、公平或不存在隐藏的经济风险。

构造函数参数、链接库、优化器设置、元数据和编译器版本都必须与部署时一致。

团队应保留构建信息,以便日后重现验证过程。

Hardhat 插件

插件可为 Hardhat 扩展其他开发功能。

官方插件支持 viem、ethers、断言、网络辅助工具、合约验证、Ignition 部署、加密配置存储、硬件签名器和测试运行器。

官方插件目录列出了由 Nomic Foundation 维护的插件。

社区插件可以提供有用功能,但其审查和维护水平可能不及官方插件。

恶意插件可能读取项目文件、环境变量、密钥、部署数据和网络流量。

安装前,开发者应检查插件的维护者、更新历史、源代码、依赖、权限和兼容性。

依赖安全

Hardhat 项目依赖可能在安装、测试或部署期间执行代码的 Node.js 包。

遭入侵的依赖项可能试图窃取环境变量、私钥、源代码或部署凭证。

项目应提交锁定文件,并审查意外的依赖项变更。

生产部署应使用安装最少软件且软件包版本经过验证的干净系统。

未经测试和审查,不应合并自动化依赖更新。

软件包受欢迎,并不能保证每个版本都安全。

Hardhat 与私钥

Hardhat 在外部网络上部署或调用合约时,可能需要访问签名账户。

在纯文本配置文件中使用原始私钥会带来严重安全风险。

开发密钥中只能存放测试资金。

生产密钥应通过加密存储、硬件签名、权限限制或多重签名流程进行保护。

在可行的情况下,部署账户中只应保留计划交易所需的资金。

部署后,可以将管理权限转移至更安全的账户。

应检查日志和错误报告,确保其中没有泄露敏感配置值。

Hardhat 与硬件钱包

通过兼容插件和工作流,硬件钱包可以为 Hardhat 部署或管理交易签名。

这可以让私钥保留在开发计算机之外。

如果硬件设备支持,屏幕应显示目标地址、网络、金额和合约数据。

复杂的合约部署可能难以在小型设备屏幕上理解。

交易由 Hardhat 生成,并不意味着硬件钱包能够识别有害部署。

仍须独立审查源代码、编译产物、构造函数参数和交易数据。

常见 Hardhat 安全错误

一个常见错误是将私钥或恢复短语提交到源代码仓库。

另一个错误是只相信网络标签而不检查链 ID,导致部署到错误的区块链。

第三个错误是在测试、部署和验证时使用不同的编译器设置。

第四个错误是只测试成功操作,却忽略未经授权的调用者和失败条件。

第五个错误是使用未固定区块高度的链上状态分叉进行测试。

第六个错误是安装未经审查且能够访问部署密钥的插件。

第七个错误是认为代码覆盖率达到 100% 就等于通过安全审计。

第八个错误是让部署账户永久控制所有协议功能。

第九个错误是在部署完成后未核验已部署地址和所有权。

第十个错误是将真实资金发送到本地生成、密钥从未受到保护的开发地址。

Hardhat 最佳实践

在项目依赖文件中锁定 Hardhat、插件、库和编译器版本。

使用受支持的 Node.js 版本,并提交软件包锁定文件。

将私钥和敏感端点保存在源代码仓库之外。

使用不同账户进行本地测试、公开测试、部署和长期管理。

编写单元、集成、模糊、不变量、访问控制和失败条件测试。

运行代码覆盖率检查,同时牢记覆盖率衡量的是代码是否执行,而非代码是否正确。

使用固定在已知区块高度的分叉测试,以可重复地测试协议集成。

部署前检查 Gas 变化和合约大小。

部署后验证源代码并保留构建信息。

对于控制大量加密资产价值的合约,应进行独立安全审查。

Hardhat 的局限

Hardhat 无法证明合约的经济设计安全。

它无法保证测试套件覆盖所有攻击路径。

它无法完美复现所有生产网络状况。

它无法阻止开发者使用错误账户或网络签署交易。

它无法保护项目中保管不当的私钥。

它无法让不安全的第三方依赖变得可信。

它不能取代形式化验证、审计、漏洞赏金、监控和事件响应规划。

Hardhat 作为更广泛安全开发流程的一部分使用时最为有效。

常见问题

加密货币领域中的 Hardhat 是什么?

Hardhat 是一种开发环境,用于编译、测试、调试、部署和验证 Ethereum 及 EVM 兼容智能合约。

Hardhat 是区块链吗?

不是。Hardhat 是软件开发工具,而不是区块链网络。

Hardhat 是加密货币吗?

不是。Hardhat 不代表任何币或代币。

谁在开发 Hardhat?

Hardhat 由 Nomic Foundation 为 Ethereum 开发社区开发。

Hardhat 当前的主版本是什么?

Hardhat 3 是当前的主版本系列。

Hardhat 的最新版本是什么?

截至 2026 年 7 月 13 日,最新标签版本为 Hardhat 3.9.1。

Hardhat 使用哪些编程语言?

Hardhat 项目通常使用 Solidity 编写智能合约,并使用 TypeScript 或 JavaScript 编写配置、脚本和集成测试。

Hardhat 编译什么内容?

Hardhat 会将 Solidity 源代码编译为 EVM 字节码、ABI、构建产物和相关构建信息。

Hardhat 是否包含本地区块链?

Hardhat 包含用于本地开发和自动化测试的模拟区块链网络。

Hardhat 支持 Solidity 测试吗?

支持。Hardhat 3 既支持直接用 Solidity 编写的测试,也支持基于 TypeScript 的测试。

Hardhat 可以进行模糊测试吗?

可以。Solidity 测试可以生成多种输入,用于测试属性和边缘情况。

Hardhat 可以测试合约不变量吗?

可以。开发者可以定义一些属性,要求这些属性在生成的合约操作序列中始终成立。

什么是 Hardhat Ignition?

Hardhat Ignition 是官方声明式部署系统,可用于定义、执行、恢复和记录智能合约部署。

Hardhat 可以向公开网络部署合约吗?

可以。Hardhat 可以连接外部 JSON-RPC 端点并发送已签名部署交易。

Hardhat 本地测试需要真实加密货币吗?

不需要。模拟网络会提供没有现实价值的开发账户和余额。

Hardhat 中的网络分叉是什么?

网络分叉会将指定公开网络区块的区块链状态复制到本地模拟环境中进行测试。

Hardhat 可以验证智能合约吗?

可以。官方验证插件可以将源代码和构建信息提交至受支持的验证服务。

合约验证能证明合约安全吗?

不能。验证会将源代码与已部署字节码关联起来,但不能证明逻辑安全或经济设计稳健。

代码覆盖率高就说明合约安全吗?

不能。高覆盖率只表示测试期间执行过相应代码,并不能证明测试检查了正确的属性。

Hardhat 可以估算 Gas 用量吗?

可以。Hardhat 可以在受支持的测试运行中生成 Gas 统计数据和快照。

Hardhat 可以连接多个区块链网络吗?

可以。Hardhat 3 可以管理多个网络连接和模拟链配置。

将私钥存储在 Hardhat 配置中安全吗?

不安全。私钥应通过受保护的外部系统加载,而不应以纯文本形式提交。

Hardhat 可以使用硬件钱包吗?

可以。兼容的插件和工作流可以使用硬件设备为选定的部署和管理交易签名。

所有 Hardhat 插件都安全吗?

不安全。插件可能访问敏感项目资源,安装前应进行审查。

Hardhat 可以取代智能合约审计吗?

不能。Hardhat 支持开发和测试,但不能取代独立的安全评估。

分叉测试为什么应使用固定区块?

固定区块可以让复制的区块链状态保持稳定,使后续测试运行能够复现结果。

Hardhat 能阻止合约部署到错误网络吗?

Hardhat 可以支持相关检查,但开发者仍须核实链 ID、账户、端点和部署参数。

结语

Hardhat 是一套全面的开发环境,用于创建 Ethereum 和 EVM 兼容智能合约软件。

它在统一的项目结构中整合了编译、构建产物、模拟网络、测试、调试、部署、验证、脚本、任务和插件。

Hardhat 3 是当前主版本,新增了原生 Solidity 测试、多链模拟、类型化构建产物、构建配置档案、代码覆盖率和更灵活的网络管理。

开发者可以使用 Hardhat 在本地测试合约,然后再花费真实加密货币或让用户资产面临风险。

Hardhat Ignition 提供结构化部署系统,可继续执行中断的工作并记录部署状态。

分叉测试让开发者能够复现公开区块链状态,并测试与现有合约的交互。

执行追踪、覆盖率报告、模糊测试、不变量和 Gas 统计数据可以在部署前揭示许多技术问题。

这些工具无法保证安全,因为最终结果仍取决于源代码、测试、假设、依赖项、密钥和部署流程的质量。

私钥应保存在源代码仓库之外,并采用严格的签名和访问控制流程。

应审查插件和软件包依赖,因为它们可能访问敏感开发资源。

生产合约应采用锁定的编译器设置、可复现构建、已验证源代码、独立审查和部署后监控。

对于加密货币开发者而言,Hardhat 最适合被视为降低智能合约开发风险的强大工作区,而不是谨慎工程实践和安全审查的替代品。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?