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 +1 @@
1
- {"version":3,"file":"keccak.d.ts","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":";AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C"}
1
+ {"version":3,"file":"keccak.d.ts","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEtD"}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.keccak256 = void 0;
7
7
  const keccak_1 = __importDefault(require("keccak"));
8
8
  function keccak256(data) {
9
- return (0, keccak_1.default)("keccak256").update(data).digest();
9
+ return (0, keccak_1.default)("keccak256").update(Buffer.from(data)).digest();
10
10
  }
11
11
  exports.keccak256 = keccak256;
12
12
  //# sourceMappingURL=keccak.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keccak.js","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsC;AAEtC,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAA,gBAAgB,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7D,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"keccak.js","sourceRoot":"","sources":["../../src/internal/util/keccak.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAsC;AAEtC,SAAgB,SAAS,CAAC,IAAgB;IACxC,OAAO,IAAA,gBAAgB,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1E,CAAC;AAFD,8BAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "2.19.5",
3
+ "version": "2.20.0",
4
4
  "author": "Nomic Labs LLC",
5
5
  "license": "MIT",
6
6
  "homepage": "https://hardhat.org",
@@ -84,16 +84,17 @@
84
84
  "dependencies": {
85
85
  "@ethersproject/abi": "^5.1.2",
86
86
  "@metamask/eth-sig-util": "^4.0.0",
87
- "@nomicfoundation/ethereumjs-block": "5.0.2",
88
- "@nomicfoundation/ethereumjs-blockchain": "7.0.2",
89
- "@nomicfoundation/ethereumjs-common": "4.0.2",
90
- "@nomicfoundation/ethereumjs-evm": "2.0.2",
91
- "@nomicfoundation/ethereumjs-rlp": "5.0.2",
92
- "@nomicfoundation/ethereumjs-statemanager": "2.0.2",
93
- "@nomicfoundation/ethereumjs-trie": "6.0.2",
94
- "@nomicfoundation/ethereumjs-tx": "5.0.2",
95
- "@nomicfoundation/ethereumjs-util": "9.0.2",
96
- "@nomicfoundation/ethereumjs-vm": "7.0.2",
87
+ "@nomicfoundation/ethereumjs-block": "5.0.4",
88
+ "@nomicfoundation/ethereumjs-blockchain": "7.0.4",
89
+ "@nomicfoundation/ethereumjs-common": "4.0.4",
90
+ "@nomicfoundation/ethereumjs-evm": "2.0.4",
91
+ "@nomicfoundation/ethereumjs-rlp": "5.0.4",
92
+ "@nomicfoundation/ethereumjs-statemanager": "2.0.4",
93
+ "@nomicfoundation/ethereumjs-trie": "6.0.4",
94
+ "@nomicfoundation/ethereumjs-tx": "5.0.4",
95
+ "@nomicfoundation/ethereumjs-util": "9.0.4",
96
+ "@nomicfoundation/ethereumjs-verkle": "0.0.2",
97
+ "@nomicfoundation/ethereumjs-vm": "7.0.4",
97
98
  "@nomicfoundation/solidity-analyzer": "^0.1.0",
98
99
  "@sentry/node": "^5.18.1",
99
100
  "@types/bn.js": "^5.1.0",
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
- pragma solidity ^0.8.9;
2
+ pragma solidity ^0.8.24;
3
3
 
4
4
  // Uncomment this line to use console.log
5
5
  // import "hardhat/console.sol";
@@ -2,5 +2,5 @@ require("@nomicfoundation/hardhat-toolbox");
2
2
 
3
3
  /** @type import('hardhat/config').HardhatUserConfig */
4
4
  module.exports = {
5
- solidity: "0.8.19",
5
+ solidity: "0.8.24",
6
6
  };
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
- pragma solidity ^0.8.9;
2
+ pragma solidity ^0.8.24;
3
3
 
4
4
  // Uncomment this line to use console.log
5
5
  // import "hardhat/console.sol";
@@ -2,5 +2,5 @@ require("@nomicfoundation/hardhat-toolbox");
2
2
 
3
3
  /** @type import('hardhat/config').HardhatUserConfig */
4
4
  module.exports = {
5
- solidity: "0.8.19",
5
+ solidity: "0.8.24",
6
6
  };
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
- pragma solidity ^0.8.9;
2
+ pragma solidity ^0.8.24;
3
3
 
4
4
  // Uncomment this line to use console.log
5
5
  // import "hardhat/console.sol";
@@ -2,7 +2,7 @@ import { HardhatUserConfig } from "hardhat/config";
2
2
  import "@nomicfoundation/hardhat-toolbox";
3
3
 
4
4
  const config: HardhatUserConfig = {
5
- solidity: "0.8.19",
5
+ solidity: "0.8.24",
6
6
  };
7
7
 
8
8
  export default config;
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
- pragma solidity ^0.8.9;
2
+ pragma solidity ^0.8.24;
3
3
 
4
4
  // Uncomment this line to use console.log
5
5
  // import "hardhat/console.sol";
@@ -2,7 +2,7 @@ import { HardhatUserConfig } from "hardhat/config";
2
2
  import "@nomicfoundation/hardhat-toolbox-viem";
3
3
 
4
4
  const config: HardhatUserConfig = {
5
- solidity: "0.8.19",
5
+ solidity: "0.8.24",
6
6
  };
7
7
 
8
8
  export default config;
@@ -51,8 +51,12 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
51
51
  !Array.isArray(networkConfig.accounts) &&
52
52
  networkConfig.accounts.mnemonic === HARDHAT_NETWORK_MNEMONIC;
53
53
 
54
- const { bufferToHex, privateToAddress, toBuffer, toChecksumAddress } =
55
- require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
54
+ const {
55
+ bytesToHex: bufferToHex,
56
+ privateToAddress,
57
+ toBytes,
58
+ toChecksumAddress,
59
+ } = require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
56
60
 
57
61
  console.log("Accounts");
58
62
  console.log("========");
@@ -69,7 +73,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
69
73
 
70
74
  for (const [index, account] of accounts.entries()) {
71
75
  const address = toChecksumAddress(
72
- bufferToHex(privateToAddress(toBuffer(account.privateKey)))
76
+ bufferToHex(privateToAddress(toBytes(account.privateKey)))
73
77
  );
74
78
 
75
79
  const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
@@ -77,7 +81,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
77
81
  let entry = `Account #${index}: ${address} (${balance} ETH)`;
78
82
 
79
83
  if (isDefaultConfig) {
80
- const privateKey = bufferToHex(toBuffer(account.privateKey));
84
+ const privateKey = bufferToHex(toBytes(account.privateKey));
81
85
  entry += `
82
86
  Private Key: ${privateKey}`;
83
87
  }
@@ -126,7 +126,10 @@ export class Analytics {
126
126
  }
127
127
 
128
128
  let eventParams = {};
129
- if (scopeName === "ignition" && taskName === "deploy") {
129
+ if (
130
+ (scopeName === "ignition" && taskName === "deploy") ||
131
+ (scopeName === undefined && taskName === "deploy")
132
+ ) {
130
133
  eventParams = {
131
134
  scope: scopeName,
132
135
  task: taskName,
@@ -251,7 +251,7 @@ async function printRecommendedDepsInstallationInstructions(
251
251
  // exported so we can test that it uses the latest supported version of solidity
252
252
  export const EMPTY_HARDHAT_CONFIG = `/** @type import('hardhat/config').HardhatUserConfig */
253
253
  module.exports = {
254
- solidity: "0.8.19",
254
+ solidity: "0.8.24",
255
255
  };
256
256
  `;
257
257
 
@@ -22,6 +22,7 @@ export const HARDHAT_NETWORK_SUPPORTED_HARDFORKS = [
22
22
  "grayGlacier",
23
23
  "merge",
24
24
  "shanghai",
25
+ "cancun",
25
26
  ];
26
27
 
27
28
  export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = ["fifo", "priority"] as const;
@@ -238,6 +238,19 @@ function resolveHardhatNetworkConfig(
238
238
  delete config.initialBaseFeePerGas;
239
239
  }
240
240
 
241
+ if (
242
+ hardhatNetworkConfig.enableTransientStorage === true &&
243
+ hardhatNetworkConfig.hardfork === undefined
244
+ ) {
245
+ config.hardfork = "cancun";
246
+ }
247
+ if (
248
+ hardhatNetworkConfig.enableTransientStorage === false &&
249
+ hardhatNetworkConfig.hardfork === undefined
250
+ ) {
251
+ config.hardfork = "shanghai";
252
+ }
253
+
241
254
  return config;
242
255
  }
243
256
 
@@ -498,6 +498,25 @@ export function getValidationErrors(config: any): string[] {
498
498
  }
499
499
  });
500
500
  }
501
+
502
+ if (hardhatNetwork.hardfork !== undefined) {
503
+ if (
504
+ !hardforkGte(hardhatNetwork.hardfork, HardforkName.CANCUN) &&
505
+ hardhatNetwork.enableTransientStorage === true
506
+ ) {
507
+ errors.push(
508
+ `'enableTransientStorage' cannot be enabled if the hardfork is explicitly set to a pre-cancun value. If you want to use transient storage, use 'cancun' as the hardfork.`
509
+ );
510
+ }
511
+ if (
512
+ hardforkGte(hardhatNetwork.hardfork, HardforkName.CANCUN) &&
513
+ hardhatNetwork.enableTransientStorage === false
514
+ ) {
515
+ errors.push(
516
+ `'enableTransientStorage' cannot be disabled if the hardfork is explicitly set to cancun or later. If you want to disable transient storage, use a hardfork before 'cancun'.`
517
+ );
518
+ }
519
+ }
501
520
  }
502
521
 
503
522
  for (const [networkName, netConfig] of Object.entries<any>(
@@ -129,6 +129,17 @@ export const defaultHardhatNetworkParams: Omit<
129
129
  ]),
130
130
  },
