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,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HardhatNode = exports.COINBASE_ADDRESS = void 0;
6
+ exports.HardhatNode = void 0;
7
7
  const block_1 = require("@ethereumjs/block");
8
8
  const common_1 = __importDefault(require("@ethereumjs/common"));
9
9
  const tx_1 = require("@ethereumjs/tx");
@@ -51,12 +51,11 @@ const makeForkClient_1 = require("./utils/makeForkClient");
51
51
  const makeForkCommon_1 = require("./utils/makeForkCommon");
52
52
  const putGenesisBlock_1 = require("./utils/putGenesisBlock");
53
53
  const txMapToArray_1 = require("./utils/txMapToArray");
54
- const log = debug_1.default("hardhat:core:hardhat-network:node");
54
+ const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
55
55
  const ethSigUtil = require("eth-sig-util");
56
- exports.COINBASE_ADDRESS = ethereumjs_util_1.Address.fromString("0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e");
57
56
  /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
58
57
  class HardhatNode extends events_1.default {
59
- constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
58
+ constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), _mempoolOrder, _coinbase, genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
60
59
  super();
61
60
  this._vm = _vm;
62
61
  this._stateManager = _stateManager;
@@ -65,6 +64,8 @@ class HardhatNode extends events_1.default {
65
64
  this._automine = _automine;
66
65
  this._minGasPrice = _minGasPrice;
67
66
  this._blockTimeOffsetSeconds = _blockTimeOffsetSeconds;
67
+ this._mempoolOrder = _mempoolOrder;
68
+ this._coinbase = _coinbase;
68
69
  this._forkNetworkId = _forkNetworkId;
69
70
  this._localAccounts = new Map(); // address => private key
70
71
  this._impersonatedAccounts = new Set(); // address
@@ -90,7 +91,7 @@ class HardhatNode extends events_1.default {
90
91
  }
91
92
  try {
92
93
  for (const buildInfo of tracingConfig.buildInfos) {
93
- const bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
94
+ const bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
94
95
  for (const bytecode of bytecodes) {
95
96
  this._vmTraceDecoder.addBytecode(bytecode);
96
97
  }
@@ -99,11 +100,13 @@ class HardhatNode extends events_1.default {
99
100
  catch (error) {
100
101
  console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be initialized. Run Hardhat with --verbose to learn more."));
101
102
  log("Hardhat Network tracing disabled: ContractsIdentifier failed to be initialized. Please report this to help us improve Hardhat.\n", error);
102
- reporter_1.Reporter.reportError(error);
103
+ if (error instanceof Error) {
104
+ reporter_1.Reporter.reportError(error);
105
+ }
103
106
  }
104
107
  }
105
108
  static async create(config) {
106
- const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, } = config;
109
+ const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, mempoolOrder, } = config;
107
110
  let common;
108
111
  let stateManager;
109
112
  let blockchain;
@@ -113,23 +116,23 @@ class HardhatNode extends events_1.default {
113
116
  const initialBaseFeePerGasConfig = config.initialBaseFeePerGas !== undefined
114
117
  ? new ethereumjs_util_1.BN(config.initialBaseFeePerGas)
115
118
  : undefined;
116
- const hardfork = hardforks_1.getHardforkName(config.hardfork);
117
- if (node_types_1.isForkedNodeConfig(config)) {
118
- const { forkClient, forkBlockNumber, forkBlockTimestamp } = await makeForkClient_1.makeForkClient(config.forkConfig, config.forkCachePath);
119
- common = await makeForkCommon_1.makeForkCommon(config);
119
+ const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
120
+ if ((0, node_types_1.isForkedNodeConfig)(config)) {
121
+ const { forkClient, forkBlockNumber, forkBlockTimestamp } = await (0, makeForkClient_1.makeForkClient)(config.forkConfig, config.forkCachePath);
122
+ common = await (0, makeForkCommon_1.makeForkCommon)(config);
120
123
  forkNetworkId = forkClient.getNetworkId();
121
124
  this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
122
125
  const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
123
126
  await forkStateManager.initializeGenesisAccounts(genesisAccounts);
124
127
  stateManager = forkStateManager;
125
128
  blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
126
- initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(new Date(forkBlockTimestamp), new Date()));
129
+ initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
127
130
  // If the hardfork is London or later we need a base fee per gas for the
128
131
  // first local block. If initialBaseFeePerGas config was provided we use
129
132
  // that. Otherwise, what we do depends on the block we forked from. If
130
133
  // it's an EIP-1559 block we don't need to do anything here, as we'll
131
134
  // end up automatically computing the next base fee per gas based on it.
132
- if (hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)) {
135
+ if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)) {
133
136
  if (initialBaseFeePerGasConfig !== undefined) {
134
137
  nextBlockBaseFeePerGas = initialBaseFeePerGasConfig;
135
138
  }
@@ -145,13 +148,14 @@ class HardhatNode extends events_1.default {
145
148
  const hardhatStateManager = new HardhatStateManager_1.HardhatStateManager();
146
149
  await hardhatStateManager.initializeGenesisAccounts(genesisAccounts);
147
150
  const initialStateRoot = await hardhatStateManager.getStateRoot();
148
- common = makeCommon_1.makeCommon(config, initialStateRoot);
151
+ common = (0, makeCommon_1.makeCommon)(config, initialStateRoot);
149
152
  const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain();
150
- const genesisBlockBaseFeePerGas = hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)
151
- ? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS) : undefined;
152
- await putGenesisBlock_1.putGenesisBlock(hardhatBlockchain, common, genesisBlockBaseFeePerGas);
153
+ const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
154
+ ? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
155
+ : undefined;
156
+ await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, genesisBlockBaseFeePerGas);
153
157
  if (config.initialDate !== undefined) {
154
- initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(config.initialDate, new Date()));
158
+ initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
155
159
  }
