You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何成功将PancakeSwap V2分叉到BSC?解决Hardhat编译配置错误

解决Hardhat配置错误并分叉PancakeSwap V2到BSC网络

错误分析与修复步骤

1. 环境变量未正确加载(核心原因)

错误提示里的BSC_API_URL和MNEMONIC值为undefined,导致bsc网络配置无效。

  • 项目根目录新建.env文件,填入以下内容:
    BSC_API_URL=https://bsc-dataseed.binance.org/
    MNEMONIC=你的测试助记词(注意:切勿泄露生产环境助记词)
    
  • 确保dotenv依赖已安装:执行npm install dotenv

2. 修正Hardhat网络配置

原hardhat网络的forking配置因环境变量失效导致格式错误,同时补充链ID匹配BSC主网:

hardhat: {
  forking: {
    url: BSC_API_URL,
    // 可选:指定固定区块高度,避免链上数据变化影响测试稳定性
    // blockNumber: 20000000
  },
  chainId: 56 // 匹配BSC主网链ID,避免交互时的链ID冲突
}

3. 简化部署脚本(移除冗余操作)

PancakeSwap的Pair合约无需手动部署,Factory会通过createPair方法自动创建Pair实例。修改后的scripts/deploy.js:

const { ethers } = require("hardhat");

async function main() {
    const [deployer] = await ethers.getSigners();

    const PancakeFactory = await ethers.getContractFactory('PancakeFactory');
    const factory = await PancakeFactory.deploy(deployer.address);
    await factory.deployed();
    console.log('PancakeFactory deployed to:', factory.address);
}

main()
    .then(() => process.exit(0))
    .catch(error => {
        console.error(error);
        process.exit(1);
    });

完整修正后的hardhat.config.js

require('@nomiclabs/hardhat-ethers');
require('dotenv').config();

const { BSC_API_URL, MNEMONIC } = process.env;

module.exports = {
  solidity: "0.5.16", // 匹配PancakeSwap V2的Solidity版本
  networks: {
    bsc: {
      url: BSC_API_URL,
      accounts: {
        mnemonic: MNEMONIC,
      },
      chainId: 56
    },
    hardhat: {
      forking: {
        url: BSC_API_URL,
        // blockNumber: 20000000 // 可选配置
      },
      chainId: 56
    },
  },
};

验证操作

  1. 执行编译:npx hardhat compile,确认无配置错误
  2. 启动本地分叉节点:npx hardhat node,节点会同步BSC主网指定区块的数据
  3. 部署Factory到分叉链:npx hardhat run scripts/deploy.js --network hardhat

内容的提问来源于stack exchange,提问作者Lucky Rajput

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:23:11