hardhat 2.20.1 → 2.21.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
  2. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
  3. package/internal/core/providers/construction.d.ts.map +1 -1
  4. package/internal/core/providers/construction.js +28 -4
  5. package/internal/core/providers/construction.js.map +1 -1
  6. package/internal/core/providers/http.d.ts +2 -0
  7. package/internal/core/providers/http.d.ts.map +1 -1
  8. package/internal/core/providers/http.js +2 -1
  9. package/internal/core/providers/http.js.map +1 -1
  10. package/internal/core/runtime-environment.d.ts.map +1 -1
  11. package/internal/core/runtime-environment.js.map +1 -1
  12. package/internal/hardhat-network/jsonrpc/client.d.ts +0 -2
  13. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  14. package/internal/hardhat-network/jsonrpc/client.js +0 -16
  15. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  16. package/internal/hardhat-network/jsonrpc/handler.js +9 -1
  17. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  18. package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
  19. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
  20. package/internal/hardhat-network/provider/BlockchainData.js +10 -10
  21. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  22. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +0 -7
  23. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
  24. package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -14
  25. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  26. package/internal/hardhat-network/provider/TxPool.d.ts +3 -2
  27. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  28. package/internal/hardhat-network/provider/TxPool.js +16 -16
  29. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  30. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
  31. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
  32. package/internal/hardhat-network/provider/filter.d.ts +6 -5
  33. package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
  34. package/internal/hardhat-network/provider/filter.js +2 -2
  35. package/internal/hardhat-network/provider/filter.js.map +1 -1
  36. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +0 -7
  37. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  38. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +4 -21
  39. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  40. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +13 -19
  41. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
  42. package/internal/hardhat-network/provider/fork/ForkStateManager.js +61 -59
  43. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  44. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  45. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +0 -3
  46. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  47. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
  48. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
  49. package/internal/hardhat-network/provider/fork/rpcToTxData.js +1 -1
  50. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  51. package/internal/hardhat-network/provider/modules/base.js +4 -4
  52. package/internal/hardhat-network/provider/modules/base.js.map +1 -1
  53. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  54. package/internal/hardhat-network/provider/modules/eth.js +9 -16
  55. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  56. package/internal/hardhat-network/provider/modules/logger.d.ts +6 -84
  57. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  58. package/internal/hardhat-network/provider/modules/logger.js +3 -530
  59. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  60. package/internal/hardhat-network/provider/node-types.d.ts +2 -65
  61. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  62. package/internal/hardhat-network/provider/node-types.js +0 -5
  63. package/internal/hardhat-network/provider/node-types.js.map +1 -1
  64. package/internal/hardhat-network/provider/node.d.ts +2 -6
  65. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  66. package/internal/hardhat-network/provider/node.js +79 -153
  67. package/internal/hardhat-network/provider/node.js.map +1 -1
  68. package/internal/hardhat-network/provider/output.d.ts +0 -14
  69. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  70. package/internal/hardhat-network/provider/output.js +0 -264
  71. package/internal/hardhat-network/provider/output.js.map +1 -1
  72. package/internal/hardhat-network/provider/provider.d.ts +28 -25
  73. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  74. package/internal/hardhat-network/provider/provider.js +349 -185
  75. package/internal/hardhat-network/provider/provider.js.map +1 -1
  76. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +10 -8
  77. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  78. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
  79. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  80. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +10 -8
  81. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  82. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
  83. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  84. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +10 -9
  85. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  86. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +7 -6
  87. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  88. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +6 -5
  89. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  90. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  91. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  92. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +5 -4
  93. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  94. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
  95. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  96. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +8 -7
  97. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
  98. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
  99. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  100. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +8 -7
  101. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
  102. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
  103. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  104. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -4
  105. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
  106. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
  107. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
  108. package/internal/hardhat-network/provider/utils/convertToEdr.js +194 -0
  109. package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
  110. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +0 -1
  111. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
  112. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +1 -5
  113. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
  114. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
  115. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  116. package/internal/hardhat-network/provider/utils/makeCommon.js +1 -3
  117. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  118. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
  119. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
  120. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +1 -15
  121. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
  122. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +10 -1
  123. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  124. package/internal/hardhat-network/provider/utils/makeForkClient.js +38 -18
  125. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  126. package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
  127. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  128. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +3 -1
  129. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  130. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -6
  131. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  132. package/internal/hardhat-network/provider/utils/random.d.ts +1 -0
  133. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
  134. package/internal/hardhat-network/provider/utils/random.js +7 -1
  135. package/internal/hardhat-network/provider/utils/random.js.map +1 -1
  136. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +1 -1
  137. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
  138. package/internal/hardhat-network/provider/utils/reorgs-protection.js +5 -5
  139. package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
  140. package/internal/hardhat-network/provider/vm/exit.d.ts +22 -0
  141. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  142. package/internal/hardhat-network/provider/vm/exit.js +93 -0
  143. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  144. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +29 -0
  145. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
  146. package/internal/hardhat-network/provider/vm/minimal-vm.js +43 -0
  147. package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
  148. package/internal/hardhat-network/provider/vm/proxy-vm.d.ts +36 -0
  149. package/internal/hardhat-network/provider/vm/proxy-vm.d.ts.map +1 -0
  150. package/internal/hardhat-network/provider/vm/proxy-vm.js +73 -0
  151. package/internal/hardhat-network/provider/vm/proxy-vm.js.map +1 -0
  152. package/internal/hardhat-network/provider/vm/types.d.ts +28 -0
  153. package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
  154. package/internal/hardhat-network/provider/vm/types.js +3 -0
  155. package/internal/hardhat-network/provider/vm/types.js.map +1 -0
  156. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +6 -0
  157. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  158. package/internal/hardhat-network/stack-traces/consoleLogger.js +33 -16
  159. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  160. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts +1 -2
  161. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts.map +1 -1
  162. package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -7
  163. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  164. package/internal/hardhat-network/stack-traces/debug.js +6 -6
  165. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  166. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  167. package/internal/hardhat-network/stack-traces/error-inferrer.js +13 -7
  168. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  169. package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -3
  170. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
  171. package/internal/hardhat-network/stack-traces/message-trace.js +22 -1
  172. package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
  173. package/internal/hardhat-network/stack-traces/model.d.ts +8 -0
  174. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  175. package/internal/hardhat-network/stack-traces/model.js +52 -0
  176. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  177. package/internal/hardhat-network/stack-traces/opcodes.d.ts +1 -0
  178. package/internal/hardhat-network/stack-traces/opcodes.d.ts.map +1 -1
  179. package/internal/hardhat-network/stack-traces/opcodes.js +5 -1
  180. package/internal/hardhat-network/stack-traces/opcodes.js.map +1 -1
  181. package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
  182. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  183. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  184. package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -5
  185. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  186. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  187. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +28 -34
  188. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  189. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +7 -0
  190. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -1
  191. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +69 -2
  192. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
  193. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +7 -12
  194. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
  195. package/internal/hardhat-network/stack-traces/vm-tracer.js +46 -65
  196. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  197. package/internal/util/date.d.ts +1 -0
  198. package/internal/util/date.d.ts.map +1 -1
  199. package/internal/util/date.js +5 -1
  200. package/internal/util/date.js.map +1 -1
  201. package/internal/util/hardforks.d.ts +2 -0
  202. package/internal/util/hardforks.d.ts.map +1 -1
  203. package/internal/util/hardforks.js +27 -1
  204. package/internal/util/hardforks.js.map +1 -1
  205. package/package.json +16 -14
  206. package/src/internal/core/providers/construction.ts +7 -9
  207. package/src/internal/core/providers/http.ts +3 -1
  208. package/src/internal/core/runtime-environment.ts +2 -1
  209. package/src/internal/hardhat-network/jsonrpc/client.ts +1 -28
  210. package/src/internal/hardhat-network/jsonrpc/handler.ts +9 -1
  211. package/src/internal/hardhat-network/provider/modules/logger.ts +6 -801
  212. package/src/internal/hardhat-network/provider/node-types.ts +2 -89
  213. package/src/internal/hardhat-network/provider/output.ts +0 -352
  214. package/src/internal/hardhat-network/provider/provider.ts +501 -261
  215. package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +232 -0
  216. package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +0 -4
  217. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +1 -12
  218. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +63 -24
  219. package/src/internal/hardhat-network/provider/utils/random.ts +8 -1
  220. package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +5 -5
  221. package/src/internal/hardhat-network/provider/vm/exit.ts +101 -0
  222. package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +98 -0
  223. package/src/internal/hardhat-network/provider/vm/types.ts +32 -0
  224. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +40 -21
  225. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +10 -12
  226. package/src/internal/hardhat-network/stack-traces/debug.ts +6 -6
  227. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +15 -8
  228. package/src/internal/hardhat-network/stack-traces/message-trace.ts +40 -4
  229. package/src/internal/hardhat-network/stack-traces/model.ts +61 -0
  230. package/src/internal/hardhat-network/stack-traces/opcodes.ts +4 -0
  231. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
  232. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -5
  233. package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +113 -4
  234. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +67 -95
  235. package/src/internal/util/date.ts +4 -0
  236. package/src/internal/util/hardforks.ts +52 -0
  237. package/src/internal/hardhat-network/provider/BlockchainBase.ts +0 -185
  238. package/src/internal/hardhat-network/provider/BlockchainData.ts +0 -261
  239. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +0 -140
  240. package/src/internal/hardhat-network/provider/PoolState.ts +0 -48
  241. package/src/internal/hardhat-network/provider/TransactionQueue.ts +0 -158
  242. package/src/internal/hardhat-network/provider/TxPool.ts +0 -715
  243. package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +0 -21
  244. package/src/internal/hardhat-network/provider/filter.ts +0 -142
  245. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +0 -433
  246. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +0 -480
  247. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +0 -35
  248. package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +0 -44
  249. package/src/internal/hardhat-network/provider/modules/base.ts +0 -156
  250. package/src/internal/hardhat-network/provider/modules/debug.ts +0 -104
  251. package/src/internal/hardhat-network/provider/modules/eth.ts +0 -1781
  252. package/src/internal/hardhat-network/provider/modules/evm.ts +0 -249
  253. package/src/internal/hardhat-network/provider/modules/hardhat.ts +0 -481
  254. package/src/internal/hardhat-network/provider/modules/net.ts +0 -60
  255. package/src/internal/hardhat-network/provider/modules/personal.ts +0 -40
  256. package/src/internal/hardhat-network/provider/modules/web3.ts +0 -49
  257. package/src/internal/hardhat-network/provider/node.ts +0 -2999
  258. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +0 -226
  259. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +0 -224
  260. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +0 -216
  261. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +0 -143
  262. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +0 -144
  263. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +0 -171
  264. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +0 -169
  265. package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +0 -25
  266. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +0 -60
  267. package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +0 -29
  268. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +0 -61
  269. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +0 -45
  270. package/src/internal/hardhat-network/provider/utils/txMapToArray.ts +0 -7
  271. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +0 -630
