Preparing source
- Clone
pancake-swap-core
git clone git@github.com:pancakeswap/pancake-swap-core.git
cd pancake-swap-core
git checkout -b factory 3b214306770e86bc3a64e67c2b5bdb566b4e94a7
yarn install
yarn compile
- Clone
pancake-swap-periphery
git clone git@github.com:pancakeswap/pancake-swap-periphery.git
cd pancake-swap-periphery
git checkout -b router d769a6d136b74fde82502ec2f9334acc1afc0732
yarn install
yarn add @uniswap/v2-core@"file:../pancake-swap-core"
yarn compile
- Clone
pancake-swap-interface-v1
git clone git@github.com:pancakeswap/pancake-swap-interface-v1.git
cd pancake-swap-interface-v1
git checkout -b v1 0257017f2daaae2f67c24ded70b5829f74a01b3c
yarn install
Setup
https://www.npmjs.com/package/sol-merger
Install contract merger:npm install sol-merger -g
PancakeFactory
and PancakeRouter
Prepare sol-merger pancake-swap-core/contracts/PancakeFactory.sol ./build
sol-merger pancake-swap-core/contracts/PancakePair.sol ./build
sol-merger pancake-swap-periphery/contracts/PancakeRouter01.sol ./build
sol-merger pancake-swap-periphery/contracts/PancakeRouter.sol ./build
PancakeFactory
and PancakeRouter
Deploy
Deploy WBNB
- New File:
WBNB.sol
=> Copy source from https://gist.github.com/nhancv/b0b35f16472e4998d0fd17b7a1e4f707 - Compiler tab => Select compiler:
v0.8.3+commit.8d00100c
- Deploy tab => Select
WBNB
-> Deploy
Deploy PancakeFactory
- New File:
PancakeFactory.sol
=> Copy source from./build/PancakeFactory.sol
- Compiler tab => Select compiler:
v0.5.16+commit.9c3226ce
- Deploy tab => Select
PancakeFactory
-> Fill your address asfeeToSetter
in constructor -> Deploy
Deploy PancakeRouter01
- New File:
PancakeRouter01.sol
=> Copy source from./build/PancakeRouter01.sol
- Expand
PancakeFactory
deployed above -> ReadINIT_CODE_PAIR_HASH
-> Copy this hash without prefix0x
. Ex:9fe1b508f2b0a84ca3b07189bfa32dd3309fb04b5ddec5e0456a232004b07194
- Edit
PancakeRouter01
: FindPancakeLibrary
->pairFor
function => Replace new hex byINIT_CODE_PAIR_HASH
above. Ex:hex'd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66'
->hex'9fe1b508f2b0a84ca3b07189bfa32dd3309fb04b5ddec5e0456a232004b07194'
- Compiler tab => Select compiler:
v0.6.6+commit.6c089d02
- Deploy tab => Select
PancakeRouter01
-> FillPancakeFactory
address andWBNB
address as constructor params -> Deploy
Deploy PancakeRouter (Main Router)
- New File:
PancakeRouter.sol
=> Copy source from./build/PancakeRouter.sol
- Expand
PancakeFactory
deployed above -> ReadINIT_CODE_PAIR_HASH
-> Copy this hash without prefix0x
. Ex:9fe1b508f2b0a84ca3b07189bfa32dd3309fb04b5ddec5e0456a232004b07194
- Edit
PancakeRouter
: FindPancakeLibrary
->pairFor
function => Replace new hex byINIT_CODE_PAIR_HASH
above. Ex:hex'd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66'
->hex'9fe1b508f2b0a84ca3b07189bfa32dd3309fb04b5ddec5e0456a232004b07194'
- Compiler tab => Select compiler:
v0.6.6+commit.6c089d02
; Check onEnable optimization: 200
to avoidContract code size limit
issue - Deploy tab => Select
PancakeRouter
-> FillPancakeFactory
address andWBNB
address as constructor params -> Deploy
Setup Frontend
- Update .env
cd pancake-swap-interface-v1
cp .env.development .env
-
Update
PancakeRouter
address toROUTER_ADDRESS
atsrc/constants/index.ts
-
Update support chain to testnet at
src/connectors/index.ts
- Change from
supportedChainIds: [56, 97]
tosupportedChainIds: [421613]
- Change from
56
to421613
- Change from
-
Update chain id
97
to421613
.PancakeFactory
address and code hash toFACTORY_ADDRESS
andINIT_CODE_HASH
atnode_modules/@pancakeswap-libs/sdk/dist/constants.d.ts
,node_modules/@pancakeswap-libs/sdk/dist/sdk.cjs.development.js
,node_modules/@pancakeswap-libs/sdk/dist/sdk.cjs.production.min.js
andnode_modules/@pancakeswap-libs/sdk/dist/sdk.esm.js
-
Update
PancakeFactory
address tov2 factory
;PancakeRouter01
address tov2 router 01
andPancakeRouter
address tov2 router 02
atsrc/state/swap/hooks.ts
-
Update
WBNB
address atnode_modules/@pancakeswap-libs/sdk/dist/sdk.cjs.development.js
,node_modules/@pancakeswap-libs/sdk/dist/sdk.cjs.production.min.js
,node_modules/@pancakeswap-libs/sdk/dist/sdk.esm.js
-
VERIFY CHANGES by
Find All
old addresses and replace new ones:- WBNB: 0xaE8E19eFB41e7b96815649A6a60785e1fbA84C1e
- PancakeFactory: 0xBCfCcbde45cE874adCB698cC183deBcF17952812
- INIT_CODE_HASH: 0xd0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66
- PancakeRouter01: 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a
- PancakeRouter: 0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F
-
Deploy your own tokens
- Deploy your own tokens and update info (token address + chainId to 421613) to
src/constants/token/pancakeswap.json
- Remember update token icon with name as token address in lowercase mode to
public/images/coins
- Update support network from
ChainId.MAINNET
toChainId.BSCTESTNET
atsrc/constants/index.ts
- Update coin addresses to your at
src/constants/index.ts
- Update
src/components/Menu/index.tsx
: FrompriceData.data[CAKE.address].price
topriceData.data[CAKE.address]?.price ?? 0
- Update
src/hooks/useGetDocumentTitlePrice.ts
: FrompriceData.data[CAKE.address].price
topriceData.data[CAKE.address]?.price ?? 0
- Deploy your own tokens and update info (token address + chainId to 421613) to
-
Custom menu at
src/components/Menu/config.ts
Start and Build Frontend
- Start
yarn start
- Build
yarn build
Deployment
- WBNB: 0xD8bbeA7e504851b0aa1c37475E7601c590cFa0B4
- PancakeFactory: 0x259E9786BB40eb5F656dbc16e15538a2340c2554
- INIT_CODE_HASH: 0x9fe1b508f2b0a84ca3b07189bfa32dd3309fb04b5ddec5e0456a232004b07194
- PancakeRouter01: 0x706B5c92d9E7fFD2dd50e56A69906C287C6C5550
- PancakeRouter: 0x8b707e7578059aD857f228FA63E82AA80E132b97
- Multicall: 0xb4B23070BE725100435457CE2E887aB716575EB2
- Frontend: https://pcs-arb.nhancv.com
Tokens
- BUSD Token: 0x2B500C6E7b7616865e3cD3f61e98Ae8ceBDf04C5
- USDT Token: 0x1931AF8B85fFE2e2b19ceFD4b739D39Fe9b17D99
- XRP Token: 0xB0aE75378B40Bb3469cbcda9C5727bdEDfcDff31
- DAI Token: 0x381D14aa1425d643A82A1ba60D9Ce24a57aE798F
BSC Testnet Pancakeswap
- Repo: https://github.com/nhancv/pancake-swap-testnet
- Web: https://pcs.nhancv.com
- Addresses
- WBNB: 0x0dE8FCAE8421fc79B29adE9ffF97854a424Cad09
- PancakeFactory: 0x5Fe5cC0122403f06abE2A75DBba1860Edb762985
- INIT_CODE_HASH: 0xbb600ba95884f2c2837114fd2f157d00137e0b65b0fe5226523d720e4a4ce539
- PancakeRouter01: 0x3E2b14680108E8C5C45C3ab5Bc04E01397af14cB
- PancakeRouter: 0xCc7aDc94F3D80127849D2b41b6439b7CF1eB4Ae0