156
160
  blockchain = hardhatBlockchain;
157
161
  stateManager = hardhatStateManager;
@@ -164,7 +168,7 @@ class HardhatNode extends events_1.default {
164
168
  blockchain: blockchain,
165
169
  allowUnlimitedContractSize,
166
170
  });
167
- const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
171
+ const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
168
172
  return [common, node];
169
173
  }
170
174
  static _validateHardforks(forkBlockNumber, common, remoteChainId) {
@@ -178,7 +182,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
178
182
  try {
179
183
  upstreamCommon = new common_1.default({ chain: remoteChainId });
180
184
  }
181
- catch (error) {
185
+ catch (_a) {
182
186
  // If ethereumjs doesn't have a common it will throw and we won't have
183
187
  // info about the activation block of each hardfork, so we don't run
184
188
  // this validation.
@@ -193,7 +197,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
193
197
  }
194
198
  }
195
199
  async getSignedTransaction(txParams) {
196
- const senderAddress = ethereumjs_util_1.bufferToHex(txParams.from);
200
+ const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
197
201
  const pk = this._localAccounts.get(senderAddress);
198
202
  if (pk !== undefined) {
199
203
  let tx;
@@ -239,14 +243,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
239
243
  result = await this._mineBlockWithPendingTxs(blockTimestamp);
240
244
  }
241
245
  catch (err) {
242
- if (err === null || err === void 0 ? void 0 : err.message.includes("sender doesn't have enough funds")) {
243
- throw new errors_2.InvalidInputError(err.message, err);
244
- }
245
- // Some network errors are HardhatErrors, and can end up here when forking
246
- if (errors_1.HardhatError.isHardhatError(err)) {
247
- throw err;
246
+ if (err instanceof Error) {
247
+ if (err === null || err === void 0 ? void 0 : err.message.includes("sender doesn't have enough funds")) {
248
+ throw new errors_2.InvalidInputError(err.message, err);
249
+ }
250
+ // Some network errors are HardhatErrors, and can end up here when forking
251
+ if (errors_1.HardhatError.isHardhatError(err)) {
252
+ throw err;
253
+ }
254
+ throw new errors_2.TransactionExecutionError(err);
248
255
  }
249
- throw new errors_2.TransactionExecutionError(err);
256
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
257
+ throw err;
250
258
  }
251
259
  await this._saveBlockAsSuccessfullyRun(result.block, result.blockResult);
252
260
  if (needsTimestampIncrease) {
@@ -294,8 +302,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
294
302
  }
295
303
  async getCodeFromTrace(trace, blockNumberOrPending) {
296
304
  if (trace === undefined ||
297
- message_trace_1.isPrecompileTrace(trace) ||
298
- message_trace_1.isCreateTrace(trace)) {
305
+ (0, message_trace_1.isPrecompileTrace)(trace) ||
306
+ (0, message_trace_1.isCreateTrace)(trace)) {
299
307
  return Buffer.from("");
300
308
  }
301
309
  return this.getCode(new ethereumjs_util_1.Address(trace.address), blockNumberOrPending);
@@ -385,7 +393,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
385
393
  return new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS);
386
394
  }
387
395
  getCoinbaseAddress() {
388
- return exports.COINBASE_ADDRESS;
396
+ return ethereumjs_util_1.Address.fromString(this._coinbase);
389
397
  }
390
398
  async getStorageAt(address, positionIndex, blockNumberOrPending) {
391
399
  const key = positionIndex.toArrayLike(Buffer, "be", 32);
@@ -457,19 +465,19 @@ Hardhat Network's forking functionality only works with blocks from at least spu
457
465
  return (_a = this._txPool.getTransactionByHash(hash)) === null || _a === void 0 ? void 0 : _a.data;
458
466
  }
459
467
  async getTransactionReceipt(hash) {
460
- const hashBuffer = hash instanceof Buffer ? hash : ethereumjs_util_1.toBuffer(hash);
468
+ const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
461
469
  const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
462
470
  return receipt !== null && receipt !== void 0 ? receipt : undefined;
463
471
  }
464
472
  async getPendingTransactions() {
465
- const txPoolPending = txMapToArray_1.txMapToArray(this._txPool.getPendingTransactions());
466
- const txPoolQueued = txMapToArray_1.txMapToArray(this._txPool.getQueuedTransactions());
473
+ const txPoolPending = (0, txMapToArray_1.txMapToArray)(this._txPool.getPendingTransactions());
474
+ const txPoolQueued = (0, txMapToArray_1.txMapToArray)(this._txPool.getQueuedTransactions());
467
475
  return txPoolPending.concat(txPoolQueued);
468
476
  }
469
477
  async signPersonalMessage(address, data) {
470
- const messageHash = ethereumjs_util_1.hashPersonalMessage(data);
478
+ const messageHash = (0, ethereumjs_util_1.hashPersonalMessage)(data);
471
479
  const privateKey = this._getLocalAccountPrivateKey(address);
472
- return ethereumjs_util_1.ecsign(messageHash, privateKey);
480
+ return (0, ethereumjs_util_1.ecsign)(messageHash, privateKey);
473
481
  }
474
482
  async signTypedDataV4(address, typedData) {
475
483
  const privateKey = this._getLocalAccountPrivateKey(address);
@@ -492,6 +500,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
492
500
  nextBlockTimestamp: this.getNextBlockTimestamp(),
493
501
  irregularStatesByBlockNumber: this._irregularStatesByBlockNumber,
494
502
  userProvidedNextBlockBaseFeePerGas: this.getUserProvidedNextBlockBaseFeePerGas(),
503
+ coinbase: this.getCoinbaseAddress().toString(),
495
504
  };
496
505
  this._irregularStatesByBlockNumber = new Map(this._irregularStatesByBlockNumber);
497
506
  this._snapshots.push(snapshot);
@@ -528,6 +537,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
528
537
  else {
529
538
  this._resetUserProvidedNextBlockBaseFeePerGas();
530
539
  }
540
+ this._coinbase = snapshot.coinbase;
531
541
  // We delete this and the following snapshots, as they can only be used
532
542
  // once in Ganache
533
543
  this._snapshots.splice(snapshotIndex);
@@ -559,7 +569,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
559
569
  id: filterId,
560
570
  type: filter_1.Type.BLOCK_SUBSCRIPTION,
561
571
  deadline: this._newDeadline(),
562
- hashes: [ethereumjs_util_1.bufferToHex(block.header.hash())],
572
+ hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
563
573
  logs: [],
564
574
  subscription: isSubscription,
565
575
  });
