hardhat 2.10.1 → 2.11.0-dev.0

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 (440) hide show
  1. package/README.md +1 -1
  2. package/builtin-tasks/compile.js +6 -8
  3. package/builtin-tasks/compile.js.map +1 -1
  4. package/builtin-tasks/node.js +9 -12
  5. package/builtin-tasks/node.js.map +1 -1
  6. package/builtin-tasks/test.js +2 -3
  7. package/builtin-tasks/test.js.map +1 -1
  8. package/console.sol +444 -444
  9. package/internal/artifacts.js +1 -1
  10. package/internal/artifacts.js.map +1 -1
  11. package/internal/cli/ArgumentsParser.js +5 -2
  12. package/internal/cli/ArgumentsParser.js.map +1 -1
  13. package/internal/cli/analytics.js +2 -2
  14. package/internal/cli/analytics.js.map +1 -1
  15. package/internal/cli/autocomplete.js +20 -32
  16. package/internal/cli/autocomplete.js.map +1 -1
  17. package/internal/cli/cli.js +1 -1
  18. package/internal/cli/cli.js.map +1 -1
  19. package/internal/cli/project-creation.js +14 -4
  20. package/internal/cli/project-creation.js.map +1 -1
  21. package/internal/constants.d.ts.map +1 -1
  22. package/internal/constants.js +2 -0
  23. package/internal/constants.js.map +1 -1
  24. package/internal/core/config/config-loading.js +2 -3
  25. package/internal/core/config/config-loading.js.map +1 -1
  26. package/internal/core/config/config-resolution.d.ts.map +1 -1
  27. package/internal/core/config/config-resolution.js +84 -35
  28. package/internal/core/config/config-resolution.js.map +1 -1
  29. package/internal/core/config/config-validation.js +38 -20
  30. package/internal/core/config/config-validation.js.map +1 -1
  31. package/internal/core/config/default-config.d.ts.map +1 -1
  32. package/internal/core/config/default-config.js +17 -4
  33. package/internal/core/config/default-config.js.map +1 -1
  34. package/internal/core/errors.js +4 -2
  35. package/internal/core/errors.js.map +1 -1
  36. package/internal/core/execution-mode.js +2 -2
  37. package/internal/core/execution-mode.js.map +1 -1
  38. package/internal/core/flamegraph.d.ts +10 -0
  39. package/internal/core/flamegraph.d.ts.map +1 -0
  40. package/internal/core/flamegraph.js +245 -0
  41. package/internal/core/flamegraph.js.map +1 -0
  42. package/internal/core/jsonrpc/types/base-types.d.ts +7 -8
  43. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
  44. package/internal/core/jsonrpc/types/base-types.js +24 -24
  45. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  46. package/internal/core/jsonrpc/types/input/blockTag.d.ts +15 -10
  47. package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
  48. package/internal/core/jsonrpc/types/input/blockTag.js +2 -0
  49. package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
  50. package/internal/core/jsonrpc/types/input/callRequest.d.ts +5 -6
  51. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
  52. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
  53. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -7
  54. package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
  55. package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
  56. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +7 -8
  57. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
  58. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
  59. package/internal/core/jsonrpc/types/output/block.d.ts +29 -30
  60. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  61. package/internal/core/jsonrpc/types/output/block.js +8 -2
  62. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  63. package/internal/core/jsonrpc/types/output/log.d.ts +3 -4
  64. package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
  65. package/internal/core/jsonrpc/types/output/log.js.map +1 -1
  66. package/internal/core/jsonrpc/types/output/receipt.d.ts +10 -11
  67. package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
  68. package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
  69. package/internal/core/jsonrpc/types/output/transaction.d.ts +13 -14
  70. package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
  71. package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
  72. package/internal/core/providers/accounts.d.ts.map +1 -1
  73. package/internal/core/providers/accounts.js +30 -24
  74. package/internal/core/providers/accounts.js.map +1 -1
  75. package/internal/core/providers/chainId.js +1 -1
  76. package/internal/core/providers/chainId.js.map +1 -1
  77. package/internal/core/providers/construction.d.ts.map +1 -1
  78. package/internal/core/providers/construction.js +5 -5
  79. package/internal/core/providers/construction.js.map +1 -1
  80. package/internal/core/providers/gas-providers.d.ts +4 -4
  81. package/internal/core/providers/gas-providers.d.ts.map +1 -1
  82. package/internal/core/providers/gas-providers.js +16 -15
  83. package/internal/core/providers/gas-providers.js.map +1 -1
  84. package/internal/core/providers/http.js +7 -2
  85. package/internal/core/providers/http.js.map +1 -1
  86. package/internal/core/providers/util.js +5 -8
  87. package/internal/core/providers/util.js.map +1 -1
  88. package/internal/core/runtime-environment.js +1 -1
  89. package/internal/core/runtime-environment.js.map +1 -1
  90. package/internal/core/task-profiling.d.ts +18 -0
  91. package/internal/core/task-profiling.d.ts.map +1 -0
  92. package/internal/core/task-profiling.js +50 -0
  93. package/internal/core/task-profiling.js.map +1 -0
  94. package/internal/core/typescript-support.js +3 -3
  95. package/internal/core/typescript-support.js.map +1 -1
  96. package/internal/hardhat-network/jsonrpc/client.d.ts +39 -39
  97. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  98. package/internal/hardhat-network/jsonrpc/client.js +14 -14
  99. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  100. package/internal/hardhat-network/provider/BlockchainBase.d.ts +13 -10
  101. package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +1 -1
  102. package/internal/hardhat-network/provider/BlockchainBase.js +38 -16
  103. package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
  104. package/internal/hardhat-network/provider/BlockchainData.d.ts +15 -16
  105. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
  106. package/internal/hardhat-network/provider/BlockchainData.js +33 -29
  107. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  108. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +7 -8
  109. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
  110. package/internal/hardhat-network/provider/HardhatBlockchain.js +13 -14
  111. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  112. package/internal/hardhat-network/provider/PoolState.d.ts +1 -1
  113. package/internal/hardhat-network/provider/PoolState.d.ts.map +1 -1
  114. package/internal/hardhat-network/provider/PoolState.js +2 -3
  115. package/internal/hardhat-network/provider/PoolState.js.map +1 -1
  116. package/internal/hardhat-network/provider/TransactionQueue.d.ts +2 -3
  117. package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +1 -1
  118. package/internal/hardhat-network/provider/TransactionQueue.js +3 -3
  119. package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
  120. package/internal/hardhat-network/provider/TxPool.d.ts +8 -8
  121. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  122. package/internal/hardhat-network/provider/TxPool.js +66 -68
  123. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  124. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +2 -2
  125. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
  126. package/internal/hardhat-network/provider/filter.d.ts +5 -6
  127. package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
  128. package/internal/hardhat-network/provider/filter.js +7 -8
  129. package/internal/hardhat-network/provider/filter.js.map +1 -1
  130. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +10 -11
  131. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  132. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +51 -47
  133. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  134. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +8 -10
  135. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
  136. package/internal/hardhat-network/provider/fork/ForkStateManager.js +51 -69
  137. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  138. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts +1 -1
  139. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  140. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +2 -3
  141. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  142. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
  143. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
  144. package/internal/hardhat-network/provider/fork/rpcToTxData.js +7 -11
  145. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  146. package/internal/hardhat-network/provider/modules/eth.d.ts +2 -1
  147. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  148. package/internal/hardhat-network/provider/modules/eth.js +92 -68
  149. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  150. package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
  151. package/internal/hardhat-network/provider/modules/evm.js +14 -14
  152. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  153. package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
  154. package/internal/hardhat-network/provider/modules/hardhat.js +13 -13
  155. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  156. package/internal/hardhat-network/provider/modules/logger.d.ts +7 -8
  157. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  158. package/internal/hardhat-network/provider/modules/logger.js +29 -32
  159. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  160. package/internal/hardhat-network/provider/modules/net.d.ts +1 -1
  161. package/internal/hardhat-network/provider/modules/net.d.ts.map +1 -1
  162. package/internal/hardhat-network/provider/modules/personal.d.ts.map +1 -1
  163. package/internal/hardhat-network/provider/modules/personal.js +3 -3
  164. package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
  165. package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
  166. package/internal/hardhat-network/provider/modules/web3.js +5 -4
  167. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  168. package/internal/hardhat-network/provider/node-types.d.ts +30 -29
  169. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  170. package/internal/hardhat-network/provider/node.d.ts +47 -42
  171. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  172. package/internal/hardhat-network/provider/node.js +262 -208
  173. package/internal/hardhat-network/provider/node.js.map +1 -1
  174. package/internal/hardhat-network/provider/output.d.ts +5 -6
  175. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  176. package/internal/hardhat-network/provider/output.js +39 -36
  177. package/internal/hardhat-network/provider/output.js.map +1 -1
  178. package/internal/hardhat-network/provider/provider.d.ts +1 -2
  179. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  180. package/internal/hardhat-network/provider/provider.js.map +1 -1
  181. package/internal/hardhat-network/provider/return-data.d.ts +2 -2
  182. package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
  183. package/internal/hardhat-network/provider/return-data.js +4 -1
  184. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  185. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +5 -5
  186. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  187. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +60 -17
  188. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  189. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +4 -4
  190. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  191. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +59 -16
  192. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  193. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +3 -3
  194. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  195. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +41 -9
  196. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  197. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +4 -4
  198. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  199. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +7 -23
  200. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  201. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +3 -3
  202. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  203. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +7 -22
  204. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  205. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +3 -3
  206. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
  207. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
  208. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  209. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -6
  210. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
  211. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js +2 -3
  212. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
  213. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +1 -0
  214. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
  215. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +5 -1
  216. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
  217. package/internal/hardhat-network/provider/utils/makeAccount.d.ts +1 -1
  218. package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -1
  219. package/internal/hardhat-network/provider/utils/makeAccount.js +6 -6
  220. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  221. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +2 -2
  222. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  223. package/internal/hardhat-network/provider/utils/makeCommon.js +7 -23
  224. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  225. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -2
  226. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  227. package/internal/hardhat-network/provider/utils/makeForkClient.js +7 -8
  228. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  229. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts +1 -1
  230. package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts.map +1 -1
  231. package/internal/hardhat-network/provider/utils/makeStateTrie.js +4 -4
  232. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  233. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +6 -3
  234. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  235. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +22 -4
  236. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  237. package/internal/hardhat-network/provider/utils/random.d.ts +15 -0
  238. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -0
  239. package/internal/hardhat-network/provider/utils/random.js +48 -0
  240. package/internal/hardhat-network/provider/utils/random.js.map +1 -0
  241. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts +1 -2
  242. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts.map +1 -1
  243. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +5 -4
  244. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
  245. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +2 -2
  246. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
  247. package/internal/hardhat-network/provider/utils/reorgs-protection.js +7 -7
  248. package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
  249. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts +1 -1
  250. package/internal/hardhat-network/provider/utils/txMapToArray.d.ts.map +1 -1
  251. package/internal/hardhat-network/stack-traces/compiler-to-model.js +6 -8
  252. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  253. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  254. package/internal/hardhat-network/stack-traces/consoleLogger.js +51 -47
  255. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  256. package/internal/hardhat-network/stack-traces/constants.d.ts +3 -0
  257. package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -0
  258. package/internal/hardhat-network/stack-traces/constants.js +6 -0
  259. package/internal/hardhat-network/stack-traces/constants.js.map +1 -0
  260. package/internal/hardhat-network/stack-traces/contracts-identifier.js +2 -2
  261. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  262. package/internal/hardhat-network/stack-traces/debug.js +29 -19
  263. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  264. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  265. package/internal/hardhat-network/stack-traces/error-inferrer.js +48 -26
  266. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  267. package/internal/hardhat-network/stack-traces/logger.d.ts +223 -2
  268. package/internal/hardhat-network/stack-traces/logger.d.ts.map +1 -1
  269. package/internal/hardhat-network/stack-traces/logger.js +445 -224
  270. package/internal/hardhat-network/stack-traces/logger.js.map +1 -1
  271. package/internal/hardhat-network/stack-traces/message-trace.d.ts +6 -7
  272. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
  273. package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
  274. package/internal/hardhat-network/stack-traces/model.js +6 -6
  275. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  276. package/internal/hardhat-network/stack-traces/panic-errors.d.ts +1 -2
  277. package/internal/hardhat-network/stack-traces/panic-errors.d.ts.map +1 -1
  278. package/internal/hardhat-network/stack-traces/panic-errors.js +1 -1
  279. package/internal/hardhat-network/stack-traces/panic-errors.js.map +1 -1
  280. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
  281. package/internal/hardhat-network/stack-traces/solidity-errors.js +21 -12
  282. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  283. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +6 -5
  284. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  285. package/internal/hardhat-network/stack-traces/solidity-stack-trace.js.map +1 -1
  286. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +1 -1
  287. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  288. package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -1
  289. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  290. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts +2 -1
  291. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  292. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +79 -78
  293. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  294. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +5 -1
  295. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
  296. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +3 -2
  297. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
  298. package/internal/hardhat-network/stack-traces/vm-tracer.js +15 -16
  299. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  300. package/internal/reset.js +1 -1
  301. package/internal/reset.js.map +1 -1
  302. package/internal/sentry/anonymizer.js +2 -3
  303. package/internal/sentry/anonymizer.js.map +1 -1
  304. package/internal/sentry/subprocess.js +1 -1
  305. package/internal/sentry/subprocess.js.map +1 -1
  306. package/internal/sentry/transport.js +3 -4
  307. package/internal/sentry/transport.js.map +1 -1
  308. package/internal/solidity/compilation-job.js +2 -4
  309. package/internal/solidity/compilation-job.js.map +1 -1
  310. package/internal/solidity/compiler/downloader.d.ts.map +1 -1
  311. package/internal/solidity/compiler/downloader.js +6 -6
  312. package/internal/solidity/compiler/downloader.js.map +1 -1
  313. package/internal/solidity/dependencyGraph.js +3 -5
  314. package/internal/solidity/dependencyGraph.js.map +1 -1
  315. package/internal/solidity/parse.js +1 -1
  316. package/internal/solidity/parse.js.map +1 -1
  317. package/internal/solidity/resolver.js +4 -1
  318. package/internal/solidity/resolver.js.map +1 -1
  319. package/internal/util/abi-helpers.js +1 -1
  320. package/internal/util/abi-helpers.js.map +1 -1
  321. package/internal/util/bigint.d.ts +25 -0
  322. package/internal/util/bigint.d.ts.map +1 -0
  323. package/internal/util/bigint.js +67 -0
  324. package/internal/util/bigint.js.map +1 -0
  325. package/internal/util/download.js +1 -1
  326. package/internal/util/download.js.map +1 -1
  327. package/internal/util/fs-utils.d.ts +32 -0
  328. package/internal/util/fs-utils.d.ts.map +1 -0
  329. package/internal/util/fs-utils.js +151 -0
  330. package/internal/util/fs-utils.js.map +1 -0
  331. package/internal/util/hardforks.d.ts +3 -3
  332. package/internal/util/hardforks.d.ts.map +1 -1
  333. package/internal/util/hardforks.js +5 -28
  334. package/internal/util/hardforks.js.map +1 -1
  335. package/internal/util/jsonrpc.js +1 -1
  336. package/internal/util/jsonrpc.js.map +1 -1
  337. package/internal/util/lazy.js +2 -2
  338. package/internal/util/lazy.js.map +1 -1
  339. package/internal/util/packageInfo.js +1 -1
  340. package/internal/util/packageInfo.js.map +1 -1
  341. package/internal/util/scripts-runner.js +5 -2
  342. package/internal/util/scripts-runner.js.map +1 -1
  343. package/internal/util/wei-values.d.ts +1 -2
  344. package/internal/util/wei-values.d.ts.map +1 -1
  345. package/internal/util/wei-values.js +9 -10
  346. package/internal/util/wei-values.js.map +1 -1
  347. package/internal/vendor/await-semaphore/index.d.ts +12 -0
  348. package/internal/vendor/await-semaphore/index.d.ts.map +1 -0
  349. package/internal/vendor/await-semaphore/index.js +64 -0
  350. package/internal/vendor/await-semaphore/index.js.map +1 -0
  351. package/package.json +13 -9
  352. package/profiling.d.ts +18 -0
  353. package/profiling.d.ts.map +1 -0
  354. package/profiling.js +32 -0
  355. package/profiling.js.map +1 -0
  356. package/sample-projects/javascript/scripts/deploy.js +3 -1
  357. package/sample-projects/javascript/test/Lock.js +1 -1
  358. package/sample-projects/typescript/scripts/deploy.ts +1 -1
  359. package/sample-projects/typescript/test/Lock.ts +1 -1
  360. package/src/builtin-tasks/node.ts +4 -6
  361. package/src/internal/constants.ts +3 -1
  362. package/src/internal/core/config/config-resolution.ts +30 -7
  363. package/src/internal/core/config/default-config.ts +12 -4
  364. package/src/internal/core/jsonrpc/types/base-types.ts +23 -24
  365. package/src/internal/core/jsonrpc/types/input/blockTag.ts +2 -4
  366. package/src/internal/core/jsonrpc/types/input/callRequest.ts +0 -4
  367. package/src/internal/core/jsonrpc/types/input/filterRequest.ts +0 -4
  368. package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +0 -4
  369. package/src/internal/core/jsonrpc/types/output/block.ts +0 -4
  370. package/src/internal/core/jsonrpc/types/output/log.ts +0 -4
  371. package/src/internal/core/jsonrpc/types/output/receipt.ts +0 -4
  372. package/src/internal/core/jsonrpc/types/output/transaction.ts +0 -4
  373. package/src/internal/core/providers/accounts.ts +16 -26
  374. package/src/internal/core/providers/construction.ts +5 -3
  375. package/src/internal/core/providers/gas-providers.ts +25 -33
  376. package/src/internal/core/providers/util.ts +1 -1
  377. package/src/internal/hardhat-network/jsonrpc/client.ts +22 -22
  378. package/src/internal/hardhat-network/provider/BlockchainBase.ts +62 -25
  379. package/src/internal/hardhat-network/provider/BlockchainData.ts +39 -42
  380. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +21 -21
  381. package/src/internal/hardhat-network/provider/PoolState.ts +3 -4
  382. package/src/internal/hardhat-network/provider/TransactionQueue.ts +11 -8
  383. package/src/internal/hardhat-network/provider/TxPool.ts +62 -64
  384. package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +3 -3
  385. package/src/internal/hardhat-network/provider/filter.ts +9 -12
  386. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +52 -50
  387. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +35 -60
  388. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +2 -2
  389. package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +3 -3
  390. package/src/internal/hardhat-network/provider/modules/eth.ts +88 -63
  391. package/src/internal/hardhat-network/provider/modules/evm.ts +19 -22
  392. package/src/internal/hardhat-network/provider/modules/hardhat.ts +21 -19
  393. package/src/internal/hardhat-network/provider/modules/logger.ts +33 -40
  394. package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
  395. package/src/internal/hardhat-network/provider/modules/personal.ts +2 -1
  396. package/src/internal/hardhat-network/provider/modules/web3.ts +5 -4
  397. package/src/internal/hardhat-network/provider/node-types.ts +32 -31
  398. package/src/internal/hardhat-network/provider/node.ts +379 -343
  399. package/src/internal/hardhat-network/provider/output.ts +32 -37
  400. package/src/internal/hardhat-network/provider/provider.ts +5 -6
  401. package/src/internal/hardhat-network/provider/return-data.ts +6 -3
  402. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +51 -24
  403. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +50 -23
  404. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +29 -11
  405. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +12 -24
  406. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +11 -22
  407. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +3 -3
  408. package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +8 -9
  409. package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +4 -0
  410. package/src/internal/hardhat-network/provider/utils/makeAccount.ts +4 -10
  411. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +8 -34
  412. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +8 -9
  413. package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +3 -3
  414. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +34 -6
  415. package/src/internal/hardhat-network/provider/utils/random.ts +54 -0
  416. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +6 -7
  417. package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +8 -8
  418. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +16 -6
  419. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +1 -1
  420. package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
  421. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +11 -7
  422. package/src/internal/hardhat-network/stack-traces/logger.ts +444 -223
  423. package/src/internal/hardhat-network/stack-traces/message-trace.ts +6 -7
  424. package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
  425. package/src/internal/hardhat-network/stack-traces/panic-errors.ts +3 -5
  426. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +16 -1
  427. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +6 -6
  428. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -1
  429. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +106 -103
  430. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +23 -18
  431. package/src/internal/solidity/compiler/downloader.ts +5 -2
  432. package/src/internal/util/bigint.ts +84 -0
  433. package/src/internal/util/hardforks.ts +4 -29
  434. package/src/internal/util/wei-values.ts +11 -13
  435. package/src/types/config.ts +8 -10
  436. package/types/config.d.ts +8 -9
  437. package/types/config.d.ts.map +1 -1
  438. package/src/internal/hardhat-network/provider/fork/random.ts +0 -33
  439. package/src/internal/hardhat-network/provider/utils/bnToHex.ts +0 -5
  440. package/src/internal/hardhat-network/provider/utils/makeForkCommon.ts +0 -15
