如何在本地以太坊测试网络hardhat中使用pancakeswap?

  • 时间:
  • 浏览:106
  • 来源:区块链技术网

已经有相关的文章教程可以将部署到以太坊[2]类链上了, 例如:

pancake-swap-interface-v1

  • 如何将PancakeSwap部署到以太坊类链上[3]
  • 但是,对于如何配置还没有一个详细完整的教程。在此,笔者将pancake前端工程pancake-frontend[4]配置成本地的hardhat[5]测试网环境,方便大家一起学习。

    pancake-frontend

    项目的完整地址在:https://github.com/chobynleo/pancake-swap-frontend-hardhat-testnet

    Example

    以下是相应的配置教程:(转载请注明出处)

    一个基于pancake-frontend和hardhat的以太坊测试环境

    工程文件的拉取与环境的配置

    1.下载pancake-swap-core源码git clone git@github.com:pancakeswap/pancake-swap-core.gityarn installyarn compile

    2.下载pancake-swap-periphery源码git clone git@github.com:pancakeswap/pancake-swap-periphery.gityarn installyarn compile

    3.下载pancake-swap-interface-v1前端源码git clone git@github.com:pancakeswap/pancake-swap-interface-v1.gityarn install

    tip:安装过程出现import @uniswap/v2-core/contracts/interfaces/IPancakePair.sol编译报错问题  参考登链社区[6]的回答

    安装与部署

    合约地址的源码可以到https://bscscan.com/address/your_address#code下载

    pancake-swap-core目录下

    • 安装hardhat并编写部署文件PancakeFactory.sol;

      npm install --save-dev
      hardhat npx hardhat

      选择Create an empty hardhat.config.js,并进行基本的solidity版本设置、ALCHEMY_API_KEY设置等;

    • 创建scripts/deploy.js并编写相应的部署脚本,注意要将你的账户地址赋值给feeToSetter变量,传入合约的构造函数中,接着部署;

      npx hardhat run scripts/deploy.js --network dev
    • 保存INIT_CODE_PAIR_HASH;

    pancake-swap-periphery目录下

    • 安装hardhat并编写部署文件PancakeRouter.sol;

      npm install --save-dev hardhat
      npx hardhat

      选择Create an empty hardhat.config.js,并进行基本的solidity版本设置、ALCHEMY_API_KEY设置等;

    • 找到PancakeLibrary.sol里的pairFor函数, 将其INIT_CODE_PAIR_HASHhex更改为我们的INIT_CODE_PAIR_HASH;

    • 创建scripts/deploy.js并编写相应的部署脚本,将PancakeFactory的address和WETH的address作为两个参数传入合约的构造函数中;

      npx hardhat run scripts/deploy.js --network dev

      遇到error:max code size exceeded,解决的方法是将solidity->optimizer->runs值设置为200;

    pancake-frontend目录下

    以下将列出所有需要更改的文件:

    • ethers.providers.StaticJsonRpcProvider(RPC_URL)的设置在src/utils/providers.ts,参数在env.development中的REACT_APP_NODE_PRODUCTION;
    • 网络url配置的路径在PANCAKE-FRONTEND/src/config/constants/networks.ts;
    • testnet网络中默认的token配置也要更改,在src/config/constants/tokens.ts;
    • tokenlist路径在src/config/constants/tokenlists/pancake-default.tokenlist.json,但为了便于本地访问,在初始部署时我拷贝了到public/里面,后续有需要更改的是public/里面的值;
    • PANCAKE_EXTENDEDPANCAKE_TOP100路径在src/config/constants/lists.ts
    • FACTORY_ADDRESSINIT_CODE_HASH的配置在node_modules/@pancakeswap/sdk/dist/constants.d.ts
    • 钱包连接网络的配置在src/utils/wallet.ts
    • ROUTER_ADDRESS的配置在src/config/constants/index.ts;
    • masterCheflotteryV2multiCall等合约的地址配置在src/config/constants/contracts.ts
    • ABIaddress的配置分别在config/abi/,utils/addressHelpers,其引用在src/utils/contractHelpers.ts,src/hooks/useContract.ts
    • priceHelperLps的配置在src/config/constants/priceHelperLps.ts;
    • src/state/farms/hooks.ts里面的useFarmFromPid(251)需要更改成正确的参数值
    • src/config/index.ts里面的BASE_BSC_SCAN_URLS,BASE_URL,BASE_BSC_SCAN_URL需要更改成正确的参数值
    • farmpools,ifo,pricehelper,contracts的里面的合约地址和网络chainId需要更改,分别在src/config/constants/farm.tssrc/config/constants/pools.tssrc/config/constants/ifo.tssrc/config/constants/pricehelper.tssrc/config/constants/contract.ts

    猜你喜欢

    这些还在运营的野鸡“交易所”不要再碰了

    不管币圈还在任何投资项目中,只要不能安全出金都是骗人。熊大说过野鸡交易所限制用户提现有很多?涉嫌洗钱?涉嫌刷单?涉嫌赌博?资不抵债?系统穿仓等等?没有经历过真正牛熊市交易所很难在这个市场存活。这也就是为什么不建议投资者选择小交易所交易的原因。

    2022-01-18

    OKEX交易所突然更名,意欲何为?

    你好,我是良心哥。我们专门曝光币圈黑幕,怒怼空气币和各种骗局。如果你在币圈被割了韭菜或者被诈骗,来找我,我帮你!

    2022-01-18

    WTF 空投,吃了我的gas费给我拿回来

    WTF ?抱歉,我们不是在骂人。 这是一个正在发钱的项目,开局半小时内持币地址已经突破5000,截止目前发稿2个小时时间持币地址已经破万。登录头部交易所几乎是必然。话不多说,操作手册奉上:

    2022-01-17

    九句话,从零了解Web3

    Web3 这个新鲜的专业名词诞生于 2014 年,在一开始,他被用来描述实现去中心化共识的新型协议,而到如今,它已经成为了对公链生态、应用程序甚至设计理念的统称。犹如「我是谁?」这样的哲学问题一样,「什么是 Web3」这个问题很多人都给出了自己的答案,而且似乎每个人的回答都不尽相同。

    2022-01-17

    零知识证明 - Halo2电路构建源代码导读

    理解Halo2,可以从两部分着手:1/ 电路构建 2/ 证明系统。从开发者的角度看,电路构建是接口。如何通过Halo2构建建电路,这些电路在Halo2的内部如何表示是理解电路构建的关键。本文就从源代码的角度深入浅出讲解Halo2的电路构建。

    2022-01-17