@@ -628,7 +638,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
628
638
  async addCompilationResult(solcVersion, compilerInput, compilerOutput) {
629
639
  let bytecodes;
630
640
  try {
631
- bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(solcVersion, compilerInput, compilerOutput);
641
+ bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(solcVersion, compilerInput, compilerOutput);
632
642
  }
633
643
  catch (error) {
634
644
  console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be updated. Run Hardhat with --verbose to learn more."));
@@ -641,15 +651,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
641
651
  return true;
642
652
  }
643
653
  addImpersonatedAccount(address) {
644
- this._impersonatedAccounts.add(ethereumjs_util_1.bufferToHex(address));
654
+ this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
645
655
  return true;
646
656
  }
647
657
  removeImpersonatedAccount(address) {
648
- return this._impersonatedAccounts.delete(ethereumjs_util_1.bufferToHex(address));
658
+ return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
649
659
  }
650
660
  setAutomine(automine) {
651
661
  this._automine = automine;
652
662
  }
663
+ getAutomine() {
664
+ return this._automine;
665
+ }
653
666
  async setBlockGasLimit(gasLimit) {
654
667
  this._txPool.setBlockGasLimit(gasLimit);
655
668
  await this._txPool.updatePendingAndQueued();
@@ -664,7 +677,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
664
677
  }
665
678
  const isTransactionMined = await this._isTransactionMined(hash);
666
679
  if (isTransactionMined) {
667
- throw new errors_2.InvalidArgumentsError(`Transaction ${ethereumjs_util_1.bufferToHex(hash)} cannot be dropped because it's already mined`);
680
+ throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
668
681
  }
669
682
  return false;
670
683
  }
