hardhat 2.6.6 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/builtin-tasks/check.js +1 -1
  2. package/builtin-tasks/check.js.map +1 -1
  3. package/builtin-tasks/clean.js +3 -3
  4. package/builtin-tasks/clean.js.map +1 -1
  5. package/builtin-tasks/compile.js +57 -48
  6. package/builtin-tasks/compile.js.map +1 -1
  7. package/builtin-tasks/console.js +3 -3
  8. package/builtin-tasks/console.js.map +1 -1
  9. package/builtin-tasks/flatten.js +8 -6
  10. package/builtin-tasks/flatten.js.map +1 -1
  11. package/builtin-tasks/help.js +2 -2
  12. package/builtin-tasks/help.js.map +1 -1
  13. package/builtin-tasks/node.js +45 -22
  14. package/builtin-tasks/node.js.map +1 -1
  15. package/builtin-tasks/run.js +11 -7
  16. package/builtin-tasks/run.js.map +1 -1
  17. package/builtin-tasks/test.js +11 -11
  18. package/builtin-tasks/test.js.map +1 -1
  19. package/builtin-tasks/utils/solidity-files-cache.js +1 -1
  20. package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
  21. package/builtin-tasks/utils/watch.d.ts.map +1 -1
  22. package/builtin-tasks/utils/watch.js +4 -2
  23. package/builtin-tasks/utils/watch.js.map +1 -1
  24. package/internal/artifacts.d.ts +49 -0
  25. package/internal/artifacts.d.ts.map +1 -1
  26. package/internal/artifacts.js +204 -68
  27. package/internal/artifacts.js.map +1 -1
  28. package/internal/cli/analytics.js +11 -10
  29. package/internal/cli/analytics.js.map +1 -1
  30. package/internal/cli/autocomplete.js +7 -7
  31. package/internal/cli/autocomplete.js.map +1 -1
  32. package/internal/cli/bootstrap.js +2 -2
  33. package/internal/cli/bootstrap.js.map +1 -1
  34. package/internal/cli/cli.js +16 -16
  35. package/internal/cli/cli.js.map +1 -1
  36. package/internal/cli/project-creation.js +13 -13
  37. package/internal/cli/project-creation.js.map +1 -1
  38. package/internal/constants.d.ts +2 -0
  39. package/internal/constants.d.ts.map +1 -1
  40. package/internal/constants.js +4 -1
  41. package/internal/constants.js.map +1 -1
  42. package/internal/context.d.ts +1 -2
  43. package/internal/context.d.ts.map +1 -1
  44. package/internal/context.js +3 -3
  45. package/internal/context.js.map +1 -1
  46. package/internal/core/config/config-loading.d.ts.map +1 -1
  47. package/internal/core/config/config-loading.js +22 -8
  48. package/internal/core/config/config-loading.js.map +1 -1
  49. package/internal/core/config/config-resolution.d.ts.map +1 -1
  50. package/internal/core/config/config-resolution.js +29 -8
  51. package/internal/core/config/config-resolution.js.map +1 -1
  52. package/internal/core/config/config-validation.d.ts +1 -0
  53. package/internal/core/config/config-validation.d.ts.map +1 -1
  54. package/internal/core/config/config-validation.js +113 -38
  55. package/internal/core/config/config-validation.js.map +1 -1
  56. package/internal/core/config/default-config.d.ts +1 -0
  57. package/internal/core/config/default-config.d.ts.map +1 -1
  58. package/internal/core/config/default-config.js +12 -5
  59. package/internal/core/config/default-config.js.map +1 -1
  60. package/internal/core/errors-list.d.ts +14 -0
  61. package/internal/core/errors-list.d.ts.map +1 -1
  62. package/internal/core/errors-list.js +21 -2
  63. package/internal/core/errors-list.js.map +1 -1
  64. package/internal/core/errors.js +3 -3
  65. package/internal/core/errors.js.map +1 -1
  66. package/internal/core/execution-mode.js +2 -2
  67. package/internal/core/execution-mode.js.map +1 -1
  68. package/internal/core/jsonrpc/types/access-list.d.ts +0 -1
  69. package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -1
  70. package/internal/core/jsonrpc/types/access-list.js +1 -1
  71. package/internal/core/jsonrpc/types/access-list.js.map +1 -1
  72. package/internal/core/jsonrpc/types/base-types.js +9 -9
  73. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  74. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -4
  75. package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
  76. package/internal/core/jsonrpc/types/input/blockTag.js +3 -3
  77. package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
  78. package/internal/core/jsonrpc/types/input/callRequest.d.ts +0 -1
  79. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
  80. package/internal/core/jsonrpc/types/input/callRequest.js +9 -9
  81. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
  82. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +4 -4
  83. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -1
  84. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +0 -1
  85. package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
  86. package/internal/core/jsonrpc/types/input/filterRequest.js +2 -2
  87. package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
  88. package/internal/core/jsonrpc/types/input/hardhat-network.js +4 -4
  89. package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -1
  90. package/internal/core/jsonrpc/types/input/logAddress.js +1 -1
  91. package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -1
  92. package/internal/core/jsonrpc/types/input/logTopics.js +1 -1
  93. package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -1
  94. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +0 -1
  95. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
  96. package/internal/core/jsonrpc/types/input/transactionRequest.js +10 -10
  97. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
  98. package/internal/core/jsonrpc/types/output/block.d.ts +0 -1
  99. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  100. package/internal/core/jsonrpc/types/output/block.js +5 -5
  101. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  102. package/internal/core/jsonrpc/types/output/log.d.ts +1 -1
  103. package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
  104. package/internal/core/jsonrpc/types/output/log.js +5 -4
  105. package/internal/core/jsonrpc/types/output/log.js.map +1 -1
  106. package/internal/core/jsonrpc/types/output/receipt.d.ts +1 -1
  107. package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
  108. package/internal/core/jsonrpc/types/output/receipt.js +6 -6
  109. package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
  110. package/internal/core/jsonrpc/types/output/transaction.d.ts +0 -1
  111. package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
  112. package/internal/core/jsonrpc/types/output/transaction.js +9 -9
  113. package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
  114. package/internal/core/params/argumentTypes.d.ts.map +1 -1
  115. package/internal/core/params/argumentTypes.js +25 -13
  116. package/internal/core/params/argumentTypes.js.map +1 -1
  117. package/internal/core/params/env-variables.d.ts.map +1 -1
  118. package/internal/core/params/env-variables.js +9 -5
  119. package/internal/core/params/env-variables.js.map +1 -1
  120. package/internal/core/params/hardhat-params.js +2 -2
  121. package/internal/core/params/hardhat-params.js.map +1 -1
  122. package/internal/core/project-structure.js +1 -1
  123. package/internal/core/project-structure.js.map +1 -1
  124. package/internal/core/providers/accounts.d.ts.map +1 -1
  125. package/internal/core/providers/accounts.js +22 -7
  126. package/internal/core/providers/accounts.js.map +1 -1
  127. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  128. package/internal/core/providers/chainId.js +3 -3
  129. package/internal/core/providers/chainId.js.map +1 -1
  130. package/internal/core/providers/construction.d.ts.map +1 -1
  131. package/internal/core/providers/construction.js +6 -4
  132. package/internal/core/providers/construction.js.map +1 -1
  133. package/internal/core/providers/gas-providers.d.ts.map +1 -1
  134. package/internal/core/providers/gas-providers.js +20 -18
  135. package/internal/core/providers/gas-providers.js.map +1 -1
  136. package/internal/core/providers/http.js +1 -1
  137. package/internal/core/providers/http.js.map +1 -1
  138. package/internal/core/providers/util.js +1 -1
  139. package/internal/core/providers/util.js.map +1 -1
  140. package/internal/core/providers/wrapper.d.ts.map +1 -1
  141. package/internal/core/runtime-environment.d.ts.map +1 -1
  142. package/internal/core/runtime-environment.js +7 -5
  143. package/internal/core/runtime-environment.js.map +1 -1
  144. package/internal/core/typescript-support.d.ts +1 -1
  145. package/internal/core/typescript-support.d.ts.map +1 -1
  146. package/internal/core/typescript-support.js +8 -5
  147. package/internal/core/typescript-support.js.map +1 -1
  148. package/internal/hardhat-network/jsonrpc/client.d.ts +2 -0
  149. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  150. package/internal/hardhat-network/jsonrpc/client.js +23 -23
  151. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  152. package/internal/hardhat-network/jsonrpc/handler.js +16 -8
  153. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  154. package/internal/hardhat-network/jsonrpc/server.js +1 -1
  155. package/internal/hardhat-network/jsonrpc/server.js.map +1 -1
  156. package/internal/hardhat-network/provider/BlockchainData.d.ts +1 -1
  157. package/internal/hardhat-network/provider/BlockchainData.js +12 -12
  158. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  159. package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -2
  160. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  161. package/internal/hardhat-network/provider/HardhatStateManager.js +29 -29
  162. package/internal/hardhat-network/provider/HardhatStateManager.js.map +1 -1
  163. package/internal/hardhat-network/provider/PoolState.js +6 -6
  164. package/internal/hardhat-network/provider/PoolState.js.map +1 -1
  165. package/internal/hardhat-network/provider/TransactionQueue.d.ts +2 -1
  166. package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +1 -1
  167. package/internal/hardhat-network/provider/TransactionQueue.js +16 -2
  168. package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
  169. package/internal/hardhat-network/provider/TxPool.js +19 -19
  170. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  171. package/internal/hardhat-network/provider/filter.js +3 -3
  172. package/internal/hardhat-network/provider/filter.js.map +1 -1
  173. package/internal/hardhat-network/provider/fork/AccountState.js +4 -4
  174. package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -1
  175. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  176. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +8 -10
  177. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  178. package/internal/hardhat-network/provider/fork/ForkStateManager.js +34 -34
  179. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  180. package/internal/hardhat-network/provider/fork/random.d.ts +0 -1
  181. package/internal/hardhat-network/provider/fork/random.d.ts.map +1 -1
  182. package/internal/hardhat-network/provider/fork/random.js +13 -8
  183. package/internal/hardhat-network/provider/fork/random.js.map +1 -1
  184. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +1 -0
  185. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  186. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  187. package/internal/hardhat-network/provider/modules/debug.js +1 -1
  188. package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
  189. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  190. package/internal/hardhat-network/provider/modules/eth.js +86 -84
  191. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  192. package/internal/hardhat-network/provider/modules/evm.js +9 -9
  193. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  194. package/internal/hardhat-network/provider/modules/hardhat.d.ts +3 -0
  195. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
  196. package/internal/hardhat-network/provider/modules/hardhat.js +31 -15
  197. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  198. package/internal/hardhat-network/provider/modules/logger.js +17 -17
  199. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  200. package/internal/hardhat-network/provider/modules/net.js +2 -2
  201. package/internal/hardhat-network/provider/modules/net.js.map +1 -1
  202. package/internal/hardhat-network/provider/modules/personal.d.ts +9 -0
  203. package/internal/hardhat-network/provider/modules/personal.d.ts.map +1 -0
  204. package/internal/hardhat-network/provider/modules/personal.js +31 -0
  205. package/internal/hardhat-network/provider/modules/personal.js.map +1 -0
  206. package/internal/hardhat-network/provider/modules/web3.js +4 -4
  207. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  208. package/internal/hardhat-network/provider/node-types.d.ts +5 -0
  209. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  210. package/internal/hardhat-network/provider/node-types.js.map +1 -1
  211. package/internal/hardhat-network/provider/node.d.ts +4 -1
  212. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  213. package/internal/hardhat-network/provider/node.js +107 -71
  214. package/internal/hardhat-network/provider/node.js.map +1 -1
  215. package/internal/hardhat-network/provider/output.d.ts +1 -1
  216. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  217. package/internal/hardhat-network/provider/output.js +94 -91
  218. package/internal/hardhat-network/provider/output.js.map +1 -1
  219. package/internal/hardhat-network/provider/provider.d.ts +6 -2
  220. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  221. package/internal/hardhat-network/provider/provider.js +14 -4
  222. package/internal/hardhat-network/provider/provider.js.map +1 -1
  223. package/internal/hardhat-network/provider/return-data.js +4 -4
  224. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  225. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  226. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  227. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  228. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  229. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  230. package/internal/hardhat-network/provider/utils/bnToHex.js +1 -1
  231. package/internal/hardhat-network/provider/utils/bnToHex.js.map +1 -1
  232. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
  233. package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
  234. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  235. package/internal/hardhat-network/provider/utils/makeCommon.js +3 -3
  236. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  237. package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -4
  238. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  239. package/internal/hardhat-network/provider/utils/makeStateTrie.js +1 -1
  240. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  241. package/internal/hardhat-network/provider/utils/txMapToArray.js +1 -1
  242. package/internal/hardhat-network/provider/utils/txMapToArray.js.map +1 -1
  243. package/internal/hardhat-network/stack-traces/compiler-to-model.js +4 -4
  244. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  245. package/internal/hardhat-network/stack-traces/consoleLogger.js +44 -44
  246. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  247. package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -6
  248. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  249. package/internal/hardhat-network/stack-traces/debug.js +17 -17
  250. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  251. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  252. package/internal/hardhat-network/stack-traces/error-inferrer.js +42 -28
  253. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  254. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js +3 -3
  255. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js.map +1 -1
  256. package/internal/hardhat-network/stack-traces/model.js +5 -5
  257. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  258. package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
  259. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  260. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +1 -1
  261. package/internal/hardhat-network/stack-traces/solidityTracer.js +11 -11
  262. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  263. package/internal/hardhat-network/stack-traces/source-maps.js +7 -7
  264. package/internal/hardhat-network/stack-traces/source-maps.js.map +1 -1
  265. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +5 -5
  266. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  267. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +2 -2
  268. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
  269. package/internal/hardhat-network/stack-traces/vm-tracer.js +3 -3
  270. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  271. package/internal/lib/hardhat-lib.js +3 -3
  272. package/internal/lib/hardhat-lib.js.map +1 -1
  273. package/internal/reset.js +1 -1
  274. package/internal/reset.js.map +1 -1
  275. package/internal/sentry/anonymizer.js.map +1 -1
  276. package/internal/sentry/reporter.js +5 -5
  277. package/internal/sentry/reporter.js.map +1 -1
  278. package/internal/sentry/subprocess.js +2 -2
  279. package/internal/sentry/subprocess.js.map +1 -1
  280. package/internal/sentry/transport.js +1 -1
  281. package/internal/sentry/transport.js.map +1 -1
  282. package/internal/solidity/compilation-job.js +4 -4
  283. package/internal/solidity/compilation-job.js.map +1 -1
  284. package/internal/solidity/compiler/downloader.d.ts +1 -1
  285. package/internal/solidity/compiler/downloader.d.ts.map +1 -1
  286. package/internal/solidity/compiler/downloader.js +21 -7
  287. package/internal/solidity/compiler/downloader.js.map +1 -1
  288. package/internal/solidity/compiler/index.js +1 -1
  289. package/internal/solidity/compiler/index.js.map +1 -1
  290. package/internal/solidity/dependencyGraph.js +2 -1
  291. package/internal/solidity/dependencyGraph.js.map +1 -1
  292. package/internal/solidity/parse.js +3 -2
  293. package/internal/solidity/parse.js.map +1 -1
  294. package/internal/solidity/resolver.js +10 -10
  295. package/internal/solidity/resolver.js.map +1 -1
  296. package/internal/util/abi-helpers.js +1 -1
  297. package/internal/util/abi-helpers.js.map +1 -1
  298. package/internal/util/download.d.ts.map +1 -1
  299. package/internal/util/download.js +12 -1
  300. package/internal/util/download.js.map +1 -1
  301. package/internal/util/global-dir.js +1 -1
  302. package/internal/util/global-dir.js.map +1 -1
  303. package/internal/util/hardforks.d.ts +2 -1
  304. package/internal/util/hardforks.d.ts.map +1 -1
  305. package/internal/util/hardforks.js +3 -1
  306. package/internal/util/hardforks.js.map +1 -1
  307. package/internal/util/jsonrpc.js +1 -1
  308. package/internal/util/jsonrpc.js.map +1 -1
  309. package/internal/util/packageInfo.js +1 -1
  310. package/internal/util/packageInfo.js.map +1 -1
  311. package/internal/util/scripts-runner.js +3 -3
  312. package/internal/util/scripts-runner.js.map +1 -1
  313. package/package.json +14 -14
  314. package/register.js +7 -7
  315. package/register.js.map +1 -1
  316. package/src/builtin-tasks/compile.ts +14 -0
  317. package/src/builtin-tasks/flatten.ts +4 -2
  318. package/src/builtin-tasks/node.ts +56 -17
  319. package/src/builtin-tasks/run.ts +13 -8
  320. package/src/builtin-tasks/utils/watch.ts +3 -1
  321. package/src/internal/artifacts.ts +269 -72
  322. package/src/internal/cli/analytics.ts +1 -1
  323. package/src/internal/cli/autocomplete.ts +3 -3
  324. package/src/internal/cli/bootstrap.ts +1 -1
  325. package/src/internal/cli/cli.ts +2 -2
  326. package/src/internal/cli/project-creation.ts +2 -2
  327. package/src/internal/constants.ts +4 -0
  328. package/src/internal/context.ts +1 -1
  329. package/src/internal/core/config/config-loading.ts +25 -3
  330. package/src/internal/core/config/config-resolution.ts +28 -0
  331. package/src/internal/core/config/config-validation.ts +147 -15
  332. package/src/internal/core/config/default-config.ts +10 -3
  333. package/src/internal/core/errors-list.ts +21 -2
  334. package/src/internal/core/execution-mode.ts +1 -1
  335. package/src/internal/core/jsonrpc/types/output/log.ts +1 -0
  336. package/src/internal/core/params/argumentTypes.ts +40 -25
  337. package/src/internal/core/params/env-variables.ts +13 -8
  338. package/src/internal/core/params/hardhat-params.ts +2 -2
  339. package/src/internal/core/providers/accounts.ts +23 -3
  340. package/src/internal/core/providers/backwards-compatibility.ts +1 -1
  341. package/src/internal/core/providers/chainId.ts +1 -1
  342. package/src/internal/core/providers/construction.ts +8 -2
  343. package/src/internal/core/providers/gas-providers.ts +7 -5
  344. package/src/internal/core/providers/http.ts +1 -1
  345. package/src/internal/core/providers/wrapper.ts +1 -1
  346. package/src/internal/core/runtime-environment.ts +3 -1
  347. package/src/internal/core/typescript-support.ts +7 -3
  348. package/src/internal/hardhat-network/jsonrpc/client.ts +2 -2
  349. package/src/internal/hardhat-network/jsonrpc/handler.ts +12 -2
  350. package/src/internal/hardhat-network/jsonrpc/server.ts +2 -2
  351. package/src/internal/hardhat-network/provider/TransactionQueue.ts +31 -4
  352. package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
  353. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +2 -4
  354. package/src/internal/hardhat-network/provider/modules/eth.ts +23 -21
  355. package/src/internal/hardhat-network/provider/modules/hardhat.ts +24 -1
  356. package/src/internal/hardhat-network/provider/modules/personal.ts +39 -0
  357. package/src/internal/hardhat-network/provider/node-types.ts +6 -0
  358. package/src/internal/hardhat-network/provider/node.ts +68 -26
  359. package/src/internal/hardhat-network/provider/output.ts +9 -9
  360. package/src/internal/hardhat-network/provider/provider.ts +16 -2
  361. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
  362. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +19 -0
  363. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
  364. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +1 -1
  365. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +3 -3
  366. package/src/internal/reset.ts +1 -1
  367. package/src/internal/sentry/subprocess.ts +2 -2
  368. package/src/internal/solidity/compiler/downloader.ts +27 -12
  369. package/src/internal/solidity/resolver.ts +1 -1
  370. package/src/internal/util/abi-helpers.ts +1 -1
  371. package/src/internal/util/download.ts +17 -1
  372. package/src/internal/util/hardforks.ts +2 -0
  373. package/src/internal/util/jsonrpc.ts +1 -1
  374. package/src/internal/util/packageInfo.ts +1 -1
  375. package/src/internal/util/scripts-runner.ts +1 -1
  376. package/src/register.ts +1 -1
  377. package/src/types/config.ts +14 -0
  378. package/src/utils/contract-names.ts +112 -0
  379. package/src/utils/source-names.ts +14 -12
  380. package/types/config.d.ts +10 -0
  381. package/types/config.d.ts.map +1 -1
  382. package/utils/contract-names.d.ts +10 -0
  383. package/utils/contract-names.d.ts.map +1 -1
  384. package/utils/contract-names.js +92 -1
  385. package/utils/contract-names.js.map +1 -1
  386. package/utils/source-names.d.ts +1 -1
  387. package/utils/source-names.js +8 -6
  388. package/utils/source-names.js.map +1 -1
  389. package/CHANGELOG.md +0 -32
