Hardhat框架中无scripts文件夹却有ignition文件夹的原因及功能疑问
Hardhat中Scripts文件夹与Ignition文件夹的差异解析
为什么会出现Ignition替代Scripts?
Hardhat在v2.18版本后推出了Ignition这个官方新一代部署管理工具,用来替代传统的Scripts部署方案,目的是解决Scripts手动编写部署逻辑带来的繁琐、易出错、难维护等问题。
核心差异对比
定位与编写方式
- Scripts文件夹:属于手动脚本式部署,你需要用Node.js/TypeScript手写完整的部署逻辑——包括合约实例化、部署顺序控制、参数传递、地址保存等所有细节。灵活性高但重复代码多,新手容易踩坑(比如重复部署合约、依赖顺序搞错)。
- Ignition文件夹:属于声明式部署,你只需要在
modules子文件夹里定义合约的依赖关系、构造函数参数、部署条件等,Ignition会自动处理部署流程、状态追踪、安全校验这些底层工作,更规范也更省心。
状态与安全管理
- Scripts:没有内置的部署状态追踪机制,重复运行脚本大概率会重复部署合约,需要自己写逻辑判断合约是否已部署;也没有内置的重入安全校验,部署过程中出问题得手动排查。
- Ignition:内置部署状态快照(存在
.ignition文件夹),会自动记录已部署的合约信息,避免重复部署;同时自带部署流程的安全校验,比如检查依赖合约是否已部署、参数是否合法等。
多网络适配
- Scripts:需要手动判断当前运行的网络,编写分支逻辑来适配不同网络的参数(比如测试网和主网的部署参数不同),代码冗余度高。
- Ignition:支持在配置中为不同网络单独指定部署参数,无需手动写判断逻辑,Ignition会自动匹配当前网络的配置。
功能是否相同?
二者的核心目标都是部署智能合约,但Ignition是Scripts的官方升级替代方案,在部署的安全性、可维护性、便捷性上都优于Scripts。新版本Hardhat初始化项目时,默认会生成Ignition文件夹而非Scripts文件夹。
内容的提问来源于stack exchange,提问作者Gothams_Bat
相关产品推荐
相关产品推荐