131
131
  ],
132
+ [
133
+ 11155111, // sepolia
134
+ {
135
+ hardforkHistory: new Map([
136
+ [HardforkName.GRAY_GLACIER, 0],
137
+ [HardforkName.MERGE, 1_450_409],
138
+ [HardforkName.SHANGHAI, 2_990_908],
139
+ [HardforkName.CANCUN, 5_187_023],
140
+ ]),
141
+ },
142
+ ],
132
143
  ]),
133
144
  };
134
145
 
@@ -1,7 +1,7 @@
1
1
  import {
2
- bufferToHex,
2
+ bytesToHex as bufferToHex,
3
3
  isValidAddress,
4
- toBuffer,
4
+ toBytes,
5
5
  } from "@nomicfoundation/ethereumjs-util";
6
6
  import * as t from "io-ts";
7
7
 
@@ -22,14 +22,16 @@ export const rpcQuantity = new t.Type<bigint>(
22
22
  export const rpcData = new t.Type<Buffer>(
23
23
  "DATA",
24
24
  Buffer.isBuffer,
25
- (u, c) => (isRpcDataString(u) ? t.success(toBuffer(u)) : t.failure(u, c)),
25
+ (u, c) =>
26
+ isRpcDataString(u) ? t.success(Buffer.from(toBytes(u))) : t.failure(u, c),
26
27
  t.identity
27
28
  );
28
29
 
29
30
  export const rpcHash = new t.Type<Buffer>(
30
31
  "HASH",
31
32
  (v): v is Buffer => Buffer.isBuffer(v) && v.length === HASH_LENGTH_BYTES,
32
- (u, c) => (isRpcHashString(u) ? t.success(toBuffer(u)) : t.failure(u, c)),
33
+ (u, c) =>
34
+ isRpcHashString(u) ? t.success(Buffer.from(toBytes(u))) : t.failure(u, c),
33
35
  t.identity
34
36
  );
35
37
 
@@ -96,7 +98,10 @@ function validateStorageSlot(u: unknown, c: t.Context): t.Validation<bigint> {
96
98
  export const rpcAddress = new t.Type<Buffer>(
97
99
  "ADDRESS",
98
100
  (v): v is Buffer => Buffer.isBuffer(v) && v.length === ADDRESS_LENGTH_BYTES,
99
- (u, c) => (isRpcAddressString(u) ? t.success(toBuffer(u)) : t.failure(u, c)),
101
+ (u, c) =>
102
+ isRpcAddressString(u)
103
+ ? t.success(Buffer.from(toBytes(u)))
104
+ : t.failure(u, c),
100
105
  t.identity
101
106
  );
102
107
 
@@ -173,7 +178,7 @@ export function rpcDataToBigInt(data: string): bigint {
173
178
  }
174
179
 
175
180
  export function bufferToRpcData(
176
- buffer: Buffer,
181
+ buffer: Uint8Array,
177
182
  padToBytes: number = 0
178
183
  ): string {
179
184
  let s = bufferToHex(buffer);
@@ -191,7 +196,7 @@ export function rpcDataToBuffer(data: string): Buffer {
191
196
  });
192
197
  }
193
198
 
194
- return toBuffer(data);
199
+ return Buffer.from(toBytes(data));
195
200
  }
