Hardhat部署至BSC_TESTNET时出现NETWORK_ERROR问题求助
BSC测试网部署合约时触发NETWORK_ERROR错误
我用Solidity编写的智能合约已完成编译和测试,所有测试用例均通过,但执行部署命令:
npx hardhat run scripts/deploy.js --network bsctest
将合约部署至BSC测试网时,返回NETWORK_ERROR错误。
我的Hardhat配置代码如下:
require("@nomiclabs/hardhat-ethers"); require("dotenv").config(); require("@nomiclabs/hardhat-etherscan") /** @type import('hardhat/config').HardhatUserConfig */ module.exports = { solidity: "0.6.12", settings: { optimizer: true, runs: 200 }, networks: { dev: { url: "http://localhost:7545", gasPrice: 20, saveDeployments: true }, bsctest: { url: "https://data-seed-prebsc-2-s2.binance.org:8545/", accounts: [process.env.PRIV_KEY], gasPrice: 10000000000, blockGasLimit: 1000000 }, }, etherscan:{ apiKey:process.env.API_KEY } };
排查与解决方案
- 修正Solidity配置结构:当前配置中
settings与solidity同级是错误的,正确写法应将settings嵌套在solidity对象内,同时优化器配置需规范为enabled字段:solidity: { version: "0.6.12", settings: { optimizer: { enabled: true, runs: 200 } } }, - 更换BSC测试网节点:当前使用的节点可能存在访问问题,建议替换为官方推荐的其他测试网节点,例如:
https://data-seed-prebsc-1-s1.binance.org:8545/https://data-seed-prebsc-1-s2.binance.org:8545/
- 验证私钥与账户余额:确认
.env文件中的PRIV_KEY是BSC测试网账户的有效私钥,且账户内有足够的测试BNB(可通过BSC测试网水龙头领取) - 移除不合理的Gas配置:
blockGasLimit设置为1000000远低于BSC测试网的实际区块Gas上限,建议直接删除该配置,让Hardhat自动估算Gas用量 - 测试节点连通性:通过curl命令验证本地能否正常访问节点:
若返回正常区块号则节点可用,否则检查网络连接或更换节点curl -X POST https://data-seed-prebsc-2-s2.binance.org:8545/ -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' - 更新依赖版本:确保
@nomiclabs/hardhat-ethers、@nomiclabs/hardhat-etherscan等依赖与Hardhat版本兼容,可执行npm update更新所有依赖包
内容的提问来源于stack exchange,提问作者Adi Miuprix
相关产品推荐
相关产品推荐