@@ -26,14 +26,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.assertTransientStorageCompatibility = exports.HardhatNode = void 0;
29
+ exports.HardhatNode = void 0;
30
30
  const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
31
31
  const ethereumjs_common_1 = require("@nomicfoundation/ethereumjs-common");
32
- const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/cjs/exceptions");
33
32
  const ethereumjs_tx_1 = require("@nomicfoundation/ethereumjs-tx");
34
33
  const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
35
34
  const ethereumjs_vm_1 = require("@nomicfoundation/ethereumjs-vm");
36
35
  const ethereumjs_evm_1 = require("@nomicfoundation/ethereumjs-evm");
36
+ const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/exceptions");
37
37
  const ethereumjs_statemanager_1 = require("@nomicfoundation/ethereumjs-statemanager");
38
38
  const eth_sig_util_1 = require("@metamask/eth-sig-util");
39
39
  const chalk_1 = __importDefault(require("chalk"));
@@ -79,8 +79,6 @@ const makeStateTrie_1 = require("./utils/makeStateTrie");
79
79
  const putGenesisBlock_1 = require("./utils/putGenesisBlock");
80
80
  const txMapToArray_1 = require("./utils/txMapToArray");
81
81
  const random_1 = require("./utils/random");
82
- const BEACON_ROOT_ADDRESS = "0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02";
83
- const BEACON_ROOT_BYTECODE = "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500";
84
82
  const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