196
201
 
197
202
  // Type guards
@@ -5,6 +5,7 @@ import { rpcAccessList } from "../access-list";
5
5
  import {
6
6
  rpcAddress,
7
7
  rpcData,
8
+ rpcHash,
8
9
  rpcQuantity,
9
10
  rpcStorageSlot,
10
11
  rpcStorageSlotHexString,
@@ -23,6 +24,8 @@ export const rpcCallRequest = t.type(
23
24
  accessList: optionalOrNullable(rpcAccessList),
24
25
  maxFeePerGas: optionalOrNullable(rpcQuantity),
25
26
  maxPriorityFeePerGas: optionalOrNullable(rpcQuantity),
27
+ blobs: optionalOrNullable(t.array(rpcData)),
28
+ blobVersionedHashes: optionalOrNullable(t.array(rpcHash)),
26
29
  },
27
30
  "RpcCallRequest"
28
31
  );
@@ -2,7 +2,7 @@ import * as t from "io-ts";
2
2
 
3
3
  import { optionalOrNullable } from "../../../../util/io-ts";
4
4
  import { rpcAccessList } from "../access-list";
5
- import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
5
+ import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
6
6
 
7
7
  // Type used by eth_sendTransaction
8
8
  export const rpcTransactionRequest = t.type(
@@ -18,6 +18,8 @@ export const rpcTransactionRequest = t.type(
18
18
  chainId: optionalOrNullable(rpcQuantity),
19
19
  maxFeePerGas: optionalOrNullable(rpcQuantity),
20
20
  maxPriorityFeePerGas: optionalOrNullable(rpcQuantity),
21
+ blobs: optionalOrNullable(t.array(rpcData)),
22
+ blobVersionedHashes: optionalOrNullable(t.array(rpcHash)),
21
23
  },
22
24
  "RpcTransactionRequest"
23
25
  );
