From 4a005e20b4c4f8eb6cb9446fdb26f9556353f7f1 Mon Sep 17 00:00:00 2001 From: Luca Perret Date: Mon, 8 Nov 2021 12:15:55 +0100 Subject: [PATCH 1/2] feat(plugin): add few others networks --- dapp/src/components/CheckTx.tsx | 12 + devops/hardhat.config.ts | 431 +++++++++++++++++++++----------- devops/helper-hardhat-config.ts | 79 ++++++ plugins/fund-link/src/config.ts | 60 +++++ 4 files changed, 433 insertions(+), 149 deletions(-) diff --git a/dapp/src/components/CheckTx.tsx b/dapp/src/components/CheckTx.tsx index 0f9ecc0..86104c4 100644 --- a/dapp/src/components/CheckTx.tsx +++ b/dapp/src/components/CheckTx.tsx @@ -10,6 +10,18 @@ const explorers: { [chainID: string]: string } = { "5": "https://goerli.etherscan.io", "137": "https://polygonscan.com", "80001": "https://mumbai.polygonscan.com", + "56": "https://bscscan.com", + "97": "https://testnet.bscscan.com", + "43114": "https://snowtrace.io", + "43113": "https://testnet.snowtrace.io", + "30": "https://explorer.rsk.co", + "100": "https://blockscout.com/xdai/mainnet", + "250": "https://ftmscan.com", + "4002": "https://testnet.ftmscan.com", + "421611": "https://testnet.arbiscan.io", + "128": "https://hecoscan.xyz", + "10": "https://optimistic.etherscan.io", + "69": "https://kovan-optimistic.etherscan.io", }; interface Props { diff --git a/devops/hardhat.config.ts b/devops/hardhat.config.ts index ed033e5..d3f08ef 100644 --- a/devops/hardhat.config.ts +++ b/devops/hardhat.config.ts @@ -1,152 +1,285 @@ /** * @type import('hardhat/config').HardhatUserConfig */ -import "@nomiclabs/hardhat-waffle"; -import "@nomiclabs/hardhat-ethers"; -import "@nomiclabs/hardhat-truffle5"; -import "@nomiclabs/hardhat-etherscan"; -import "@typechain/hardhat"; -import "hardhat-abi-exporter"; -import "hardhat-deploy"; -import "@appliedblockchain/chainlink-plugins-api-consumer"; -import "@appliedblockchain/chainlink-plugins-price-consumer"; -import "@appliedblockchain/chainlink-plugins-random-number-consumer"; -import "@appliedblockchain/chainlink-plugins-fund-link"; - -import "./tasks/accounts"; -import "./tasks/balance"; -import "./tasks/withdraw-link"; -import "./tasks/block-number"; -import "./tasks/block-number"; - -require("dotenv").config(); - -const MAINNET_RPC_URL = - process.env.MAINNET_RPC_URL || - process.env.ALCHEMY_MAINNET_RPC_URL || - "https://eth-mainnet.alchemyapi.io/v2/your-api-key"; -const RINKEBY_RPC_URL = - process.env.RINKEBY_RPC_URL || - "https://eth-rinkeby.alchemyapi.io/v2/your-api-key"; -const KOVAN_RPC_URL = - process.env.KOVAN_RPC_URL || - "https://eth-kovan.alchemyapi.io/v2/qDK0PvoVPRUMt99Z6r71gXp7wjiPx2HF"; -const POLYGON_RPC_URL = - process.env.POLYGON_RPC_URL || - "https://polygon-mainnet.g.alchemyapi.io/v2/your-api-key"; -const MUMBAI_RPC_URL = - process.env.MUMBAI_RPC_URL || - "https://polygon-mumbai.g.alchemyapi.io/v2/your-api-key"; -const MNEMONIC = process.env.MNEMONIC || "your mnemonic"; -const ETHERSCAN_API_KEY = - process.env.ETHERSCAN_API_KEY || "Your etherscan API key"; -const PRIVATE_KEY = process.env.PRIVATE_KEY || "your private key"; - -export default { - defaultNetwork: "hardhat", - networks: { - hardhat: { - // // If you want to do some forking, uncomment this - // forking: { - // url: MAINNET_RPC_URL - // } - }, - localhost: {}, - main: { - url: MAINNET_RPC_URL, - accounts: [PRIVATE_KEY], - // accounts: { - // mnemonic: MNEMONIC, - // }, - }, - kovan: { - url: KOVAN_RPC_URL, - accounts: [PRIVATE_KEY], - // accounts: { - // mnemonic: MNEMONIC, - // }, - saveDeployments: true, - }, - rinkeby: { - url: RINKEBY_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - polygon: { - url: POLYGON_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - mumbai: { - url: MUMBAI_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - ganache: { - url: "http://localhost:8545", - accounts: { - mnemonic: MNEMONIC, - }, - }, - }, - etherscan: { - // Your API key for Etherscan - // Obtain one at https://etherscan.io/ - apiKey: ETHERSCAN_API_KEY, - }, - namedAccounts: { - deployer: { - default: 0, // here this will by default take the first account as deployer - 1: 0, // similarly on mainnet it will take the first account as deployer. Note though that depending on how hardhat network are configured, the account 0 on one network can be different than on another - }, - feeCollector: { - default: 1, - }, - }, - solidity: { - compilers: [ - { - version: "0.6.6", - }, - { - version: "0.4.24", - }, - ], - }, - abiExporter: { - path: "./abi", - clear: true, - flat: true, - spacing: 2, - }, - bytecodeExporter: { - path: "./bytecode", - clear: true, - flat: true, - spacing: 2, - }, - typechain: { - outDir: "types", - }, - external: { - contracts: [ - { - artifacts: - "../node_modules/@appliedblockchain/chainlink-contracts/artifacts", - }, - { - artifacts: - "./node_modules/@appliedblockchain/chainlink-contracts/artifacts", - }, - ], - }, -}; + import "@nomiclabs/hardhat-waffle"; + import "@nomiclabs/hardhat-ethers"; + import "@nomiclabs/hardhat-truffle5"; + import "@nomiclabs/hardhat-etherscan"; + import "@typechain/hardhat"; + import "hardhat-abi-exporter"; + import "hardhat-deploy"; + import "@appliedblockchain/chainlink-plugins-api-consumer"; + import "@appliedblockchain/chainlink-plugins-price-consumer"; + import "@appliedblockchain/chainlink-plugins-random-number-consumer"; + import "@appliedblockchain/chainlink-plugins-fund-link"; + + import "./tasks/accounts"; + import "./tasks/balance"; + import "./tasks/withdraw-link"; + import "./tasks/block-number"; + import "./tasks/block-number"; + + require("dotenv").config(); + + const MAINNET_RPC_URL = + process.env.MAINNET_RPC_URL || + process.env.ALCHEMY_MAINNET_RPC_URL || + "https://eth-mainnet.alchemyapi.io/v2/your-api-key"; + const RINKEBY_RPC_URL = + process.env.RINKEBY_RPC_URL || + "https://eth-rinkeby.alchemyapi.io/v2/your-api-key"; + const KOVAN_RPC_URL = + process.env.KOVAN_RPC_URL || + "https://eth-kovan.alchemyapi.io/v2/qDK0PvoVPRUMt99Z6r71gXp7wjiPx2HF"; + const POLYGON_RPC_URL = + process.env.POLYGON_RPC_URL || + "https://polygon-mainnet.g.alchemyapi.io/v2/your-api-key"; + const MUMBAI_RPC_URL = + process.env.MUMBAI_RPC_URL || + "https://polygon-mumbai.g.alchemyapi.io/v2/your-api-key"; + const BSC_RPC_URL = + process.env.BSC_RPC_URL || + "https://bsc-dataseed.binance.org"; + const BSC_TESTNET_RPC_URL = + process.env.BSC_TESTNET_RPC_URL || + "https://data-seed-prebsc-1-s1.binance.org:8545"; + const AVALANCHE_RPC_URL = + process.env.AVALANCHE_RPC_URL || + "https://api.avax.network/ext/bc/C/rpc"; + const AVALANCHE_FUFI_RPC_URL = + process.env.AVALANCHE_FUFI_RPC_URL || + "https://api.avax-test.network/ext/bc/C/rpc"; + const RSK_RPC_URL = + process.env.RSK_RPC_URL || + "https://public-node.rsk.co"; + const XDAI_RPC_URL = + process.env.XDAI_RPC_URL || + "https://rpc.xdaichain.com"; + const FANTOM_RPC_URL = + process.env.FANTOM_RPC_URL || + "https://rpc.ftm.tools"; + const FANTOM_TESTNET_RPC_URL = + process.env.FANTOM_TESTNET_RPC_URL || + "https://rpc.testnet.fantom.network"; + const HUOBI_RPC_URL = + process.env.HUOBI_RPC_URL || + "https://http-mainnet-node.huobichain.com"; + const ARBITRUM_RINKEBY_RPC_URL = + process.env.ARBITRUM_RINKEBY_RPC_URL || + "https://arb-rinkeby.g.alchemy.com/v2/your-api-key"; + const OPTIMISM_RPC_URL = + process.env.OPTIMISM_RPC_URL || + "https://opt-mainnet.g.alchemy.com/v2/your-api-key"; + const OPTIMISM_KOVAN_RPC_URL = + process.env.OPTIMISM_KOVAN_RPC_URL || + "https://opt-kovan.g.alchemy.com/v2/your-api-key"; + const MNEMONIC = process.env.MNEMONIC || "your mnemonic"; + const ETHERSCAN_API_KEY = + process.env.ETHERSCAN_API_KEY || "Your etherscan API key"; + const PRIVATE_KEY = process.env.PRIVATE_KEY || "your private key"; + + export default { + defaultNetwork: "hardhat", + networks: { + hardhat: { + // // If you want to do some forking, uncomment this + // forking: { + // url: MAINNET_RPC_URL + // } + }, + localhost: {}, + main: { + url: MAINNET_RPC_URL, + accounts: [PRIVATE_KEY], + // accounts: { + // mnemonic: MNEMONIC, + // }, + }, + kovan: { + url: KOVAN_RPC_URL, + accounts: [PRIVATE_KEY], + // accounts: { + // mnemonic: MNEMONIC, + // }, + saveDeployments: true, + }, + rinkeby: { + url: RINKEBY_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + polygon: { + url: POLYGON_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + mumbai: { + url: MUMBAI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + bsc: { + url: BSC_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'bsc-testnet': { + url: BSC_TESTNET_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + avalanche: { + url: AVALANCHE_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'avalanche-fufi': { + url: AVALANCHE_FUFI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + rsk: { + url: RSK_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + xdai: { + url: XDAI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + fantom: { + url: FANTOM_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'fantom-testnet': { + url: FANTOM_TESTNET_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + huobi: { + url: HUOBI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'arbitrum-rinkeby': { + url: ARBITRUM_RINKEBY_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'optimism': { + url: OPTIMISM_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'optimism-kovan': { + url: OPTIMISM_KOVAN_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + ganache: { + url: "http://localhost:8545", + accounts: { + mnemonic: MNEMONIC, + }, + }, + }, + etherscan: { + // Your API key for Etherscan + // Obtain one at https://etherscan.io/ + apiKey: ETHERSCAN_API_KEY, + }, + namedAccounts: { + deployer: { + default: 0, // here this will by default take the first account as deployer + 1: 0, // similarly on mainnet it will take the first account as deployer. Note though that depending on how hardhat network are configured, the account 0 on one network can be different than on another + }, + feeCollector: { + default: 1, + }, + }, + solidity: { + compilers: [ + { + version: "0.6.6", + }, + { + version: "0.4.24", + }, + ], + }, + abiExporter: { + path: "./abi", + clear: true, + flat: true, + spacing: 2, + }, + bytecodeExporter: { + path: "./bytecode", + clear: true, + flat: true, + spacing: 2, + }, + typechain: { + outDir: "types", + }, + external: { + contracts: [ + { + artifacts: + "../node_modules/@appliedblockchain/chainlink-contracts/artifacts", + }, + { + artifacts: + "./node_modules/@appliedblockchain/chainlink-contracts/artifacts", + }, + ], + }, + }; + \ No newline at end of file diff --git a/devops/helper-hardhat-config.ts b/devops/helper-hardhat-config.ts index c458319..d97d40b 100644 --- a/devops/helper-hardhat-config.ts +++ b/devops/helper-hardhat-config.ts @@ -86,6 +86,85 @@ export const networkConfig: { [key: string]: NetworkConfig } = { fee: "100000000000000", fundAmount: "1000000000000000000", }, + "56": { + name: "bsc", + linkToken: "0x404460c6a5ede2d891e8297795264fde62adbb75", + ethUsdPriceFeed: "0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e", + keyHash: + "0xc251acd21ec4fb7f31bb8868288bfdbaeb4fbfec2df3735ddbd4f7dc8d60103c", + vrfCoordinator: "0x747973a5A2a4Ae1D3a8fDF5479f1514F65Db9C31", + fee: "200000000000000000", + fundAmount: "2000000000000000000", + }, + "97": { + name: "bsc-testnet", + linkToken: "0x84b9b910527ad5c03a9ca831909e21e236ea7b06", + ethUsdPriceFeed: "0x143db3CEEfbdfe5631aDD3E50f7614B6ba708BA7", + keyHash: + "0xcaf3c3727e033261d383b315559476f48034c13b18f8cafed4d871abe5049186", + vrfCoordinator: "0xa555fC018435bef5A13C6c6870a9d4C11DEC329C", + fee: "100000000000000000", + fundAmount: "1000000000000000000", + }, + "43114": { + name: "avalanche", + linkToken: "0x5947BB275c521040051D82396192181b413227A3", + ethUsdPriceFeed: "0x976B3D034E162d8bD72D6b9C989d545b839003b0", + fundAmount: "1000000000000000000", + }, + "43113": { + name: "avalanche-fuji", + linkToken: "0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846", + ethUsdPriceFeed: "0x86d67c3D38D2bCeE722E601025C25a575021c6EA", + fundAmount: "1000000000000000000", + }, + "30": { + name: "rsk", + linkToken: "0x14adae34bef7ca957ce2dde5add97ea050123827", + fundAmount: "1000000000000000000", + }, + "100": { + name: "xdai", + linkToken: "0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2", + ethUsdPriceFeed: "0xa767f745331D267c7751297D982b050c93985627", + fundAmount: "1000000000000000000", + }, + "250": { + name: "fantom", + linkToken: "0x6F43FF82CCA38001B6699a8AC47A2d0E66939407", + ethUsdPriceFeed: "0x11DdD3d147E5b83D01cee7070027092397d63658", + fundAmount: "1000000000000000000", + }, + "4002": { + name: "fantom-testnet", + linkToken: "0xfaFedb041c0DD4fA2Dc0d87a6B0979Ee6FA7af5F", + ethUsdPriceFeed: "0xB8C458C957a6e6ca7Cc53eD95bEA548c52AFaA24", + fundAmount: "1000000000000000000", + }, + "421611": { + name: "arbitrum-rinkeby", + linkToken: "0x615fBe6372676474d9e6933d310469c9b68e9726", + ethUsdPriceFeed: "0x5f0423B1a6935dc5596e7A24d98532b67A0AeFd8", + fundAmount: "1000000000000000000", + }, + "128": { + name: "huobi", + linkToken: "0x9e004545c59D359F6B7BFB06a26390b087717b42", + ethUsdPriceFeed: "0x5Fa530068e0F5046479c588775c157930EF0Dff0", + fundAmount: "1000000000000000000", + }, + "10": { + name: "optimism", + linkToken: "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", + ethUsdPriceFeed: "0xA969bEB73d918f6100163Cd0fba3C586C269bee1", + fundAmount: "1000000000000000000", + }, + "69": { + name: "optimism-kovan", + linkToken: "0x4911b761993b9c8c0d14Ba2d86902AF6B0074F5B", + ethUsdPriceFeed: "0xCb7895bDC70A1a1Dce69b689FD7e43A627475A06", + fundAmount: "1000000000000000000", + }, }; export const developmentChains = ["hardhat", "localhost"]; diff --git a/plugins/fund-link/src/config.ts b/plugins/fund-link/src/config.ts index 1be4988..8531394 100644 --- a/plugins/fund-link/src/config.ts +++ b/plugins/fund-link/src/config.ts @@ -45,6 +45,66 @@ const networkConfig: { linkToken: "0x326C977E6efc84E512bB9C30f76E30c160eD06FB", fundAmount: "0", }, + "56": { + name: "bsc", + linkToken: "0x404460c6a5ede2d891e8297795264fde62adbb75", + fundAmount: "0", + }, + "97": { + name: "bsc-testnet", + linkToken: "0x84b9b910527ad5c03a9ca831909e21e236ea7b06", + fundAmount: "0", + }, + "43114": { + name: "avalanche", + linkToken: "0x5947BB275c521040051D82396192181b413227A3", + fundAmount: "0", + }, + "43113": { + name: "avalanche-fuji", + linkToken: "0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846", + fundAmount: "0", + }, + "30": { + name: "rsk", + linkToken: "0x14adae34bef7ca957ce2dde5add97ea050123827", + fundAmount: "0", + }, + "100": { + name: "xdai", + linkToken: "0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2", + fundAmount: "0", + }, + "250": { + name: "fantom", + linkToken: "0x6F43FF82CCA38001B6699a8AC47A2d0E66939407", + fundAmount: "0", + }, + "4002": { + name: "fantom-testnet", + linkToken: "0xfaFedb041c0DD4fA2Dc0d87a6B0979Ee6FA7af5F", + fundAmount: "0", + }, + "421611": { + name: "arbitrum-rinkeby", + linkToken: "0x615fBe6372676474d9e6933d310469c9b68e9726", + fundAmount: "0", + }, + "128": { + name: "huobi", + linkToken: "0x9e004545c59D359F6B7BFB06a26390b087717b42", + fundAmount: "0", + }, + "10": { + name: "optimism", + linkToken: "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", + fundAmount: "0", + }, + "69": { + name: "optimism-kovan", + linkToken: "0x4911b761993b9c8c0d14Ba2d86902AF6B0074F5B", + fundAmount: "0", + }, }; export const getNetworkIdFromName = async (networkIdName: string) => { From 300999308abc9a2da44123c9b29bfddb952952ba Mon Sep 17 00:00:00 2001 From: Luca Perret Date: Mon, 8 Nov 2021 12:30:18 +0100 Subject: [PATCH 2/2] style(devops): fix indent --- devops/hardhat.config.ts | 563 +++++++++++++++++++-------------------- 1 file changed, 281 insertions(+), 282 deletions(-) diff --git a/devops/hardhat.config.ts b/devops/hardhat.config.ts index d3f08ef..9597a79 100644 --- a/devops/hardhat.config.ts +++ b/devops/hardhat.config.ts @@ -1,285 +1,284 @@ /** * @type import('hardhat/config').HardhatUserConfig */ - import "@nomiclabs/hardhat-waffle"; - import "@nomiclabs/hardhat-ethers"; - import "@nomiclabs/hardhat-truffle5"; - import "@nomiclabs/hardhat-etherscan"; - import "@typechain/hardhat"; - import "hardhat-abi-exporter"; - import "hardhat-deploy"; - import "@appliedblockchain/chainlink-plugins-api-consumer"; - import "@appliedblockchain/chainlink-plugins-price-consumer"; - import "@appliedblockchain/chainlink-plugins-random-number-consumer"; - import "@appliedblockchain/chainlink-plugins-fund-link"; - - import "./tasks/accounts"; - import "./tasks/balance"; - import "./tasks/withdraw-link"; - import "./tasks/block-number"; - import "./tasks/block-number"; - - require("dotenv").config(); - - const MAINNET_RPC_URL = - process.env.MAINNET_RPC_URL || - process.env.ALCHEMY_MAINNET_RPC_URL || - "https://eth-mainnet.alchemyapi.io/v2/your-api-key"; - const RINKEBY_RPC_URL = - process.env.RINKEBY_RPC_URL || - "https://eth-rinkeby.alchemyapi.io/v2/your-api-key"; - const KOVAN_RPC_URL = - process.env.KOVAN_RPC_URL || - "https://eth-kovan.alchemyapi.io/v2/qDK0PvoVPRUMt99Z6r71gXp7wjiPx2HF"; - const POLYGON_RPC_URL = - process.env.POLYGON_RPC_URL || - "https://polygon-mainnet.g.alchemyapi.io/v2/your-api-key"; - const MUMBAI_RPC_URL = - process.env.MUMBAI_RPC_URL || - "https://polygon-mumbai.g.alchemyapi.io/v2/your-api-key"; - const BSC_RPC_URL = - process.env.BSC_RPC_URL || - "https://bsc-dataseed.binance.org"; - const BSC_TESTNET_RPC_URL = - process.env.BSC_TESTNET_RPC_URL || - "https://data-seed-prebsc-1-s1.binance.org:8545"; - const AVALANCHE_RPC_URL = - process.env.AVALANCHE_RPC_URL || - "https://api.avax.network/ext/bc/C/rpc"; - const AVALANCHE_FUFI_RPC_URL = - process.env.AVALANCHE_FUFI_RPC_URL || - "https://api.avax-test.network/ext/bc/C/rpc"; - const RSK_RPC_URL = - process.env.RSK_RPC_URL || - "https://public-node.rsk.co"; - const XDAI_RPC_URL = - process.env.XDAI_RPC_URL || - "https://rpc.xdaichain.com"; - const FANTOM_RPC_URL = - process.env.FANTOM_RPC_URL || - "https://rpc.ftm.tools"; - const FANTOM_TESTNET_RPC_URL = - process.env.FANTOM_TESTNET_RPC_URL || - "https://rpc.testnet.fantom.network"; - const HUOBI_RPC_URL = - process.env.HUOBI_RPC_URL || - "https://http-mainnet-node.huobichain.com"; - const ARBITRUM_RINKEBY_RPC_URL = - process.env.ARBITRUM_RINKEBY_RPC_URL || - "https://arb-rinkeby.g.alchemy.com/v2/your-api-key"; - const OPTIMISM_RPC_URL = - process.env.OPTIMISM_RPC_URL || - "https://opt-mainnet.g.alchemy.com/v2/your-api-key"; - const OPTIMISM_KOVAN_RPC_URL = - process.env.OPTIMISM_KOVAN_RPC_URL || - "https://opt-kovan.g.alchemy.com/v2/your-api-key"; - const MNEMONIC = process.env.MNEMONIC || "your mnemonic"; - const ETHERSCAN_API_KEY = - process.env.ETHERSCAN_API_KEY || "Your etherscan API key"; - const PRIVATE_KEY = process.env.PRIVATE_KEY || "your private key"; - - export default { - defaultNetwork: "hardhat", - networks: { - hardhat: { - // // If you want to do some forking, uncomment this - // forking: { - // url: MAINNET_RPC_URL - // } - }, - localhost: {}, - main: { - url: MAINNET_RPC_URL, - accounts: [PRIVATE_KEY], - // accounts: { - // mnemonic: MNEMONIC, - // }, - }, - kovan: { - url: KOVAN_RPC_URL, - accounts: [PRIVATE_KEY], - // accounts: { - // mnemonic: MNEMONIC, - // }, - saveDeployments: true, - }, - rinkeby: { - url: RINKEBY_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - polygon: { - url: POLYGON_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - mumbai: { - url: MUMBAI_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - bsc: { - url: BSC_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'bsc-testnet': { - url: BSC_TESTNET_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - avalanche: { - url: AVALANCHE_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'avalanche-fufi': { - url: AVALANCHE_FUFI_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - rsk: { - url: RSK_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - xdai: { - url: XDAI_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - fantom: { - url: FANTOM_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'fantom-testnet': { - url: FANTOM_TESTNET_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - huobi: { - url: HUOBI_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'arbitrum-rinkeby': { - url: ARBITRUM_RINKEBY_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'optimism': { - url: OPTIMISM_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - 'optimism-kovan': { - url: OPTIMISM_KOVAN_RPC_URL, - // accounts: [PRIVATE_KEY], - accounts: { - mnemonic: MNEMONIC, - }, - saveDeployments: true, - }, - ganache: { - url: "http://localhost:8545", - accounts: { - mnemonic: MNEMONIC, - }, - }, - }, - etherscan: { - // Your API key for Etherscan - // Obtain one at https://etherscan.io/ - apiKey: ETHERSCAN_API_KEY, - }, - namedAccounts: { - deployer: { - default: 0, // here this will by default take the first account as deployer - 1: 0, // similarly on mainnet it will take the first account as deployer. Note though that depending on how hardhat network are configured, the account 0 on one network can be different than on another - }, - feeCollector: { - default: 1, - }, - }, - solidity: { - compilers: [ - { - version: "0.6.6", - }, - { - version: "0.4.24", - }, - ], - }, - abiExporter: { - path: "./abi", - clear: true, - flat: true, - spacing: 2, - }, - bytecodeExporter: { - path: "./bytecode", - clear: true, - flat: true, - spacing: 2, - }, - typechain: { - outDir: "types", - }, - external: { - contracts: [ - { - artifacts: - "../node_modules/@appliedblockchain/chainlink-contracts/artifacts", - }, - { - artifacts: - "./node_modules/@appliedblockchain/chainlink-contracts/artifacts", - }, - ], - }, - }; - \ No newline at end of file +import "@nomiclabs/hardhat-waffle"; +import "@nomiclabs/hardhat-ethers"; +import "@nomiclabs/hardhat-truffle5"; +import "@nomiclabs/hardhat-etherscan"; +import "@typechain/hardhat"; +import "hardhat-abi-exporter"; +import "hardhat-deploy"; +import "@appliedblockchain/chainlink-plugins-api-consumer"; +import "@appliedblockchain/chainlink-plugins-price-consumer"; +import "@appliedblockchain/chainlink-plugins-random-number-consumer"; +import "@appliedblockchain/chainlink-plugins-fund-link"; + +import "./tasks/accounts"; +import "./tasks/balance"; +import "./tasks/withdraw-link"; +import "./tasks/block-number"; +import "./tasks/block-number"; + +require("dotenv").config(); + +const MAINNET_RPC_URL = + process.env.MAINNET_RPC_URL || + process.env.ALCHEMY_MAINNET_RPC_URL || + "https://eth-mainnet.alchemyapi.io/v2/your-api-key"; +const RINKEBY_RPC_URL = + process.env.RINKEBY_RPC_URL || + "https://eth-rinkeby.alchemyapi.io/v2/your-api-key"; +const KOVAN_RPC_URL = + process.env.KOVAN_RPC_URL || + "https://eth-kovan.alchemyapi.io/v2/qDK0PvoVPRUMt99Z6r71gXp7wjiPx2HF"; +const POLYGON_RPC_URL = + process.env.POLYGON_RPC_URL || + "https://polygon-mainnet.g.alchemyapi.io/v2/your-api-key"; +const MUMBAI_RPC_URL = + process.env.MUMBAI_RPC_URL || + "https://polygon-mumbai.g.alchemyapi.io/v2/your-api-key"; +const BSC_RPC_URL = + process.env.BSC_RPC_URL || + "https://bsc-dataseed.binance.org"; +const BSC_TESTNET_RPC_URL = + process.env.BSC_TESTNET_RPC_URL || + "https://data-seed-prebsc-1-s1.binance.org:8545"; +const AVALANCHE_RPC_URL = + process.env.AVALANCHE_RPC_URL || + "https://api.avax.network/ext/bc/C/rpc"; +const AVALANCHE_FUFI_RPC_URL = + process.env.AVALANCHE_FUFI_RPC_URL || + "https://api.avax-test.network/ext/bc/C/rpc"; +const RSK_RPC_URL = + process.env.RSK_RPC_URL || + "https://public-node.rsk.co"; +const XDAI_RPC_URL = + process.env.XDAI_RPC_URL || + "https://rpc.xdaichain.com"; +const FANTOM_RPC_URL = + process.env.FANTOM_RPC_URL || + "https://rpc.ftm.tools"; +const FANTOM_TESTNET_RPC_URL = + process.env.FANTOM_TESTNET_RPC_URL || + "https://rpc.testnet.fantom.network"; +const HUOBI_RPC_URL = + process.env.HUOBI_RPC_URL || + "https://http-mainnet-node.huobichain.com"; +const ARBITRUM_RINKEBY_RPC_URL = + process.env.ARBITRUM_RINKEBY_RPC_URL || + "https://arb-rinkeby.g.alchemy.com/v2/your-api-key"; +const OPTIMISM_RPC_URL = + process.env.OPTIMISM_RPC_URL || + "https://opt-mainnet.g.alchemy.com/v2/your-api-key"; +const OPTIMISM_KOVAN_RPC_URL = + process.env.OPTIMISM_KOVAN_RPC_URL || + "https://opt-kovan.g.alchemy.com/v2/your-api-key"; +const MNEMONIC = process.env.MNEMONIC || "your mnemonic"; +const ETHERSCAN_API_KEY = + process.env.ETHERSCAN_API_KEY || "Your etherscan API key"; +const PRIVATE_KEY = process.env.PRIVATE_KEY || "your private key"; + +export default { + defaultNetwork: "hardhat", + networks: { + hardhat: { + // // If you want to do some forking, uncomment this + // forking: { + // url: MAINNET_RPC_URL + // } + }, + localhost: {}, + main: { + url: MAINNET_RPC_URL, + accounts: [PRIVATE_KEY], + // accounts: { + // mnemonic: MNEMONIC, + // }, + }, + kovan: { + url: KOVAN_RPC_URL, + accounts: [PRIVATE_KEY], + // accounts: { + // mnemonic: MNEMONIC, + // }, + saveDeployments: true, + }, + rinkeby: { + url: RINKEBY_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + polygon: { + url: POLYGON_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + mumbai: { + url: MUMBAI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + bsc: { + url: BSC_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'bsc-testnet': { + url: BSC_TESTNET_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + avalanche: { + url: AVALANCHE_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'avalanche-fufi': { + url: AVALANCHE_FUFI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + rsk: { + url: RSK_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + xdai: { + url: XDAI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + fantom: { + url: FANTOM_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'fantom-testnet': { + url: FANTOM_TESTNET_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + huobi: { + url: HUOBI_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'arbitrum-rinkeby': { + url: ARBITRUM_RINKEBY_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'optimism': { + url: OPTIMISM_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + 'optimism-kovan': { + url: OPTIMISM_KOVAN_RPC_URL, + // accounts: [PRIVATE_KEY], + accounts: { + mnemonic: MNEMONIC, + }, + saveDeployments: true, + }, + ganache: { + url: "http://localhost:8545", + accounts: { + mnemonic: MNEMONIC, + }, + }, + }, + etherscan: { + // Your API key for Etherscan + // Obtain one at https://etherscan.io/ + apiKey: ETHERSCAN_API_KEY, + }, + namedAccounts: { + deployer: { + default: 0, // here this will by default take the first account as deployer + 1: 0, // similarly on mainnet it will take the first account as deployer. Note though that depending on how hardhat network are configured, the account 0 on one network can be different than on another + }, + feeCollector: { + default: 1, + }, + }, + solidity: { + compilers: [ + { + version: "0.6.6", + }, + { + version: "0.4.24", + }, + ], + }, + abiExporter: { + path: "./abi", + clear: true, + flat: true, + spacing: 2, + }, + bytecodeExporter: { + path: "./bytecode", + clear: true, + flat: true, + spacing: 2, + }, + typechain: { + outDir: "types", + }, + external: { + contracts: [ + { + artifacts: + "../node_modules/@appliedblockchain/chainlink-contracts/artifacts", + }, + { + artifacts: + "./node_modules/@appliedblockchain/chainlink-contracts/artifacts", + }, + ], + }, +}; \ No newline at end of file