85
83
  /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
86
84
  class HardhatNode extends events_1.default {
@@ -100,7 +98,6 @@ class HardhatNode extends events_1.default {
100
98
  : undefined;
101
99
  const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
102
100
  const mixHashGenerator = random_1.RandomBufferGenerator.create("randomMixHashSeed");
103
- const parentBeaconBlockRootGenerator = random_1.RandomBufferGenerator.create("randomParentBeaconBlockRootSeed");
104
101
  let forkClient;
105
102
  const common = (0, makeCommon_1.makeCommon)(config);
106
103
  if ((0, node_types_1.isForkedNodeConfig)(config)) {
@@ -112,9 +109,6 @@ class HardhatNode extends events_1.default {
112
109
  this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
113
110
  const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
114
111
  await forkStateManager.initializeGenesisAccounts(genesisAccounts);
115
- if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.CANCUN)) {
116
- await forkStateManager.putContractCode(ethereumjs_util_1.Address.fromString(BEACON_ROOT_ADDRESS), Buffer.from((0, ethereumjs_util_1.toBytes)(BEACON_ROOT_BYTECODE)));
117
- }
118
112
  stateManager = forkStateManager;
119
113
  blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
120
114
  initialBlockTimeOffset = BigInt((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
@@ -143,27 +137,23 @@ class HardhatNode extends events_1.default {
143
137
  stateManager = new ethereumjs_statemanager_1.DefaultStateManager({
144
138
  trie: stateTrie,
145
139
  });
146
- if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.CANCUN)) {
147
- await stateManager.putContractCode(ethereumjs_util_1.Address.fromString(BEACON_ROOT_ADDRESS), Buffer.from((0, ethereumjs_util_1.toBytes)(BEACON_ROOT_BYTECODE)));
148
- }
149
140
  const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain(common);
150
141
  const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
151
142
  ? initialBaseFeePerGasConfig ??
152
143
  BigInt(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
153
144
  : undefined;
154
- await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, config, await stateManager.getStateRoot(), hardfork, mixHashGenerator.next(), parentBeaconBlockRootGenerator.next(), genesisBlockBaseFeePerGas);
145
+ await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, config, stateTrie, hardfork, mixHashGenerator.next(), genesisBlockBaseFeePerGas);
155
146
  if (config.initialDate !== undefined) {
156
147
  initialBlockTimeOffset = BigInt((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
157
148
  }
158
149
  blockchain = hardhatBlockchain;
159
150
  }
160
151
  const txPool = new TxPool_1.TxPool(stateManager, BigInt(blockGasLimit), common);
161
- const evm = new ethereumjs_evm_1.EVM({
152
+ const eei = new ethereumjs_vm_1.EEI(stateManager, common, blockchain);
153
+ const evm = await ethereumjs_evm_1.EVM.create({
154
+ eei,
162
155
  allowUnlimitedContractSize,
163
- allowUnlimitedInitCodeSize: allowUnlimitedContractSize,
164
- blockchain,
165
156
  common,
166
- stateManager,
167
157
  });
168
158
  const vm = await ethereumjs_vm_1.VM.create({
169
159
  evm,
@@ -172,8 +162,8 @@ class HardhatNode extends events_1.default {
172
162
  stateManager,
173
163
  blockchain,
174
164
  });
175
- const instanceId = (0, ethereumjs_util_1.bytesToBigInt)((0, crypto_1.randomBytes)(32));
176
- const node = new HardhatNode(vm, instanceId, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardfork, hardforkActivations, mixHashGenerator, parentBeaconBlockRootGenerator, allowUnlimitedContractSize, allowBlocksWithSameTimestamp, tracingConfig, forkNetworkId, forkBlockNum, forkBlockHash, nextBlockBaseFeePerGas, forkClient, enableTransientStorage);
165
+ const instanceId = (0, ethereumjs_util_1.bufferToBigInt)((0, crypto_1.randomBytes)(32));
166
+ const node = new HardhatNode(vm, instanceId, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardfork, hardforkActivations, mixHashGenerator, allowUnlimitedContractSize, allowBlocksWithSameTimestamp, tracingConfig, forkNetworkId, forkBlockNum, forkBlockHash, nextBlockBaseFeePerGas, forkClient, enableTransientStorage);
177
167
  return [common, node];
178
168
  }
179
169
  static _validateHardforks(forkBlockNumber, common, remoteChainId) {
@@ -193,7 +183,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
193
183
  // this validation.
194
184
  return;
195
185
  }
196
- upstreamCommon.setHardforkBy({ blockNumber: forkBlockNumber });
186
+ upstreamCommon.setHardforkByBlockNumber(forkBlockNumber);
197
187
  if (!upstreamCommon.gteHardfork("spuriousDragon")) {
198
188
  throw new errors_2.InternalError(`Cannot fork ${upstreamCommon.chainName()} from block ${forkBlockNumber}.
199
189
 
@@ -201,7 +191,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
201
191
  }
202
192
  }
203
193
  }
204
- constructor(_vm, _instanceId, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = 0n, _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, hardfork, _hardforkActivations, _mixHashGenerator, _parentBeaconBlockRootGenerator, allowUnlimitedContractSize, _allowBlocksWithSameTimestamp, tracingConfig, _forkNetworkId, _forkBlockNumber, _forkBlockHash, nextBlockBaseFee, _forkClient, _enableTransientStorage = false) {
194
+ constructor(_vm, _instanceId, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = 0n, _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, hardfork, _hardforkActivations, _mixHashGenerator, allowUnlimitedContractSize, _allowBlocksWithSameTimestamp, tracingConfig, _forkNetworkId, _forkBlockNumber, _forkBlockHash, nextBlockBaseFee, _forkClient, _enableTransientStorage = false) {
205
195
  super();
206
196
  this._vm = _vm;
207
197
  this._instanceId = _instanceId;
@@ -218,7 +208,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
218
208
  this.hardfork = hardfork;
219
209
  this._hardforkActivations = _hardforkActivations;
220
210
  this._mixHashGenerator = _mixHashGenerator;
221
- this._parentBeaconBlockRootGenerator = _parentBeaconBlockRootGenerator;
222
211
  this.allowUnlimitedContractSize = allowUnlimitedContractSize;
223
212
  this._allowBlocksWithSameTimestamp = _allowBlocksWithSameTimestamp;
224
213
  this._forkNetworkId = _forkNetworkId;
@@ -266,32 +255,26 @@ Hardhat Network's forking functionality only works with blocks from at least spu
266
255
  }
267
256
  }
268
257
  async getSignedTransaction(txParams) {
269
- const senderAddress = (0, ethereumjs_util_1.bytesToHex)(txParams.from);
258
+ const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
270
259
  const pk = this._localAccounts.get(senderAddress);
271
260
  if (pk !== undefined) {
272
261
  let tx;
273
- if ("blobs" in txParams) {
274
- tx = ethereumjs_tx_1.BlobEIP4844Transaction.fromTxData(txParams, {
275
- common: this._vm.common,
276
- allowUnlimitedInitCodeSize: true,
277
- });
278
- }
279
- else if ("maxFeePerGas" in txParams) {
262
+ if ("maxFeePerGas" in txParams) {
280
263
  tx = ethereumjs_tx_1.FeeMarketEIP1559Transaction.fromTxData(txParams, {
281
- common: this._vm.common,
282
- allowUnlimitedInitCodeSize: true,
264
+ common: this._vm._common,
265
+ disableMaxInitCodeSizeCheck: true,
283
266
  });
284
267
  }
285
268
  else if ("accessList" in txParams) {
286
269
  tx = ethereumjs_tx_1.AccessListEIP2930Transaction.fromTxData(txParams, {
287
- common: this._vm.common,
288
- allowUnlimitedInitCodeSize: true,
270
+ common: this._vm._common,
271
+ disableMaxInitCodeSizeCheck: true,
289
272
  });
290
273
  }
291
274
  else {
292
- tx = ethereumjs_tx_1.LegacyTransaction.fromTxData(txParams, {
293
- common: this._vm.common,
294
- allowUnlimitedInitCodeSize: true,
275
+ tx = ethereumjs_tx_1.Transaction.fromTxData(txParams, {
276
+ common: this._vm._common,
277
+ disableMaxInitCodeSizeCheck: true,
295
278
  });
296
279
  }
297
280
  return tx.sign(pk);
@@ -434,11 +417,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
434
417
  blockNumberOrPending = this.getLatestBlockNumber();
435
418
  }
436
419
  const account = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getAccount(address));
437
- return account?.balance ?? 0n;
420
+ return account.balance;
438
421
  }
439
422
  async getNextConfirmedNonce(address, blockNumberOrPending) {
440
423
  const account = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getAccount(address));
441
- return account?.nonce ?? 0n;
424
+ return account.nonce;
442
425
  }
443
426
  async getAccountNextPendingNonce(address) {
444
427
  return this._txPool.getNextPendingNonce(address);
@@ -553,19 +536,13 @@ Hardhat Network's forking functionality only works with blocks from at least spu
553
536
  return ethereumjs_util_1.Address.fromString(this._coinbase);
554
537
  }
555
538
  async getStorageAt(address, positionIndex, blockNumberOrPending) {
556
- const key = (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBytes)(positionIndex), 32);
557
- const data = await this._runInBlockContext(blockNumberOrPending, async () => {
558
- const account = await this._stateManager.getAccount(address);
559
- if (account === undefined) {
560
- return Uint8Array.from([]);
561
- }
562
- return this._stateManager.getContractStorage(address, key);
563
- });
539
+ const key = (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(positionIndex), 32);
540
+ const data = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractStorage(address, key));
564
541
  const EXPECTED_DATA_SIZE = 32;
565
542
  if (data.length < EXPECTED_DATA_SIZE) {
566
543
  return Buffer.concat([Buffer.alloc(EXPECTED_DATA_SIZE - data.length, 0), data], EXPECTED_DATA_SIZE);
567
544
  }
568
- return Buffer.from(data);
545
+ return data;
569
546
  }
570
547
  async getBlockByNumber(blockNumberOrPending) {
571
548
  if (blockNumberOrPending === "pending") {
@@ -596,7 +573,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
596
573
  return this._blockchain.getTotalDifficulty(block.hash());
597
574
  }
598
575
  async getCode(address, blockNumberOrPending) {
599
- return this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractCode(address).then(Buffer.from));
576
+ return this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractCode(address));
600
577
  }
601
578
  getNextBlockTimestamp() {
602
579
  return this._nextBlockTimestamp;
@@ -637,7 +614,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
637
614
  return this._txPool.getTransactionByHash(hash)?.data;
638
615
  }
639
616
  async getTransactionReceipt(hash) {
640
- const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBytes)(hash);
617
+ const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
641
618
  const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
642
619
  return receipt ?? undefined;
643
620
  }
@@ -654,7 +631,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
654
631
  async signTypedDataV4(address, typedData) {
655
632
  const privateKey = this._getLocalAccountPrivateKey(address);
656
633
  return (0, eth_sig_util_1.signTypedData)({
657
- privateKey: Buffer.from(privateKey),
634
+ privateKey,
658
635
  version: eth_sig_util_1.SignTypedDataVersion.V4,
659
636
  data: typedData,
660
637
  });
@@ -676,7 +653,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
676
653
  userProvidedNextBlockBaseFeePerGas: this.getUserProvidedNextBlockBaseFeePerGas(),
677
654
  coinbase: this.getCoinbaseAddress().toString(),
678
655
  mixHashGenerator: this._mixHashGenerator.clone(),
679
- parentBeaconBlockRootGenerator: this._parentBeaconBlockRootGenerator.clone(),
680
656
  };
681
657
  this._irregularStatesByBlockNumber = new Map(this._irregularStatesByBlockNumber);
682
658
  this._snapshots.push(snapshot);
@@ -715,8 +691,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
715
691
  }
716
692
  this._coinbase = snapshot.coinbase;
717
693
  this._mixHashGenerator = snapshot.mixHashGenerator;
718
- this._parentBeaconBlockRootGenerator =
719
- snapshot.parentBeaconBlockRootGenerator;
720
694
  // We delete this and the following snapshots, as they can only be used
721
695
  // once in Ganache
722
696
  this._snapshots.splice(snapshotIndex);
@@ -748,7 +722,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
748
722
  id: filterId,
749
723
  type: filter_1.Type.BLOCK_SUBSCRIPTION,
750
724
  deadline: this._newDeadline(),
751
- hashes: [(0, ethereumjs_util_1.bytesToHex)(block.header.hash())],
725
+ hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
752
726
  logs: [],
753
727
  subscription: isSubscription,
754
728
  });
@@ -830,11 +804,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
830
804
  return true;
831
805
  }
832
806
  addImpersonatedAccount(address) {
833
- this._impersonatedAccounts.add((0, ethereumjs_util_1.bytesToHex)(address));
807
+ this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
834
808
  return true;
835
809
  }
836
810
  removeImpersonatedAccount(address) {
837
- return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bytesToHex)(address));
811
+ return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
838
812
  }
839
813
  setAutomine(automine) {
840
814
  this._automine = automine;
@@ -856,18 +830,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
856
830
  }
857
831
  const isTransactionMined = await this._isTransactionMined(hash);
858
832
  if (isTransactionMined) {
859
- throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bytesToHex)(hash)} cannot be dropped because it's already mined`);
833
+ throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
860
834
  }
861
835
  return false;
862
836
  }
863
837
  async setAccountBalance(address, newBalance) {
864
838
  const account = await this._stateManager.getAccount(address);
865
- await this._stateManager.putAccount(address, ethereumjs_util_1.Account.fromAccountData({
866
- nonce: account?.nonce,
867
- balance: newBalance,
868
- storageRoot: account?.storageRoot,
869
- codeHash: account?.codeHash,
870
- }));
839
+ account.balance = newBalance;
840
+ await this._stateManager.putAccount(address, account);
871
841
  await this._persistIrregularWorldState();
872
842
  }
873
843
  async setAccountCode(address, newCode) {
@@ -879,25 +849,15 @@ Hardhat Network's forking functionality only works with blocks from at least spu
879
849
  throw new errors_2.InternalError("Cannot set account nonce when the transaction pool is not empty");
880
850
  }
881
851
  const account = await this._stateManager.getAccount(address);
882
- const accountNonce = account?.nonce ?? 0n;
883
- if (newNonce < accountNonce) {
884
- throw new errors_2.InvalidInputError(`New nonce (${newNonce.toString()}) must not be smaller than the existing nonce (${accountNonce.toString()})`);
885
- }
886
- await this._stateManager.putAccount(address, ethereumjs_util_1.Account.fromAccountData({
887
- nonce: newNonce,
888
- balance: account?.balance,
889
- storageRoot: account?.storageRoot,
890
- codeHash: account?.codeHash,
891
- }));
852
+ if (newNonce < account.nonce) {
853
+ throw new errors_2.InvalidInputError(`New nonce (${newNonce.toString()}) must not be smaller than the existing nonce (${account.nonce.toString()})`);
854
+ }
855
+ account.nonce = newNonce;
856
+ await this._stateManager.putAccount(address, account);
892
857
  await this._persistIrregularWorldState();
893
858
  }
894
859
  async setStorageAt(address, positionIndex, value) {
895
- // create the account if it doesn't exist
896
- const account = await this._stateManager.getAccount(address);
897
- if (account === undefined) {
898
- await this._stateManager.putAccount(address, new ethereumjs_util_1.Account());
899
- }
900
- await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBytes)(positionIndex), 32), value);
860
+ await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(positionIndex), 32), value);
901
861
  await this._persistIrregularWorldState();