@@ -38,6 +40,8 @@ export interface RpcTransactionRequestInput {
38
40
  }>;
39
41
  maxFeePerGas?: string;
40
42
  maxPriorityFeePerGas?: string;
43
+ blobs?: string[];
44
+ blobVersionedHashes?: string[];
41
45
  }
42
46
 
43
47
  export type RpcTransactionRequest = t.TypeOf<typeof rpcTransactionRequest>;
@@ -38,6 +38,9 @@ const baseBlockResponse = {
38
38
  baseFeePerGas: optional(rpcQuantity),
39
39
  withdrawals: optional(t.array(rpcWithdrawalItem)),
40
40
  withdrawalsRoot: optional(rpcHash),
41
+ parentBeaconBlockRoot: optional(rpcHash),
42
+ blobGasUsed: optional(rpcQuantity),
43
+ excessBlobGas: optional(rpcQuantity),
41
44
  };
42
45
 
43
46
  export type RpcBlock = t.TypeOf<typeof rpcBlock>;
@@ -43,8 +43,13 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
43
43
  }
44
44
 
45
45
  public async request(args: RequestArguments): Promise<unknown> {
46
- const { ecsign, hashPersonalMessage, toRpcSig, toBuffer, bufferToHex } =
47
- await import("@nomicfoundation/ethereumjs-util");
46
+ const {
47
+ ecsign,
48
+ hashPersonalMessage,
49
+ toRpcSig,
50
+ toBytes,
51
+ bytesToHex: bufferToHex,
52
+ } = await import("@nomicfoundation/ethereumjs-util");
48
53
 
49
54
  if (
50
55
  args.method === "eth_accounts" ||
@@ -65,7 +70,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
65
70
  }
66
71
 
67
72
  const privateKey = this._getPrivateKeyForAddress(address);
68
- const messageHash = hashPersonalMessage(toBuffer(data));
73
+ const messageHash = hashPersonalMessage(toBytes(data));
69
74
  const signature = ecsign(messageHash, privateKey);
70
75
  return toRpcSig(signature.v, signature.r, signature.s);
71
76
  }