@@ -3,6 +3,7 @@ import { Context, getFunctionName, ValidationError } from "io-ts/lib";
3
3
  import { Reporter } from "io-ts/lib/Reporter";
4
4
 
5
5
  import {
6
+ HARDHAT_MEMPOOL_SUPPORTED_ORDERS,
6
7
  HARDHAT_NETWORK_NAME,
7
8
  HARDHAT_NETWORK_SUPPORTED_HARDFORKS,
8
9
  } from "../../constants";
@@ -53,6 +54,59 @@ function getErrorMessage(path: string, value: any, expectedType: string) {
53
54
  )} for ${path} - Expected a value of type ${expectedType}.`;
54
55
  }
55
56
 
57
+ function getPrivateKeyError(index: number, network: string, message: string) {
58
+ return `Invalid account: #${index} for network: ${network} - ${message}`;
59
+ }
60
+
61
+ function validatePrivateKey(
62
+ privateKey: unknown,
63
+ index: number,
64
+ network: string,
65
+ errors: string[]
66
+ ) {
67
+ if (typeof privateKey !== "string") {
68
+ errors.push(
69
+ getPrivateKeyError(
70
+ index,
71
+ network,
72
+ `Expected string, received ${typeof privateKey}`
73
+ )
74
+ );
75
+ } else {
76
+ // private key validation
77
+ const pkWithPrefix = /^0x/.test(privateKey)
78
+ ? privateKey
79
+ : `0x${privateKey}`;
80
+
81
+ // 32 bytes = 64 characters + 2 char prefix = 66
82
+ if (pkWithPrefix.length < 66) {
83
+ errors.push(
84
+ getPrivateKeyError(
85
+ index,
86
+ network,
87
+ "private key too short, expected 32 bytes"
88
+ )
89
+ );
90
+ } else if (pkWithPrefix.length > 66) {
91
+ errors.push(
92
+ getPrivateKeyError(
93
+ index,
94
+ network,
95
+ "private key too long, expected 32 bytes"
96
+ )
97
+ );
98
+ } else if (hexString.decode(pkWithPrefix).isLeft()) {
99
+ errors.push(
100
+ getPrivateKeyError(
101
+ index,
102
+ network,
103
+ "invalid hex character(s) found in string"
104
+ )
105
+ );
106
+ }
107
+ }
108
+ }
109
+
56
110
  export function failure(es: ValidationError[]): string[] {
57
111
  return es.map(getMessage);
58
112
  }