902
862
  }
903
863
  async traceCall(callParams, block, traceConfig) {
@@ -909,7 +869,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
909
869
  async traceTransaction(hash, config) {
910
870
  const block = await this.getBlockByTransactionHash(hash);
911
871
  if (block === undefined) {
912
- throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bytesToHex)(hash)}`);
872
+ throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
913
873
  }
914
874
  return this._runInBlockContext(block.header.number - 1n, async () => {
915
875
  const blockNumber = block.header.number;
@@ -930,7 +890,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
930
890
  // to avoid having to distinguish between empty and non-existing accounts.
931
891
  // We *could* do it during the non-forked mode, but for simplicity we just
932
892
  // don't support it at all.
933
- const isPreSpuriousDragon = !vm.common.gteHardfork("spuriousDragon");
893
+ const isPreSpuriousDragon = !vm._common.gteHardfork("spuriousDragon");
934
894
  if (isPreSpuriousDragon) {
935
895
  throw new errors_2.InvalidInputError("Tracing is not supported for transactions using hardforks older than Spurious Dragon. ");
936
896
  }
@@ -939,20 +899,20 @@ Hardhat Network's forking functionality only works with blocks from at least spu
939
899
  const sender = tx.getSenderAddress();
940
900
  if (tx.type === 0) {
941
901
  txWithCommon = new FakeSenderTransaction_1.FakeSenderTransaction(sender, tx, {
942
- common: vm.common,
902
+ common: vm._common,
943
903
  });
944
904
  }
945
905
  else if (tx.type === 1) {
946
- txWithCommon = new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, tx, { common: vm.common });
906
+ txWithCommon = new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, tx, { common: vm._common });
947
907
  }
948
908
  else if (tx.type === 2) {
949
- txWithCommon = new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, { ...tx, gasPrice: undefined }, { common: vm.common });
909
+ txWithCommon = new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, { ...tx, gasPrice: undefined }, { common: vm._common });
950
910
  }
951
911
  else {
952
912
  throw new errors_2.InternalError("Only legacy, EIP2930, and EIP1559 txs are supported");
953
913
  }
954
914
  const txHash = txWithCommon.hash();
955
- if ((0, ethereumjs_util_1.equalsBytes)(txHash, hash)) {
915
+ if (txHash.equals(hash)) {
956
916
  const vmDebugTracer = new vm_debug_tracer_1.VMDebugTracer(vm);
957
917
  return vmDebugTracer.trace(async () => {
958
918
  await vm.runTx({
@@ -1103,7 +1063,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1103
1063
  async _addPendingTransaction(tx) {
1104
1064
  await this._txPool.addTransaction(tx);
1105
1065
  await this._notifyPendingTransaction(tx);
1106
- return (0, ethereumjs_util_1.bytesToHex)(tx.hash());
1066
+ return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
1107
1067
  }
1108
1068
  async _mineTransaction(tx) {
1109
1069
  await this._addPendingTransaction(tx);
@@ -1214,9 +1174,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1214
1174
  if (this.isPostMergeHardfork()) {
1215
1175
  headerData.mixHash = this._getNextMixHash();
1216
1176
  }
1217
- if (this.isPostCancunHardfork()) {
1218
- headerData.parentBeaconBlockRoot = this._getNextParentBeaconBlockRoot();
1219
- }
1220
1177
  headerData.baseFeePerGas = await this.getNextBlockBaseFeePerGas();
1221
1178
  const blockBuilder = await this._vm.buildBlock({
1222
1179
  parentBlock,
@@ -1268,22 +1225,22 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1268
1225
  }
1269
1226
  _getMinimalTransactionFee() {
1270
1227
  // Typically 21_000 gas
1271
- return this._vm.common.param("gasPrices", "tx");
1228
+ return this._vm._common.param("gasPrices", "tx");
1272
1229
  }
1273
1230
  async _getFakeTransaction(txParams) {
1274
1231
  const sender = new ethereumjs_util_1.Address(txParams.from);
1275
1232
  if ("maxFeePerGas" in txParams && txParams.maxFeePerGas !== undefined) {
1276
1233
  return new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, txParams, {
1277
- common: this._vm.common,
1234
+ common: this._vm._common,
1278
1235
  });
1279
1236
  }
1280
1237
  if ("accessList" in txParams && txParams.accessList !== undefined) {
1281
1238
  return new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, txParams, {
1282
- common: this._vm.common,
1239
+ common: this._vm._common,
1283
1240
  });
1284
1241
  }
1285
1242
  return new FakeSenderTransaction_1.FakeSenderTransaction(sender, txParams, {
1286
- common: this._vm.common,
1243
+ common: this._vm._common,
1287
1244
  });
1288
1245
  }
1289
1246
  _getSnapshotIndex(id) {
@@ -1306,9 +1263,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1306
1263
  this._snapshots.splice(snapshotIndex);
1307
1264
  }
1308
1265
  _initLocalAccounts(genesisAccounts) {
1309
- const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBytes)(acc.privateKey));
1266
+ const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
1310
1267
  for (const pk of privateKeys) {
1311
- this._localAccounts.set((0, ethereumjs_util_1.bytesToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
1268
+ this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
1312
1269
  }
1313
1270
  }
1314
1271
  async _getConsoleLogMessages(vmTrace, vmTracerError) {
@@ -1414,7 +1371,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1414
1371
  async _notifyPendingTransaction(tx) {
1415
1372
  this._filters.forEach((filter) => {
1416
1373
  if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
1417
- const hash = (0, ethereumjs_util_1.bytesToHex)(tx.hash());
1374
+ const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
1418
1375
  if (filter.subscription) {
1419
1376
  this._emitEthEvent(filter.id, hash);
1420
1377
  return;
@@ -1435,7 +1392,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1435
1392
  * was added to the blockchain.
1436
1393
  */
1437
1394
  async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
1438
- const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm.common));
1395
+ const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
1439
1396
  this._blockchain.addTransactionReceipts(receipts);
1440
1397
  const td = await this.getBlockTotalDifficulty(block);
1441
1398
  const rpcLogs = [];
@@ -1450,10 +1407,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1450
1407
  case filter_1.Type.BLOCK_SUBSCRIPTION:
1451
1408
  const hash = block.hash();
1452
1409
  if (filter.subscription) {
1453
- this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm.common), false));
1410
+ this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
1454
1411
  return;
1455
1412
  }
1456
- filter.hashes.push((0, ethereumjs_util_1.bytesToHex)(hash));
1413
+ filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
1457
1414
  break;
1458
1415
  case filter_1.Type.LOGS_SUBSCRIPTION:
1459
1416
  if ((0, filter_1.bloomFilter)(new ethereumjs_vm_1.Bloom(block.header.logsBloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
@@ -1587,7 +1544,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1587
1544
  async _applyStateOverrideSet(stateOverrideSet) {
1588
1545
  // Multiple state override set can be configured for different addresses, hence the loop
1589
1546
  for (const [addrToOverride, stateOverrideOptions] of Object.entries(stateOverrideSet)) {
1590
- const address = new ethereumjs_util_1.Address((0, ethereumjs_util_1.toBytes)(addrToOverride));
1547
+ const address = new ethereumjs_util_1.Address((0, ethereumjs_util_1.toBuffer)(addrToOverride));
1591
1548
  const { balance, nonce, code, state, stateDiff } = stateOverrideOptions;
1592
1549
  await this._overrideBalanceAndNonce(address, balance, nonce);
1593
1550
  await this._overrideCode(address, code);
@@ -1630,7 +1587,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1630
1587
  throw new errors_2.InvalidInputError("The properties 'state' and 'stateDiff' cannot be used simultaneously when configuring the state override set passed to the eth_call method.");
1631
1588
  }
1632
1589
  for (const [storageKey, value] of Object.entries(newState)) {
1633
- await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.toBytes)(storageKey), (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBytes)(value), 32));
1590
+ await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.toBuffer)(storageKey), (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(value), 32));
1634
1591
  }
1635
1592
  }
1636
1593
  /**
@@ -1656,9 +1613,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1656
1613
  // we don't need to add the tx to the block because runTx doesn't
1657
1614
  // know anything about the txs in the current block
1658
1615
  }
1659
- originalCommon = this._vm.common;
1660
- assertTransientStorageCompatibility(this._enableTransientStorage, this._vm.common.hardfork());
1661
- this._vm.common = ethereumjs_common_1.Common.custom({
1616
+ originalCommon = this._vm._common;
1617
+ this._vm._common = ethereumjs_common_1.Common.custom({
1662
1618
  chainId: this._forkBlockNumber === undefined ||
1663
1619
  blockContext.header.number >= this._forkBlockNumber
1664
1620
  ? this._configChainId
@@ -1666,6 +1622,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1666
1622
  networkId: this._forkNetworkId ?? this._configNetworkId,
1667
1623
  }, {
1668
1624
  hardfork: this._selectHardfork(blockContext.header.number),
1625
+ ...this._getTransientStorageSettings(),
1669
1626
  });
1670
1627
  // If this VM is running without EIP4895, but the block has withdrawals,
1671
1628
  // we remove them and the withdrawal root from the block
@@ -1680,25 +1637,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1680
1637
  },
1681
1638
  }, {
1682
1639
  freeze: false,
1683
- common: this._vm.common,
1684
- skipConsensusFormatValidation: true,
1685
- });
1686
- }
1687
- // If this VM is running without cancun, but the block has cancun fields,
1688
- // we remove them from the block
1689
- if (!this.isCancunBlock(blockNumberOrPending) &&
1690
- blockContext.header.blobGasUsed !== undefined) {
1691
- blockContext = ethereumjs_block_1.Block.fromBlockData({
1692
- ...blockContext,
1693
- header: {
1694
- ...blockContext.header,
1695
- blobGasUsed: undefined,
1696
- excessBlobGas: undefined,
1697
- parentBeaconBlockRoot: undefined,
1698
- },
1699
- }, {
1700
- freeze: false,
1701
- common: this._vm.common,
1640
+ common: this._vm._common,
1702
1641
  skipConsensusFormatValidation: true,
1703
1642
  });
1704
1643
  }
@@ -1719,7 +1658,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1719
1658
  (blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)) {
1720
1659
  blockContext = ethereumjs_block_1.Block.fromBlockData(blockContext, {
1721
1660
  freeze: false,
1722
- common: this._vm.common,
1661
+ common: this._vm._common,
1723
1662
  skipConsensusFormatValidation: true,
1724
1663
  });
1725
1664
  blockContext.header.baseFeePerGas = 0n;
@@ -1735,7 +1674,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1735
1674
  }
1736
1675
  finally {
1737
1676
  if (originalCommon !== undefined) {
1738
- this._vm.common = originalCommon;
1677
+ this._vm._common = originalCommon;
1739
1678
  }
1740
1679
  await this._stateManager.setStateRoot(initialStateRoot);
1741
1680
  }
@@ -1781,7 +1720,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1781
1720
  }
1782
1721
  return this._runInBlockContext(blockNumberOrPending, async () => {
1783
1722
  const account = await this._stateManager.getAccount(address);
1784
- return account?.nonce ?? 0n;
1723
+ return account.nonce;
1785
1724
  });
1786
1725
  }
1787
1726
  async _isTransactionMined(hash) {
@@ -1802,30 +1741,20 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1802
1741
  isEip1559Active(blockNumberOrPending) {
1803
1742
  if (blockNumberOrPending !== undefined &&
1804
1743
  blockNumberOrPending !== "pending") {
1805
- return this._vm.common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
1744
+ return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
1806
1745
  }
1807
- return this._vm.common.gteHardfork("london");
1746
+ return this._vm._common.gteHardfork("london");
1808
1747
  }
1809
1748
  isEip4895Active(blockNumberOrPending) {
1810
1749
  if (blockNumberOrPending !== undefined &&
1811
1750
  blockNumberOrPending !== "pending") {
1812
- return this._vm.common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "shanghai");
1813
- }
1814
- return this._vm.common.gteHardfork("shanghai");
1815
- }
1816
- isCancunBlock(blockNumberOrPending) {
1817
- if (blockNumberOrPending !== undefined &&
1818
- blockNumberOrPending !== "pending") {
1819
- return this._vm.common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "cancun");
1751
+ return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "shanghai");
1820
1752
  }
1821
- return this._vm.common.gteHardfork("cancun");
1753
+ return this._vm._common.gteHardfork("shanghai");
1822
1754
  }
1823
1755
  isPostMergeHardfork() {
1824
1756
  return (0, hardforks_1.hardforkGte)(this.hardfork, hardforks_1.HardforkName.MERGE);
1825
1757
  }
1826
- isPostCancunHardfork() {
1827
- return (0, hardforks_1.hardforkGte)(this.hardfork, hardforks_1.HardforkName.CANCUN);
1828
- }
1829
1758
  setPrevRandao(prevRandao) {
1830
1759
  this._mixHashGenerator.setNext(prevRandao);
1831
1760
  }
@@ -1839,7 +1768,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1839
1768
  const instanceIdHex = BigIntUtils.toEvmWord(this._instanceId);
1840
1769
  const instanceId = `0x${instanceIdHex}`;
1841
1770
  const latestBlock = await this.getLatestBlock();
1842
- const latestBlockHashHex = Buffer.from(latestBlock.header.hash()).toString("hex");
1771
+ const latestBlockHashHex = latestBlock.header.hash().toString("hex");
1843
1772
  const latestBlockHash = `0x${latestBlockHashHex}`;
1844
1773
  const metadata = {
1845
1774
  clientVersion,
@@ -1862,9 +1791,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1862
1791
  _getNextMixHash() {
1863
1792
  return this._mixHashGenerator.next();
1864
1793
  }
1865
- _getNextParentBeaconBlockRoot() {
1866
- return this._parentBeaconBlockRootGenerator.next();
1867
- }
1868
1794
  async _getEstimateGasFeePriceFields(callParams, blockNumberOrPending) {
1869
1795
  if (!this.isEip1559Active(blockNumberOrPending) ||
1870
1796
  callParams.gasPrice !== undefined) {
@@ -1894,7 +1820,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1894
1820
  _selectHardfork(blockNumber) {
1895
1821
  if (this._forkBlockNumber === undefined ||
1896
1822
  blockNumber >= this._forkBlockNumber) {
1897
- return this._vm.common.hardfork();
1823
+ return this._vm._common.hardfork();
1898
1824
  }
1899
1825
  if (this._hardforkActivations.size === 0) {
1900
1826
  throw new errors_2.InternalError(`No known hardfork for execution on historical block ${blockNumber.toString()} (relative to fork block number ${this._forkBlockNumber}). The node was not configured with a hardfork activation history. See http://hardhat.org/custom-hardfork-history`);
@@ -1912,16 +1838,16 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1912
1838
  if (!constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardfork)) {
1913
1839
  throw new errors_2.InternalError(`Tried to run a call or transaction in the context of a block whose hardfork is "${hardfork}", but Hardhat Network only supports the following hardforks: ${constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.join(", ")}`);
1914
1840
  }