package/profiling.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adhocProfileSync = exports.adhocProfile = void 0;
4
+ const errors_1 = require("./internal/core/errors");
5
+ /**
6
+ * Utility to create ad-hoc profiles when computing flamegraphs. You can think
7
+ * of these as virtual tasks that execute the function `f`.
8
+ *
9
+ * This is an **unstable** feature, only meant for development. DO NOT use in
10
+ * production code nor plugins.
11
+ *
12
+ * @param name The name of the profile. Think of it as a virtual task name.
13
+ * @param f The function you want to profile.
14
+ */
15
+ async function adhocProfile(name, f) {
16
+ const globalAsAny = global;
17
+ (0, errors_1.assertHardhatInvariant)("adhocProfile" in globalAsAny, "adhocProfile is missing. Are you running with --flamegraph?");
18
+ return globalAsAny.adhocProfile(name, f);
19
+ }
20
+ exports.adhocProfile = adhocProfile;
21
+ /**
22
+ * Sync version of adhocProfile
23
+ *
24
+ * @see adhocProfile
25
+ */
26
+ function adhocProfileSync(name, f) {
27
+ const globalAsAny = global;
28
+ (0, errors_1.assertHardhatInvariant)("adhocProfileSync" in globalAsAny, "adhocProfileSync is missing. Are you running with --flamegraph?");
29
+ return globalAsAny.adhocProfileSync(name, f);
30
+ }
31
+ exports.adhocProfileSync = adhocProfileSync;
32
+ //# sourceMappingURL=profiling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiling.js","sourceRoot":"","sources":["src/profiling.ts"],"names":[],"mappings":";;;AAAA,mDAAgE;AAEhE;;;;;;;;;GASG;AACI,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,CAAmB;IAEnB,MAAM,WAAW,GAAG,MAAa,CAAC;IAClC,IAAA,+BAAsB,EACpB,cAAc,IAAI,WAAW,EAC7B,6DAA6D,CAC9D,CAAC;IACF,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAVD,oCAUC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAI,IAAY,EAAE,CAAU;IAC1D,MAAM,WAAW,GAAG,MAAa,CAAC;IAClC,IAAA,+BAAsB,EACpB,kBAAkB,IAAI,WAAW,EACjC,iEAAiE,CAClE,CAAC;IACF,OAAO,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAPD,4CAOC"}
@@ -18,7 +18,9 @@ async function main() {
18
18
 
19
19
  await lock.deployed();
20
20
 
21
- console.log("Lock with 1 ETH deployed to:", lock.address);
21
+ console.log(
22
+ `Lock with 1 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`
23
+ );
22
24
  }
