hardhat.config.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. require("dotenv").config();
  2. require("@nomiclabs/hardhat-etherscan");
  3. require("@nomiclabs/hardhat-waffle");
  4. require("@nomiclabs/hardhat-solhint");
  5. require("@nomiclabs/hardhat-web3");
  6. require("hardhat-gas-reporter");
  7. require("solidity-coverage");
  8. require("hardhat-contract-sizer");
  9. require("hardhat-tracer");
  10. require("@primitivefi/hardhat-dodoc");
  11. require("hardhat-deploy");
  12. require("hardhat-deploy-ethers");
  13. require("hardhat-spdx-license-identifier");
  14. const { ChainId, setupNetwork } = require('@layerzerolabs/core-sdk')
  15. // const infuraProjectId = process.env.INFURA_PROJECT_ID;
  16. // console.log(`infuraProjectId: ${infuraProjectId}`);
  17. // This is a sample Hardhat task. To learn how to create your own go to
  18. // https://hardhat.org/guides/create-task.html
  19. task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
  20. const accounts = await hre.ethers.getSigners();
  21. for (const account of accounts) {
  22. console.log(account.address);
  23. }
  24. });
  25. // custom helper tasks
  26. require("./tasks/addLiquidity");
  27. require("./tasks/sendCredits");
  28. require("./tasks/swap");
  29. require("./tasks/createChainPath");
  30. require("./tasks/setWeightForChainPath");
  31. require("./tasks/setBridge");
  32. require("./tasks/getBridge");
  33. require("./tasks/mintTokens");
  34. require("./tasks/getPool");
  35. require("./tasks/addLPStakingPool");
  36. require("./tasks/createPools");
  37. require("./tasks/createChainPaths");
  38. require("./tasks/activateChainPath");
  39. require("./tasks/activateChainPaths");
  40. require("./tasks/deployToken");
  41. require("./tasks/testnetSwap");
  42. require("./tasks/wireBridges");
  43. require("./tasks/wireStargateTokens");
  44. require("./tasks/sendStargateTokens");
  45. require("./tasks/sendCreditsAll");
  46. require("./tasks/getChainPath");
  47. require("./tasks/getFeeVersion")
  48. require("./tasks")
  49. // You need to export an object to set up your config
  50. // Go to https://hardhat.org/config/ to learn more
  51. /**
  52. * @type import('hardhat/config').HardhatUserConfig
  53. */
  54. module.exports = {
  55. solidity: {
  56. version: "0.7.6",
  57. settings: {
  58. optimizer: {
  59. enabled: true,
  60. runs: 200,
  61. },
  62. },
  63. },
  64. contractSizer: {
  65. alphaSort: false,
  66. runOnCompile: true,
  67. disambiguatePaths: false,
  68. },
  69. // for hardhat-deploy
  70. namedAccounts: {
  71. deployer: 0,
  72. },
  73. defaultNetwork: "hardhat",
  74. networks: {
  75. hardhat: {
  76. initialBaseFeePerGas: 0, // workaround from https://github.com/sc-forks/solidity-coverage/issues/652#issuecomment-896330136 . Remove when that issue is closed.
  77. },
  78. //////////////////////// mainnets
  79. ...setupNetwork({
  80. // eth mainnet
  81. eth: {
  82. url: `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_MAINNET_ETH_API_KEY}`,
  83. } }, [ChainId.ETHEREUM]),
  84. ...setupNetwork({
  85. // bsc mainnet
  86. bsc: {
  87. url: `https://speedy-nodes-nyc.moralis.io/${process.env.MORALIS_MAINNET_BSC_API_KEY}`,
  88. } }, [ChainId.BSC]),
  89. ...setupNetwork({
  90. // avax mainnet
  91. avax: {
  92. url: `https://speedy-nodes-nyc.moralis.io/${process.env.MORALIS_MAINNET_AVAX_API_KEY}`,
  93. } }, [ChainId.AVALANCHE]),
  94. ...setupNetwork({
  95. // polygon mainnet
  96. polygon: {
  97. url: `https://polygon-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_MAINNET_POLYGON_API_KEY}`,
  98. } }, [ChainId.POLYGON]),
  99. ...setupNetwork({
  100. // arbitrum mainnet
  101. arbitrum: {
  102. url: `https://arb-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_MAINNET_ARBITRUM_API_KEY}`,
  103. } }, [ChainId.ARBITRUM]),
  104. ...setupNetwork({
  105. // optimism mainnet
  106. optimism: {
  107. url: `https://opt-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_MAINNET_OPTIMISM_API_KEY}`,
  108. } }, [ChainId.OPTIMISM]),
  109. ...setupNetwork({
  110. // ftm mainnet
  111. ftm: {
  112. url: `https://speedy-nodes-nyc.moralis.io/${process.env.MORALIS_MAINNET_FTM_API_KEY}`,
  113. } }, [ChainId.FANTOM]),
  114. ...setupNetwork({
  115. rinkeby: {
  116. url: `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}`
  117. }
  118. }, [ChainId.RINKEBY, ChainId.RINKEBY_SANDBOX]),
  119. ...setupNetwork({
  120. "bsc-testnet": {
  121. url: `${process.env.BSC_TESTNET_RPC}` // "https://data-seed-prebsc-2-s3.binance.org:8545"
  122. }
  123. }, [ChainId.BSC_TESTNET, ChainId.BSC_TESTNET_SANDBOX]),
  124. ...setupNetwork({
  125. fuji: {
  126. url: `${process.env.FUJI_RPC}`
  127. }
  128. }, [ChainId.FUJI, ChainId.FUJI_SANDBOX]),
  129. ...setupNetwork({
  130. mumbai: {
  131. url: `https://polygon-mumbai.g.alchemy.com/v2/${process.env.ALCHEMY_MUMBAI_API_KEY}` // "https://rpc-mumbai.maticvigil.com/",
  132. }
  133. }, [ChainId.MUMBAI, ChainId.MUMBAI_SANDBOX]),
  134. ...setupNetwork({
  135. arbrink: {
  136. url: `https://arb-rinkeby.g.alchemy.com/v2/${process.env.ALCHEMY_ARBRINK_API_KEY}`
  137. }
  138. }, [ChainId.ARBITRUM_RINKEBY, ChainId.ARBITRUM_RINKEBY_SANDBOX]),
  139. ...setupNetwork({
  140. optkov: {
  141. url: `https://opt-kovan.g.alchemy.com/v2/${process.env.ALCHEMY_OPTKOV_API_KEY}` // `https://optimism-kovan.infura.io/v3/${process.env.INFURA_API_KEY}`,
  142. }
  143. }, [ChainId.OPTIMISM_KOVAN, ChainId.OPTIMISM_KOVAN_SANDBOX]),
  144. ...setupNetwork({
  145. "ftm-testnet": {
  146. url: `${process.env.FTM_TESTNET_RPC}`
  147. }
  148. }, [ChainId.FANTOM_TESTNET, ChainId.FANTOM_TESTNET_SANDBOX]),
  149. },
  150. mocha: {
  151. timeout: 500000,
  152. },
  153. gasReporter: {
  154. enabled: process.env.REPORT_GAS === "true",
  155. currency: "USD",
  156. },
  157. etherscan: {
  158. apiKey: process.env.ETHERSCAN_API_KEY,
  159. },
  160. };