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

整理：链小知（AI 辅助）
资料核对日期：2026-10-14
引用地址：https://lianxiaozhi.com/tools/guides/hardhat-slang-solx-selected-backend-build-log
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

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

## 使用工具
- [Hardhat 3](https://lianxiaozhi.com/tools/hardhat) · [官方入口](https://hardhat.org/)

## 前置条件
- 准备已有工程的依赖锁、配置、源码和脱敏编译/测试日志；保留工具、编译器完整版本与执行命令。
- 本教程对照官方文档与已有材料，本次不安装、编译或运行测试，不运行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与实际日志分别对应。
依据：[Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)
依据：[Nomic：首发slang-solx范围与硬化边界](https://blog.nomic.foundation/announcing-slang-solx-a-solidity-compiler-thats-up-to-5x-faster/)

## 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；缺日志则待核。
依据：[Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)

## 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分支分开。
依据：[Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)
依据：[Nomic：首发slang-solx范围与硬化边界](https://blog.nomic.foundation/announcing-slang-solx-a-solidity-compiler-thats-up-to-5x-faster/)

## 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前端设置独立记录，产物差异有编译条件上下文。
依据：[Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)

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

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

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

核对结果：交付后端选择与错误原因；当前构建/测试未实跑，不产生生产部署结论。
依据：[Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)
依据：[Nomic：首发slang-solx范围与硬化边界](https://blog.nomic.foundation/announcing-slang-solx-a-solidity-compiler-thats-up-to-5x-faster/)

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

## 完成检查
- 能从已有配置和日志说明哪些文件用哪个编译器，以及失败/未知和用途范围。

## 相关知识

## 官方依据
- [Hardhat：slang-solx编译选择与优化参数](https://hardhat.org/docs/cookbook/compiling-with-slang-solx)
- [Nomic：首发slang-solx范围与硬化边界](https://blog.nomic.foundation/announcing-slang-solx-a-solidity-compiler-thats-up-to-5x-faster/)
