hardhat 2.19.5 → 2.20.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 (275) hide show
  1. package/builtin-tasks/node.js +3 -3
  2. package/builtin-tasks/node.js.map +1 -1
  3. package/internal/cli/analytics.d.ts.map +1 -1
  4. package/internal/cli/analytics.js +2 -1
  5. package/internal/cli/analytics.js.map +1 -1
  6. package/internal/cli/project-creation.d.ts +1 -1
  7. package/internal/cli/project-creation.js +1 -1
  8. package/internal/constants.d.ts.map +1 -1
  9. package/internal/constants.js +1 -0
  10. package/internal/constants.js.map +1 -1
  11. package/internal/core/config/config-resolution.d.ts.map +1 -1
  12. package/internal/core/config/config-resolution.js +8 -0
  13. package/internal/core/config/config-resolution.js.map +1 -1
  14. package/internal/core/config/config-validation.d.ts.map +1 -1
  15. package/internal/core/config/config-validation.js +10 -0
  16. package/internal/core/config/config-validation.js.map +1 -1
  17. package/internal/core/config/default-config.d.ts.map +1 -1
  18. package/internal/core/config/default-config.js +11 -0
  19. package/internal/core/config/default-config.js.map +1 -1
  20. package/internal/core/jsonrpc/types/base-types.d.ts +1 -1
  21. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
  22. package/internal/core/jsonrpc/types/base-types.js +7 -5
  23. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  24. package/internal/core/jsonrpc/types/input/callRequest.d.ts +2 -0
  25. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
  26. package/internal/core/jsonrpc/types/input/callRequest.js +2 -0
  27. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
  28. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +4 -0
  29. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
  30. package/internal/core/jsonrpc/types/input/transactionRequest.js +2 -0
  31. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
  32. package/internal/core/jsonrpc/types/output/block.d.ts +6 -0
  33. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  34. package/internal/core/jsonrpc/types/output/block.js +3 -0
  35. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  36. package/internal/core/providers/accounts.d.ts.map +1 -1
  37. package/internal/core/providers/accounts.js +10 -10
  38. package/internal/core/providers/accounts.js.map +1 -1
  39. package/internal/core/providers/util.js +2 -2
  40. package/internal/core/providers/util.js.map +1 -1
  41. package/internal/hardhat-network/jsonrpc/client.d.ts +3 -3
  42. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  43. package/internal/hardhat-network/jsonrpc/client.js +9 -9
  44. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  45. package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
  46. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
  47. package/internal/hardhat-network/provider/BlockchainData.js +10 -10
  48. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  49. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +7 -0
  50. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
  51. package/internal/hardhat-network/provider/HardhatBlockchain.js +14 -2
  52. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  53. package/internal/hardhat-network/provider/TxPool.d.ts +2 -3
  54. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  55. package/internal/hardhat-network/provider/TxPool.js +16 -16
  56. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  57. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
  58. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
  59. package/internal/hardhat-network/provider/filter.d.ts +5 -6
  60. package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
  61. package/internal/hardhat-network/provider/filter.js +2 -2
  62. package/internal/hardhat-network/provider/filter.js.map +1 -1
  63. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +7 -0
  64. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  65. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +21 -4
  66. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  67. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +16 -9
  68. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
  69. package/internal/hardhat-network/provider/fork/ForkStateManager.js +42 -25
  70. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  71. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  72. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +3 -0
  73. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  74. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
  75. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
  76. package/internal/hardhat-network/provider/modules/base.js +4 -4
  77. package/internal/hardhat-network/provider/modules/base.js.map +1 -1
  78. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  79. package/internal/hardhat-network/provider/modules/eth.js +16 -9
  80. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  81. package/internal/hardhat-network/provider/modules/logger.d.ts +1 -1
  82. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  83. package/internal/hardhat-network/provider/modules/logger.js +17 -17
  84. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  85. package/internal/hardhat-network/provider/node-types.d.ts +17 -13
  86. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  87. package/internal/hardhat-network/provider/node.d.ts +6 -2
  88. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  89. package/internal/hardhat-network/provider/node.js +148 -79
  90. package/internal/hardhat-network/provider/node.js.map +1 -1
  91. package/internal/hardhat-network/provider/output.d.ts +3 -0
  92. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  93. package/internal/hardhat-network/provider/output.js +23 -9
  94. package/internal/hardhat-network/provider/output.js.map +1 -1
  95. package/internal/hardhat-network/provider/return-data.d.ts +3 -4
  96. package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
  97. package/internal/hardhat-network/provider/return-data.js +4 -3
  98. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  99. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +8 -10
  100. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  101. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
  102. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  103. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +8 -10
  104. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  105. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
  106. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  107. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +9 -10
  108. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  109. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +6 -7
  110. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  111. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +5 -6
  112. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  113. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  114. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  115. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +4 -5
  116. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  117. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
  118. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  119. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +7 -8
  120. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
  121. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
  122. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  123. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +7 -8
  124. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
  125. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
  126. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  127. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +4 -5
  128. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
  129. package/internal/hardhat-network/provider/utils/makeAccount.js +1 -1
  130. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  131. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  132. package/internal/hardhat-network/provider/utils/makeCommon.js +5 -3
  133. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  134. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
  135. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
  136. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +15 -1
  137. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
  138. package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
  139. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  140. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -3
  141. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  142. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +6 -2
  143. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  144. package/internal/hardhat-network/provider/utils/random.d.ts +3 -3
  145. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
  146. package/internal/hardhat-network/provider/utils/random.js +2 -2
  147. package/internal/hardhat-network/provider/utils/random.js.map +1 -1
  148. package/internal/hardhat-network/stack-traces/consoleLogger.js +42 -44
  149. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  150. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  151. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  152. package/internal/hardhat-network/stack-traces/contracts-identifier.js +1 -1
  153. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  154. package/internal/hardhat-network/stack-traces/debug.js +12 -12
  155. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  156. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  157. package/internal/hardhat-network/stack-traces/error-inferrer.js +5 -4
  158. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  159. package/internal/hardhat-network/stack-traces/library-utils.d.ts +4 -4
  160. package/internal/hardhat-network/stack-traces/library-utils.d.ts.map +1 -1
  161. package/internal/hardhat-network/stack-traces/library-utils.js.map +1 -1
  162. package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -9
  163. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
  164. package/internal/hardhat-network/stack-traces/model.d.ts +5 -5
  165. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  166. package/internal/hardhat-network/stack-traces/model.js +5 -5
  167. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  168. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
  169. package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
  170. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  171. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -3
  172. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  173. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  174. package/internal/hardhat-network/stack-traces/solidityTracer.js +3 -2
  175. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  176. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  177. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +34 -28
  178. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  179. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +1 -2
  180. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
  181. package/internal/hardhat-network/stack-traces/vm-tracer.js +9 -9
  182. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  183. package/internal/solidity/compiler/downloader.d.ts.map +1 -1
  184. package/internal/solidity/compiler/downloader.js +2 -2
  185. package/internal/solidity/compiler/downloader.js.map +1 -1
  186. package/internal/solidity/compiler/solc-info.d.ts.map +1 -1
  187. package/internal/solidity/compiler/solc-info.js +1 -0
  188. package/internal/solidity/compiler/solc-info.js.map +1 -1
  189. package/internal/util/abi-helpers.d.ts +2 -3
  190. package/internal/util/abi-helpers.d.ts.map +1 -1
  191. package/internal/util/abi-helpers.js.map +1 -1
  192. package/internal/util/bigint.d.ts +1 -2
  193. package/internal/util/bigint.d.ts.map +1 -1
  194. package/internal/util/bigint.js +2 -2
  195. package/internal/util/bigint.js.map +1 -1
  196. package/internal/util/hardforks.d.ts +2 -1
  197. package/internal/util/hardforks.d.ts.map +1 -1
  198. package/internal/util/hardforks.js +2 -0
  199. package/internal/util/hardforks.js.map +1 -1
  200. package/internal/util/keccak.d.ts +1 -2
  201. package/internal/util/keccak.d.ts.map +1 -1
  202. package/internal/util/keccak.js +1 -1
  203. package/internal/util/keccak.js.map +1 -1
  204. package/package.json +12 -11
  205. package/sample-projects/javascript/contracts/Lock.sol +1 -1
  206. package/sample-projects/javascript/hardhat.config.js +1 -1
  207. package/sample-projects/javascript-esm/contracts/Lock.sol +1 -1
  208. package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
  209. package/sample-projects/typescript/contracts/Lock.sol +1 -1
  210. package/sample-projects/typescript/hardhat.config.ts +1 -1
  211. package/sample-projects/typescript-viem/contracts/Lock.sol +1 -1
  212. package/sample-projects/typescript-viem/hardhat.config.ts +1 -1
  213. package/src/builtin-tasks/node.ts +8 -4
  214. package/src/internal/cli/analytics.ts +4 -1
  215. package/src/internal/cli/project-creation.ts +1 -1
  216. package/src/internal/constants.ts +1 -0
  217. package/src/internal/core/config/config-resolution.ts +13 -0
  218. package/src/internal/core/config/config-validation.ts +19 -0
  219. package/src/internal/core/config/default-config.ts +11 -0
  220. package/src/internal/core/jsonrpc/types/base-types.ts +12 -7
  221. package/src/internal/core/jsonrpc/types/input/callRequest.ts +3 -0
  222. package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +5 -1
  223. package/src/internal/core/jsonrpc/types/output/block.ts +3 -0
  224. package/src/internal/core/providers/accounts.ts +24 -13
  225. package/src/internal/core/providers/util.ts +2 -2
  226. package/src/internal/hardhat-network/jsonrpc/client.ts +7 -4
  227. package/src/internal/hardhat-network/provider/BlockchainData.ts +6 -6
  228. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +28 -3
  229. package/src/internal/hardhat-network/provider/TxPool.ts +19 -16
  230. package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +4 -5
  231. package/src/internal/hardhat-network/provider/filter.ts +11 -8
  232. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +40 -7
  233. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +79 -39
  234. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +3 -0
  235. package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +2 -2
  236. package/src/internal/hardhat-network/provider/modules/base.ts +5 -5
  237. package/src/internal/hardhat-network/provider/modules/eth.ts +40 -14
  238. package/src/internal/hardhat-network/provider/modules/logger.ts +17 -14
  239. package/src/internal/hardhat-network/provider/node-types.ts +19 -12
  240. package/src/internal/hardhat-network/provider/node.ts +210 -86
  241. package/src/internal/hardhat-network/provider/output.ts +35 -8
  242. package/src/internal/hardhat-network/provider/return-data.ts +6 -5
  243. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +24 -25
  244. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +24 -25
  245. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +27 -16
  246. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +7 -8
  247. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +6 -5
  248. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +15 -8
  249. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +15 -8
  250. package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +4 -4
  251. package/src/internal/hardhat-network/provider/utils/makeAccount.ts +2 -2
  252. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +9 -3
  253. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +21 -7
  254. package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +3 -3
  255. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +10 -5
  256. package/src/internal/hardhat-network/provider/utils/random.ts +5 -5
  257. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +13 -13
  258. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  259. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +4 -4
  260. package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
  261. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +6 -5
  262. package/src/internal/hardhat-network/stack-traces/library-utils.ts +6 -6
  263. package/src/internal/hardhat-network/stack-traces/message-trace.ts +8 -8
  264. package/src/internal/hardhat-network/stack-traces/model.ts +5 -5
  265. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +4 -2
  266. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
  267. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -2
  268. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +49 -38
  269. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +15 -13
  270. package/src/internal/solidity/compiler/downloader.ts +3 -2
  271. package/src/internal/solidity/compiler/solc-info.ts +1 -0
  272. package/src/internal/util/abi-helpers.ts +2 -2
  273. package/src/internal/util/bigint.ts +4 -4
  274. package/src/internal/util/hardforks.ts +2 -0
  275. package/src/internal/util/keccak.ts +2 -2
