diff --git a/lists/images/zksync/0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181.png b/lists/images/zksync/0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181.png new file mode 100644 index 00000000..2148132e Binary files /dev/null and b/lists/images/zksync/0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181.png differ diff --git a/lists/images/zksync/0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4.png b/lists/images/zksync/0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4.png new file mode 100644 index 00000000..ddff786c Binary files /dev/null and b/lists/images/zksync/0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4.png differ diff --git a/lists/images/zksync/0x493257fD37EDB34451f62EDf8D2a0C418852bA4C.png b/lists/images/zksync/0x493257fD37EDB34451f62EDf8D2a0C418852bA4C.png new file mode 100644 index 00000000..b053ca26 Binary files /dev/null and b/lists/images/zksync/0x493257fD37EDB34451f62EDf8D2a0C418852bA4C.png differ diff --git a/lists/images/zksync/0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91.png b/lists/images/zksync/0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91.png new file mode 100644 index 00000000..b028b56e Binary files /dev/null and b/lists/images/zksync/0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91.png differ diff --git a/lists/images/zksync/0xBBeB516fb02a01611cBBE0453Fe3c580D7281011.png b/lists/images/zksync/0xBBeB516fb02a01611cBBE0453Fe3c580D7281011.png new file mode 100644 index 00000000..f7464c0c Binary files /dev/null and b/lists/images/zksync/0xBBeB516fb02a01611cBBE0453Fe3c580D7281011.png differ diff --git a/lists/pancakeswap-zksync-default.json b/lists/pancakeswap-zksync-default.json new file mode 100644 index 00000000..8d911f42 --- /dev/null +++ b/lists/pancakeswap-zksync-default.json @@ -0,0 +1,57 @@ +{ + "name": "PancakeSwap Zksync Default", + "timestamp": "2023-08-01T06:44:17.076Z", + "version": { + "major": 1, + "minor": 0, + "patch": 1 + }, + "logoURI": "https://pancakeswap.finance/logo.png", + "keywords": [ + "pancakeswap", + "default", + "zksync" + ], + "tokens": [ + { + "name": "Wrapped Ether", + "symbol": "WETH", + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "chainId": 324, + "decimals": 18, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91.png" + }, + { + "name": "USD Coin", + "symbol": "USDC", + "address": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "chainId": 324, + "decimals": 6, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4.png" + }, + { + "name": "Tether USD", + "symbol": "USDT", + "address": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + "chainId": 324, + "decimals": 6, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x493257fD37EDB34451f62EDf8D2a0C418852bA4C.png" + }, + { + "name": "Binance USD", + "symbol": "BUSD", + "address": "0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181", + "chainId": 324, + "decimals": 18, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181.png" + }, + { + "name": "Wrapped BTC", + "symbol": "WBTC", + "address": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", + "chainId": 324, + "decimals": 8, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0xBBeB516fb02a01611cBBE0453Fe3c580D7281011.png" + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index c2dca596..d52ae2f3 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,9 @@ "checksum:pcs-eth-default": "yarn build && node ./dist checksum pancakeswap-eth-default", "generate:pcs-eth-default": "yarn test --list=pancakeswap-eth-default && yarn build && node ./dist generate pancakeswap-eth-default", "makelist:pcs-eth-default": "yarn checksum:pcs-eth-default && yarn generate:pcs-eth-default", + "checksum:pcs-zksync-default": "yarn build && node ./dist checksum pancakeswap-zksync-default", + "generate:pcs-zksync-default": "yarn test --list=pancakeswap-zksync-default && yarn build && node ./dist generate pancakeswap-zksync-default", + "makelist:pcs-zksync-default": "yarn checksum:pcs-zksync-default && yarn generate:pcs-zksync-default", "checksum:pcs-polygon-zkevm-default": "yarn build && node ./dist checksum pancakeswap-polygon-zkevm-default", "generate:pcs-polygon-zkevm-default": "yarn test --list=pancakeswap-polygon-zkevm-default && yarn build && node ./dist generate pancakeswap-polygon-zkevm-default", "makelist:pcs-polygon-zkevm-default": "yarn checksum:pcs-polygon-zkevm-default && yarn generate:pcs-polygon-zkevm-default", diff --git a/src/buildList.ts b/src/buildList.ts index a652f759..97ec4d9a 100644 --- a/src/buildList.ts +++ b/src/buildList.ts @@ -4,6 +4,7 @@ import { TokenList } from "@pancakeswap/token-lists"; import { version as pancakeswapDefaultVersion } from "../lists/pancakeswap-default.json"; import { version as pancakeswapEthDefaultVersion } from "../lists/pancakeswap-eth-default.json"; import { version as pancakeswapPolygonZkevmDefaultVersion } from "../lists/pancakeswap-polygon-zkevm-default.json"; +import { version as pancakeswapZksyncDefaultVersion } from "../lists/pancakeswap-zksync-default.json"; import { version as pancakeswapEthMMVersion } from "../lists/pancakeswap-eth-mm.json"; import { version as pancakeswapBnbMMVersion } from "../lists/pancakeswap-bnb-mm.json"; import { version as pancakeswapExtendedVersion } from "../lists/pancakeswap-extended.json"; @@ -17,6 +18,7 @@ import { version as pancakeswapMiniExtendedVersion } from "../lists/pancakeswap- import pancakeswapAptos from "./tokens/pancakeswap-aptos.json"; import pancakeswapDefault from "./tokens/pancakeswap-default.json"; import pancakeswapPolygonZkevmDefault from "./tokens/pancakeswap-polygon-zkevm-default.json"; +import pancakeswapZksyncDefault from "./tokens/pancakeswap-zksync-default.json"; import pancakeswapEthDefault from "./tokens/pancakeswap-eth-default.json"; import pancakeswapEthMM from "./tokens/pancakeswap-eth-mm.json"; import pancakeswapExtended from "./tokens/pancakeswap-extended.json"; @@ -50,6 +52,14 @@ const lists = { currentVersion: pancakeswapAptosVersion, schema: "aptos", }, + "pancakeswap-zksync-default": { + list: pancakeswapZksyncDefault, + name: "PancakeSwap Zksync Default", + keywords: ["pancakeswap", "default", "zksync"], + logoURI: "https://pancakeswap.finance/logo.png", + sort: false, + currentVersion: pancakeswapZksyncDefaultVersion, + }, "pancakeswap-polygon-zkevm-default": { list: pancakeswapPolygonZkevmDefault, name: "PancakeSwap Zkevm Default", diff --git a/src/checksum.ts b/src/checksum.ts index 49ac89c4..81f1aaef 100644 --- a/src/checksum.ts +++ b/src/checksum.ts @@ -3,6 +3,7 @@ import path from "path"; import { getAddress } from "@ethersproject/address"; import pancakeswapDefault from "./tokens/pancakeswap-default.json"; import pancakeswapEthDefault from "./tokens/pancakeswap-eth-default.json"; +import pancakeswapZksyncDefault from "./tokens/pancakeswap-zksync-default.json"; import pancakeswapPolygonZkevmDefault from "./tokens/pancakeswap-polygon-zkevm-default.json"; import pancakeswapEthMM from "./tokens/pancakeswap-eth-mm.json"; import pancakeswapBnbMM from "./tokens/pancakeswap-bnb-mm.json"; @@ -18,6 +19,7 @@ const lists = { "pancakeswap-default": pancakeswapDefault, "pancakeswap-eth-default": pancakeswapEthDefault, "pancakeswap-polygon-zkevm-default": pancakeswapPolygonZkevmDefault, + "pancakeswap-zksync-default": pancakeswapZksyncDefault, "pancakeswap-eth-mm": pancakeswapEthMM, "pancakeswap-bnb-mm": pancakeswapBnbMM, "pancakeswap-extended": pancakeswapExtended, diff --git a/src/ci-check.ts b/src/ci-check.ts index b0829a32..a677a445 100644 --- a/src/ci-check.ts +++ b/src/ci-check.ts @@ -1,6 +1,7 @@ import srcDefault from "./tokens/pancakeswap-default.json"; import srcEthDefault from "./tokens/pancakeswap-eth-default.json"; import srcPolygonZkevmDefault from "./tokens/pancakeswap-polygon-zkevm-default.json"; +import srcZksyncDefault from "./tokens/pancakeswap-zksync-default.json"; import srcExtended from "./tokens/pancakeswap-extended.json"; import srcTop100 from "./tokens/pancakeswap-top-100.json"; import srcTop15 from "./tokens/pancakeswap-top-15.json"; @@ -11,6 +12,7 @@ import srcMiniExtended from "./tokens/pancakeswap-mini-extended.json"; import defaultList from "../lists/pancakeswap-default.json"; import defaultEthList from "../lists/pancakeswap-eth-default.json"; import defaultPolygonZkevmList from "../lists/pancakeswap-polygon-zkevm-default.json"; +import defaultZksyncList from "../lists/pancakeswap-zksync-default.json"; import extendedtList from "../lists/pancakeswap-extended.json"; import top15List from "../lists/pancakeswap-top-15.json"; import top100tList from "../lists/pancakeswap-top-100.json"; @@ -30,6 +32,11 @@ const lists = [ src: srcEthDefault, actual: defaultEthList, }, + { + name: "pancakeswap-zksync-default", + src: srcZksyncDefault, + actual: defaultZksyncList, + }, { name: "pancakeswap-polygon-zkevm-default", src: srcPolygonZkevmDefault, diff --git a/src/tokens/pancakeswap-zksync-default.json b/src/tokens/pancakeswap-zksync-default.json new file mode 100644 index 00000000..6fee8f52 --- /dev/null +++ b/src/tokens/pancakeswap-zksync-default.json @@ -0,0 +1,42 @@ +[ + { + "name": "Wrapped Ether", + "symbol": "WETH", + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "chainId": 324, + "decimals": 18, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91.png" + }, + { + "name": "USD Coin", + "symbol": "USDC", + "address": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "chainId": 324, + "decimals": 6, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4.png" + }, + { + "name": "Tether USD", + "symbol": "USDT", + "address": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + "chainId": 324, + "decimals": 6, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x493257fD37EDB34451f62EDf8D2a0C418852bA4C.png" + }, + { + "name": "Binance USD", + "symbol": "BUSD", + "address": "0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181", + "chainId": 324, + "decimals": 18, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181.png" + }, + { + "name": "Wrapped BTC", + "symbol": "WBTC", + "address": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", + "chainId": 324, + "decimals": 8, + "logoURI": "https://tokens.pancakeswap.finance/images/zksync/0xBBeB516fb02a01611cBBE0453Fe3c580D7281011.png" + } +] diff --git a/src/utils/multicall.ts b/src/utils/multicall.ts index 07b958d3..c3ac9de2 100644 --- a/src/utils/multicall.ts +++ b/src/utils/multicall.ts @@ -7,6 +7,7 @@ const multicall = { [1]: "0xcA11bde05977b3631167028862bE2a173976CA11", [56]: "0xcA11bde05977b3631167028862bE2a173976CA11", [1101]: "0xcA11bde05977b3631167028862bE2a173976CA11", + [324]: "0xF9cda624FBC7e059355ce98a31693d299FACd963", }; interface MultiCall { diff --git a/src/utils/simpleRpcProvider.ts b/src/utils/simpleRpcProvider.ts index d392347b..cc5ea6e3 100644 --- a/src/utils/simpleRpcProvider.ts +++ b/src/utils/simpleRpcProvider.ts @@ -3,15 +3,18 @@ import { ethers } from "ethers"; const RPC_URL = "https://nodes.pancakeswap.info"; const ETH_RPC_URL = "https://cloudflare-eth.com"; const POLYGON_ZKEVM_RPC_URL = "https://f2562de09abc5efbd21eefa083ff5326.zkevm-rpc.com/"; +const ZKSYNC_RPC_URL = "https://mainnet.era.zksync.io"; const bscRpcProvider = new ethers.providers.StaticJsonRpcProvider(RPC_URL, 56); const ethRpcProvider = new ethers.providers.StaticJsonRpcProvider(ETH_RPC_URL, 1); const polygonZkevmRpcProvider = new ethers.providers.StaticJsonRpcProvider(POLYGON_ZKEVM_RPC_URL, 1101); +const zksyncRpcProvider = new ethers.providers.StaticJsonRpcProvider(ZKSYNC_RPC_URL, 324); const simpleRpcProvider = { [1]: ethRpcProvider, [56]: bscRpcProvider, [1101]: polygonZkevmRpcProvider, + [324]: zksyncRpcProvider, }; export default simpleRpcProvider; diff --git a/test/default.test.ts b/test/default.test.ts index e0257895..ccaa7b95 100644 --- a/test/default.test.ts +++ b/test/default.test.ts @@ -6,6 +6,7 @@ import { getAddress } from "@ethersproject/address"; import pancakeswapSchema from "@pancakeswap/token-lists/schema/pancakeswap.json"; import currentPancakeswapDefaultList from "../lists/pancakeswap-default.json"; import currentPancakeswapEthDefaultList from "../lists/pancakeswap-eth-default.json"; +import currentPancakeswapZksyncDefaultList from "../lists/pancakeswap-zksync-default.json"; import currentPancakeswapPolygonZkevmDefaultList from "../lists/pancakeswap-polygon-zkevm-default.json"; import currentPancakeswapEthMMList from "../lists/pancakeswap-eth-mm.json"; import currentPancakeswapBnbMMList from "../lists/pancakeswap-bnb-mm.json"; @@ -29,6 +30,7 @@ const listArgs = process.argv const CASES = [ ["pancakeswap-default"], ["pancakeswap-eth-default"], + ["pancakeswap-zksync-default"], ["pancakeswap-polygon-zkevm-default"], ["pancakeswap-eth-mm"], ["pancakeswap-extended"], @@ -49,6 +51,7 @@ const currentLists = { "pancakeswap-eth-mm": currentPancakeswapEthMMList, "pancakeswap-bnb-mm": currentPancakeswapBnbMMList, "pancakeswap-eth-default": currentPancakeswapEthDefaultList, + "pancakeswap-zksync-default": currentPancakeswapZksyncDefaultList, "pancakeswap-polygon-zkevm-default": currentPancakeswapPolygonZkevmDefaultList, "pancakeswap-extended": currentPancakeswapExtendedtList, "pancakeswap-top-100": currentPancakeswapTop100tList, @@ -83,6 +86,7 @@ const validate = ajv.compile(pancakeswapSchema); const pathToImages = path.join(path.resolve(), "lists", "images"); const pathToEthImages = path.join(path.resolve(), "lists", "images", "eth"); +const pathToZksyncImages = path.join(path.resolve(), "lists", "images", "zksync"); const pathToPolygonZkevmImages = path.join(path.resolve(), "lists", "images", "polygon-zkevm"); const logoFiles = fs @@ -95,6 +99,11 @@ const ethLogoFiles = fs .filter((f) => f.isFile()) .filter((f) => !/(^|\/)\.[^\/\.]/g.test(f.name)); +const polygonZksyncFiles = fs + .readdirSync(pathToZksyncImages, { withFileTypes: true }) + .filter((f) => f.isFile()) + .filter((f) => !/(^|\/)\.[^\/\.]/g.test(f.name)); + const polygonZkevmLogoFiles = fs .readdirSync(pathToPolygonZkevmImages, { withFileTypes: true }) .filter((f) => f.isFile()) @@ -104,12 +113,14 @@ const multiChainLogoPath = { [56]: "", [1]: "/eth", [1101]: "/polygon-zkevm", + [324]: "/zksync", }; const multiChainLogoFiles = { [56]: logoFiles, [1]: ethLogoFiles, [1101]: polygonZkevmLogoFiles, + [324]: polygonZksyncFiles, }; // Modified https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_get