1915
- return hardfork === "merge" ? "mergeForkIdTransition" : hardfork;
1841
+ return hardfork;
1916
1842
  }
1917
1843
  _getCommonForTracing(networkId, blockNumber) {
1918
- assertTransientStorageCompatibility(this._enableTransientStorage, this._vm.common.hardfork());
1919
1844
  try {
1920
1845
  const common = ethereumjs_common_1.Common.custom({
1921
1846
  chainId: networkId,
1922
1847
  networkId,
1923
1848
  }, {
1924
1849
  hardfork: this._selectHardfork(BigInt(blockNumber)),
1850
+ ...this._getTransientStorageSettings(),
1925
1851
  });
1926
1852
  return common;
1927
1853
  }
@@ -1929,12 +1855,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
1929
1855
  throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
1930
1856
  }
1931
1857
  }
1932
- }
1933
- exports.HardhatNode = HardhatNode;
1934
- function assertTransientStorageCompatibility(enableTransientStorage, hardfork) {
1935
- if (enableTransientStorage && !(0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.CANCUN)) {
1936
- throw new errors_2.InternalError(`Transient storage is not compatible with hardfork "${hardfork}". To use transient storage, set the hardfork to "cancun" or later.`);
1858
+ _getTransientStorageSettings() {
1859
+ if (this._enableTransientStorage) {
1860
+ return { eips: [1153] };
1861
+ }
1862
+ return {};
1937
1863
  }
1938
1864
  }
1939
- exports.assertTransientStorageCompatibility = assertTransientStorageCompatibility;
1865
+ exports.HardhatNode = HardhatNode;
1940
1866
  //# sourceMappingURL=node.js.map