在ZK-EVM和Solidity开发环境搭建的过程中,开发者们常常会遇到几个高频率出现的配置与连接问题。这些问题表面棘手,但根源通常清晰。本文将集中拆解这些常见故障,帮助您顺利搭建开发环境。 为什么直接用 solc 安装会报错“command not found” 从Solidity官方下载的二进制
Linux系统ZKEVM/Solidity开发环境安装配置与节点搭建教程
作者:技术拾光
时间:2026-06-12
浏览:666
文章目录
在ZK-EVM和Solidity开发环境搭建的过程中,开发者们常常会遇到几个高频率出现的配置与连接问题。这些问题表面棘手,但根源通常清晰。本文将集中拆解这些常见故障,帮助您顺利搭建开发环境。

为什么直接用 solc 安装会报错“command not found”
从Solidity官方下载的二进制包,在Linux系统下默认没有可执行权限,也不在系统的$PATH环境变量中。因此运行./solc --version时,系统可能返回Permission denied或command not found。
正确的安装步骤如下:
- 前往Solidity的GitHub releases页面,下载
solc-static-linux文件(例如solc-static-linux-v0.8.26+commit.8b712ec9),避免下载源码包。 - 下载后赋予执行权限:
chmod +x solc-static-linux-v0.8.26+commit.8b712ec9。 - 将文件重命名为
solc,并创建软链接到系统路径:sudo ln -sf $(pwd)/solc /usr/local/bin/solc。 - 验证安装:运行
solc --version,若能输出版本号则表示成功。
ZK-EVM 节点启动失败卡在 Waiting for L1 RPC endpoint
启动Scroll、Taiko等ZK-EVM本地开发节点时,常见日志反复打印“等待L1 RPC”。问题通常在于未正确配置可用的以太坊L1节点。
排查要点如下:
- 配置项检查:确保
l1-eth-rpc配置指向一个已经同步完成的L1节点。若本地运行geth或erigon,需确认启动了--http服务并开放必要API,例如--http.api=eth,net,web3。 - 公共RPC细节:使用Infura等公共RPC时,URL必须完整,例如
https://mainnet.infura.io/v3/YOUR-PROJECT-ID,缺少/v3/或Project ID会导致连接失败。 - 连通性测试:使用
curl手动测试RPC地址:curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' YOUR_RPC_URL。 - 特殊API要求:部分早期ZK-EVM实现(如Scroll的Alpha版本)要求L1节点支持
eth_getLogs等API。Geth默认关闭,需在启动参数中添加--http.api=eth,net,web3,debug。
hardhat-zksync 插件编译报错 TypeError: Cannot read property 'config' of undefined
此错误是Hardhat与zkSync集成时的常见问题。根因在于项目配置中缺少zksync配置对象。修复步骤如下:
- 版本兼容性:确认插件版本与Hardhat版本匹配。例如
hardhat-zksync@^0.8.0通常兼容Hardhat v2.14以下版本。 - 配置补全:在
hardhat.config.ts的module.exports顶层对象中,添加zksync: {}(可为空对象)。 - 本地节点连接:使用
zksync-cli start-node启动本地节点后,在zksync对象中指定节点地址:zksync: { zksyncNodeUrl: "http://localhost:3050" }。 - 导入顺序:在配置文件顶部,先导入
@matterlabs/hardhat-zksync-solc,再导入@matterlabs/hardhat-zksync-deploy,避免顺序错误导致插件注册失败。
本地部署合约后 zkSync Explorer 查不到交易
本地节点上部署成功后,在官方区块浏览器(如https://zksync2-testnet.zkscan.io)查不到交易记录,原因是官方浏览器仅索引测试网或主网数据。本地链与公共网络相互独立,浏览器无法显示本地交易。
调试本地合约的正确方法:
- 命令行查询:使用
zksync-cli工具:zksync-cli get-transaction --hash 0x... --network http://localhost:3050。 - 编程接口:通过
ethers.js等库连接本地节点,调用provider.getTransactionReceipt()获取交易收据。 - 本地化浏览器:如需图形界面,可运行zkSync Era官方提供的本地版区块浏览器(通常需Docker Compose启动),后端需配置为连接本地节点。
- 版本区分:zkSync v1(Legacy)与v2(Era)的浏览器地址、API格式完全不同。当前常用的
zksync2-testnet对应v2网络,旧教程中的zksync.io/explorer已停用。
理解本地开发链与公共区块链浏览器为两套独立系统,在zkSync生态中尤为重要。这与以太坊(Ganache + Etherscan)的区别更易混淆,需仔细厘清。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章