跳到正文
← 使用教程

Hardhat加了slang-solx却还用solc:核type、Build Profile和不支持版本

链小知 · 进阶 · 核验 · 依官方文档整理

核已有开发构建的编译器选择、混合版本与优化参数,避免将首发性能宣传或实验产物写成生产验收。

开始前准备

  • 准备已有工程的依赖锁、配置、源码和脱敏编译/测试日志;保留工具、编译器完整版本与执行命令。
  • 本教程对照官方文档与已有材料,本次不安装、编译或运行测试,不运行SDK、外部脚本、RPC/API、钱包或部署;命令仅用于辨认原流程。
  • 限已有开发配置与产物的核对;slang-solx官方仍限定开发用途,不部署生产网络。

1. 分清插件存在和编译器已被选中

核原依赖与plugins是否包含@nomicfoundation/hardhat-slang-solx。当前官方说明仅加插件不会自动使用新编译器;对应配置还须type:"slang-solx",未设type的compiler仍用solc。

当前介绍是slang-solx后端配solc前端,不能写成已完全移除solc;最终独立slang编译器计划也不当已发布。

检查结果:依赖、plugins、compiler type与实际日志分别对应。

2. 从命令匹配Build Profile与实际输出

对照原npx hardhat build --build-profile slang-solx;测试原流程也可用npx hardhat test --build-profile slang-solx。profile名字只是配置键,要在solidity.profiles找到同名compiler配置。

官方说每组构建输出会打印所用compiler。只有配置已写、命令退出成功或旧artifacts目录存在,不足以证明本次所有源文件都用该后端。

检查结果:命令选到原Build Profile,日志有对应文件组的compiler;缺日志则待核。

3. 区分显式失败与混合版本的solc分支

type:"slang-solx"必须配其支持的Solidity version;所读例子为0.8.34,strict pragma 0.8.28不兼容。显式指定不支持的版本会构建失败,不能一概称自动回退。

官方混合profile例子同时列{type:"slang-solx",version:"0.8.34"}和{version:"0.8.20"},后者仍走solc。首发文“其他版本fallback”应按实际配置解释;未核新版本完整支持表,不声明永久只支持0.8.34。

检查结果:原pragma、version、type与日志分组一致,失败和明确solc分支分开。

4. 核两套优化参数,不把enabled=false当关闭全部优化

slang-solx始终经LLVM优化,settings.optimizer.mode取"1"/"2"/"3"/"s"/"z",当前默认"1"。settings.optimizer.enabled是内嵌solc前端的独立优化开关,当前默认false。

对已有产物分列后端mode、前端enabled和原设置,比较时保留编译器、源码和pragma;修改pragma可能改变metadata hash,不能用产物hash不同单独判断业务逻辑变化。

检查结果:LLVM与solc前端设置独立记录,产物差异有编译条件上下文。

5. 保留开发构建和性能结果的边界

官方用途仍是开发,首发声明尚不安全用于主网部署;不将构建成功、消除stack too deep或厂商倍数当生产安全保证。

比较已有速度结果时,分列冷/缓存、源码规模、版本、硬件、compiler与测试预算;缺共同条件就只报告原耗时,不能套媒体小实验或官网最高倍数作本人预计收益。

检查结果:交付后端选择与错误原因;当前构建/测试未实跑,不产生生产部署结论。

怎样确认完成

  • 能从已有配置和日志说明哪些文件用哪个编译器,以及失败/未知和用途范围。

常见错误与边界

  • 安装插件不等选中compiler type。
  • 显式不支持的slang-solx版本会失败,不是所有配置都自动回退。
  • LLVM优化一直存在,solc前端开关不同;开发产物不是生产安全验收。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据