@@ -1,11 +1,16 @@
1
1
  import { Block } from "@nomicfoundation/ethereumjs-block";
2
2
  import { Common } from "@nomicfoundation/ethereumjs-common";
3
3
  import {
4
- Transaction,
4
+ LegacyTransaction,
5
5
  TransactionFactory,
6
6
  TypedTransaction,
7
7
  } from "@nomicfoundation/ethereumjs-tx";
8
- import { Address, toBuffer, toRpcSig } from "@nomicfoundation/ethereumjs-util";
8
+ import {
9
+ Address,
10
+ equalsBytes,
11
+ toBytes,
12
+ toRpcSig,
13
+ } from "@nomicfoundation/ethereumjs-util";
9
14
  import * as t from "io-ts";
10
15
  import cloneDeep from "lodash/cloneDeep";
11
16
  import { BoundExperimentalHardhatNetworkMessageTraceHook } from "../../../../types";
@@ -376,7 +381,9 @@ export class EthModule extends Base {
376
381
  await this._runHardhatNetworkMessageTraceHooks(trace, true);
377
382
 
378
383
  if (error !== undefined && this._throwOnCallFailures) {
379
- const callReturnData = trace?.returnData.toString("hex") ?? "";
384
+ const callReturnData = Buffer.from(trace?.returnData ?? []).toString(
385
+ "hex"
386
+ );
380
387
  (error as any).data = `0x${callReturnData}`;
381
388
 
382
389
  throw error;
@@ -452,7 +459,9 @@ export class EthModule extends Base {
452
459
  error
453
460
  );
454
461
 
455
- const callReturnData = trace?.returnData.toString("hex") ?? "";
462
+ const callReturnData = Buffer.from(trace?.returnData ?? []).toString(
463
+ "hex"
464
+ );
456
465
  (error as any).data = `0x${callReturnData}`;
457
466
 
458
467
  throw error;
@@ -819,7 +828,7 @@ export class EthModule extends Base {
819
828
  }
820
829
 
821
830
  const index = block.transactions.findIndex((btx) =>
822
- btx.hash().equals(hash)
831
+ equalsBytes(btx.hash(), hash)
823
832
  );
824
833
  const tx = block.transactions[index];
825
834
  if (tx === undefined) {
@@ -970,10 +979,10 @@ export class EthModule extends Base {
970
979
  try {
971
980
  tx = TransactionFactory.fromSerializedData(rawTx, {
972
981
  common: this._common,
973
- disableMaxInitCodeSizeCheck: true,
982
+ allowUnlimitedInitCodeSize: true,
974
983
  });
975
984
 
976
- this._validateEip3860MaxInitCodeSize(tx.to?.toBuffer(), tx.data);
985
+ this._validateEip3860MaxInitCodeSize(tx.to?.toBytes(), tx.data);
977
986
  } catch (error) {
978
987
  // This section of the code is incredibly dependant of TransactionFactory.fromSerializedData
979
988
  // AccessListEIP2930Transaction.fromSerializedTx and Transaction.fromSerializedTx
@@ -1014,7 +1023,7 @@ export class EthModule extends Base {
1014
1023
  throw new InvalidArgumentsError("Invalid Signature");
1015
1024
  }
1016
1025
 
1017
- if (tx instanceof Transaction) {
1026
+ if (tx instanceof LegacyTransaction) {
1018
1027
  this._validateEip155HardforkRequirement(tx);
1019
1028
  }
1020
1029
 
@@ -1266,7 +1275,7 @@ export class EthModule extends Base {
1266
1275
  gasLimit:
1267
1276
  rpcTx.gas !== undefined ? rpcTx.gas : this._node.getBlockGasLimit(),
1268
1277
  value: rpcTx.value !== undefined ? rpcTx.value : 0n,
1269
- data: rpcTx.data !== undefined ? rpcTx.data : toBuffer([]),
1278
+ data: rpcTx.data !== undefined ? rpcTx.data : toBytes([]),
1270
1279
  nonce:
1271
1280
  rpcTx.nonce !== undefined
1272
1281
  ? rpcTx.nonce
@@ -1503,7 +1512,9 @@ export class EthModule extends Base {
1503
1512
  if (trace.error !== undefined && this._throwOnTransactionFailures) {
1504
1513
  const e = trace.error;
1505
1514
 
1506
- const returnData = trace.trace?.returnData.toString("hex") ?? "";
1515
+ const returnData = Buffer.from(trace.trace?.returnData ?? []).toString(
1516
+ "hex"
1517
+ );
1507
1518
  (e as any).data = `0x${returnData}`;
1508
1519
  (e as any).transactionHash = bufferToRpcData(tx.hash());
1509
1520
 
@@ -1611,7 +1622,7 @@ export class EthModule extends Base {
1611
1622
  const transactions = result.block.transactions;
1612
1623
  for (let i = 0; i < transactions.length; i++) {
1613
1624
  const blockTx = transactions[i];
1614
- if (blockTx.hash().equals(tx.hash())) {
1625
+ if (equalsBytes(blockTx.hash(), tx.hash())) {
1615
1626
  return [result, i];
1616
1627
  }
1617
1628
  }
@@ -1638,6 +1649,15 @@ export class EthModule extends Base {
1638
1649
  private _validateTransactionAndCallRequest(
1639
1650
  rpcRequest: RpcCallRequest | RpcTransactionRequest
1640
1651
  ) {
1652
+ if (
1653
+ rpcRequest.blobs !== undefined ||
1654
+ rpcRequest.blobVersionedHashes !== undefined
1655
+ ) {
1656
+ throw new InvalidInputError(
1657
+ `An EIP-4844 (shard blob) transaction was received, but Hardhat doesn't have support for them yet.`
1658
+ );
1659
+ }
1660
+
1641
1661
  if (
1642
1662
  (rpcRequest.maxFeePerGas !== undefined ||
1643
1663
  rpcRequest.maxPriorityFeePerGas !== undefined) &&
@@ -1689,7 +1709,7 @@ You can use them by running Hardhat Network with 'hardfork' ${ACCESS_LIST_MIN_HA
1689
1709
  }
1690
1710
 
1691
1711
  // TODO: Find a better place for this
1692
- private _validateEip155HardforkRequirement(tx: Transaction) {
1712
+ private _validateEip155HardforkRequirement(tx: LegacyTransaction) {
1693
1713
  // 27 and 28 are only valid for non-EIP-155 legacy txs
1694
1714
  if (tx.v === 27n || tx.v === 28n) {
1695
1715
  return;
@@ -1703,8 +1723,8 @@ You can use them by running Hardhat Network with 'hardfork' ${EIP155_MIN_HARDFOR
1703
1723
  }
1704
1724
 
1705
1725
  private _validateEip3860MaxInitCodeSize(
1706
- to: Buffer | undefined,
1707
- data: Buffer
1726
+ to: Uint8Array | undefined,
1727
+ data: Uint8Array
1708
1728
  ) {
1709
1729
  if (!this._common.gteHardfork(EIP3860_MIN_HARDFORK)) {
1710
1730
  // this check is only relevant after shanghai
@@ -1730,6 +1750,12 @@ Enable the 'allowUnlimitedContractSize' option to allow init codes of any length
1730
1750
  }
1731
1751
 
1732
1752
  private _validateRawTransactionHardforkRequirements(rawTx: Buffer) {
1753
+ if (rawTx[0] <= 0x7f && rawTx[0] === 3) {
1754
+ throw new InvalidInputError(
1755
+ `An EIP-4844 (shard blob) transaction was received, but Hardhat doesn't have support for them yet.`
1756
+ );
1757
+ }
1758
+
1733
1759
  if (rawTx[0] <= 0x7f && rawTx[0] !== 1 && rawTx[0] !== 2) {
1734
1760
  throw new InvalidArgumentsError(`Invalid transaction type ${rawTx[0]}.
1735
1761
 
@@ -1,6 +1,9 @@
1
1
  import { Block } from "@nomicfoundation/ethereumjs-block";
2
2
  import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
3
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
3
+ import {
4
+ bytesToHex as bufferToHex,
5
+ equalsBytes,
6
+ } from "@nomicfoundation/ethereumjs-util";
4
7
  import ansiEscapes from "ansi-escapes";
5
8
  import chalk, { Chalk } from "chalk";
6
9
  import util from "util";
@@ -89,8 +92,8 @@ export class ModulesLogger {
89
92
 
90
93
  public logBlockFromAutomine(
91
94
  result: MineBlockResult,
92
- codes: Buffer[],
93
- txHashToHighlight: Buffer
95
+ codes: Uint8Array[],
96
+ txHashToHighlight: Uint8Array
94
97
  ) {
95
98
  const { block, blockResult, traces } = result;
96
99
  const { results } = blockResult;
@@ -113,7 +116,7 @@ export class ModulesLogger {
113
116
  const txTrace = traces[i];
114
117
  const code = codes[i];
115
118
 
116
- const highlightTxHash = tx.hash().equals(txHashToHighlight);
119
+ const highlightTxHash = equalsBytes(tx.hash(), txHashToHighlight);
117
120
 
118
121
  this._logTxInsideBlock(tx, txTrace, code, txGasUsed, {
119
122
  highlightTxHash,
@@ -216,8 +219,8 @@ export class ModulesLogger {
216
219
 
217
220
  this._logWithTitle("Transaction", txHash);
218
221
 
219
- this._logTxFrom(tx.getSenderAddress().toBuffer());
220
- this._logTxTo(tx.to?.toBuffer(), txTrace.trace);
222
+ this._logTxFrom(Buffer.from(tx.getSenderAddress().toBytes()));
223
+ this._logTxTo(tx.to?.toBytes(), txTrace.trace);
221
224
  this._logTxValue(tx.value);
222
225
  this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
223
226
 
@@ -251,8 +254,8 @@ export class ModulesLogger {
251
254
 
252
255
  this._logWithTitle("Transaction", txHash);
253
256
 
254
- this._logTxFrom(tx.getSenderAddress().toBuffer());
255
- this._logTxTo(tx.to?.toBuffer(), txTrace.trace);
257
+ this._logTxFrom(tx.getSenderAddress().toBytes());
258
+ this._logTxTo(tx.to?.toBytes(), txTrace.trace);
256
259
  this._logTxValue(tx.value);
257
260
  this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
258
261
 
@@ -565,7 +568,7 @@ export class ModulesLogger {
565
568
  private _logTxInsideBlock(
566
569
  tx: TypedTransaction,
567
570
  txTrace: GatherTracesResult,
568
- code: Buffer,
571
+ code: Uint8Array,
569
572
  txGasUsed: bigint,
570
573
  {
571
574
  highlightTxHash,
@@ -586,8 +589,8 @@ export class ModulesLogger {
586
589
 
587
590
  this._indent(() => {
588
591
  this._logContractAndFunctionName(txTrace.trace, code);
589
- this._logTxFrom(tx.getSenderAddress().toBuffer());
590
- this._logTxTo(tx.to?.toBuffer(), txTrace.trace);
592
+ this._logTxFrom(tx.getSenderAddress().toBytes());
593
+ this._logTxTo(tx.to?.toBytes(), txTrace.trace);
591
594
  this._logTxValue(tx.value);
592
595
  this._logWithTitle("Gas used", `${txGasUsed} of ${tx.gasLimit}`);
593
596
 
@@ -637,7 +640,7 @@ export class ModulesLogger {
637
640
 
638
641
  private _logContractAndFunctionName(
639
642
  trace: MessageTrace | undefined,
640
- code: Buffer,
643
+ code: Uint8Array,
641
644
  {
642
645
  printNonContractCalled = false,
643
646
  }: { printNonContractCalled?: boolean } = {}
@@ -721,7 +724,7 @@ export class ModulesLogger {
721
724
  this._methodCollapsedCount = 0;
722
725
  }
723
726
 
724
- private _logTxTo(to: Buffer | undefined, trace?: MessageTrace) {
727
+ private _logTxTo(to: Uint8Array | undefined, trace?: MessageTrace) {
725
728
  if (trace !== undefined && isCreateTrace(trace)) {
726
729
  return;
727
730
  }
@@ -740,7 +743,7 @@ export class ModulesLogger {
740
743
  this._logWithTitle("Value", weiToHumanReadableString(value));
741
744
  }
742
745
 
743
- private _logTxFrom(from: Buffer) {
746
+ private _logTxFrom(from: Uint8Array) {
744
747
  this._logWithTitle("From", bufferToHex(from));
745
748
  }
746
749
 
@@ -61,14 +61,14 @@ export interface GenesisAccount {
61
61
  balance: string | number | bigint;
62
62
  }
63
63
 
64
- export type AccessListBufferItem = [Buffer, Buffer[]];
64
+ export type AccessListBufferItem = [Uint8Array, Uint8Array[]];
65
65
 
66
66
  export interface CallParams {
67
- to?: Buffer;
68
- from: Buffer;
67
+ to?: Uint8Array;
68
+ from: Uint8Array;
69
69
  gasLimit: bigint;
70
70
  value: bigint;
71
- data: Buffer;
71
+ data: Uint8Array;
72
72
  // We use this access list format because @nomicfoundation/ethereumjs-tx access list data
73
73
  // forces us to use it or stringify them
74
74
  accessList?: AccessListBufferItem[];
@@ -81,15 +81,16 @@ export interface CallParams {
81
81
  export type TransactionParams =
82
82
  | LegacyTransactionParams
83
83
  | AccessListTransactionParams
84
- | EIP1559TransactionParams;
84
+ | EIP1559TransactionParams
85
+ | BlobTransactionParams;
85
86
 
86
87
  interface BaseTransactionParams {
87
88
  // `to` should be undefined for contract creation
88
- to?: Buffer;
89
- from: Buffer;
89
+ to?: Uint8Array;
90
+ from: Uint8Array;
90
91
  gasLimit: bigint;
91
92
  value: bigint;
92
- data: Buffer;
93
+ data: Uint8Array;
93
94
  nonce: bigint;
94
95
  }
95
96
 
@@ -112,25 +113,31 @@ export interface EIP1559TransactionParams extends BaseTransactionParams {
112
113
  maxPriorityFeePerGas: bigint;
113
114
  }
114
115
 
116
+ export interface BlobTransactionParams extends EIP1559TransactionParams {
117
+ blobs: Uint8Array[];
118
+ blobVersionedHashes: Uint8Array[];
119
+ }
120
+
115
121
  export interface FilterParams {
116
122
  fromBlock: bigint;
117
123
  toBlock: bigint;
118
- addresses: Buffer[];
119
- normalizedTopics: Array<Array<Buffer | null> | null>;
124
+ addresses: Uint8Array[];
125
+ normalizedTopics: Array<Array<Uint8Array | null> | null>;
120
126
  }
121
127
 
122
128
  export interface Snapshot {
123
129
  id: number;
124
130
  date: Date;
125
131
  latestBlock: Block;
126
- stateRoot: Buffer;
132
+ stateRoot: Uint8Array;
127
133
  txPoolSnapshotId: number;
128
134
  blockTimeOffsetSeconds: bigint;
129
135
  nextBlockTimestamp: bigint;
130
- irregularStatesByBlockNumber: Map<bigint, Buffer>;
136
+ irregularStatesByBlockNumber: Map<bigint, Uint8Array>;
131
137
  userProvidedNextBlockBaseFeePerGas: bigint | undefined;
132
138
  coinbase: string;
133
139
  mixHashGenerator: RandomBufferGenerator;
140
+ parentBeaconBlockRootGenerator: RandomBufferGenerator;
134
141
  }
135
142
 
136
143
  export type SendTransactionResult =