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
@@ -1,9 +1,9 @@
1
- import { Block } from "@ethereumjs/block";
2
- import Common from "@ethereumjs/common";
3
- import { TypedTransaction } from "@ethereumjs/tx";
4
- import { Address, BN } from "ethereumjs-util";
1
+ import { Block } from "@ignored/block";
2
+ import { Common } from "@ignored/common";
3
+ import { TypedTransaction } from "@ignored/tx";
4
+ import { Address } from "@ignored/util";
5
5
 
6
- import { FeeMarketEIP1559TxData } from "@ethereumjs/tx/dist/types";
6
+ import { FeeMarketEIP1559TxData } from "@ignored/tx/dist/types";
7
7
  import { RpcBlockWithTransactions } from "../../../core/jsonrpc/types/output/block";
8
8
  import { RpcTransactionReceipt } from "../../../core/jsonrpc/types/output/receipt";
9
9
  import { RpcTransaction } from "../../../core/jsonrpc/types/output/transaction";
@@ -37,24 +37,24 @@ export class ForkBlockchain
37
37
 
38
38
  constructor(
39
39
  private _jsonRpcClient: JsonRpcClient,
40
- private _forkBlockNumber: BN,
40
+ private _forkBlockNumber: bigint,
41
41
  common: Common
42
42
  ) {
43
43
  super(common);
44
44
  }
45
45
 
46
- public getLatestBlockNumber(): BN {
46
+ public getLatestBlockNumber(): bigint {
47
47
  return this._latestBlockNumber;
48
48
  }
49
49
 
50
50
  public async getBlock(
51
- blockHashOrNumber: Buffer | number | BN
51
+ blockHashOrNumber: Buffer | bigint
52
52
  ): Promise<Block | null> {
53
53
  if (
54
- (typeof blockHashOrNumber === "number" || BN.isBN(blockHashOrNumber)) &&
55
- this._data.isReservedBlock(new BN(blockHashOrNumber))
54
+ typeof blockHashOrNumber === "bigint" &&
55
+ this._data.isReservedBlock(blockHashOrNumber)
56
56
  ) {
57
- this._data.fulfillBlockReservation(new BN(blockHashOrNumber));
57
+ this._data.fulfillBlockReservation(blockHashOrNumber);
58
58
  }
59
59
 
60
60
  let block: Block | undefined | null;
@@ -63,42 +63,42 @@ export class ForkBlockchain
63
63
  return block ?? null;
64
64
  }
65
65
 
66
- block = await this._getBlockByNumber(new BN(blockHashOrNumber));
66
+ block = await this._getBlockByNumber(BigInt(blockHashOrNumber));
67
67
  return block ?? null;
68
68
  }
69
69
 