@@ -84,7 +89,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
84
89
  }
85
90
 
86
91
  const privateKey = this._getPrivateKeyForAddress(address);
87
- const messageHash = hashPersonalMessage(toBuffer(data));
92
+ const messageHash = hashPersonalMessage(toBytes(data));
88
93
  const signature = ecsign(messageHash, privateKey);
89
94
  return toRpcSig(signature.v, signature.r, signature.s);
90
95
  }
@@ -189,13 +194,13 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
189
194
 
190
195
  private _initializePrivateKeys(localAccountsHexPrivateKeys: string[]) {
191
196
  const {
192
- bufferToHex,
193
- toBuffer,
197
+ bytesToHex: bufferToHex,
198
+ toBytes,
194
199
  privateToAddress,
195
200
  } = require("@nomicfoundation/ethereumjs-util");
196
201
 
197
202
  const privateKeys: Buffer[] = localAccountsHexPrivateKeys.map((h) =>
198
- toBuffer(h)
203
+ toBytes(h)
199
204
  );
200
205
 
201
206
  for (const pk of privateKeys) {
@@ -205,7 +210,9 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
205
210
  }
206
211
 
207
212
  private _getPrivateKeyForAddress(address: Buffer): Buffer {
208
- const { bufferToHex } = require("@nomicfoundation/ethereumjs-util");
213
+ const {
214
+ bytesToHex: bufferToHex,
215
+ } = require("@nomicfoundation/ethereumjs-util");
209
216
  const pk = this._addressToPrivateKey.get(bufferToHex(address));
210
217
  if (pk === undefined) {
211
218
  throw new HardhatError(ERRORS.NETWORK.NOT_LOCAL_ACCOUNT, {
@@ -225,7 +232,9 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
225
232
  }
226
233
 
227
234
  private async _getNonce(address: Buffer): Promise<bigint> {
228
- const { bufferToHex } = await import("@nomicfoundation/ethereumjs-util");
235
+ const { bytesToHex: bufferToHex } = await import(
236
+ "@nomicfoundation/ethereumjs-util"
237
+ );
229
238
 
230
239
  const response = (await this._wrappedProvider.request({
231
240
  method: "eth_getTransactionCount",
@@ -239,8 +248,8 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
239
248
  transactionRequest: RpcTransactionRequest,
240
249
  chainId: number,
241
250
  privateKey: Buffer
242
- ): Promise<Buffer> {
243
- const { AccessListEIP2930Transaction, Transaction } = await import(
251
+ ): Promise<Uint8Array> {
252
+ const { AccessListEIP2930Transaction, LegacyTransaction } = await import(
244
253
  "@nomicfoundation/ethereumjs-tx"
245
254
  );
246
255
 
@@ -282,7 +291,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
282
291
  { common }
283
292
  );
284
293
  } else {
285
- transaction = Transaction.fromTxData(txData, { common });
294
+ transaction = LegacyTransaction.fromTxData(txData, { common });
286
295
  }
287
296
 
288
297
  const signedTransaction = transaction.sign(privateKey);
@@ -311,7 +320,9 @@ export class HDWalletProvider extends LocalAccountsProvider {
311
320
  passphrase
312
321
  );
313
322
 
314
- const { bufferToHex } = require("@nomicfoundation/ethereumjs-util");
323
+ const {
324
+ bytesToHex: bufferToHex,
325
+ } = require("@nomicfoundation/ethereumjs-util");
315
326
  const privateKeysAsHex = privateKeys.map((pk) => bufferToHex(pk));
316
327
  super(provider, privateKeysAsHex);
317
328
  }
@@ -53,7 +53,7 @@ export function normalizeHardhatNetworkAccountsConfig(
53
53
  return accountsConfig;
54
54
  }
55
55
 
56
- const { bufferToHex } = require("@nomicfoundation/ethereumjs-util");
56
+ const { bytesToHex } = require("@nomicfoundation/ethereumjs-util");
57
57
 
58
58
  return derivePrivateKeys(
59
59
  accountsConfig.mnemonic,
@@ -62,7 +62,7 @@ export function normalizeHardhatNetworkAccountsConfig(
62
62
  accountsConfig.count,
63
63
  accountsConfig.passphrase
64
64
  ).map((pk) => ({
65
- privateKey: bufferToHex(pk),
65
+ privateKey: bytesToHex(pk),
66
66
  balance: accountsConfig.accountsBalance ?? DEFAULT_HARDHAT_NETWORK_BALANCE,
67
67
  }));
68
68
  }
@@ -1,4 +1,7 @@
1
- import { Address, bufferToHex } from "@nomicfoundation/ethereumjs-util";
1
+ import {
2
+ Address,
3
+ bytesToHex as bufferToHex,
4
+ } from "@nomicfoundation/ethereumjs-util";
2
5
  import fsExtra from "fs-extra";
3
6
  import * as t from "io-ts";
4
7
  import path from "path";
@@ -136,7 +139,7 @@ export class JsonRpcClient {
136
139
  );
137
140
  }
138
141
 
139
- public async getTransactionCount(address: Buffer, blockNumber: bigint) {
142
+ public async getTransactionCount(address: Uint8Array, blockNumber: bigint) {
140
143
  return this._perform(
141
144
  "eth_getTransactionCount",
142
145
  [bufferToHex(address), numberToRpcQuantity(blockNumber)],
@@ -157,8 +160,8 @@ export class JsonRpcClient {
157
160
  public async getLogs(options: {
158
161
  fromBlock: bigint;
159
162
  toBlock: bigint;
160
- address?: Buffer | Buffer[];
161
- topics?: Array<Array<Buffer | null> | null>;
163
+ address?: Uint8Array | Uint8Array[];
164
+ topics?: Array<Array<Uint8Array | null> | null>;
162
165
  }) {
163
166
  let address: string | string[] | undefined;
164
167
  if (options.address !== undefined) {
@@ -1,7 +1,7 @@
1
1
  import { Block } from "@nomicfoundation/ethereumjs-block";
2
2
  import { Common } from "@nomicfoundation/ethereumjs-common";
3
3
  import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
4
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
4
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
5
5
  import { Bloom } from "@nomicfoundation/ethereumjs-vm";
6
6
 
7
7
  import { assertHardhatInvariant } from "../../core/errors";
@@ -52,23 +52,23 @@ export class BlockchainData {
52
52
  return this._blocksByNumber.get(blockNumber);
53
53
  }
54
54
 
55
- public getBlockByHash(blockHash: Buffer) {
55
+ public getBlockByHash(blockHash: Uint8Array) {
56
56
  return this._blocksByHash.get(bufferToHex(blockHash));
57
57
  }
58
58
 
59
- public getBlockByTransactionHash(transactionHash: Buffer) {
59
+ public getBlockByTransactionHash(transactionHash: Uint8Array) {
60
60
  return this._blocksByTransactions.get(bufferToHex(transactionHash));
61
61
  }
62
62
 
63
- public getTransaction(transactionHash: Buffer) {
63
+ public getTransaction(transactionHash: Uint8Array) {
64
64
  return this._transactions.get(bufferToHex(transactionHash));
65
65
  }
66
66
 
67
- public getTransactionReceipt(transactionHash: Buffer) {
67
+ public getTransactionReceipt(transactionHash: Uint8Array) {
68
68
  return this._transactionReceipts.get(bufferToHex(transactionHash));
69
69
  }
70
70
 
71
- public getTotalDifficulty(blockHash: Buffer) {
71
+ public getTotalDifficulty(blockHash: Uint8Array) {
72
72
  return this._totalDifficulty.get(bufferToHex(blockHash));
73
73
  }
74
74
 
@@ -1,7 +1,15 @@
1
1
  import { Block } from "@nomicfoundation/ethereumjs-block";
2
+ import {
3
+ BlockchainInterface,
4
+ BlockchainEvents,
5
+ } from "@nomicfoundation/ethereumjs-blockchain";
2
6
  import { Common } from "@nomicfoundation/ethereumjs-common";
3
7
  import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
4
- import { zeros } from "@nomicfoundation/ethereumjs-util";
8
+ import {
9
+ AsyncEventEmitter,
10
+ equalsBytes,
11
+ zeros,
12
+ } from "@nomicfoundation/ethereumjs-util";
5
13
 
6
14
  import { BlockchainBase } from "./BlockchainBase";
7
15
  import { FilterParams } from "./node-types";
@@ -15,11 +23,28 @@ export class HardhatBlockchain
15
23
  implements HardhatBlockchainInterface
16
24
  {
17
25
  private _length = 0n;
26
+ public events?: AsyncEventEmitter<BlockchainEvents> | undefined;
18
27
 
19
28
  constructor(common: Common) {
20
29
  super(common);
21
30
  }
22
31
 
32
+ public shallowCopy(): BlockchainInterface {
33
+ return this;
34
+ }
35
+
36
+ public getIteratorHead(_name?: string | undefined): Promise<Block> {
37
+ throw new Error("Method not implemented.");
38
+ }
39
+
40
+ public setIteratorHead(_tag: string, _headHash: Uint8Array): Promise<void> {
41
+ throw new Error("Method not implemented.");
42
+ }
43
+
44
+ public getCanonicalHeadBlock(): Promise<Block> {
45
+ throw new Error("Method not implemented.");
46
+ }
47
+
23
48
  public getLatestBlockNumber(): bigint {
24
49
  return BigInt(this._length - 1n);
25
50
  }
@@ -99,10 +124,10 @@ export class HardhatBlockchain
99
124
  }
100
125
 
101
126
  if (
102
- (blockNumber === 0n && !parentHash.equals(zeros(32))) ||
127
+ (blockNumber === 0n && !equalsBytes(parentHash, zeros(32))) ||
103
128
  (blockNumber > 0 &&
104
129
  parent !== undefined &&
105
- !parentHash.equals(parent.hash()))
130
+ !equalsBytes(parentHash, parent.hash()))
106
131
  ) {
107
132
  throw new Error("Invalid parent hash");
108
133
  }