@@ -91,6 +145,27 @@ export const hexString = new t.Type<string>(
91
145
  t.identity
92
146
  );
93
147
 
148
+ function isAddress(v: unknown): v is string {
149
+ if (typeof v !== "string") {
150
+ return false;
151
+ }
152
+
153
+ const trimmed = v.trim();
154
+
155
+ return (
156
+ trimmed.match(HEX_STRING_REGEX) !== null &&
157
+ trimmed.startsWith("0x") &&
158
+ trimmed.length === 42
159
+ );
160
+ }
161
+
162
+ export const address = new t.Type<string>(
163
+ "address",
164
+ isAddress,
165
+ (u, c) => (isAddress(u) ? t.success(u) : t.failure(u, c)),
166
+ t.identity
167
+ );
168
+
94
169
  export const decimalString = new t.Type<string>(
95
170
  "decimal string",
96
171
  isDecimalString,
@@ -123,6 +198,22 @@ const HardhatNetworkForkingConfig = t.type({
123
198
  blockNumber: optional(t.number),
124
199
  });
125
200
 
201
+ const HardhatNetworkMempoolConfig = t.type({
202
+ order: optional(
203
+ t.keyof(
204
+ fromEntries(
205
+ HARDHAT_MEMPOOL_SUPPORTED_ORDERS.map((order) => [order, null])
206
+ )
207
+ )
208
+ ),
209
+ });
210
+
211
+ const HardhatNetworkMiningConfig = t.type({
212
+ auto: optional(t.boolean),
213
+ interval: optional(t.union([t.number, t.tuple([t.number, t.number])])),
214
+ mempool: optional(HardhatNetworkMempoolConfig),
215
+ });
216
+
126
217
  const commonNetworkConfigFields = {
127
218
  chainId: optional(t.number),
128
219
  from: optional(t.string),
@@ -149,6 +240,8 @@ const HardhatNetworkConfig = t.type({
149
240
  initialDate: optional(t.string),
150
241
  loggingEnabled: optional(t.boolean),
151
242
  forking: optional(HardhatNetworkForkingConfig),
243
+ mining: optional(HardhatNetworkMiningConfig),
244
+ coinbase: optional(address),
152
245
  });
153
246
 
154
247
  const HDAccountsConfig = t.type({
@@ -224,7 +317,7 @@ export function validateConfig(config: any) {
224
317
  }
225
318
 
226
319
  export function getValidationErrors(config: any): string[] {
227
- const errors = [];
320
+ const errors: string[] = [];
228
321
 
229
322
  // These can't be validated with io-ts
230
323
  if (config !== undefined && typeof config.networks === "object") {
@@ -237,8 +330,7 @@ export function getValidationErrors(config: any): string[] {
237
330
  }
238
331
 
239
332
  // Validating the accounts with io-ts leads to very confusing errors messages
240
- const configExceptAccounts = { ...hardhatNetwork };
241
- delete configExceptAccounts.accounts;
333
+ const { accounts, ...configExceptAccounts } = hardhatNetwork;
242
334
 
243
335
  const netConfigResult = HardhatNetworkConfig.decode(configExceptAccounts);
244
336
  if (netConfigResult.isLeft()) {
@@ -251,31 +343,37 @@ export function getValidationErrors(config: any): string[] {
251
343
  );
252
344
  }
253
345
 
254
- if (Array.isArray(hardhatNetwork.accounts)) {
255
- for (const account of hardhatNetwork.accounts) {
256
- if (typeof account.privateKey !== "string") {
346
+ // manual validation of accounts
347
+ if (Array.isArray(accounts)) {
348
+ for (const [index, account] of accounts.entries()) {
349
+ if (typeof account !== "object") {
257
350
  errors.push(
258
- getErrorMessage(
259
- `HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.accounts[].privateKey`,
260
- account.privateKey,
261
- "string"
351
+ getPrivateKeyError(
352
+ index,
353
+ HARDHAT_NETWORK_NAME,
354
+ `Expected object, received ${typeof account}`
262
355
  )
263
356
  );
357
+ continue;
264
358
  }
265
359
 
266
- if (typeof account.balance !== "string") {
360
+ const { privateKey, balance } = account;
361
+
362
+ validatePrivateKey(privateKey, index, HARDHAT_NETWORK_NAME, errors);
363
+
364
+ if (typeof balance !== "string") {
267
365
  errors.push(
268
366
  getErrorMessage(
269
367
  `HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.accounts[].balance`,
270
- account.balance,
368
+ balance,
271
369
  "string"
272
370
  )
273
371
  );
274
- } else if (decimalString.decode(account.balance).isLeft()) {
372
+ } else if (decimalString.decode(balance).isLeft()) {
275
373
  errors.push(
276
374
  getErrorMessage(
277
375
  `HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.accounts[].balance`,
278
- account.balance,
376
+ balance,
279
377
  "decimal(wei)"
280
378
  )
281
379
  );
@@ -340,7 +438,9 @@ export function getValidationErrors(config: any): string[] {
340
438
  }
341
439
  }
342
440
 
343
- const netConfigResult = HttpNetworkConfig.decode(netConfig);
441
+ const { accounts, ...configExceptAccounts } = netConfig;
442
+
443
+ const netConfigResult = HttpNetworkConfig.decode(configExceptAccounts);
344
444
  if (netConfigResult.isLeft()) {
345
445
  errors.push(
346
446
  getErrorMessage(
@@ -350,6 +450,38 @@ export function getValidationErrors(config: any): string[] {
350
450
  )
351
451
  );
352
452
  }
453
+
454
+ // manual validation of accounts
455
+ if (Array.isArray(accounts)) {
456
+ accounts.forEach((privateKey, index) =>
457
+ validatePrivateKey(privateKey, index, networkName, errors)
458
+ );
459
+ } else if (typeof accounts === "object") {
460
+ const hdConfigResult = HDAccountsConfig.decode(accounts);
461
+ if (hdConfigResult.isLeft()) {
462
+ errors.push(
463
+ getErrorMessage(
464
+ `HardhatConfig.networks.${networkName}`,
465
+ accounts,
466
+ "HttpNetworkHDAccountsConfig"
467
+ )
468
+ );
469
+ }
470
+ } else if (typeof accounts === "string") {
471
+ if (accounts !== "remote") {
472
+ errors.push(
473
+ `Invalid 'accounts' entry for network '${networkName}': expected an array of accounts or the string 'remote', but got the string '${accounts}'`
474
+ );
475
+ }
476
+ } else if (accounts !== undefined) {
477
+ errors.push(
478
+ getErrorMessage(
479
+ `HardhatConfig.networks.${networkName}.accounts`,
480
+ accounts,
481
+ '"remote" | string[] | HttpNetworkHDAccountsConfig | undefined'
482
+ )
483
+ );
484
+ }
353
485
  }
354
486
  }
355
487
 
@@ -7,7 +7,7 @@ export const DEFAULT_SOLC_VERSION = "0.7.3";
7
7
  export const HARDHAT_NETWORK_DEFAULT_GAS_PRICE = "auto";
8
8
  export const HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS = 1e9;
9
9
  export const HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS = 1e9;
10
- const HARDHAT_NETWORK_MNEMONIC =
10
+ export const HARDHAT_NETWORK_MNEMONIC =
11
11
  "test test test test test test test test test test test junk";
12
12
  export const DEFAULT_HARDHAT_NETWORK_BALANCE = "10000000000000000000000";
13
13
 
@@ -35,14 +35,20 @@ export const defaultHardhatNetworkParams: Omit<
35
35
  HardhatNetworkConfig,
36
36
  "gas" | "initialDate"
37
37
  > = {
38
- hardfork: "london",
38
+ hardfork: "arrowGlacier",
39
39
  blockGasLimit: 30_000_000,
40
40
  gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
41
41
  chainId: 31337,
42
42
  throwOnTransactionFailures: true,
43
43
  throwOnCallFailures: true,
44
44
  allowUnlimitedContractSize: false,
45
- mining: { auto: true, interval: 0 },
45
+ mining: {
46
+ auto: true,
47
+ interval: 0,
48
+ mempool: {
49
+ order: "priority",
50
+ },
51
+ },
46
52
  accounts: defaultHardhatNetworkHdAccountsConfigParams,
47
53
  loggingEnabled: false,
48
54
  gasMultiplier: DEFAULT_GAS_MULTIPLIER,
@@ -69,6 +75,7 @@ export const defaultSolcOutputSelection = {
69
75
  "evm.bytecode",
70
76
  "evm.deployedBytecode",
71
77
  "evm.methodIdentifiers",
78
+ "metadata",
72
79
  ],
73
80
  "": ["ast"],
74
81
  },
@@ -360,6 +360,15 @@ Please double check your transactions' parameters.`,
360
360
  Please double check your transactions' parameters.`,
361
361
  shouldBeReported: false,
362
362
  },
363
+ PERSONALSIGN_MISSING_ADDRESS_PARAM: {
364
+ number: 116,
365
+ message: 'Missing "address" param when calling personal_sign.',
366
+ title: "Missing `address` param when calling personal_sign.",
367
+ description: `You called \`personal_sign\` with incorrect parameters.
368
+
369
+ Please check that you are sending an \`address\` parameter.`,
370
+ shouldBeReported: false,
371
+ },
363
372
  },
364
373
  TASK_DEFINITIONS: {
365
374
  PARAM_AFTER_VARIADIC: {
@@ -562,7 +571,7 @@ Please double check how you invoked Hardhat or ran your task.`,
562
571
  },
563
572
  MISSING_TASK_ARGUMENT: {
564
573
  number: 306,
565
- message: "Missing task argument %param%",
574
+ message: "The '%param%' parameter expects a value, but none was passed.",
566
575
  title: "Missing task argument",
567
576
  description: `You tried to run a task, but one of its required arguments was missing.
568
577
 
@@ -861,11 +870,21 @@ To start the JSON-RPC server, retry the command without the --network parameter.
861
870
  if the URL of the JSON-RPC wasn't set.`,
862
871
  shouldBeReported: false,
863
872
  },
873
+ COMPILE_TASK_UNSUPPORTED_SOLC_VERSION: {
874
+ number: 608,
875
+ message: `Version %version% is not supported by Hardhat.
876
+
877
+ The first supported version is %firstSupportedVersion%`,
878
+ title: "Unsupported solc version",
879
+ description: `This version of solidity is not supported by Hardhtat.
880
+ Please use a newer, supported version.`,
881
+ shouldBeReported: true,
882
+ },
864
883
  },
865
884
  ARTIFACTS: {
866
885
  NOT_FOUND: {
867
886
  number: 700,
868
- message: 'Artifact for contract "%contractName%" not found.',
887
+ message: 'Artifact for contract "%contractName%" not found. %suggestion%',
869
888
  title: "Artifact not found",
870
889
  description: `Tried to import a nonexistent artifact.
871
890
 
@@ -22,7 +22,7 @@ export function isHardhatInstalledLocallyOrLinked(configPath?: string) {
22
22
  return (
23
23
  fs.realpathSync(resolvedPackageJson) === fs.realpathSync(thisPackageJson)
24
24
  );
25
- } catch (_) {
25
+ } catch {
26
26
  return false;
27
27
  }
28
28
  }
@@ -6,6 +6,7 @@ import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
6
6
  export type RpcLog = t.TypeOf<typeof rpcLog>;
7
7
  export const rpcLog = t.type(
8
8
  {
9
+ logIndex: nullable(rpcQuantity),
9
10
  transactionIndex: nullable(rpcQuantity),
10
11
  transactionHash: nullable(rpcHash),
11
12
  blockHash: nullable(rpcHash),
@@ -185,14 +185,19 @@ export const inputFile: CLIArgumentType<string> = {
185
185
  throw new Error(`${strValue} is a directory, not a file`);
186
186
  }
187
187
  } catch (error) {
188
- throw new HardhatError(
189
- ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
190
- {
191
- name: argName,
192
- value: strValue,
193
- },
194
- error
195
- );
188
+ if (error instanceof Error) {
189
+ throw new HardhatError(
190
+ ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
191
+ {
192
+ name: argName,
193
+ value: strValue,
194
+ },
195
+ error
196
+ );
197
+ }
198
+
199
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
200
+ throw error;
196
201
  }
197
202
 
198
203
  return strValue;
@@ -212,15 +217,20 @@ export const inputFile: CLIArgumentType<string> = {
212
217
  inputFile.parse(argName, value);
213
218
  } catch (error) {
214
219
  // the input value is considered invalid, throw error.
215
- throw new HardhatError(
216
- ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
217
- {
218
- value,
219
- name: argName,
220
- type: inputFile.name,
221
- },
222
- error
223
- );
220
+ if (error instanceof Error) {
221
+ throw new HardhatError(
222
+ ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
223
+ {
224
+ value,
225
+ name: argName,
226
+ type: inputFile.name,
227
+ },
228
+ error
229
+ );
230
+ }
231
+
232
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
233
+ throw error;
224
234
  }
225
235
  },
226
236
  };
@@ -231,14 +241,19 @@ export const json: CLIArgumentType<any> = {
231
241
  try {
232
242
  return JSON.parse(strValue);
233
243
  } catch (error) {
234
- throw new HardhatError(
235
- ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
236
- {
237
- param: argName,
238
- error: error.message,
239
- },
240
- error
241
- );
244
+ if (error instanceof Error) {
245
+ throw new HardhatError(
246
+ ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
247
+ {
248
+ param: argName,
249
+ error: error.message,
250
+ },
251
+ error
252
+ );
253
+ }
254
+
255
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
256
+ throw error;
242
257
  }
243
258
  },
244
259
 
@@ -48,14 +48,19 @@ export function getEnvHardhatArguments(
48
48
  try {
49
49
  envArgs[paramName] = definition.type.parse(paramName, rawValue);
50
50
  } catch (error) {
51
- throw new HardhatError(
52
- ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
53
- {
54
- varName: envVarName,
55
- value: rawValue,
56
- },
57
- error
58
- );
51
+ if (error instanceof Error) {
52
+ throw new HardhatError(
53
+ ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
54
+ {
55
+ varName: envVarName,
56
+ value: rawValue,
57
+ },
58
+ error
59
+ );
60
+ }
61
+
62
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
63
+ throw error;
59
64
  }
60
65
  } else {
61
66
  envArgs[paramName] = definition.defaultValue;
@@ -78,8 +78,8 @@ export const HARDHAT_PARAM_DEFINITIONS: HardhatParamDefinitions = {
78
78
  tsconfig: {
79
79
  name: "tsconfig",
80
80
  defaultValue: undefined,
81
- description: "Reserved hardhat argument -- Has no effect.",
82
- type: types.string,
81
+ description: "A TypeScript config file.",
82
+ type: types.inputFile,
83
83
  isOptional: true,
84
84
  isFlag: false,
85
85
  isVariadic: false,
@@ -74,6 +74,25 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
74
74
  }
75
75
  }
76
76
 
77
+ if (args.method === "personal_sign") {
78
+ if (params.length > 0) {
79
+ const [data, address] = validateParams(params, rpcData, rpcAddress);
80
+
81
+ if (data !== undefined) {
82
+ if (address === undefined) {
83
+ throw new HardhatError(
84
+ ERRORS.NETWORK.PERSONALSIGN_MISSING_ADDRESS_PARAM
85
+ );
86
+ }
87
+
88
+ const privateKey = this._getPrivateKeyForAddress(address);
89
+ const messageHash = hashPersonalMessage(toBuffer(data));
90
+ const signature = ecsign(messageHash, privateKey);
91
+ return toRpcSig(signature.v, signature.r, signature.s);
92
+ }
93
+ }
94
+ }
95
+
77
96
  if (args.method === "eth_signTypedData_v4") {
78
97
  const [address, data] = validateParams(params, rpcAddress, t.any);
79
98
 
@@ -85,7 +104,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
85
104
  if (typeof data === "string") {
86
105
  try {
87
106
  typedMessage = JSON.parse(data);
88
- } catch (error) {
107
+ } catch {
89
108
  throw new HardhatError(
90
109
  ERRORS.NETWORK.ETHSIGN_TYPED_DATA_V4_INVALID_DATA_PARAM
91
110
  );
@@ -200,7 +219,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
200
219
  private _getPrivateKeyForAddressOrNull(address: Buffer): Buffer | null {
201
220
  try {
202
221
  return this._getPrivateKeyForAddress(address);
203
- } catch (e) {
222
+ } catch {
204
223
  return null;
205
224
  }
206
225
  }
@@ -234,6 +253,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
234
253
  gasLimit: transactionRequest.gas,
235
254
  };
236
255
 
256
+ // TODO: consider changing instances of "london" below to ["latest hardfork"]
237
257
  const common =
238
258
  chains.names[chainId] !== undefined
239
259
  ? new Common({ chain: chainId, hardfork: "london" })
@@ -328,7 +348,7 @@ abstract class SenderProvider extends ProviderWrapper {
328
348
  return this._wrappedProvider.request(args);
329
349
  }
330
350
 
331
- protected abstract async _getSender(): Promise<string | undefined>;
351
+ protected abstract _getSender(): Promise<string | undefined>;
332
352
  }
333
353
 
334
354
  export class AutomaticSenderProvider extends SenderProvider {
@@ -56,7 +56,7 @@ export class BackwardsCompatibilityProviderAdapter
56
56
  method: request.method,
57
57
  params: request.params,
58
58
  });
59
- } catch (error) {
59
+ } catch (error: any) {
60
60
  if (error.code === undefined) {
61
61
  // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
62
62
  throw error;
@@ -12,7 +12,7 @@ export abstract class ProviderWrapperWithChainId extends ProviderWrapper {
12
12
  if (this._chainId === undefined) {
13
13
  try {
14
14
  this._chainId = await this._getChainIdFromEthChainId();
15
- } catch (error) {
15
+ } catch {
16
16
  // If eth_chainId fails we default to net_version
17
17
  this._chainId = await this._getChainIdFromEthNetVersion();
18
18
  }
@@ -13,7 +13,10 @@ import type {
13
13
  } from "../../../types";
14
14
  import { HARDHAT_NETWORK_NAME } from "../../constants";
15
15
  import { ModulesLogger } from "../../hardhat-network/provider/modules/logger";
16
- import { ForkConfig } from "../../hardhat-network/provider/node-types";
16
+ import {
17
+ ForkConfig,
18
+ MempoolOrder,
19
+ } from "../../hardhat-network/provider/node-types";
17
20
  import { getForkCacheDirPath } from "../../hardhat-network/provider/utils/disk-cache";
18
21
  import { parseDateString } from "../../util/date";
19
22
 
@@ -88,6 +91,8 @@ export function createProvider(
88
91
  hardhatNetConfig.throwOnCallFailures,
89
92
  hardhatNetConfig.mining.auto,
90
93
  hardhatNetConfig.mining.interval,
94
+ // This cast is valid because of the config validation and resolution
95
+ hardhatNetConfig.mining.mempool.order as MempoolOrder,
91
96
  new ModulesLogger(hardhatNetConfig.loggingEnabled),
92
97
  accounts,
93
98
  artifacts,
@@ -97,7 +102,8 @@ export function createProvider(
97
102
  : undefined,
98
103
  experimentalHardhatNetworkMessageTraceHooks,
99
104
  forkConfig,
100
- paths !== undefined ? getForkCacheDirPath(paths) : undefined
105
+ paths !== undefined ? getForkCacheDirPath(paths) : undefined,
106
+ hardhatNetConfig.coinbase
101
107
  );
102
108
  } else {
103
109
  const HttpProvider = importProvider<
@@ -86,9 +86,11 @@ abstract class MultipliedGasEstimationProvider extends ProviderWrapper {
86
86
 
87
87
  return numberToRpcQuantity(gas);
88
88
  } catch (error) {
89
- if (error.message.toLowerCase().includes("execution error")) {
90
- const blockGasLimit = await this._getBlockGasLimit();
91
- return numberToRpcQuantity(blockGasLimit);
89
+ if (error instanceof Error) {
90
+ if (error.message.toLowerCase().includes("execution error")) {
91
+ const blockGasLimit = await this._getBlockGasLimit();
92
+ return numberToRpcQuantity(blockGasLimit);
93
+ }
92
94
  }
93
95
 
94
96
  // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
@@ -142,7 +144,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
142
144
  public static readonly EIP1559_BASE_FEE_MAX_FULL_BLOCKS_PREFERENCE: number = 3;
143
145
 
144
146
  // See eth_feeHistory for an explanation of what this means
145
- public static readonly EIP1559_REWARD_PERCENTILE: number = 0.5;
147
+ public static readonly EIP1559_REWARD_PERCENTILE: number = 50;
146
148
 
147
149
  private _nodeHasFeeHistory?: boolean;
148
150
  private _nodeSupportsEIP1559?: boolean;
@@ -277,7 +279,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
277
279
 
278
280
  maxPriorityFeePerGas: rpcQuantityToBN(response.reward[0][0]),
279
281
  };
280
- } catch (_error) {
282
+ } catch {
281
283
  this._nodeHasFeeHistory = false;
282
284
 
283
285
  return undefined;
@@ -171,7 +171,7 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
171
171
  }
172
172
 
173
173
  return parseJsonResponse(await response.text());
174
- } catch (error) {
174
+ } catch (error: any) {
175
175
  if (error.code === "ECONNREFUSED") {
176
176
  throw new HardhatError(
177
177
  ERRORS.NETWORK.NODE_IS_NOT_RUNNING,
@@ -11,7 +11,7 @@ export abstract class ProviderWrapper
11
11
  super(_wrappedProvider);
12
12
  }
13
13
 
14
- public abstract async request(args: RequestArguments): Promise<unknown>;
14
+ public abstract request(args: RequestArguments): Promise<unknown>;
15
15
 
16
16
  protected _getParams<ParamsT extends any[] = any[]>(
17
17
  args: RequestArguments
@@ -266,7 +266,9 @@ export class Environment implements HardhatRuntimeEnvironment {
266
266
  values[paramName] = resolvedArgumentValue;
267
267
  }
268
268
  } catch (error) {
269
- errors.push(error);
269
+ if (HardhatError.isHardhatError(error)) {
270
+ errors.push(error);
271
+ }
270
272
  }
271
273
  return { errors, values };
272
274
  },