70
70
  public async addBlock(block: Block): Promise<Block> {
71
- const blockNumber = new BN(block.header.number);
72
- if (!blockNumber.eq(this._latestBlockNumber.addn(1))) {
71
+ const blockNumber = BigInt(block.header.number);
72
+ if (blockNumber !== this._latestBlockNumber + 1n) {
73
73
  throw new Error(
74
- `Invalid block number ${blockNumber.toNumber()}. Expected ${this._latestBlockNumber
75
- .addn(1)
76
- .toNumber()}`
74
+ `Invalid block number ${blockNumber}. Expected ${
75
+ this._latestBlockNumber + 1n
76
+ }`
77
77
  );
78
78
  }
79
79
 
80
80
  // When forking a network whose consensus is not the classic PoW,
81
81
  // we can't calculate the hash correctly.
82
82
  // Thus, we avoid this check for the first block after the fork.
83
- if (blockNumber.gt(this._forkBlockNumber.addn(1))) {
83
+ if (blockNumber > this._forkBlockNumber + 1n) {
84
84
  const parent = await this.getLatestBlock();
85
85
  if (!block.header.parentHash.equals(parent.hash())) {
86
86
  throw new Error("Invalid parent hash");
87
87
  }
88
88
  }
89
89
 
90
- this._latestBlockNumber = this._latestBlockNumber.addn(1);
90
+ this._latestBlockNumber++;
91
91
  const totalDifficulty = await this._computeTotalDifficulty(block);
92
92
  this._data.addBlock(block, totalDifficulty);
93
93
  return block;
94
94
  }
95
95
 
96
96
  public reserveBlocks(
97
- count: BN,
98
- interval: BN,
97
+ count: bigint,
98
+ interval: bigint,
99
99
  previousBlockStateRoot: Buffer,
100
- previousBlockTotalDifficulty: BN,
101
- previousBlockBaseFeePerGas: BN | undefined
100
+ previousBlockTotalDifficulty: bigint,
101
+ previousBlockBaseFeePerGas: bigint | undefined
102
102
  ) {
103
103
  super.reserveBlocks(
104
104
  count,
@@ -107,25 +107,25 @@ export class ForkBlockchain
107
107
  previousBlockTotalDifficulty,
108
108
  previousBlockBaseFeePerGas
109
109
  );
110
- this._latestBlockNumber = this._latestBlockNumber.add(count);
110
+ this._latestBlockNumber += count;
111
111
  }
112
112
 
113
113
  public deleteLaterBlocks(block: Block): void {
114
- const blockNumber = new BN(block.header.number);
114
+ const blockNumber = block.header.number;
115
115
  const savedBlock = this._data.getBlockByNumber(blockNumber);
116
116
  if (savedBlock === undefined || !savedBlock.hash().equals(block.hash())) {
117
117
  throw new Error("Invalid block");
118
118
  }
119
119
 
120
- const nextBlockNumber = blockNumber.addn(1);
121
- if (this._forkBlockNumber.gte(nextBlockNumber)) {
120
+ const nextBlockNumber = blockNumber + 1n;
121
+ if (this._forkBlockNumber >= nextBlockNumber) {
122
122
  throw new Error("Cannot delete remote block");
123
123
  }
124
124
 
125
125
  this._delBlock(nextBlockNumber);
126
126
  }
127
127
 
128
- public async getTotalDifficulty(blockHash: Buffer): Promise<BN> {
128
+ public async getTotalDifficulty(blockHash: Buffer): Promise<bigint> {
129
129
  let td = this._data.getTotalDifficulty(blockHash);
130
130
  if (td !== undefined) {
131
131
  return td;
@@ -194,14 +194,14 @@ export class ForkBlockchain
194
194
  }
195
195
 
196
196
  public async getLogs(filterParams: FilterParams): Promise<RpcLogOutput[]> {
197
- if (filterParams.fromBlock.lte(this._forkBlockNumber)) {
197
+ if (filterParams.fromBlock <= this._forkBlockNumber) {
198
198
  let toBlock = filterParams.toBlock;
199
199
  let localLogs: RpcLogOutput[] = [];
200
- if (toBlock.gt(this._forkBlockNumber)) {
200
+ if (toBlock > this._forkBlockNumber) {
201
201
  toBlock = this._forkBlockNumber;
202
202
  localLogs = this._data.getLogs({
203
203
  ...filterParams,
204
- fromBlock: this._forkBlockNumber.addn(1),
204
+ fromBlock: this._forkBlockNumber + 1n,
205
205
  });
206
206
  }
207
207
  const remoteLogs = await this._jsonRpcClient.getLogs({
@@ -227,8 +227,8 @@ export class ForkBlockchain
227
227
  return this._processRemoteBlock(rpcBlock);
228
228
  }
229
229
 
230
- private async _getBlockByNumber(blockNumber: BN) {
231
- if (blockNumber.gt(this._latestBlockNumber)) {
230
+ private async _getBlockByNumber(blockNumber: bigint) {
231
+ if (blockNumber > this._latestBlockNumber) {
232
232
  return undefined;
233
233
  }
234
234
  const block = await super.getBlock(blockNumber);
@@ -247,19 +247,18 @@ export class ForkBlockchain
247
247
  rpcBlock === null ||
248
248
  rpcBlock.hash === null ||
249
249
  rpcBlock.number === null ||
250
- rpcBlock.number.gt(this._forkBlockNumber)
250
+ rpcBlock.number > this._forkBlockNumber
251
251
  ) {
252
252
  return undefined;
253
253
  }
254
254
 
255
- // We copy the common and set it to London or Berlin if the remote block
256
- // had EIP-1559 activated or not. The reason for this is that ethereumjs
257
- // throws if we have a base fee for an older hardfork, and set a default
258
- // one for London.
259
- const common = this._common.copy();
260
- if (rpcBlock.baseFeePerGas !== undefined) {
261
- common.setHardfork("london"); // TODO: consider changing this to "latest hardfork"
262
- } else {
255
+ const forkNetworkId = this._jsonRpcClient.getNetworkId();
256
+ const common = new Common({ chain: forkNetworkId });
257
+
258
+ // We set the common's hardfork to Berlin if the remote block doesn't have
259
+ // EIP-1559 activated. The reason for this is that ethereumjs throws if we
260
+ // have a base fee for an older hardfork, and set a default one for London.
261
+ if (rpcBlock.baseFeePerGas === undefined) {
263
262
  common.setHardfork("berlin");
264
263
  }
265
264
 
@@ -275,21 +274,24 @@ export class ForkBlockchain
275
274
 
276
275
  // We use freeze false here because we add the transactions manually
277
276
  freeze: false,
277
+
278
+ // don't validate things like the size of `extraData` in the header
279
+ consensusFormatValidation: false,
278
280
  });
279
281
 
280
282
  for (const transaction of rpcBlock.transactions) {
281
283
  let tx;
282
- if (transaction.type === undefined || transaction.type.eqn(0)) {
284
+ if (transaction.type === undefined || transaction.type === 0n) {
283
285
  tx = new ReadOnlyValidTransaction(
284
286
  new Address(transaction.from),
285
287
  rpcToTxData(transaction)
286
288
  );
287
- } else if (transaction.type.eqn(1)) {
289
+ } else if (transaction.type === 1n) {
288
290
  tx = new ReadOnlyValidEIP2930Transaction(
289
291
  new Address(transaction.from),
290
292
  rpcToTxData(transaction)
291
293
  );
292
- } else if (transaction.type.eqn(2)) {
294
+ } else if (transaction.type === 2n) {
293
295
  tx = new ReadOnlyValidEIP1559Transaction(
294
296
  new Address(transaction.from),
295
297
  rpcToTxData(transaction) as FeeMarketEIP1559TxData
@@ -307,19 +309,19 @@ export class ForkBlockchain
307
309
  return block;
308
310
  }
309
311
 
310
- protected _delBlock(blockNumber: BN): void {
311
- if (blockNumber.lte(this._forkBlockNumber)) {
312
+ protected _delBlock(blockNumber: bigint): void {
313
+ if (blockNumber <= this._forkBlockNumber) {
312
314
  throw new Error("Cannot delete remote block");
313
315
  }
314
316
  super._delBlock(blockNumber);
315
- this._latestBlockNumber = blockNumber.subn(1);
317
+ this._latestBlockNumber = blockNumber - 1n;
316
318
  }
317
319
 
318
320
  private _processRemoteTransaction(rpcTransaction: RpcTransaction | null) {
319
321
  if (
320
322
  rpcTransaction === null ||
321
323
  rpcTransaction.blockNumber === null ||
322
- rpcTransaction.blockNumber.gt(this._forkBlockNumber)
324
+ rpcTransaction.blockNumber > this._forkBlockNumber
323
325
  ) {
324
326
  return undefined;
325
327
  }
@@ -337,7 +339,7 @@ export class ForkBlockchain
337
339
  private async _processRemoteReceipt(
338
340
  txReceipt: RpcTransactionReceipt | null
339
341
  ): Promise<RpcReceiptOutput | undefined> {
340
- if (txReceipt === null || txReceipt.blockNumber.gt(this._forkBlockNumber)) {
342
+ if (txReceipt === null || txReceipt.blockNumber > this._forkBlockNumber) {
341
343
  return undefined;
342
344
  }
343
345
 
@@ -1,15 +1,15 @@
1
- import { DefaultStateManager } from "@ethereumjs/vm/dist/state";
2
- import { EIP2929StateManager } from "@ethereumjs/vm/dist/state/interface";
1
+ import { StateManager } from "@ignored/statemanager";
3
2
  import {
4
3
  Account,
4
+ bigIntToHex,
5
+ bufferToBigInt,
5
6
  Address,
6
- BN,
7
7
  bufferToHex,
8
- keccak256,
9
8
  KECCAK256_NULL,
10
9
  toBuffer,
11
10
  unpadBuffer,
12
- } from "ethereumjs-util";
11
+ } from "@ignored/util";
12
+ import { keccak256 } from "ethereum-cryptography/keccak";
13
13
  import { Map as ImmutableMap, Record as ImmutableRecord } from "immutable";
14
14
 
15
15
  import { assertHardhatInvariant } from "../../../core/errors";
@@ -17,13 +17,13 @@ import { InternalError } from "../../../core/providers/errors";
17
17
  import { JsonRpcClient } from "../../jsonrpc/client";
18
18
  import { GenesisAccount } from "../node-types";
19
19
  import { makeAccount } from "../utils/makeAccount";
20
+ import { randomHash } from "../utils/random";
20
21
 
21
22
  import {
22
23
  AccountState,
23
24
  makeAccountState,
24
25
  makeEmptyAccountState,
25
26
  } from "./AccountState";
26
- import { randomHash } from "./random";
27
27
 
28
28
  const encodeStorageKey = (address: Buffer, position: Buffer): string => {
29
29
  return `${address.toString("hex")}${unpadBuffer(position).toString("hex")}`;
@@ -42,14 +42,14 @@ const notCheckpointedError = (method: string) =>
42
42
  const notSupportedError = (method: string) =>
43
43
  new Error(`${method} is not supported when forking from remote network`);
44
44
 
45
- export class ForkStateManager implements EIP2929StateManager {
45
+ export class ForkStateManager implements StateManager {
46
46
  private _state: State = ImmutableMap<string, ImmutableRecord<AccountState>>();
47
47
  private _initialStateRoot: string = randomHash();
48
48
  private _stateRoot: string = this._initialStateRoot;
49
49
  private _stateRootToState: Map<string, State> = new Map();
50
50
  private _originalStorageCache: Map<string, Buffer> = new Map();
51
51
  private _stateCheckpoints: string[] = [];
52
- private _contextBlockNumber = this._forkBlockNumber.clone();
52
+ private _contextBlockNumber = this._forkBlockNumber;
53
53
  private _contextChanged = false;
54
54
 
55
55
  // used by the DefaultStateManager calls
@@ -60,7 +60,7 @@ export class ForkStateManager implements EIP2929StateManager {
60
60
 
61
61
  constructor(
62
62
  private readonly _jsonRpcClient: JsonRpcClient,
63
- private readonly _forkBlockNumber: BN
63
+ private readonly _forkBlockNumber: bigint
64
64
  ) {
65
65
  this._state = ImmutableMap<string, ImmutableRecord<AccountState>>();
66
66
 
@@ -69,7 +69,7 @@ export class ForkStateManager implements EIP2929StateManager {
69
69
 
70
70
  public async initializeGenesisAccounts(genesisAccounts: GenesisAccount[]) {
71
71
  const accounts: Array<{ address: Address; account: Account }> = [];
72
- const noncesPromises: Array<Promise<BN>> = [];
72
+ const noncesPromises: Array<Promise<bigint>> = [];
73
73
 
74
74
  for (const ga of genesisAccounts) {
75
75
  const account = makeAccount(ga);
@@ -118,10 +118,10 @@ export class ForkStateManager implements EIP2929StateManager {
118
118
  const localBalance = localAccount?.get("balance");
119
119
  const localCode = localAccount?.get("code");
120
120
 
121
- let nonce: Buffer | BN | undefined =
121
+ let nonce: Buffer | bigint | undefined =
122
122
  localNonce !== undefined ? toBuffer(localNonce) : undefined;
123
123
 
124
- let balance: Buffer | BN | undefined =
124
+ let balance: Buffer | bigint | undefined =
125
125
  localBalance !== undefined ? toBuffer(localBalance) : undefined;
126
126
 
127
127
  let code: Buffer | undefined =
@@ -205,7 +205,7 @@ export class ForkStateManager implements EIP2929StateManager {
205
205
 
206
206
  const remoteValue = await this._jsonRpcClient.getStorageAt(
207
207
  address,
208
- new BN(key),
208
+ bufferToBigInt(key),
209
209
  this._contextBlockNumber
210
210
  );
211
211
 
@@ -266,15 +266,6 @@ export class ForkStateManager implements EIP2929StateManager {
266
266
  throw notCheckpointedError("commit");
267
267
  }
268
268
  this._stateCheckpoints.pop();
269
-
270
- const storageMap = this._accessedStorage.pop();
271
- if (storageMap !== undefined) {
272
- (DefaultStateManager.prototype as any)._accessedStorageMerge.call(
273
- this,
274
- this._accessedStorage,
275
- storageMap
276
- );
277
- }
278
269
  }
279
270
 
280
271
  public async revert(): Promise<void> {
@@ -323,8 +314,8 @@ export class ForkStateManager implements EIP2929StateManager {
323
314
  // From https://eips.ethereum.org/EIPS/eip-161
324
315
  // An account is considered empty when it has no code and zero nonce and zero balance.
325
316
  return (
326
- new BN(account.nonce).eqn(0) &&
327
- new BN(account.balance).eqn(0) &&
317
+ account.nonce === 0n &&
318
+ account.balance === 0n &&
328
319
  account.codeHash.equals(KECCAK256_NULL)
329
320
  );
330
321
  }
@@ -337,7 +328,7 @@ export class ForkStateManager implements EIP2929StateManager {
337
328
 
338
329
  public setBlockContext(
339
330
  stateRoot: Buffer,
340
- blockNumber: BN,
331
+ blockNumber: bigint,
341
332
  irregularState?: Buffer
342
333
  ) {
343
334
  if (this._stateCheckpoints.length !== 0) {
@@ -349,11 +340,11 @@ export class ForkStateManager implements EIP2929StateManager {
349
340
  return;
350
341
  }
351
342
 
352
- if (blockNumber.eq(this._forkBlockNumber)) {
343
+ if (blockNumber === this._forkBlockNumber) {
353
344
  this._setStateRoot(toBuffer(this._initialStateRoot));
354
345
  return;
355
346
  }
356
- if (blockNumber.gt(this._forkBlockNumber)) {
347
+ if (blockNumber > this._forkBlockNumber) {
357
348
  this._setStateRoot(stateRoot);
358
349
  return;
359
350
  }
@@ -411,45 +402,14 @@ export class ForkStateManager implements EIP2929StateManager {
411
402
  return value;
412
403
  }
413
404
 
414
- // the following methods are copied verbatim from
415
- // DefaultStateManager
416
-
417
- public isWarmedAddress(address: Buffer): boolean {
418
- return DefaultStateManager.prototype.isWarmedAddress.call(this, address);
419
- }
420
-
421
- public addWarmedAddress(address: Buffer): void {
422
- return DefaultStateManager.prototype.addWarmedAddress.call(this, address);
423
- }
424
-
425
- public isWarmedStorage(address: Buffer, slot: Buffer): boolean {
426
- return DefaultStateManager.prototype.isWarmedStorage.call(
427
- this,
428
- address,
429
- slot
430
- );
431
- }
432
-
433
- public addWarmedStorage(address: Buffer, slot: Buffer): void {
434
- return DefaultStateManager.prototype.addWarmedStorage.call(
435
- this,
436
- address,
437
- slot
438
- );
439
- }
440
-
441
- public clearWarmedAccounts(): void {
442
- return DefaultStateManager.prototype.clearWarmedAccounts.call(this);
443
- }
444
-
445
405
  private _putAccount(address: Address, account: Account): void {
446
406
  // Because the vm only ever modifies the nonce, balance and codeHash using this
447
407
  // method we ignore the stateRoot property
448
408
  const hexAddress = address.toString();
449
409
  let localAccount = this._state.get(hexAddress) ?? makeAccountState();
450
410
  localAccount = localAccount
451
- .set("nonce", bufferToHex(account.nonce.toBuffer()))
452
- .set("balance", bufferToHex(account.balance.toBuffer()));
411
+ .set("nonce", bigIntToHex(account.nonce))
412
+ .set("balance", bigIntToHex(account.balance));
453
413
 
454
414
  // Code is set to empty string here to prevent unnecessary
455
415
  // JsonRpcClient.getCode calls in getAccount method
@@ -468,4 +428,19 @@ export class ForkStateManager implements EIP2929StateManager {
468
428
  this._stateRoot = newRoot;
469
429
  this._state = state;
470
430
  }
431
+
432
+ public async hasStateRoot(root: Buffer): Promise<boolean> {
433
+ return this._state.has(bufferToHex(root));
434
+ }
435
+
436
+ public async flush(): Promise<void> {
437
+ // not implemented
438
+ }
439
+
440
+ public async modifyAccountFields(
441
+ _address: Address,
442
+ _accountFields: any
443
+ ): Promise<void> {
444
+ // not implemented
445
+ }
471
446
  }
@@ -1,4 +1,4 @@
1
- import { BlockData } from "@ethereumjs/block";
1
+ import { BlockData } from "@ignored/block";
2
2
 
3
3
  import { RpcBlockWithTransactions } from "../../../core/jsonrpc/types/output/block";
4
4
 
@@ -13,7 +13,7 @@ export function rpcToBlockData(rpcBlock: RpcBlockWithTransactions): BlockData {
13
13
  stateRoot: rpcBlock.stateRoot,
14
14
  transactionsTrie: rpcBlock.transactionsRoot,
15
15
  receiptTrie: rpcBlock.receiptsRoot,
16
- bloom: rpcBlock.logsBloom,
16
+ logsBloom: rpcBlock.logsBloom,
17
17
  difficulty: rpcBlock.difficulty,
18
18
  number: rpcBlock.number ?? undefined,
19
19
  gasLimit: rpcBlock.gasLimit,
@@ -1,12 +1,12 @@
1
- import { AccessListEIP2930TxData, TxData } from "@ethereumjs/tx";
1
+ import { AccessListEIP2930TxData, TxData } from "@ignored/tx";
2
2
 
3
- import { FeeMarketEIP1559TxData } from "@ethereumjs/tx/dist/types";
3
+ import { FeeMarketEIP1559TxData } from "@ignored/tx/dist/types";
4
4
  import { RpcTransaction } from "../../../core/jsonrpc/types/output/transaction";
5
5
 
6
6
  export function rpcToTxData(
7
7
  rpcTransaction: RpcTransaction
8
8
  ): TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData {
9
- const isEip1559 = rpcTransaction.type?.eqn(2) ?? false;
9
+ const isEip1559 = rpcTransaction.type === 2n;
10
10
 
11
11
  return {
12
12
  gasLimit: rpcTransaction.gas,