23
25
 
24
26
  // We recommend this pattern to be able to use async/await everywhere
@@ -8,7 +8,7 @@ const { expect } = require("chai");
8
8
  describe("Lock", function () {
9
9
  // We define a fixture to reuse the same setup in every test.
10
10
  // We use loadFixture to run this setup once, snapshot that state,
11
- // and reset Hardhat Network to that snapshopt in every test.
11
+ // and reset Hardhat Network to that snapshot in every test.
12
12
  async function deployOneYearLockFixture() {
13
13
  const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
14
14
  const ONE_GWEI = 1_000_000_000;
@@ -12,7 +12,7 @@ async function main() {
12
12
 
13
13
  await lock.deployed();
14
14
 
15
- console.log("Lock with 1 ETH deployed to:", lock.address);
15
+ console.log(`Lock with 1 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`);
16
16
  }
17
17
 
18
18
  // We recommend this pattern to be able to use async/await everywhere
@@ -6,7 +6,7 @@ import { ethers } from "hardhat";
6
6
  describe("Lock", function () {
7
7
  // We define a fixture to reuse the same setup in every test.
8
8
  // We use loadFixture to run this setup once, snapshot that state,
9
- // and reset Hardhat Network to that snapshopt in every test.
9
+ // and reset Hardhat Network to that snapshot in every test.
10
10
  async function deployOneYearLockFixture() {
11
11
  const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
12
12
  const ONE_GWEI = 1_000_000_000;
@@ -1,4 +1,4 @@
1
- import type EthereumjsUtilT from "ethereumjs-util";
1
+ import type EthereumjsUtilT from "@ignored/util";
2
2
 
3
3
  import chalk from "chalk";
4
4
  import debug from "debug";
@@ -51,8 +51,8 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
51
51
  !Array.isArray(networkConfig.accounts) &&
52
52
  networkConfig.accounts.mnemonic === HARDHAT_NETWORK_MNEMONIC;
53
53
 
54
- const { BN, bufferToHex, privateToAddress, toBuffer, toChecksumAddress } =
55
- require("ethereumjs-util") as typeof EthereumjsUtilT;
54
+ const { bufferToHex, privateToAddress, toBuffer, toChecksumAddress } =
55
+ require("@ignored/util") as typeof EthereumjsUtilT;
56
56
 
57
57
  console.log("Accounts");
58
58
  console.log("========");
@@ -72,9 +72,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
72
72
  bufferToHex(privateToAddress(toBuffer(account.privateKey)))
73
73
  );
74
74
 
75
- const balance = new BN(account.balance)
76
- .div(new BN(10).pow(new BN(18)))
77
- .toString(10);
75
+ const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
78
76
 
79
77
  let entry = `Account #${index}: ${address} (${balance} ETH)`;
80
78
 
@@ -19,9 +19,11 @@ export const HARDHAT_NETWORK_SUPPORTED_HARDFORKS = [
19
19
  "berlin",
20
20
  "london",
21
21
  "arrowGlacier",
22
+ "grayGlacier",
23
+ "merge",
22
24
  ];
23
25
 
24
- export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = <const>["fifo", "priority"];
26
+ export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = ["fifo", "priority"] as const;
25
27
 
26
28
  export const ARTIFACT_FORMAT_VERSION = "hh-sol-artifact-1";
27
29
  export const DEBUG_FILE_FORMAT_VERSION = "hh-sol-dbg-1";
@@ -1,4 +1,3 @@
1
- import { BN } from "ethereumjs-util";
2
1
  import * as fs from "fs";
3
2
  import cloneDeep from "lodash/cloneDeep";
4
3
  import path from "path";
@@ -33,6 +32,7 @@ import {
33
32
  SolidityUserConfig,
34
33
  } from "../../../types";
35
34
  import { HARDHAT_NETWORK_NAME } from "../../constants";
35
+ import { BigIntUtils } from "../../util/bigint";
36
36
  import { HardforkName } from "../../util/hardforks";
37
37
  import { fromEntries } from "../../util/lang";
38
38
  import { assertHardhatInvariant } from "../errors";
@@ -157,7 +157,9 @@ function resolveHardhatNetworkConfig(
157
157
  if (forking !== undefined) {
158
158
  const blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
159
159
  if (blockNumber !== undefined) {
160
- forking.blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
160
+ forking.blockNumber = BigIntUtils.mapNumberToBigInt(
161
+ hardhatNetworkConfig?.forking?.blockNumber
162
+ );
161
163
  }
162
164
 
163
165
  const httpHeaders = hardhatNetworkConfig.forking?.httpHeaders;
@@ -168,16 +170,26 @@ function resolveHardhatNetworkConfig(
168
170
 
169
171
  const mining = resolveMiningConfig(hardhatNetworkConfig.mining);
170
172
 
171
- const minGasPrice = new BN(
173
+ const minGasPrice = BigInt(
172
174
  hardhatNetworkConfig.minGasPrice ??
173
175
  clonedDefaultHardhatNetworkParams.minGasPrice
174
176
  );
175
177
 
176
- const blockGasLimit =
178
+ const blockGasLimit = BigInt(
177
179
  hardhatNetworkConfig.blockGasLimit ??
178
- clonedDefaultHardhatNetworkParams.blockGasLimit;
180
+ clonedDefaultHardhatNetworkParams.blockGasLimit
181
+ );
179
182
 
180
- const gas = hardhatNetworkConfig.gas ?? blockGasLimit;
183
+ const gas = BigIntUtils.mapNumberToBigInt(
184
+ hardhatNetworkConfig.gas ?? blockGasLimit
185
+ );
186
+ const gasPrice = BigIntUtils.mapNumberToBigInt(
187
+ hardhatNetworkConfig.gasPrice ?? clonedDefaultHardhatNetworkParams.gasPrice
188
+ );
189
+ const initialBaseFeePerGas = BigIntUtils.mapNumberToBigInt(
190
+ hardhatNetworkConfig.initialBaseFeePerGas ??
191
+ clonedDefaultHardhatNetworkParams.initialBaseFeePerGas
192
+ );
181
193
 
182
194
  const initialDate =
183
195
  hardhatNetworkConfig.initialDate ?? new Date().toISOString();
@@ -206,7 +218,7 @@ function resolveHardhatNetworkConfig(
206
218
  }
207
219
  }
208
220
 
209
- const config = {
221
+ const config: HardhatNetworkConfig = {
210
222
  ...clonedDefaultHardhatNetworkParams,
211
223
  ...hardhatNetworkConfig,
212
224
  accounts,
@@ -214,6 +226,8 @@ function resolveHardhatNetworkConfig(
214
226
  mining,
215
227
  blockGasLimit,
216
228
  gas,
229
+ gasPrice,
230
+ initialBaseFeePerGas,
217
231
  initialDate,
218
232
  minGasPrice,
219
233
  chains,
@@ -223,6 +237,9 @@ function resolveHardhatNetworkConfig(
223
237
  if (config.forking === undefined) {
224
238
  delete config.forking;
225
239
  }
240
+ if (config.initialBaseFeePerGas === undefined) {
241
+ delete config.initialBaseFeePerGas;
242
+ }
226
243
 
227
244
  return config;
228
245
  }
@@ -260,6 +277,12 @@ function resolveHttpNetworkConfig(
260
277
  ...networkConfig,
261
278
  accounts,
262
279
  url,
280
+ gas: BigIntUtils.mapNumberToBigInt(
281
+ networkConfig.gas ?? defaultHttpNetworkParams.gas
282
+ ),
283
+ gasPrice: BigIntUtils.mapNumberToBigInt(
284
+ networkConfig.gasPrice ?? defaultHttpNetworkParams.gasPrice
285
+ ),
263
286
  };
264
287
  }
265
288
 
@@ -1,5 +1,3 @@
1
- import { BN } from "ethereumjs-util";
2
-
3
1
  import { HardhatNetworkConfig } from "../../../types";
4
2
  import { HardforkName } from "../../util/hardforks";
5
3
  import { HARDHAT_NETWORK_NAME } from "../../constants";
@@ -39,7 +37,7 @@ export const defaultHardhatNetworkParams: Omit<
39
37
  "gas" | "initialDate"
40
38
  > = {
41
39
  hardfork: "arrowGlacier",
42
- blockGasLimit: 30_000_000,
40
+ blockGasLimit: 30_000_000n,
43
41
  gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
44
42
  chainId: 31337,
45
43
  throwOnTransactionFailures: true,
@@ -55,7 +53,7 @@ export const defaultHardhatNetworkParams: Omit<
55
53
  accounts: defaultHardhatNetworkHdAccountsConfigParams,
56
54
  loggingEnabled: false,
57
55
  gasMultiplier: DEFAULT_GAS_MULTIPLIER,
58
- minGasPrice: new BN(0),
56
+ minGasPrice: 0n,
59
57
  chains: new Map([
60
58
  [
61
59
  // block numbers below were taken from https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common/src/chains
@@ -99,6 +97,16 @@ export const defaultHardhatNetworkParams: Omit<
99
97
  ]),
100
98
  },
101
99
  ],
100
+ [
101
+ 5, // goerli
102
+ {
103
+ hardforkHistory: new Map([
104
+ [HardforkName.ISTANBUL, 1561651],
105
+ [HardforkName.BERLIN, 4460644],
106
+ [HardforkName.LONDON, 5062605],
107
+ ]),
108
+ },
109
+ ],
102
110
  [
103
111
  42, // kovan
104
112
  {
@@ -1,17 +1,17 @@
1
- import { BN, bufferToHex, isValidAddress, toBuffer } from "ethereumjs-util";
1
+ import { bufferToHex, isValidAddress, toBuffer } from "@ignored/util";
2
2
  import * as t from "io-ts";
3
3
 
4
+ import { BigIntUtils } from "../../../util/bigint";
4
5
  import { assertHardhatInvariant, HardhatError } from "../../errors";
5
6
  import { ERRORS } from "../../errors-list";
6
7
 
7
8
  const ADDRESS_LENGTH_BYTES = 20;
8
9
  const HASH_LENGTH_BYTES = 32;
9
10
 
10
- export const rpcQuantity = new t.Type<BN>(
11
+ export const rpcQuantity = new t.Type<bigint>(
11
12
  "QUANTITY",
12
- BN.isBN,
13
- (u, c) =>
14
- isRpcQuantityString(u) ? t.success(new BN(toBuffer(u))) : t.failure(u, c),
13
+ BigIntUtils.isBigInt,
14
+ (u, c) => (isRpcQuantityString(u) ? t.success(BigInt(u)) : t.failure(u, c)),
15
15
  t.identity
16
16
  );
17
17
 
@@ -29,14 +29,14 @@ export const rpcHash = new t.Type<Buffer>(
29
29
  t.identity
30
30
  );
31
31
 
32
- export const rpcStorageSlot = new t.Type<BN>(
32
+ export const rpcStorageSlot = new t.Type<bigint>(
33
33
  "Storage slot",
34
- BN.isBN,
34
+ BigIntUtils.isBigInt,
35
35
  validateStorageSlot,
36
36
  t.identity
37
37
  );
38
38
 
39
- function validateStorageSlot(u: unknown, c: t.Context): t.Validation<BN> {
39
+ function validateStorageSlot(u: unknown, c: t.Context): t.Validation<bigint> {
40
40
  if (typeof u !== "string") {
41
41
  return t.failure(
42
42
  u,
@@ -61,7 +61,7 @@ function validateStorageSlot(u: unknown, c: t.Context): t.Validation<BN> {
61
61
  );
62
62
  }
63
63
 
64
- return t.success(new BN(toBuffer(u)));
64
+ return t.success(BigInt(u));
65
65
  }
66
66
 
67
67
  export const rpcAddress = new t.Type<Buffer>(
@@ -78,10 +78,10 @@ export const rpcUnsignedInteger = new t.Type<number>(
78
78
  t.identity
79
79
  );
80
80
 
81
- export const rpcQuantityAsNumber = new t.Type<BN>(
81
+ export const rpcQuantityAsNumber = new t.Type<bigint>(
82
82
  "Integer",
83
- BN.isBN,
84
- (u, c) => (isInteger(u) ? t.success(new BN(u)) : t.failure(u, c)),
83
+ BigIntUtils.isBigInt,
84
+ (u, c) => (isInteger(u) ? t.success(BigInt(u)) : t.failure(u, c)),
85
85
  t.identity
86
86
  );
87
87
 
@@ -99,10 +99,10 @@ export const rpcFloat = new t.Type<number>(
99
99
  * fits in a number.
100
100
  */
101
101
  export function rpcQuantityToNumber(quantity: string): number {
102
- return rpcQuantityToBN(quantity).toNumber();
102
+ return Number(rpcQuantityToBigInt(quantity));
103
103
  }
104
104
 
105
- export function rpcQuantityToBN(quantity: string): BN {
105
+ export function rpcQuantityToBigInt(quantity: string): bigint {
106
106
  // We validate it in case a value gets here through a cast or any
107
107
  if (!isRpcQuantityString(quantity)) {
108
108
  throw new HardhatError(ERRORS.NETWORK.INVALID_RPC_QUANTITY_VALUE, {
@@ -110,26 +110,25 @@ export function rpcQuantityToBN(quantity: string): BN {
110
110
  });
111
111
  }
112
112
 
113
- const buffer = toBuffer(quantity);
114
- return new BN(buffer);
113
+ return BigInt(quantity);
115
114
  }
116
115
 
117
- export function numberToRpcQuantity(n: number | BN): string {
116
+ export function numberToRpcQuantity(n: number | bigint): string {
118
117
  assertHardhatInvariant(
119
- typeof n === "number" || BN.isBN(n),
118
+ typeof n === "number" || typeof n === "bigint",
120
119
  "Expected number"
121
120
  );
122
121
 
123
122
  return `0x${n.toString(16)}`;
124
123
  }
125
124
 
126
- export function numberToRpcStorageSlot(n: number | BN): string {
125
+ export function numberToRpcStorageSlot(n: number | bigint): string {
127
126
  assertHardhatInvariant(
128
- typeof n === "number" || BN.isBN(n),
127
+ typeof n === "number" || typeof n === "bigint",
129
128
  "Expected number"
130
129
  );
131
130
 
132
- return `0x${n.toString(16).padStart(64, "0")}`;
131
+ return `0x${BigIntUtils.toWord(n)}`;
133
132
  }
134
133
 
135
134
  /**
@@ -137,11 +136,11 @@ export function numberToRpcStorageSlot(n: number | BN): string {
137
136
  * represents a value fits in a number.
138
137
  */
139
138
  export function rpcDataToNumber(data: string): number {
140
- return rpcDataToBN(data).toNumber();
139
+ return Number(rpcDataToBigInt(data));
141
140
  }
142
141
 
143
- export function rpcDataToBN(data: string): BN {
144
- return new BN(rpcDataToBuffer(data));
142
+ export function rpcDataToBigInt(data: string): bigint {
143
+ return data === "0x" ? 0n : BigInt(data);
145
144
  }
146
145
 
147
146
  export function bufferToRpcData(
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { optionalOrNullable } from "../../../../util/io-ts";
8
4
  import { rpcData, rpcQuantity } from "../base-types";
9
5
 
@@ -20,6 +16,8 @@ export const rpcBlockTagName = t.keyof({
20
16
  earliest: null,
21
17
  latest: null,
22
18
  pending: null,
19
+ safe: null,
20
+ finalized: null,
23
21
  });
24
22
 
25
23
  // This is the new kind of block tag as defined by https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1898.md
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { optionalOrNullable } from "../../../../util/io-ts";
8
4
  import { rpcAccessList } from "../access-list";
9
5
  import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { optionalOrNullable } from "../../../../util/io-ts";
8
4
  import { rpcHash } from "../base-types";
9
5
 
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { optionalOrNullable } from "../../../../util/io-ts";
8
4
  import { rpcAccessList } from "../access-list";
9
5
  import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { nullable, optional } from "../../../../util/io-ts";
8
4
  import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
9
5
 
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { nullable } from "../../../../util/io-ts";
8
4
  import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
9
5
 
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { nullable, optional } from "../../../../util/io-ts";
8
4
  import {
9
5
  rpcAddress,
@@ -1,9 +1,5 @@
1
1
  import * as t from "io-ts";
2
2
 
3
- // TS2742 workaround
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import { BN } from "ethereumjs-util";
6
-
7
3
  import { nullable, optional } from "../../../../util/io-ts";
8
4
  import { rpcAccessList } from "../access-list";
9
5
  import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
@@ -1,15 +1,14 @@
1
- import { BN } from "ethereumjs-util";
2
1
  import * as t from "io-ts";
3
2
 
4
3
  import { SignTypedDataVersion, signTypedData } from "@metamask/eth-sig-util";
5
- import { FeeMarketEIP1559Transaction } from "@ethereumjs/tx";
4
+ import { FeeMarketEIP1559Transaction } from "@ignored/tx";
6
5
  import { EIP1193Provider, RequestArguments } from "../../../types";
7
6
  import { HardhatError } from "../errors";
8
7
  import { ERRORS } from "../errors-list";
9
8
  import {
10
9
  rpcAddress,
11
10
  rpcData,
12
- rpcQuantityToBN,
11
+ rpcQuantityToBigInt,
13
12
  } from "../jsonrpc/types/base-types";
14
13
  import {
15
14
  RpcTransactionRequest,
@@ -45,7 +44,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
45
44
 
46
45
  public async request(args: RequestArguments): Promise<unknown> {
47
46
  const { ecsign, hashPersonalMessage, toRpcSig, toBuffer, bufferToHex } =
48
- await import("ethereumjs-util");
47
+ await import("@ignored/util");
49
48
 
50
49
  if (
51
50
  args.method === "eth_accounts" ||
@@ -193,7 +192,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
193
192
  bufferToHex,
194
193
  toBuffer,
195
194
  privateToAddress,
196
- } = require("ethereumjs-util");
195
+ } = require("@ignored/util");
197
196
 
198
197
  const privateKeys: Buffer[] = localAccountsHexPrivateKeys.map((h) =>
199
198
  toBuffer(h)
@@ -206,7 +205,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
206
205
  }
207
206
 
208
207
  private _getPrivateKeyForAddress(address: Buffer): Buffer {
209
- const { bufferToHex } = require("ethereumjs-util");
208
+ const { bufferToHex } = require("@ignored/util");
210
209
  const pk = this._addressToPrivateKey.get(bufferToHex(address));
211
210
  if (pk === undefined) {
212
211
  throw new HardhatError(ERRORS.NETWORK.NOT_LOCAL_ACCOUNT, {
@@ -225,15 +224,15 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
225
224
  }
226
225
  }
227
226
 
228
- private async _getNonce(address: Buffer): Promise<BN> {
229
- const { bufferToHex } = await import("ethereumjs-util");
227
+ private async _getNonce(address: Buffer): Promise<bigint> {
228
+ const { bufferToHex } = await import("@ignored/util");
230
229
 
231
230
  const response = (await this._wrappedProvider.request({
232
231
  method: "eth_getTransactionCount",
233
232
  params: [bufferToHex(address), "pending"],
234
233
  })) as string;
235
234
 
236
- return rpcQuantityToBN(response);
235
+ return rpcQuantityToBigInt(response);
237
236
  }
238
237
 
239
238
  private async _getSignedTransaction(
@@ -241,31 +240,22 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
241
240
  chainId: number,
242
241
  privateKey: Buffer
243
242
  ): Promise<Buffer> {
244
- const { chains } = await import("@ethereumjs/common/dist/chains");
245
-
246
243
  const { AccessListEIP2930Transaction, Transaction } = await import(
247
- "@ethereumjs/tx"
244
+ "@ignored/tx"
248
245
  );
249
246
 
250
- const { default: Common } = await import("@ethereumjs/common");
247
+ const { Common } = await import("@ignored/common");
251
248
 
252
249
  const txData = {
253
250
  ...transactionRequest,
254
251
  gasLimit: transactionRequest.gas,
255
252
  };
256
253
 
257
- // TODO: consider changing instances of "london" below to ["latest hardfork"]
258
- const common =
259
- chains.names[chainId] !== undefined
260
- ? new Common({ chain: chainId, hardfork: "london" })
261
- : Common.forCustomChain(
262
- "mainnet",
263
- {
264
- chainId,
265
- networkId: chainId,
266
- },
267
- "london"
268
- );
254
+ // We don't specify a hardfork here because the default hardfork should
255
+ // support all possible types of transactions.
256
+ // If the network doesn't support a given transaction type, then the
257
+ // transaction it will be rejected somewhere else.
258
+ const common = Common.custom({ chainId, networkId: chainId });
269
259
 
270
260
  // we convert the access list to the type
271
261
  // that AccessListEIP2930Transaction expects
@@ -318,7 +308,7 @@ export class HDWalletProvider extends LocalAccountsProvider {
318
308
  passphrase
319
309
  );
320
310
 
321
- const { bufferToHex } = require("ethereumjs-util");
311
+ const { bufferToHex } = require("@ignored/util");
322
312
  const privateKeysAsHex = privateKeys.map((pk) => bufferToHex(pk));
323
313
  super(provider, privateKeysAsHex);
324
314
  }
@@ -7,7 +7,6 @@ import type {
7
7
  HDAccountsUserConfig,
8
8
  HttpNetworkAccountsUserConfig,
9
9
  HttpNetworkConfig,
10
- HttpNetworkUserConfig,
11
10
  NetworkConfig,
12
11
  ProjectPathsConfig,
13
12
  } from "../../../types";
@@ -19,6 +18,7 @@ import {
19
18
  MempoolOrder,
20
19
  } from "../../hardhat-network/provider/node-types";
21
20
  import { getForkCacheDirPath } from "../../hardhat-network/provider/utils/disk-cache";
21
+ import { BigIntUtils } from "../../util/bigint";
22
22
  import { parseDateString } from "../../util/date";
23
23
 
24
24
  import { normalizeHardhatNetworkAccountsConfig } from "./util";
@@ -72,7 +72,9 @@ export function createProvider(
72
72
  ) {
73
73
  forkConfig = {
74
74
  jsonRpcUrl: hardhatNetConfig.forking?.url,
75
- blockNumber: hardhatNetConfig.forking?.blockNumber,
75
+ blockNumber: BigIntUtils.mapBigIntToNumber(
76
+ hardhatNetConfig.forking?.blockNumber
77
+ ),
76
78
  httpHeaders: hardhatNetConfig.forking.httpHeaders,
77
79
  };
78
80
  }
@@ -113,7 +115,7 @@ export function createProvider(
113
115
  typeof import("./http"),
114
116
  "HttpProvider"
115
117
  >("./http", "HttpProvider");
116
- const httpNetConfig = networkConfig as HttpNetworkUserConfig;
118
+ const httpNetConfig = networkConfig as HttpNetworkConfig;
117
119
 
118
120
  eip1193Provider = new HttpProvider(
119
121
  httpNetConfig.url!,