hardhat 2.20.0 → 2.21.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 (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 -148
  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 +26 -25
  73. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  74. package/internal/hardhat-network/provider/provider.js +342 -186
  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 +191 -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 +46 -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 +27 -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 +18 -16
  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 +482 -263
  215. package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +228 -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 +101 -0
  223. package/src/internal/hardhat-network/provider/vm/types.ts +31 -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 -2993
  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
@@ -1,481 +0,0 @@
1
- import { Address } from "@nomicfoundation/ethereumjs-util";
2
- import * as t from "io-ts";
3
-
4
- import {
5
- BoundExperimentalHardhatNetworkMessageTraceHook,
6
- CompilerInput,
7
- CompilerOutput,
8
- } from "../../../../types";
9
- import {
10
- bufferToRpcData,
11
- rpcAddress,
12
- rpcData,
13
- rpcHash,
14
- rpcQuantity,
15
- } from "../../../core/jsonrpc/types/base-types";
16
- import {
17
- optionalRpcHardhatNetworkConfig,
18
- RpcHardhatNetworkConfig,
19
- } from "../../../core/jsonrpc/types/input/hardhat-network";
20
- import {
21
- rpcCompilerInput,
22
- rpcCompilerOutput,
23
- } from "../../../core/jsonrpc/types/input/solc";
24
- import { validateParams } from "../../../core/jsonrpc/types/input/validation";
25
- import { HardhatMetadata } from "../../../core/jsonrpc/types/output/metadata";
26
- import {
27
- InvalidInputError,
28
- MethodNotFoundError,
29
- } from "../../../core/providers/errors";
30
- import { optional } from "../../../util/io-ts";
31
- import { MessageTrace } from "../../stack-traces/message-trace";
32
- import { HardhatNode } from "../node";
33
- import { ForkConfig, MineBlockResult } from "../node-types";
34
-
35
- import { ModulesLogger } from "./logger";
36
-
37
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
38
-
39
- export class HardhatModule {
40
- constructor(
41
- private readonly _node: HardhatNode,
42
- private readonly _resetCallback: (forkConfig?: ForkConfig) => Promise<void>,
43
- private readonly _setLoggingEnabledCallback: (
44
- loggingEnabled: boolean
45
- ) => void,
46
- private readonly _logger: ModulesLogger,
47
- private readonly _experimentalHardhatNetworkMessageTraceHooks: BoundExperimentalHardhatNetworkMessageTraceHook[] = []
48
- ) {}
49
-
50
- public async processRequest(
51
- method: string,
52
- params: any[] = []
53
- ): Promise<any> {
54
- switch (method) {
55
- case "hardhat_getStackTraceFailuresCount":
56
- return this._getStackTraceFailuresCountAction(
57
- ...this._getStackTraceFailuresCountParams(params)
58
- );
59
-
60
- case "hardhat_addCompilationResult":
61
- return this._addCompilationResultAction(
62
- ...this._addCompilationResultParams(params)
63
- );
64
-
65
- case "hardhat_impersonateAccount":
66
- return this._impersonateAction(...this._impersonateParams(params));
67
-
68
- case "hardhat_intervalMine":
69
- return this._intervalMineAction(...this._intervalMineParams(params));
70
-
71
- case "hardhat_getAutomine":
72
- return this._getAutomine();
73
-
74
- case "hardhat_stopImpersonatingAccount":
75
- return this._stopImpersonatingAction(
76
- ...this._stopImpersonatingParams(params)
77
- );
78
-
79
- case "hardhat_reset":
80
- return this._resetAction(...this._resetParams(params));
81
-
82
- case "hardhat_setLoggingEnabled":
83
- return this._setLoggingEnabledAction(
84
- ...this._setLoggingEnabledParams(params)
85
- );
86
-
87
- case "hardhat_setMinGasPrice":
88
- return this._setMinGasPriceAction(
89
- ...this._setMinGasPriceParams(params)
90
- );
91
-
92
- case "hardhat_dropTransaction":
93
- return this._dropTransactionAction(
94
- ...this._dropTransactionParams(params)
95
- );
96
-
97
- case "hardhat_metadata":
98
- return this._metadataAction(...this._metadataParams(params));
99
-
100
- case "hardhat_setBalance":
101
- return this._setBalanceAction(...this._setBalanceParams(params));
102
-
103
- case "hardhat_setCode":
104
- return this._setCodeAction(...this._setCodeParams(params));
105
-
106
- case "hardhat_setNonce":
107
- return this._setNonceAction(...this._setNonceParams(params));
108
-
109
- case "hardhat_setStorageAt":
110
- return this._setStorageAtAction(...this._setStorageAtParams(params));
111
-
112
- case "hardhat_setNextBlockBaseFeePerGas":
113
- return this._setNextBlockBaseFeePerGasAction(
114
- ...this._setNextBlockBaseFeePerGasParams(params)
115
- );
116
-
117
- case "hardhat_setCoinbase":
118
- return this._setCoinbaseAction(...this._setCoinbaseParams(params));
119
-
120
- case "hardhat_mine":
121
- return this._hardhatMineAction(...this._hardhatMineParams(params));
122
-
123
- case "hardhat_setPrevRandao":
124
- return this._hardhatSetPrevRandaoAction(
125
- ...this._hardhatSetPrevRandaoParams(params)
126
- );
127
- }
128
-
129
- throw new MethodNotFoundError(`Method ${method} not found`);
130
- }
131
-
132
- // hardhat_getStackTraceFailuresCount
133
-
134
- private _getStackTraceFailuresCountParams(params: any[]): [] {
135
- return validateParams(params);
136
- }
137
-
138
- private async _getStackTraceFailuresCountAction(): Promise<number> {
139
- return this._node.getStackTraceFailuresCount();
140
- }
141
-
142
- // hardhat_addCompilationResult
143
-
144
- private _addCompilationResultParams(
145
- params: any[]
146
- ): [string, CompilerInput, CompilerOutput] {
147
- return validateParams(
148
- params,
149
- t.string,
150
- rpcCompilerInput,
151
- rpcCompilerOutput
152
- );
153
- }
154
-
155
- private async _addCompilationResultAction(
156
- solcVersion: string,
157
- compilerInput: CompilerInput,
158
- compilerOutput: CompilerOutput
159
- ): Promise<boolean> {
160
- return this._node.addCompilationResult(
161
- solcVersion,
162
- compilerInput,
163
- compilerOutput
164
- );
165
- }
166
-
167
- // hardhat_impersonateAccount
168
-
169
- private _impersonateParams(params: any[]): [Buffer] {
170
- return validateParams(params, rpcAddress);
171
- }
172
-
173
- private _impersonateAction(address: Buffer): true {
174
- return this._node.addImpersonatedAccount(address);
175
- }
176
-
177
- // hardhat_intervalMine
178
-
179
- private _intervalMineParams(_params: any[]): [] {
180
- return [];
181
- }
182
-
183
- private async _intervalMineAction(): Promise<boolean> {
184
- const result = await this._node.mineBlock();
185
- const blockNumber = result.block.header.number;
186
-
187
- const isEmpty = result.block.transactions.length === 0;
188
- if (isEmpty) {
189
- this._logger.printIntervalMinedBlockNumber(
190
- blockNumber,
191
- isEmpty,
192
- result.block.header.baseFeePerGas
193
- );
194
- } else {
195
- await this._logBlock(result, { isIntervalMined: true });
196
- this._logger.printIntervalMinedBlockNumber(blockNumber, isEmpty);
197
- const printedSomething = this._logger.printLogs();
198
- if (printedSomething) {
199
- this._logger.printEmptyLine();
200
- }
201
- }
202
-
203
- return true;
204
- }
205
-
206
- // hardhat_getAutomine
207
-
208
- private async _getAutomine(): Promise<boolean> {
209
- return this._node.getAutomine();
210
- }
211
-
212
- // hardhat_stopImpersonatingAccount
213
-
214
- private _stopImpersonatingParams(params: any[]): [Buffer] {
215
- return validateParams(params, rpcAddress);
216
- }
217
-
218
- private _stopImpersonatingAction(address: Buffer): boolean {
219
- return this._node.removeImpersonatedAccount(address);
220
- }
221
-
222
- // hardhat_reset
223
-
224
- private _resetParams(params: any[]): [RpcHardhatNetworkConfig | undefined] {
225
- return validateParams(params, optionalRpcHardhatNetworkConfig);
226
- }
227
-
228
- private async _resetAction(
229
- networkConfig?: RpcHardhatNetworkConfig
230
- ): Promise<true> {
231
- await this._resetCallback(networkConfig?.forking);
232
- return true;
233
- }
234
-
235
- // hardhat_setLoggingEnabled
236
-
237
- private _setLoggingEnabledParams(params: any[]): [boolean] {
238
- return validateParams(params, t.boolean);
239
- }
240
-
241
- private async _setLoggingEnabledAction(
242
- loggingEnabled: boolean
243
- ): Promise<true> {
244
- this._setLoggingEnabledCallback(loggingEnabled);
245
- return true;
246
- }
247
-
248
- // hardhat_setMinGasPrice
249
-
250
- private _setMinGasPriceParams(params: any[]): [bigint] {
251
- return validateParams(params, rpcQuantity);
252
- }
253
-
254
- private async _setMinGasPriceAction(minGasPrice: bigint): Promise<true> {
255
- if (minGasPrice < 0n) {
256
- throw new InvalidInputError("Minimum gas price cannot be negative");
257
- }
258
-
259
- if (this._node.isEip1559Active()) {
260
- throw new InvalidInputError(
261
- "hardhat_setMinGasPrice is not supported when EIP-1559 is active"
262
- );
263
- }
264
-
265
- await this._node.setMinGasPrice(minGasPrice);
266
- return true;
267
- }
268
-
269
- // hardhat_dropTransaction
270
-
271
- private _dropTransactionParams(params: any[]): [Buffer] {
272
- return validateParams(params, rpcHash);
273
- }
274
-
275
- private async _dropTransactionAction(hash: Buffer): Promise<boolean> {
276
- return this._node.dropTransaction(hash);
277
- }
278
-
279
- // hardhat_metadata
280
-
281
- private _metadataParams(params: any[]): [] {
282
- return validateParams(params);
283
- }
284
-
285
- private async _metadataAction(): Promise<HardhatMetadata> {
286
- return this._node.getMetadata();
287
- }
288
-
289
- // hardhat_setBalance
290
-
291
- private _setBalanceParams(params: any[]): [Buffer, bigint] {
292
- return validateParams(params, rpcAddress, rpcQuantity);
293
- }
294
-
295
- private async _setBalanceAction(address: Buffer, newBalance: bigint) {
296
- await this._node.setAccountBalance(new Address(address), newBalance);
297
- return true;
298
- }
299
-
300
- // hardhat_setCode
301
-
302
- private _setCodeParams(params: any[]): [Buffer, Buffer] {
303
- return validateParams(params, rpcAddress, rpcData);
304
- }
305
-
306
- private async _setCodeAction(address: Buffer, newCode: Buffer) {
307
- await this._node.setAccountCode(new Address(address), newCode);
308
- return true;
309
- }
310
-
311
- // hardhat_setNonce
312
-
313
- private _setNonceParams(params: any[]): [Buffer, bigint] {
314
- return validateParams(params, rpcAddress, rpcQuantity);
315
- }
316
-
317
- private async _setNonceAction(address: Buffer, newNonce: bigint) {
318
- await this._node.setNextConfirmedNonce(new Address(address), newNonce);
319
- return true;
320
- }
321
-
322
- // hardhat_setStorageAt
323
-
324
- private _setStorageAtParams(params: any[]): [Buffer, bigint, Buffer] {
325
- const [address, positionIndex, value] = validateParams(
326
- params,
327
- rpcAddress,
328
- rpcQuantity,
329
- rpcData
330
- );
331
-
332
- const MAX_WORD_VALUE = 2n ** 256n;
333
- if (positionIndex >= MAX_WORD_VALUE) {
334
- throw new InvalidInputError(
335
- `Storage key must not be greater than or equal to 2^256. Received ${positionIndex.toString()}.`
336
- );
337
- }
338
-
339
- if (value.length !== 32) {
340
- throw new InvalidInputError(
341
- `Storage value must be exactly 32 bytes long. Received ${bufferToRpcData(
342
- value
343
- )}, which is ${value.length} bytes long.`
344
- );
345
- }
346
-
347
- return [address, positionIndex, value];
348
- }
349
-
350
- private async _setStorageAtAction(
351
- address: Buffer,
352
- positionIndex: bigint,
353
- value: Buffer
354
- ) {
355
- await this._node.setStorageAt(new Address(address), positionIndex, value);
356
- return true;
357
- }
358
-
359
- // hardhat_setNextBlockBaseFeePerGas
360
- private _setNextBlockBaseFeePerGasParams(params: any[]): [bigint] {
361
- return validateParams(params, rpcQuantity);
362
- }
363
-
364
- private _setNextBlockBaseFeePerGasAction(baseFeePerGas: bigint) {
365
- if (!this._node.isEip1559Active()) {
366
- throw new InvalidInputError(
367
- "hardhat_setNextBlockBaseFeePerGas is disabled because EIP-1559 is not active"
368
- );
369
- }
370
-
371
- this._node.setUserProvidedNextBlockBaseFeePerGas(baseFeePerGas);
372
- return true;
373
- }
374
-
375
- // hardhat_setCoinbase
376
-
377
- private _setCoinbaseParams(params: any[]): [Buffer] {
378
- return validateParams(params, rpcAddress);
379
- }
380
-
381
- private async _setCoinbaseAction(address: Buffer) {
382
- await this._node.setCoinbase(new Address(address));
383
- return true;
384
- }
385
-
386
- // hardhat_mine
387
- private async _hardhatMineAction(blockCount?: bigint, interval?: bigint) {
388
- const mineBlockResults = await this._node.mineBlocks(blockCount, interval);
389
-
390
- for (const [i, result] of mineBlockResults.entries()) {
391
- await this._logHardhatMinedBlock(result);
392
-
393
- // print an empty line after logging blocks with txs,
394
- // unless it's the last logged block
395
- const isEmpty = result.block.transactions.length === 0;
396
- if (!isEmpty && i + 1 < mineBlockResults.length) {
397
- this._logger.logEmptyLine();
398
- }
399
- }
400
-
401
- return true;
402
- }
403
- private _hardhatMineParams(
404
- params: any[]
405
- ): [bigint | undefined, bigint | undefined] {
406
- return validateParams(params, optional(rpcQuantity), optional(rpcQuantity));
407
- }
408
-
409
- // hardhat_setPrevRandao
410
-
411
- private _hardhatSetPrevRandaoParams(params: any[]): [Buffer] {
412
- // using rpcHash because it's also 32 bytes long
413
- return validateParams(params, rpcHash);
414
- }
415
-
416
- private async _hardhatSetPrevRandaoAction(prevRandao: Buffer) {
417
- if (!this._node.isPostMergeHardfork()) {
418
- throw new InvalidInputError(
419
- `hardhat_setPrevRandao is only available in post-merge hardforks, the current hardfork is ${this._node.hardfork}`
420
- );
421
- }
422
-
423
- this._node.setPrevRandao(prevRandao);
424
-
425
- return true;
426
- }
427
-
428
- private async _logBlock(
429
- result: MineBlockResult,
430
- { isIntervalMined }: { isIntervalMined: boolean }
431
- ) {
432
- const { block, traces } = result;
433
-
434
- const codes: Buffer[] = [];
435
- for (const txTrace of traces) {
436
- const code = await this._node.getCodeFromTrace(
437
- txTrace.trace,
438
- block.header.number
439
- );
440
-
441
- codes.push(code);
442
- }
443
-
444
- if (isIntervalMined) {
445
- this._logger.logIntervalMinedBlock(result, codes);
446
- } else {
447
- this._logger.logMinedBlock(result, codes);
448
- }
449
-
450
- for (const txTrace of traces) {
451
- await this._runHardhatNetworkMessageTraceHooks(txTrace.trace, false);
452
- }
453
- }
454
-
455
- private async _runHardhatNetworkMessageTraceHooks(
456
- trace: MessageTrace | undefined,
457
- isCall: boolean
458
- ) {
459
- if (trace === undefined) {
460
- return;
461
- }
462
-
463
- for (const hook of this._experimentalHardhatNetworkMessageTraceHooks) {
464
- await hook(trace, isCall);
465
- }
466
- }
467
-
468
- private async _logHardhatMinedBlock(result: MineBlockResult) {
469
- const isEmpty = result.block.transactions.length === 0;
470
- const blockNumber = result.block.header.number;
471
-
472
- if (isEmpty) {
473
- this._logger.logEmptyHardhatMinedBlock(
474
- blockNumber,
475
- result.block.header.baseFeePerGas
476
- );
477
- } else {
478
- await this._logBlock(result, { isIntervalMined: false });
479
- }
480
- }
481
- }
@@ -1,60 +0,0 @@
1
- import { Common } from "@nomicfoundation/ethereumjs-common";
2
-
3
- import { numberToRpcQuantity } from "../../../core/jsonrpc/types/base-types";
4
- import { validateParams } from "../../../core/jsonrpc/types/input/validation";
5
- import { MethodNotFoundError } from "../../../core/providers/errors";
6
-
7
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
8
-
9
- export class NetModule {
10
- constructor(private readonly _common: Common) {}
11
-
12
- public async processRequest(
13
- method: string,
14
- params: any[] = []
15
- ): Promise<any> {
16
- switch (method) {
17
- case "net_listening":
18
- return this._listeningAction(...this._listeningParams(params));
19
-
20
- case "net_peerCount":
21
- return this._peerCountAction(...this._peerCountParams(params));
22
-
23
- case "net_version":
24
- return this._versionAction(...this._versionParams(params));
25
- }
26
-
27
- throw new MethodNotFoundError(`Method ${method} not found`);
28
- }
29
-
30
- // net_listening
31
-
32
- private _listeningParams(params: any[]): [] {
33
- return validateParams(params);
34
- }
35
-
36
- private async _listeningAction(): Promise<boolean> {
37
- return true;
38
- }
39
-
40
- // net_peerCount
41
-
42
- private _peerCountParams(_params: any[]): [] {
43
- return [];
44
- }
45
-
46
- private async _peerCountAction(): Promise<string> {
47
- return numberToRpcQuantity(0);
48
- }
49
-
50
- // net_version
51
-
52
- private _versionParams(_params: any[]): [] {
53
- return [];
54
- }
55
-
56
- private async _versionAction(): Promise<string> {
57
- // This RPC call is an exception: it returns a number in decimal
58
- return this._common.networkId().toString();
59
- }
60
- }
@@ -1,40 +0,0 @@
1
- import { Address, toRpcSig } from "@nomicfoundation/ethereumjs-util";
2
-
3
- import { rpcAddress, rpcData } from "../../../core/jsonrpc/types/base-types";
4
- import { validateParams } from "../../../core/jsonrpc/types/input/validation";
5
- import { MethodNotFoundError } from "../../../core/providers/errors";
6
- import { HardhatNode } from "../node";
7
-
8
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
9
-
10
- export class PersonalModule {
11
- constructor(private readonly _node: HardhatNode) {}
12
-
13
- public async processRequest(
14
- method: string,
15
- params: any[] = []
16
- ): Promise<any> {
17
- switch (method) {
18
- case "personal_sign": {
19
- return this._signAction(...this._signParams(params));
20
- }
21
- }
22
-
23
- throw new MethodNotFoundError(`Method ${method} not found`);
24
- }
25
-
26
- // personal_sign
27
-
28
- private _signParams(params: any[]): [Buffer, Buffer] {
29
- return validateParams(params, rpcData, rpcAddress);
30
- }
31
-
32
- private async _signAction(data: Buffer, address: Buffer): Promise<string> {
33
- const signature = await this._node.signPersonalMessage(
34
- new Address(address),
35
- data
36
- );
37
-
38
- return toRpcSig(signature.v, signature.r, signature.s);
39
- }
40
- }
@@ -1,49 +0,0 @@
1
- import {
2
- bufferToRpcData,
3
- rpcData,
4
- } from "../../../core/jsonrpc/types/base-types";
5
- import { validateParams } from "../../../core/jsonrpc/types/input/validation";
6
- import { MethodNotFoundError } from "../../../core/providers/errors";
7
- import { keccak256 } from "../../../util/keccak";
8
- import { HardhatNode } from "../node";
9
-
10
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
11
-
12
- export class Web3Module {
13
- constructor(private readonly _node: HardhatNode) {}
14
-
15
- public async processRequest(
16
- method: string,
17
- params: any[] = []
18
- ): Promise<any> {
19
- switch (method) {
20
- case "web3_clientVersion":
21
- return this._clientVersionAction(...this._clientVersionParams(params));
22
-
23
- case "web3_sha3":
24
- return this._sha3Action(...this._sha3Params(params));
25
- }
26
-
27
- throw new MethodNotFoundError(`Method ${method} not found`);
28
- }
29
-
30
- // web3_clientVersion
31
-
32
- private _clientVersionParams(params: any[]): [] {
33
- return validateParams(params);
34
- }
35
-
36
- private async _clientVersionAction(): Promise<string> {
37
- return this._node.getClientVersion();
38
- }
39
-
40
- // web3_sha3
41
-
42
- private _sha3Params(params: any[]): [Buffer] {
43
- return validateParams(params, rpcData);
44
- }
45
-
46
- private async _sha3Action(buffer: Buffer): Promise<string> {
47
- return bufferToRpcData(keccak256(buffer));
48
- }
49
- }