@@ -697,7 +710,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
697
710
  async traceTransaction(hash, config) {
698
711
  const block = await this.getBlockByTransactionHash(hash);
699
712
  if (block === undefined) {
700
- throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${ethereumjs_util_1.bufferToHex(hash)}`);
713
+ throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
701
714
  }
702
715
  return this._runInBlockContext(new ethereumjs_util_1.BN(block.header.number).subn(1), async () => {
703
716
  const blockNumber = block.header.number.toNumber();
@@ -705,7 +718,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
705
718
  let vm = this._vm;
706
719
  if (blockchain instanceof ForkBlockchain_1.ForkBlockchain &&
707
720
  blockNumber <= blockchain.getForkBlockNumber().toNumber()) {
708
- errors_1.assertHardhatInvariant(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
721
+ (0, errors_1.assertHardhatInvariant)(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
709
722
  const common = getCommonForTracing(this._forkNetworkId, blockNumber);
710
723
  vm = new vm_1.default({
711
724
  common,
@@ -799,7 +812,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
799
812
  baseFeePerGas.push(pendingBlock.header.calcNextBaseFee());
800
813
  }
801
814
  else {
802
- errors_1.assertHardhatInvariant(false, "This should never happen");
815
+ (0, errors_1.assertHardhatInvariant)(false, "This should never happen");
803
816
  }
804
817
  }
805
818
  return {
@@ -809,6 +822,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
809
822
  reward: rewardPercentiles.length > 0 ? reward : undefined,
810
823
  };
811
824
  }
825
+ async setCoinbase(coinbase) {
826
+ this._coinbase = coinbase.toString();
827
+ }
812
828
  _getGasUsedRatio(block) {
813
829
  const FLOATS_PRECISION = 100000;
814
830
  return (block.header.gasUsed
@@ -824,31 +840,47 @@ Hardhat Network's forking functionality only works with blocks from at least spu
824
840
  const receipts = await Promise.all(block.transactions
825
841
  .map((tx) => tx.hash())
826
842
  .map((hash) => this.getTransactionReceipt(hash)));
827
- const effectiveGasPriceAndGas = receipts
828
- .map((r) => ({
829
- effectiveGasPrice: base_types_1.rpcQuantityToBN(r === null || r === void 0 ? void 0 : r.effectiveGasPrice),
830
- gasUsed: base_types_1.rpcQuantityToBN(r === null || r === void 0 ? void 0 : r.gasUsed),
831
- }))
832
- .sort((a, b) => a.effectiveGasPrice.cmp(b.effectiveGasPrice));
843
+ const effectiveGasRewardAndGas = receipts
844
+ .map((r, i) => {
845
+ var _a;
846
+ const tx = block.transactions[i];
847
+ const baseFeePerGas = (_a = block.header.baseFeePerGas) !== null && _a !== void 0 ? _a : new ethereumjs_util_1.BN(0);
848
+ // reward = min(maxPriorityFeePerGas, maxFeePerGas - baseFeePerGas)
849
+ let effectiveGasReward;
850
+ if ("maxPriorityFeePerGas" in tx) {
851
+ effectiveGasReward = tx.maxFeePerGas.sub(baseFeePerGas);
852
+ if (tx.maxPriorityFeePerGas.lt(effectiveGasReward)) {
853
+ effectiveGasReward = tx.maxPriorityFeePerGas;
854
+ }
855
+ }
856
+ else {
857
+ effectiveGasReward = tx.gasPrice.sub(baseFeePerGas);
858
+ }
859
+ return {
860
+ effectiveGasReward,
861
+ gasUsed: (0, base_types_1.rpcQuantityToBN)(r === null || r === void 0 ? void 0 : r.gasUsed),
862
+ };
863
+ })
864
+ .sort((a, b) => a.effectiveGasReward.cmp(b.effectiveGasReward));
833
865
  return rewardPercentiles.map((p) => {
834
866
  let gasUsed = new ethereumjs_util_1.BN(0);
835
867
  const targetGas = block.header.gasLimit
836
868
  .muln(Math.ceil(p * FLOATS_PRECISION))
837
869
  .divn(100 * FLOATS_PRECISION);
838
- for (const values of effectiveGasPriceAndGas) {
870
+ for (const values of effectiveGasRewardAndGas) {
839
871
  gasUsed = gasUsed.add(values.gasUsed);
840
872
  if (targetGas.lte(gasUsed)) {
841
- return values.effectiveGasPrice;
873
+ return values.effectiveGasReward;
842
874
  }
843
875
  }
844
- return effectiveGasPriceAndGas[effectiveGasPriceAndGas.length - 1]
845
- .effectiveGasPrice;
876
+ return effectiveGasRewardAndGas[effectiveGasRewardAndGas.length - 1]
877
+ .effectiveGasReward;
846
878
  });
847
879
  }
848
880
  async _addPendingTransaction(tx) {
849
881
  await this._txPool.addTransaction(tx);
850
882
  await this._notifyPendingTransaction(tx);
851
- return ethereumjs_util_1.bufferToHex(tx.hash());
883
+ return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
852
884
  }
853
885
  async _mineTransaction(tx) {
854
886
  await this._addPendingTransaction(tx);
@@ -904,7 +936,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
904
936
  sender = tx.getSenderAddress(); // verifies signature as a side effect
905
937
  }
906
938
  catch (e) {
907
- throw new errors_2.InvalidInputError(e.message);
939
+ if (e instanceof Error) {
940
+ throw new errors_2.InvalidInputError(e.message);
941
+ }
942
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
943
+ throw e;
908
944
  }
909
945
  // validate nonce
910
946
  const nextPendingNonce = await this._txPool.getNextPendingNonce(sender);
@@ -961,7 +997,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
961
997
  const blockGasLimit = this.getBlockGasLimit();
962
998
  const minTxFee = this._getMinimalTransactionFee();
963
999
  const pendingTxs = this._txPool.getPendingTransactions();
964
- const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, headerData.baseFeePerGas);
1000
+ const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, this._mempoolOrder, headerData.baseFeePerGas);
965
1001
  let tx = transactionQueue.getNextTransaction();
966
1002
  const results = [];
967
1003
  const receipts = [];
@@ -1039,9 +1075,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1039
1075
  this._snapshots.splice(snapshotIndex);
1040
1076
  }
1041
1077
  _initLocalAccounts(genesisAccounts) {
1042
- const privateKeys = genesisAccounts.map((acc) => ethereumjs_util_1.toBuffer(acc.privateKey));
1078
+ const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
1043
1079
  for (const pk of privateKeys) {
1044
- this._localAccounts.set(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.privateToAddress(pk)), pk);
1080
+ this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
1045
1081
  }
1046
1082
  }
1047
1083
  async _getConsoleLogMessages(vmTrace, vmTracerError) {
@@ -1079,7 +1115,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1079
1115
  if (error.error === exceptions_1.ERROR.OUT_OF_GAS) {
1080
1116
  if (stackTrace !== undefined &&
1081
1117
  this._isContractTooLargeStackTrace(stackTrace)) {
1082
- return solidity_errors_1.encodeSolidityStackTrace("Transaction ran out of gas", stackTrace);
1118
+ return (0, solidity_errors_1.encodeSolidityStackTrace)("Transaction ran out of gas", stackTrace);
1083
1119
  }
1084
1120
  return new errors_2.TransactionExecutionError("Transaction ran out of gas");
1085
1121
  }
@@ -1101,12 +1137,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1101
1137
  if (error.error === exceptions_1.ERROR.REVERT) {
1102
1138
  const fallbackMessage = `VM Exception while processing transaction: revert ${returnDataExplanation}`;
1103
1139
  if (stackTrace !== undefined) {
1104
- return solidity_errors_1.encodeSolidityStackTrace(fallbackMessage, stackTrace);
1140
+ return (0, solidity_errors_1.encodeSolidityStackTrace)(fallbackMessage, stackTrace);
1105
1141
  }
1106
1142
  return new errors_2.TransactionExecutionError(fallbackMessage);
1107
1143
  }
1108
1144
  if (stackTrace !== undefined) {
1109
- return solidity_errors_1.encodeSolidityStackTrace(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
1145
+ return (0, solidity_errors_1.encodeSolidityStackTrace)(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
1110
1146
  }
1111
1147
  return new errors_2.TransactionExecutionError(`Transaction reverted ${returnDataExplanation}`);
1112
1148
  }
@@ -1119,7 +1155,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1119
1155
  let blockTimestamp;
1120
1156
  let offsetShouldChange;
1121
1157
  let newOffset = new ethereumjs_util_1.BN(0);
1122
- const currentTimestamp = new ethereumjs_util_1.BN(getCurrentTimestamp_1.getCurrentTimestamp());
1158
+ const currentTimestamp = new ethereumjs_util_1.BN((0, getCurrentTimestamp_1.getCurrentTimestamp)());
1123
1159
  // if timestamp is not provided, we check nextBlockTimestamp, if it is
1124
1160
  // set, we use it as the timestamp instead. If it is not set, we use
1125
1161
  // time offset + real time as the timestamp.
@@ -1148,7 +1184,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1148
1184
  async _notifyPendingTransaction(tx) {
1149
1185
  this._filters.forEach((filter) => {
1150
1186
  if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
1151
- const hash = ethereumjs_util_1.bufferToHex(tx.hash());
1187
+ const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
1152
1188
  if (filter.subscription) {
1153
1189
  this._emitEthEvent(filter.id, hash);
1154
1190
  return;
@@ -1169,7 +1205,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1169
1205
  * was added to the blockchain.
1170
1206
  */
1171
1207
  async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
1172
- const receipts = output_1.getRpcReceiptOutputsFromLocalBlockExecution(block, runBlockResult, output_1.shouldShowTransactionTypeForHardfork(this._vm._common));
1208
+ const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
1173
1209
  this._blockchain.addTransactionReceipts(receipts);
1174
1210
  const td = await this.getBlockTotalDifficulty(block);
1175
1211
  const rpcLogs = [];
@@ -1184,14 +1220,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1184
1220
  case filter_1.Type.BLOCK_SUBSCRIPTION:
1185
1221
  const hash = block.hash();
1186
1222
  if (filter.subscription) {
1187
- this._emitEthEvent(filter.id, output_1.getRpcBlock(block, td, output_1.shouldShowTransactionTypeForHardfork(this._vm._common), false));
1223
+ this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
1188
1224
  return;
1189
1225
  }
1190
- filter.hashes.push(ethereumjs_util_1.bufferToHex(hash));
1226
+ filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
1191
1227
  break;
1192
1228
  case filter_1.Type.LOGS_SUBSCRIPTION:
1193
- if (filter_1.bloomFilter(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
1194
- const logs = filter_1.filterLogs(rpcLogs, filter.criteria);
1229
+ if ((0, filter_1.bloomFilter)(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
1230
+ const logs = (0, filter_1.filterLogs)(rpcLogs, filter.criteria);
1195
1231
  if (logs.length === 0) {
1196
1232
  return;
1197
1233
  }
@@ -1325,7 +1361,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1325
1361
  // We know that this block number exists, because otherwise
1326
1362
  // there would be an error in the RPC layer.
1327
1363
  const block = await this.getBlockByNumber(blockNumberOrPending);
1328
- errors_1.assertHardhatInvariant(block !== undefined, "Tried to run a tx in the context of a non-existent block");
1364
+ (0, errors_1.assertHardhatInvariant)(block !== undefined, "Tried to run a tx in the context of a non-existent block");
1329
1365
  blockContext = block;
1330
1366
  // we don't need to add the tx to the block because runTx doesn't
1331
1367
  // know anything about the txs in the current block
@@ -1458,7 +1494,7 @@ function getCommonForTracing(networkId, blockNumber) {
1458
1494
  common.setHardfork(common.activeHardfork(blockNumber));
1459
1495
  return common;
1460
1496
  }
1461
- catch (e) {
1497
+ catch (_a) {
1462
1498
  throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
1463
1499
  }
1464
1500
  }