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,5 +1,9 @@
1
1
  import { Common } from "@nomicfoundation/ethereumjs-common";
2
- import { Transaction, TxData, TxOptions } from "@nomicfoundation/ethereumjs-tx";
2
+ import {
3
+ LegacyTransaction,
4
+ LegacyTxData,
5
+ TxOptions,
6
+ } from "@nomicfoundation/ethereumjs-tx";
3
7
  import { Address } from "@nomicfoundation/ethereumjs-util";
4
8
 
5
9
  import { InternalError } from "../../../core/providers/errors";
@@ -20,15 +24,15 @@ import { InternalError } from "../../../core/providers/errors";
20
24
  * This class doesn't use its Common instance, so there's no need to provide
21
25
  * one.
22
26
  */
23
- export class ReadOnlyValidTransaction extends Transaction {
24
- public static fromTxData(_txData: TxData, _opts?: TxOptions): never {
27
+ export class ReadOnlyValidTransaction extends LegacyTransaction {
28
+ public static fromTxData(_txData: LegacyTxData, _opts?: TxOptions): never {
25
29
  throw new InternalError(
26
30
  "`fromTxData` is not implemented in ReadOnlyValidTransaction"
27
31
  );
28
32
  }
29
33
 
30
34
  public static fromSerializedTx(
31
- _serialized: Buffer,
35
+ _serialized: Uint8Array,
32
36
  _opts?: TxOptions
33
37
  ): never {
34
38
  throw new InternalError(
@@ -37,7 +41,7 @@ export class ReadOnlyValidTransaction extends Transaction {
37
41
  }
38
42
 
39
43
  public static fromRlpSerializedTx(
40
- _serialized: Buffer,
44
+ _serialized: Uint8Array,
41
45
  _opts?: TxOptions
42
46
  ): never {
43
47
  throw new InternalError(
@@ -45,7 +49,10 @@ export class ReadOnlyValidTransaction extends Transaction {
45
49
  );
46
50
  }
47
51
 
48
- public static fromValuesArray(_values: Buffer[], _opts?: TxOptions): never {
52
+ public static fromValuesArray(
53
+ _values: Uint8Array[],
54
+ _opts?: TxOptions
55
+ ): never {
49
56
  throw new InternalError(
50
57
  "`fromRlpSerializedTx` is not implemented in ReadOnlyValidTransaction"
51
58
  );
@@ -55,8 +62,8 @@ export class ReadOnlyValidTransaction extends Transaction {
55
62
 
56
63
  private readonly _sender: Address;
57
64
 
58
- constructor(sender: Address, data: TxData = {}) {
59
- super(data, { freeze: false, disableMaxInitCodeSizeCheck: true });
65
+ constructor(sender: Address, data: LegacyTxData = {}) {
66
+ super(data, { freeze: false, allowUnlimitedInitCodeSize: true });
60
67
 
61
68
  this.common = this._getCommon();
62
69
  this._sender = sender;
@@ -1,5 +1,9 @@
1
1
  import { Common } from "@nomicfoundation/ethereumjs-common";
2
- import { Transaction, TxData, TxOptions } from "@nomicfoundation/ethereumjs-tx";
2
+ import {
3
+ LegacyTransaction,
4
+ LegacyTxData,
5
+ TxOptions,
6
+ } from "@nomicfoundation/ethereumjs-tx";
3
7
  import { Address } from "@nomicfoundation/ethereumjs-util";
4
8
 
5
9
  import { InternalError } from "../../../core/providers/errors";
@@ -10,15 +14,15 @@ import { InternalError } from "../../../core/providers/errors";
10
14
  * This class is like `ReadOnlyValidTransaction` but for
11
15
  * a transaction with an unknown tx type.
12
16
  */
13
- export class ReadOnlyValidUnknownTypeTransaction extends Transaction {
14
- public static fromTxData(_txData: TxData, _opts?: TxOptions): never {
17
+ export class ReadOnlyValidUnknownTypeTransaction extends LegacyTransaction {
18
+ public static fromTxData(_txData: LegacyTxData, _opts?: TxOptions): never {
15
19
  throw new InternalError(
16
20
  "`fromTxData` is not implemented in ReadOnlyValidUnknownTypeTransaction"
17
21
  );
18
22
  }
19
23
 
20
24
  public static fromSerializedTx(
21
- _serialized: Buffer,
25
+ _serialized: Uint8Array,
22
26
  _opts?: TxOptions
23
27
  ): never {
24
28
  throw new InternalError(
@@ -27,7 +31,7 @@ export class ReadOnlyValidUnknownTypeTransaction extends Transaction {
27
31
  }
28
32
 
29
33
  public static fromRlpSerializedTx(
30
- _serialized: Buffer,
34
+ _serialized: Uint8Array,
31
35
  _opts?: TxOptions
32
36
  ): never {
33
37
  throw new InternalError(
@@ -35,7 +39,10 @@ export class ReadOnlyValidUnknownTypeTransaction extends Transaction {
35
39
  );
36
40
  }
37
41
 
38
- public static fromValuesArray(_values: Buffer[], _opts?: TxOptions): never {
42
+ public static fromValuesArray(
43
+ _values: Uint8Array[],
44
+ _opts?: TxOptions
45
+ ): never {
39
46
  throw new InternalError(
40
47
  "`fromRlpSerializedTx` is not implemented in ReadOnlyValidUnknownTypeTransaction"
41
48
  );
@@ -46,8 +53,8 @@ export class ReadOnlyValidUnknownTypeTransaction extends Transaction {
46
53
  private readonly _sender: Address;
47
54
  private readonly _actualType: number;
48
55
 
49
- constructor(sender: Address, type: number, data: TxData = {}) {
50
- super(data, { freeze: false, disableMaxInitCodeSizeCheck: true });
56
+ constructor(sender: Address, type: number, data: LegacyTxData = {}) {
57
+ super(data, { freeze: false, allowUnlimitedInitCodeSize: true });
51
58
 
52
59
  this.common = this._getCommon();
53
60
  this._sender = sender;
@@ -9,17 +9,17 @@ export interface HardhatBlockchainInterface extends BlockchainInterface {
9
9
  reserveBlocks(
10
10
  count: bigint,
11
11
  interval: bigint,
12
- previousBlockStateRoot: Buffer,
12
+ previousBlockStateRoot: Uint8Array,
13
13
  previousBlockTotalDifficulty: bigint,
14
14
  previousBlockBaseFeePerGas: bigint | undefined
15
15
  ): void;
16
16
  deleteLaterBlocks(block: Block): void;
17
- getBlockByTransactionHash(transactionHash: Buffer): Promise<Block | null>;
17
+ getBlockByTransactionHash(transactionHash: Uint8Array): Promise<Block | null>;
18
18
  getLatestBlock(): Promise<Block>;
19
19
  getLatestBlockNumber(): bigint;
20
20
  getLogs(filterParams: FilterParams): Promise<RpcLogOutput[]>;
21
- getTotalDifficulty(blockHash: Buffer): Promise<bigint>;
21
+ getTotalDifficulty(blockHash: Uint8Array): Promise<bigint>;
22
22
  getTransactionReceipt(
23
- transactionHash: Buffer
23
+ transactionHash: Uint8Array
24
24
  ): Promise<RpcReceiptOutput | null>;
25
25
  }
@@ -2,7 +2,7 @@ import {
2
2
  Account,
3
3
  Address,
4
4
  privateToAddress,
5
- toBuffer,
5
+ toBytes,
6
6
  } from "@nomicfoundation/ethereumjs-util";
7
7
 
8
8
  import { GenesisAccount } from "../node-types";
@@ -19,7 +19,7 @@ export function makeAccount(ga: GenesisAccount) {
19
19
  }
20
20
 
21
21
  const account = Account.fromAccountData({ balance });
22
- const pk = toBuffer(ga.privateKey);
22
+ const pk = toBytes(ga.privateKey);
23
23
  const address = new Address(privateToAddress(pk));
24
24
  return { account, address };
25
25
  }
@@ -1,6 +1,8 @@
1
1
  import { Common } from "@nomicfoundation/ethereumjs-common";
2
2
 
3
3
  import { LocalNodeConfig } from "../node-types";
4
+ import { HardforkName } from "../../../util/hardforks";
5
+ import { assertTransientStorageCompatibility } from "../node";
4
6
 
5
7
  export function makeCommon({
6
8
  chainId,
@@ -8,7 +10,10 @@ export function makeCommon({
8
10
  hardfork,
9
11
  enableTransientStorage,
10
12
  }: LocalNodeConfig) {
11
- const otherSettings = enableTransientStorage ? { eips: [1153] } : {};
13
+ assertTransientStorageCompatibility(
14
+ enableTransientStorage,
15
+ hardfork as HardforkName
16
+ );
12
17
 
13
18
  const common = Common.custom(
14
19
  {
@@ -16,8 +21,9 @@ export function makeCommon({
16
21
  networkId,
17
22
  },
18
23
  {
19
- hardfork,
20
- ...otherSettings,
24
+ // ethereumjs uses this name for the merge hardfork
25
+ hardfork:
26
+ hardfork === HardforkName.MERGE ? "mergeForkIdTransition" : hardfork,
21
27
  }
22
28
  );
23
29
 
@@ -1,7 +1,7 @@
1
1
  import {
2
- AccessListEIP2930Transaction,
3
- FeeMarketEIP1559Transaction,
4
- TxData,
2
+ AccessListEIP2930TxData,
3
+ FeeMarketEIP1559TxData,
4
+ LegacyTxData,
5
5
  } from "@nomicfoundation/ethereumjs-tx";
6
6
  import { Address } from "@nomicfoundation/ethereumjs-util";
7
7
 
@@ -9,7 +9,7 @@ import { createNonCryptographicHashBasedIdentifier } from "../../../util/hash";
9
9
 
10
10
  // Produces a signature with r and s values taken from a hash of the inputs.
11
11
  export function makeFakeSignature(
12
- tx: TxData | AccessListEIP2930Transaction | FeeMarketEIP1559Transaction,
12
+ tx: LegacyTxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData,
13
13
  sender: Address
14
14
  ): {
15
15
  r: number;
@@ -27,9 +27,23 @@ export function makeFakeSignature(
27
27
  "maxPriorityFeePerGas" in tx ? tx.maxPriorityFeePerGas : "",
28
28
  "maxFeePerGas" in tx ? tx.maxFeePerGas : "",
29
29
  "accessList" in tx
30
- ? tx.accessList?.map(([buf, bufs]) =>
31
- [buf, ...bufs].map((b) => b.toString("hex")).join(";")
32
- )
30
+ ? tx.accessList?.map((accessListItem) => {
31
+ let address: string;
32
+ let storageKeys: string[];
33
+ if (Array.isArray(accessListItem)) {
34
+ address = Buffer.from(accessListItem[0]).toString("hex");
35
+ storageKeys = accessListItem[1].map((b) =>
36
+ Buffer.from(b).toString("hex")
37
+ );
38
+ } else {
39
+ address = accessListItem.address;
40
+ storageKeys = accessListItem.storageKeys;
41
+ }
42
+
43
+ return [address, ...storageKeys]
44
+ .map((b) => Buffer.from(b).toString("hex"))
45
+ .join(";");
46
+ })
33
47
  : "",
34
48
  ]
35
49
  .map((a) => a?.toString() ?? "")
@@ -1,7 +1,7 @@
1
1
  import { Trie } from "@nomicfoundation/ethereumjs-trie";
2
2
  import {
3
3
  Account,
4
- intToBuffer,
4
+ intToBytes,
5
5
  setLengthLeft,
6
6
  } from "@nomicfoundation/ethereumjs-util";
7
7
 
@@ -14,13 +14,13 @@ export async function makeStateTrie(genesisAccounts: GenesisAccount[]) {
14
14
 
15
15
  for (const acc of genesisAccounts) {
16
16
  const { address, account } = makeAccount(acc);
17
- await stateTrie.put(address.toBuffer(), account.serialize());
17
+ await stateTrie.put(address.toBytes(), account.serialize());
18
18
  }
19
19
 
20
20
  // Mimic precompiles activation
21
21
  for (let i = 1; i <= 8; i++) {
22
22
  await stateTrie.put(
23
- setLengthLeft(intToBuffer(i), 20),
23
+ setLengthLeft(intToBytes(i), 20),
24
24
  new Account().serialize()
25
25
  );
26
26
  }
@@ -1,7 +1,6 @@
1
1
  import { Block, HeaderData } from "@nomicfoundation/ethereumjs-block";
2
2
  import { Common } from "@nomicfoundation/ethereumjs-common";
3
- import { Trie } from "@nomicfoundation/ethereumjs-trie";
4
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
3
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
5
4
 
6
5
  import { dateToTimestampSeconds } from "../../../util/date";
7
6
  import { hardforkGte, HardforkName } from "../../../util/hardforks";
@@ -13,9 +12,10 @@ export async function putGenesisBlock(
13
12
  blockchain: HardhatBlockchain,
14
13
  common: Common,
15
14
  { initialDate, blockGasLimit: initialBlockGasLimit }: LocalNodeConfig,
16
- stateTrie: Trie,
15
+ stateRoot: Uint8Array,
17
16
  hardfork: HardforkName,
18
- initialMixHash: Buffer,
17
+ initialMixHash: Uint8Array,
18
+ initialParentBeaconBlockRoot: Uint8Array,
19
19
  initialBaseFee?: bigint
20
20
  ) {
21
21
  const initialBlockTimestamp =
@@ -24,6 +24,7 @@ export async function putGenesisBlock(
24
24
  : getCurrentTimestamp();
25
25
 
26
26
  const isPostMerge = hardforkGte(hardfork, HardforkName.MERGE);
27
+ const isPostCancun = hardforkGte(hardfork, HardforkName.CANCUN);
27
28
 
28
29
  const header: HeaderData = {
29
30
  timestamp: `0x${initialBlockTimestamp.toString(16)}`,
@@ -31,13 +32,17 @@ export async function putGenesisBlock(
31
32
  difficulty: isPostMerge ? 0 : 1,
32
33
  nonce: isPostMerge ? "0x0000000000000000" : "0x0000000000000042",
33
34
  extraData: "0x1234",
34
- stateRoot: bufferToHex(stateTrie.root()),
35
+ stateRoot: bufferToHex(stateRoot),
35
36
  };
36
37
 
37
38
  if (isPostMerge) {
38
39
  header.mixHash = initialMixHash;
39
40
  }
40
41
 
42
+ if (isPostCancun) {
43
+ header.parentBeaconBlockRoot = initialParentBeaconBlockRoot;
44
+ }
45
+
41
46
  if (initialBaseFee !== undefined) {
42
47
  header.baseFeePerGas = initialBaseFee;
43
48
  }
@@ -2,7 +2,7 @@ import type EthereumjsUtilT from "@nomicfoundation/ethereumjs-util";
2
2
  import type * as UtilKeccakT from "../../../util/keccak";
3
3
 
4
4
  export class RandomBufferGenerator {
5
- private constructor(private _nextValue: Buffer) {}
5
+ private constructor(private _nextValue: Uint8Array) {}
6
6
 
7
7
  public static create(seed: string): RandomBufferGenerator {
8
8
  const { keccak256 } = require("../../../util/keccak") as typeof UtilKeccakT;
@@ -12,7 +12,7 @@ export class RandomBufferGenerator {
12
12
  return new RandomBufferGenerator(nextValue);
13
13
  }
14
14
 
15
- public next(): Buffer {
15
+ public next(): Uint8Array {
16
16
  const { keccak256 } = require("../../../util/keccak") as typeof UtilKeccakT;
17
17
 
18
18
  const valueToReturn = this._nextValue;
@@ -32,13 +32,13 @@ export class RandomBufferGenerator {
32
32
  }
33
33
 
34
34
  export const randomHash = () => {
35
- const { bufferToHex } =
35
+ const { bytesToHex: bufferToHex } =
36
36
  require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
37
37
  return bufferToHex(randomHashBuffer());
38
38
  };
39
39
 
40
40
  const generator = RandomBufferGenerator.create("seed");
41
- export const randomHashBuffer = (): Buffer => {
41
+ export const randomHashBuffer = (): Uint8Array => {
42
42
  return generator.next();
43
43
  };
44
44
 
@@ -49,7 +49,7 @@ export const randomAddress = () => {
49
49
  };
50
50
 
51
51
  export const randomAddressString = () => {
52
- const { bufferToHex } =
52
+ const { bytesToHex: bufferToHex } =
53
53
  require("@nomicfoundation/ethereumjs-util") as typeof EthereumjsUtilT;
54
54
  return bufferToHex(randomAddressBuffer());
55
55
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
- bufferToBigInt,
3
- bufferToHex,
4
- bufferToInt,
2
+ bytesToBigInt,
3
+ bytesToHex as bufferToHex,
4
+ bytesToInt,
5
5
  fromSigned,
6
6
  } from "@nomicfoundation/ethereumjs-util";
7
7
  import util from "util";
@@ -126,7 +126,7 @@ export class ConsoleLogger {
126
126
  }
127
127
 
128
128
  private _maybeConsoleLog(call: CallMessageTrace): ConsoleLogs | undefined {
129
- const sig = bufferToInt(call.calldata.slice(0, 4));
129
+ const sig = bytesToInt(call.calldata.slice(0, 4));
130
130
  const parameters = call.calldata.slice(4);
131
131
 
132
132
  const types = this._consoleLogs[sig];
@@ -162,12 +162,12 @@ export class ConsoleLogger {
162
162
  }
163
163
  }
164
164
 
165
- private _decode(data: Buffer, types: string[]): ConsoleLogs {
165
+ private _decode(data: Uint8Array, types: string[]): ConsoleLogs {
166
166
  return types.map((type, i) => {
167
167
  const position: number = i * 32;
168
168
  switch (types[i]) {
169
169
  case Uint256Ty:
170
- return bufferToBigInt(
170
+ return bytesToBigInt(
171
171
  data.slice(position, position + REGISTER_SIZE)
172
172
  ).toString(10);
173
173
 
@@ -183,13 +183,13 @@ export class ConsoleLogger {
183
183
  return "false";
184
184
 
185
185
  case StringTy:
186
- const sStart = bufferToInt(
186
+ const sStart = bytesToInt(
187
187
  data.slice(position, position + REGISTER_SIZE)
188
188
  );
189
- const sLen = bufferToInt(data.slice(sStart, sStart + REGISTER_SIZE));
190
- return data
191
- .slice(sStart + REGISTER_SIZE, sStart + REGISTER_SIZE + sLen)
192
- .toString();
189
+ const sLen = bytesToInt(data.slice(sStart, sStart + REGISTER_SIZE));
190
+ return Buffer.from(
191
+ data.slice(sStart + REGISTER_SIZE, sStart + REGISTER_SIZE + sLen)
192
+ ).toString();
193
193
 
194
194
  case AddressTy:
195
195
  return bufferToHex(
@@ -197,10 +197,10 @@ export class ConsoleLogger {
197
197
  );
198
198
 
199
199
  case BytesTy:
200
- const bStart = bufferToInt(
200
+ const bStart = bytesToInt(
201
201
  data.slice(position, position + REGISTER_SIZE)
202
202
  );
203
- const bLen = bufferToInt(data.slice(bStart, bStart + REGISTER_SIZE));
203
+ const bLen = bytesToInt(data.slice(bStart, bStart + REGISTER_SIZE));
204
204
  return bufferToHex(
205
205
  data.slice(bStart + REGISTER_SIZE, bStart + REGISTER_SIZE + bLen)
206
206
  );
@@ -1,2 +1,2 @@
1
- export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.23";
1
+ export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.24";
2
2
  export const FIRST_SOLC_VERSION_SUPPORTED = "0.5.1";
@@ -1,4 +1,4 @@
1
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
1
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
2
2
 
3
3
  import {
4
4
  normalizeLibraryRuntimeBytecodeIfNecessary,
@@ -64,7 +64,7 @@ class BytecodeTrie {
64
64
  * entire code is covered by the trie, and there's no match, we return undefined.
65
65
  */
66
66
  public search(
67
- code: Buffer,
67
+ code: Uint8Array,
68
68
  currentCodeByte: number = 0
69
69
  ): Bytecode | BytecodeTrie | undefined {
70
70
  if (currentCodeByte > code.length) {
@@ -130,7 +130,7 @@ export class ContractsIdentifier {
130
130
 
131
131
  private _searchBytecode(
132
132
  trace: EvmMessageTrace,
133
- code: Buffer,
133
+ code: Uint8Array,
134
134
  normalizeLibraries = true,
135
135
  trie = this._trie,
136
136
  firstByteToSearch = 0
@@ -220,7 +220,7 @@ export class ContractsIdentifier {
220
220
  /**
221
221
  * Returns true if the lastByte is placed right when the metadata starts or after it.
222
222
  */
223
- private _isMatchingMetadata(code: Buffer, lastByte: number): boolean {
223
+ private _isMatchingMetadata(code: Uint8Array, lastByte: number): boolean {
224
224
  for (let byte = 0; byte < lastByte; ) {
225
225
  const opcode = code[byte];
226
226
 
@@ -1,4 +1,4 @@
1
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
1
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
2
2
  import chalk from "chalk";
3
3
 
4
4
  import {
@@ -1,6 +1,7 @@
1
1
  /* eslint "@typescript-eslint/no-non-null-assertion": "error" */
2
- import { ERROR } from "@nomicfoundation/ethereumjs-evm/dist/exceptions";
3
2
  import { defaultAbiCoder as abi } from "@ethersproject/abi";
3
+ import { ERROR } from "@nomicfoundation/ethereumjs-evm/dist/cjs/exceptions";
4
+ import { equalsBytes } from "@nomicfoundation/ethereumjs-util";
4
5
  import semver from "semver";
5
6
 
6
7
  import { assertHardhatInvariant } from "../../core/errors";
@@ -539,7 +540,7 @@ export class ErrorInferrer {
539
540
  return;
540
541
  }
541
542
 
542
- const rawReturnData = returnData.value.toString("hex");
543
+ const rawReturnData = Buffer.from(returnData.value).toString("hex");
543
544
  let errorMessage = `reverted with an unrecognized custom error (return data: 0x${rawReturnData})`;
544
545
 
545
546
  for (const customError of trace.bytecode.contract.customErrors) {
@@ -1623,7 +1624,7 @@ export class ErrorInferrer {
1623
1624
  ): boolean {
1624
1625
  const call = trace.steps[callSubtraceStepIndex] as MessageTrace;
1625
1626
 
1626
- if (!trace.returnData.equals(call.returnData)) {
1627
+ if (!equalsBytes(trace.returnData, call.returnData)) {
1627
1628
  return false;
1628
1629
  }
1629
1630
 
@@ -1679,7 +1680,7 @@ export class ErrorInferrer {
1679
1680
  return false;
1680
1681
  }
1681
1682
 
1682
- if (!trace.returnData.equals(subtrace.returnData)) {
1683
+ if (!equalsBytes(trace.returnData, subtrace.returnData)) {
1683
1684
  return false;
1684
1685
  }
1685
1686
 
@@ -1730,7 +1731,7 @@ export class ErrorInferrer {
1730
1731
  return this._failsRightAfterCall(trace, callStepIndex);
1731
1732
  }
1732
1733
 
1733
- private _isPanicReturnData(returnData: Buffer): boolean {
1734
+ private _isPanicReturnData(returnData: Uint8Array): boolean {
1734
1735
  return new ReturnData(returnData).isPanicReturnData();
1735
1736
  }
1736
1737
  }
@@ -50,9 +50,9 @@ export function linkHexStringBytecode(
50
50
  }
51
51
 
52
52
  export function zeroOutAddresses(
53
- code: Buffer,
53
+ code: Uint8Array,
54
54
  addressesPositions: number[]
55
- ): Buffer {
55
+ ): Uint8Array {
56
56
  const addressesSlices = addressesPositions.map((start) => ({
57
57
  start,
58
58
  length: 20,
@@ -62,9 +62,9 @@ export function zeroOutAddresses(
62
62
  }
63
63
 
64
64
  export function zeroOutSlices(
65
- code: Buffer,
65
+ code: Uint8Array,
66
66
  slices: Array<{ start: number; length: number }>
67
- ): Buffer {
67
+ ): Uint8Array {
68
68
  for (const { start, length } of slices) {
69
69
  code = Buffer.concat([
70
70
  code.slice(0, start),
@@ -77,8 +77,8 @@ export function zeroOutSlices(
77
77
  }
78
78
 
79
79
  export function normalizeLibraryRuntimeBytecodeIfNecessary(
80
- code: Buffer
81
- ): Buffer {
80
+ code: Uint8Array
81
+ ): Uint8Array {
82
82
  // Libraries' protection normalization:
83
83
  // Solidity 0.4.20 introduced a protection to prevent libraries from being called directly.
84
84
  // This is done by modifying the code on deployment, and hard-coding the contract address.
@@ -15,7 +15,7 @@ export type DecodedEvmMessageTrace =
15
15
 
16
16
  export interface BaseMessageTrace {
17
17
  value: bigint;
18
- returnData: Buffer;
18
+ returnData: Uint8Array;
19
19
  error?: EvmError;
20
20
  gasUsed: bigint;
21
21
  depth: number;
@@ -23,13 +23,13 @@ export interface BaseMessageTrace {
23
23
 
24
24
  export interface PrecompileMessageTrace extends BaseMessageTrace {
25
25
  precompile: number;
26
- calldata: Buffer;
26
+ calldata: Uint8Array;
27
27
  }
28
28
 
29
29
  export interface BaseEvmMessageTrace extends BaseMessageTrace {
30
- code: Buffer;
30
+ code: Uint8Array;
31
31
  value: bigint;
32
- returnData: Buffer;
32
+ returnData: Uint8Array;
33
33
  error?: EvmError;
34
34
  steps: MessageTraceStep[];
35
35
  bytecode?: Bytecode;
@@ -39,13 +39,13 @@ export interface BaseEvmMessageTrace extends BaseMessageTrace {
39
39
  }
40
40
 
41
41
  export interface CreateMessageTrace extends BaseEvmMessageTrace {
42
- deployedContract: Buffer | undefined;
42
+ deployedContract: Uint8Array | undefined;
43
43
  }
44
44
 
45
45
  export interface CallMessageTrace extends BaseEvmMessageTrace {
46
- calldata: Buffer;
47
- address: Buffer;
48
- codeAddress: Buffer;
46
+ calldata: Uint8Array;
47
+ address: Uint8Array;
48
+ codeAddress: Uint8Array;
49
49
  }
50
50
 
51
51
  export interface DecodedCreateMessageTrace extends CreateMessageTrace {
@@ -1,4 +1,4 @@
1
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
1
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
2
2
 
3
3
  import { AbiHelpers } from "../../util/abi-helpers";
4
4
 
@@ -212,7 +212,7 @@ export class Contract {
212
212
  }
213
213
 
214
214
  public getFunctionFromSelector(
215
- selector: Buffer
215
+ selector: Uint8Array
216
216
  ): ContractFunction | undefined {
217
217
  return this._selectorHexToFunction.get(bufferToHex(selector));
218
218
  }
@@ -261,7 +261,7 @@ export class ContractFunction {
261
261
  public readonly contract?: Contract,
262
262
  public readonly visibility?: ContractFunctionVisibility,
263
263
  public readonly isPayable?: boolean,
264
- public selector?: Buffer,
264
+ public selector?: Uint8Array,
265
265
  public readonly paramTypes?: any[]
266
266
  ) {
267
267
  if (contract !== undefined && !contract.location.contains(location)) {
@@ -269,7 +269,7 @@ export class ContractFunction {
269
269
  }
270
270
  }
271
271
 
272
- public isValidCalldata(calldata: Buffer): boolean {
272
+ public isValidCalldata(calldata: Uint8Array): boolean {
273
273
  if (this.paramTypes === undefined) {
274
274
  // if we don't know the param types, we just assume that the call is valid
275
275
  return true;
@@ -294,7 +294,7 @@ export class CustomError {
294
294
  }
295
295
 
296
296
  private constructor(
297
- public readonly selector: Buffer,
297
+ public readonly selector: Uint8Array,
298
298
  public readonly name: string,
299
299
  public readonly paramTypes: any[]
300
300
  ) {}
@@ -1,4 +1,4 @@
1
- import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
1
+ import { bytesToHex as bufferToHex } from "@nomicfoundation/ethereumjs-util";
2
2
 
3
3
  import { panicErrorCodeToMessage } from "./panic-errors";
4
4
  import {
@@ -271,7 +271,9 @@ function getMessageFromLastStackTraceEntry(
271
271
  }
272
272
 
273
273
  if (!stackTraceEntry.message.isEmpty()) {
274
- const returnData = stackTraceEntry.message.value.toString("hex");
274
+ const returnData = Buffer.from(stackTraceEntry.message.value).toString(
275
+ "hex"
276
+ );
275
277
 
276
278
  return `VM Exception while processing transaction: reverted with an unrecognized custom error (return data: 0x${returnData})`;
277
279
  }
@@ -61,7 +61,7 @@ export interface UnrecognizedCreateCallstackEntryStackTraceEntry {
61
61
 
62
62
  export interface UnrecognizedContractCallstackEntryStackTraceEntry {
63
63
  type: StackTraceEntryType.UNRECOGNIZED_CONTRACT_CALLSTACK_ENTRY;
64
- address: Buffer;
64
+ address: Uint8Array;
65
65
  sourceReference?: undefined;
66
66
  }
67
67
 
@@ -158,7 +158,7 @@ export interface UnrecognizedCreateErrorStackTraceEntry {
158
158
 
159
159
  export interface UnrecognizedContractErrorStackTraceEntry {
160
160
  type: StackTraceEntryType.UNRECOGNIZED_CONTRACT_ERROR;
161
- address: Buffer;
161
+ address: Uint8Array;
162
162
  message: ReturnData;
163
163
  sourceReference?: undefined;
164
164
  isInvalidOpcodeError: boolean;