hardhat 2.20.1 → 2.21.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
  2. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
  3. package/internal/core/providers/construction.d.ts.map +1 -1
  4. package/internal/core/providers/construction.js +28 -4
  5. package/internal/core/providers/construction.js.map +1 -1
  6. package/internal/core/providers/http.d.ts +2 -0
  7. package/internal/core/providers/http.d.ts.map +1 -1
  8. package/internal/core/providers/http.js +2 -1
  9. package/internal/core/providers/http.js.map +1 -1
  10. package/internal/core/runtime-environment.d.ts.map +1 -1
  11. package/internal/core/runtime-environment.js.map +1 -1
  12. package/internal/hardhat-network/jsonrpc/client.d.ts +0 -2
  13. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
  14. package/internal/hardhat-network/jsonrpc/client.js +0 -16
  15. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  16. package/internal/hardhat-network/jsonrpc/handler.js +9 -1
  17. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  18. package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
  19. package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
  20. package/internal/hardhat-network/provider/BlockchainData.js +10 -10
  21. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  22. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +0 -7
  23. package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
  24. package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -14
  25. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  26. package/internal/hardhat-network/provider/TxPool.d.ts +3 -2
  27. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  28. package/internal/hardhat-network/provider/TxPool.js +16 -16
  29. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  30. package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
  31. package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
  32. package/internal/hardhat-network/provider/filter.d.ts +6 -5
  33. package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
  34. package/internal/hardhat-network/provider/filter.js +2 -2
  35. package/internal/hardhat-network/provider/filter.js.map +1 -1
  36. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +0 -7
  37. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  38. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +4 -21
  39. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  40. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +13 -19
  41. package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
  42. package/internal/hardhat-network/provider/fork/ForkStateManager.js +61 -59
  43. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  44. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  45. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +0 -3
  46. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  47. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
  48. package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
  49. package/internal/hardhat-network/provider/fork/rpcToTxData.js +1 -1
  50. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  51. package/internal/hardhat-network/provider/modules/base.js +4 -4
  52. package/internal/hardhat-network/provider/modules/base.js.map +1 -1
  53. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  54. package/internal/hardhat-network/provider/modules/eth.js +9 -16
  55. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  56. package/internal/hardhat-network/provider/modules/logger.d.ts +6 -84
  57. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  58. package/internal/hardhat-network/provider/modules/logger.js +3 -530
  59. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  60. package/internal/hardhat-network/provider/node-types.d.ts +2 -65
  61. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  62. package/internal/hardhat-network/provider/node-types.js +0 -5
  63. package/internal/hardhat-network/provider/node-types.js.map +1 -1
  64. package/internal/hardhat-network/provider/node.d.ts +2 -6
  65. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  66. package/internal/hardhat-network/provider/node.js +79 -153
  67. package/internal/hardhat-network/provider/node.js.map +1 -1
  68. package/internal/hardhat-network/provider/output.d.ts +0 -14
  69. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  70. package/internal/hardhat-network/provider/output.js +0 -264
  71. package/internal/hardhat-network/provider/output.js.map +1 -1
  72. package/internal/hardhat-network/provider/provider.d.ts +28 -25
  73. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  74. package/internal/hardhat-network/provider/provider.js +349 -185
  75. package/internal/hardhat-network/provider/provider.js.map +1 -1
  76. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +10 -8
  77. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  78. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
  79. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  80. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +10 -8
  81. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  82. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
  83. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  84. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +10 -9
  85. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  86. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +7 -6
  87. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  88. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +6 -5
  89. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  90. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  91. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  92. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +5 -4
  93. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  94. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
  95. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  96. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +8 -7
  97. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
  98. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
  99. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  100. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +8 -7
  101. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
  102. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
  103. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  104. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -4
  105. package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
  106. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
  107. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
  108. package/internal/hardhat-network/provider/utils/convertToEdr.js +194 -0
  109. package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
  110. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +0 -1
  111. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
  112. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +1 -5
  113. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
  114. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
  115. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  116. package/internal/hardhat-network/provider/utils/makeCommon.js +1 -3
  117. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  118. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
  119. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
  120. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +1 -15
  121. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
  122. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +10 -1
  123. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  124. package/internal/hardhat-network/provider/utils/makeForkClient.js +38 -18
  125. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  126. package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
  127. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  128. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +3 -1
  129. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  130. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -6
  131. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  132. package/internal/hardhat-network/provider/utils/random.d.ts +1 -0
  133. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
  134. package/internal/hardhat-network/provider/utils/random.js +7 -1
  135. package/internal/hardhat-network/provider/utils/random.js.map +1 -1
  136. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +1 -1
  137. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
  138. package/internal/hardhat-network/provider/utils/reorgs-protection.js +5 -5
  139. package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
  140. package/internal/hardhat-network/provider/vm/exit.d.ts +22 -0
  141. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  142. package/internal/hardhat-network/provider/vm/exit.js +93 -0
  143. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  144. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +29 -0
  145. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
  146. package/internal/hardhat-network/provider/vm/minimal-vm.js +43 -0
  147. package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
  148. package/internal/hardhat-network/provider/vm/proxy-vm.d.ts +36 -0
  149. package/internal/hardhat-network/provider/vm/proxy-vm.d.ts.map +1 -0
  150. package/internal/hardhat-network/provider/vm/proxy-vm.js +73 -0
  151. package/internal/hardhat-network/provider/vm/proxy-vm.js.map +1 -0
  152. package/internal/hardhat-network/provider/vm/types.d.ts +28 -0
  153. package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
  154. package/internal/hardhat-network/provider/vm/types.js +3 -0
  155. package/internal/hardhat-network/provider/vm/types.js.map +1 -0
  156. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +6 -0
  157. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  158. package/internal/hardhat-network/stack-traces/consoleLogger.js +33 -16
  159. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  160. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts +1 -2
  161. package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts.map +1 -1
  162. package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -7
  163. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  164. package/internal/hardhat-network/stack-traces/debug.js +6 -6
  165. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  166. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  167. package/internal/hardhat-network/stack-traces/error-inferrer.js +13 -7
  168. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  169. package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -3
  170. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
  171. package/internal/hardhat-network/stack-traces/message-trace.js +22 -1
  172. package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
  173. package/internal/hardhat-network/stack-traces/model.d.ts +8 -0
  174. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  175. package/internal/hardhat-network/stack-traces/model.js +52 -0
  176. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  177. package/internal/hardhat-network/stack-traces/opcodes.d.ts +1 -0
  178. package/internal/hardhat-network/stack-traces/opcodes.d.ts.map +1 -1
  179. package/internal/hardhat-network/stack-traces/opcodes.js +5 -1
  180. package/internal/hardhat-network/stack-traces/opcodes.js.map +1 -1
  181. package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
  182. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  183. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  184. package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -5
  185. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  186. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  187. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +28 -34
  188. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  189. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +7 -0
  190. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -1
  191. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +69 -2
  192. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
  193. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +7 -12
  194. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
  195. package/internal/hardhat-network/stack-traces/vm-tracer.js +46 -65
  196. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  197. package/internal/util/date.d.ts +1 -0
  198. package/internal/util/date.d.ts.map +1 -1
  199. package/internal/util/date.js +5 -1
  200. package/internal/util/date.js.map +1 -1
  201. package/internal/util/hardforks.d.ts +2 -0
  202. package/internal/util/hardforks.d.ts.map +1 -1
  203. package/internal/util/hardforks.js +27 -1
  204. package/internal/util/hardforks.js.map +1 -1
  205. package/package.json +16 -14
  206. package/src/internal/core/providers/construction.ts +7 -9
  207. package/src/internal/core/providers/http.ts +3 -1
  208. package/src/internal/core/runtime-environment.ts +2 -1
  209. package/src/internal/hardhat-network/jsonrpc/client.ts +1 -28
  210. package/src/internal/hardhat-network/jsonrpc/handler.ts +9 -1
  211. package/src/internal/hardhat-network/provider/modules/logger.ts +6 -801
  212. package/src/internal/hardhat-network/provider/node-types.ts +2 -89
  213. package/src/internal/hardhat-network/provider/output.ts +0 -352
  214. package/src/internal/hardhat-network/provider/provider.ts +501 -261
  215. package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +232 -0
  216. package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +0 -4
  217. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +1 -12
  218. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +63 -24
  219. package/src/internal/hardhat-network/provider/utils/random.ts +8 -1
  220. package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +5 -5
  221. package/src/internal/hardhat-network/provider/vm/exit.ts +101 -0
  222. package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +98 -0
  223. package/src/internal/hardhat-network/provider/vm/types.ts +32 -0
  224. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +40 -21
  225. package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +10 -12
  226. package/src/internal/hardhat-network/stack-traces/debug.ts +6 -6
  227. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +15 -8
  228. package/src/internal/hardhat-network/stack-traces/message-trace.ts +40 -4
  229. package/src/internal/hardhat-network/stack-traces/model.ts +61 -0
  230. package/src/internal/hardhat-network/stack-traces/opcodes.ts +4 -0
  231. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
  232. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -5
  233. package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +113 -4
  234. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +67 -95
  235. package/src/internal/util/date.ts +4 -0
  236. package/src/internal/util/hardforks.ts +52 -0
  237. package/src/internal/hardhat-network/provider/BlockchainBase.ts +0 -185
  238. package/src/internal/hardhat-network/provider/BlockchainData.ts +0 -261
  239. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +0 -140
  240. package/src/internal/hardhat-network/provider/PoolState.ts +0 -48
  241. package/src/internal/hardhat-network/provider/TransactionQueue.ts +0 -158
  242. package/src/internal/hardhat-network/provider/TxPool.ts +0 -715
  243. package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +0 -21
  244. package/src/internal/hardhat-network/provider/filter.ts +0 -142
  245. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +0 -433
  246. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +0 -480
  247. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +0 -35
  248. package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +0 -44
  249. package/src/internal/hardhat-network/provider/modules/base.ts +0 -156
  250. package/src/internal/hardhat-network/provider/modules/debug.ts +0 -104
  251. package/src/internal/hardhat-network/provider/modules/eth.ts +0 -1781
  252. package/src/internal/hardhat-network/provider/modules/evm.ts +0 -249
  253. package/src/internal/hardhat-network/provider/modules/hardhat.ts +0 -481
  254. package/src/internal/hardhat-network/provider/modules/net.ts +0 -60
  255. package/src/internal/hardhat-network/provider/modules/personal.ts +0 -40
  256. package/src/internal/hardhat-network/provider/modules/web3.ts +0 -49
  257. package/src/internal/hardhat-network/provider/node.ts +0 -2999
  258. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +0 -226
  259. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +0 -224
  260. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +0 -216
  261. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +0 -143
  262. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +0 -144
  263. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +0 -171
  264. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +0 -169
  265. package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +0 -25
  266. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +0 -60
  267. package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +0 -29
  268. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +0 -61
  269. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +0 -45
  270. package/src/internal/hardhat-network/provider/utils/txMapToArray.ts +0 -7
  271. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +0 -630
@@ -1,226 +0,0 @@
1
- import { Common } from "@nomicfoundation/ethereumjs-common";
2
- import * as rlp from "@nomicfoundation/ethereumjs-rlp";
3
- import {
4
- AccessListEIP2930Transaction,
5
- AccessListEIP2930TxData,
6
- TransactionType,
7
- TxOptions,
8
- TxValuesArray,
9
- } from "@nomicfoundation/ethereumjs-tx";
10
- import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
11
-
12
- import {
13
- InternalError,
14
- InvalidArgumentsError,
15
- } from "../../../core/providers/errors";
16
- import { makeFakeSignature } from "../utils/makeFakeSignature";
17
-
18
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
19
-
20
- /**
21
- * This class is the EIP-2930 version of FakeSenderTransaction.
22
- */
23
- export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Transaction {
24
- public static fromTxData(
25
- _txData: AccessListEIP2930TxData,
26
- _opts?: TxOptions
27
- ): never {
28
- throw new InternalError(
29
- "`fromTxData` is not implemented in FakeSenderAccessListEIP2930Transaction"
30
- );
31
- }
32
-
33
- public static fromSerializedTx(
34
- _serialized: Uint8Array,
35
- _opts?: TxOptions
36
- ): never {
37
- throw new InternalError(
38
- "`fromSerializedTx` is not implemented in FakeSenderAccessListEIP2930Transaction"
39
- );
40
- }
41
-
42
- public static fromRlpSerializedTx(
43
- _serialized: Uint8Array,
44
- _opts?: TxOptions
45
- ): never {
46
- throw new InternalError(
47
- "`fromRlpSerializedTx` is not implemented in FakeSenderAccessListEIP2930Transaction"
48
- );
49
- }
50
-
51
- public static fromValuesArray(
52
- _values: TxValuesArray[TransactionType.AccessListEIP2930],
53
- _opts?: TxOptions
54
- ): never {
55
- throw new InternalError(
56
- "`fromValuesArray` is not implemented in FakeSenderAccessListEIP2930Transaction"
57
- );
58
- }
59
-
60
- public static fromSenderAndRlpSerializedTx(
61
- sender: Address,
62
- serialized: Uint8Array,
63
- opts?: TxOptions
64
- ) {
65
- if (serialized[0] !== 1) {
66
- throw new InvalidArgumentsError(
67
- `Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: 1, received: ${serialized[0]}`
68
- );
69
- }
70
-
71
- const values = rlp.decode(serialized.slice(1));
72
-
73
- checkIsAccessListEIP2930ValuesArray(values);
74
-
75
- return this.fromSenderAndValuesArray(sender, values, opts);
76
- }
77
-
78
- public static fromSenderAndValuesArray(
79
- sender: Address,
80
- values: TxValuesArray[TransactionType.AccessListEIP2930],
81
- opts: TxOptions = {}
82
- ): FakeSenderAccessListEIP2930Transaction {
83
- const [
84
- chainId,
85
- nonce,
86
- gasPrice,
87
- gasLimit,
88
- to,
89
- value,
90
- data,
91
- accessList,
92
- v,
93
- r,
94
- s,
95
- ] = values;
96
-
97
- return new FakeSenderAccessListEIP2930Transaction(
98
- sender,
99
- {
100
- chainId,
101
- nonce,
102
- gasPrice,
103
- gasLimit,
104
- to: to !== undefined && to.length > 0 ? to : undefined,
105
- value,
106
- data: data ?? Uint8Array.from([]),
107
- accessList: accessList ?? [],
108
- v: v !== undefined ? bytesToInt(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)
109
- r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
110
- s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
111
- },
112
- opts
113
- );
114
- }
115
-
116
- public readonly common: Common;
117
-
118
- private readonly _sender: Address;
119
-
120
- constructor(
121
- sender: Address,
122
- data: AccessListEIP2930TxData = {},
123
- opts?: TxOptions
124
- ) {
125
- const fakeSignature = makeFakeSignature(data, sender);
126
-
127
- super(
128
- {
129
- ...data,
130
- v: data.v ?? 1,
131
- r: data.r ?? fakeSignature.r,
132
- s: data.s ?? fakeSignature.s,
133
- },
134
- { ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
135
- );
136
-
137
- this.common = this._getCommon(opts?.common);
138
- this._sender = sender;
139
- }
140
-
141
- public verifySignature(): boolean {
142
- return true;
143
- }
144
-
145
- public getSenderAddress(): Address {
146
- return this._sender;
147
- }
148
-
149
- public getSenderPublicKey(): never {
150
- throw new InternalError(
151
- "`getSenderPublicKey` is not implemented in FakeSenderAccessListEIP2930Transaction"
152
- );
153
- }
154
-
155
- public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
156
- throw new InternalError(
157
- "`_processSignature` is not implemented in FakeSenderAccessListEIP2930Transaction"
158
- );
159
- }
160
-
161
- public sign(_privateKey: Uint8Array): never {
162
- throw new InternalError(
163
- "`sign` is not implemented in FakeSenderAccessListEIP2930Transaction"
164
- );
165
- }
166
-
167
- public getMessageToSign(): never {
168
- throw new InternalError(
169
- "`getMessageToSign` is not implemented in FakeSenderAccessListEIP2930Transaction"
170
- );
171
- }
172
-
173
- public getMessageToVerifySignature(): never {
174
- throw new InternalError(
175
- "`getMessageToVerifySignature` is not implemented in FakeSenderAccessListEIP2930Transaction"
176
- );
177
- }
178
-
179
- public validate(stringError?: false): boolean;
180
- public validate(stringError: true): string[];
181
- public validate(stringError: boolean = false): boolean | string[] {
182
- if (stringError) {
183
- return [];
184
- }
185
-
186
- return true;
187
- }
188
- }
189
-
190
- function checkIsAccessListEIP2930ValuesArray(
191
- values: unknown
192
- ): asserts values is TxValuesArray[TransactionType.AccessListEIP2930] {
193
- if (!Array.isArray(values)) {
194
- throw new InvalidArgumentsError(
195
- `Invalid deserialized tx. Expected a Uint8Array[], but got '${
196
- values as any
197
- }'`
198
- );
199
- }
200
-
201
- if (values.length !== 8 && values.length !== 11) {
202
- throw new InvalidArgumentsError(
203
- "Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx)."
204
- );
205
- }
206
-
207
- // all elements in the array are buffers, except the 8th one that is an
208
- // AccessListBuffer (an array of AccessListBufferItems)
209
- for (const [i, value] of values.entries()) {
210
- if (i === 7) {
211
- if (!Array.isArray(value)) {
212
- // we could check more things to assert that it's an AccessListBuffer,
213
- // but we're assuming that just checking if it's an array is enough
214
- throw new InvalidArgumentsError(
215
- `Invalid deserialized tx. Expected a AccessListBuffer in position ${i}, but got '${value}'`
216
- );
217
- }
218
- } else {
219
- if (!(values[i] instanceof Uint8Array)) {
220
- throw new InvalidArgumentsError(
221
- `Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
222
- );
223
- }
224
- }
225
- }
226
- }
@@ -1,224 +0,0 @@
1
- import * as rlp from "@nomicfoundation/ethereumjs-rlp";
2
- import {
3
- FeeMarketEIP1559Transaction,
4
- FeeMarketEIP1559TxData,
5
- TransactionType,
6
- TxOptions,
7
- TxValuesArray,
8
- } from "@nomicfoundation/ethereumjs-tx";
9
- import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
10
-
11
- import {
12
- InternalError,
13
- InvalidArgumentsError,
14
- } from "../../../core/providers/errors";
15
- import { makeFakeSignature } from "../utils/makeFakeSignature";
16
-
17
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
18
-
19
- /**
20
- * This class is the EIP-1559 version of FakeSenderTransaction.
21
- */
22
- export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
23
- public static fromTxData(
24
- _txData: FeeMarketEIP1559TxData,
25
- _opts?: TxOptions
26
- ): never {
27
- throw new InternalError(
28
- "`fromTxData` is not implemented in FakeSenderEIP1559Transaction"
29
- );
30
- }
31
-
32
- public static fromSerializedTx(
33
- _serialized: Uint8Array,
34
- _opts?: TxOptions
35
- ): never {
36
- throw new InternalError(
37
- "`fromSerializedTx` is not implemented in FakeSenderEIP1559Transaction"
38
- );
39
- }
40
-
41
- public static fromRlpSerializedTx(
42
- _serialized: Uint8Array,
43
- _opts?: TxOptions
44
- ): never {
45
- throw new InternalError(
46
- "`fromRlpSerializedTx` is not implemented in FakeSenderEIP1559Transaction"
47
- );
48
- }
49
-
50
- public static fromValuesArray(
51
- _values: TxValuesArray[TransactionType.FeeMarketEIP1559],
52
- _opts?: TxOptions
53
- ): never {
54
- throw new InternalError(
55
- "`fromValuesArray` is not implemented in FakeSenderEIP1559Transaction"
56
- );
57
- }
58
-
59
- public static fromSenderAndRlpSerializedTx(
60
- sender: Address,
61
- serialized: Uint8Array,
62
- opts?: TxOptions
63
- ) {
64
- if (serialized[0] !== 2) {
65
- throw new InvalidArgumentsError(
66
- `Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: 2, received: ${serialized[0]}`
67
- );
68
- }
69
-
70
- const values = rlp.decode(serialized.slice(1));
71
-
72
- checkIsFeeMarketEIP1559ValuesArray(values);
73
-
74
- return this.fromSenderAndValuesArray(sender, values, opts);
75
- }
76
-
77
- public static fromSenderAndValuesArray(
78
- sender: Address,
79
- values: TxValuesArray[TransactionType.FeeMarketEIP1559],
80
- opts: TxOptions = {}
81
- ): FakeSenderEIP1559Transaction {
82
- const [
83
- chainId,
84
- nonce,
85
- maxPriorityFeePerGas,
86
- maxFeePerGas,
87
- gasLimit,
88
- to,
89
- value,
90
- data,
91
- accessList,
92
- v,
93
- r,
94
- s,
95
- ] = values;
96
-
97
- return new FakeSenderEIP1559Transaction(
98
- sender,
99
- {
100
- chainId,
101
- nonce,
102
- maxPriorityFeePerGas,
103
- maxFeePerGas,
104
- gasLimit,
105
- to: to !== undefined && to.length > 0 ? to : undefined,
106
- value,
107
- data: data ?? Uint8Array.from([]),
108
- accessList: accessList ?? [],
109
- v: v !== undefined ? bytesToInt(v) : undefined, // EIP1559 supports v's with value 0 (empty Buffer)
110
- r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
111
- s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
112
- },
113
- opts
114
- );
115
- }
116
-
117
- private readonly _sender: Address;
118
-
119
- constructor(
120
- sender: Address,
121
- data: FeeMarketEIP1559TxData = {},
122
- opts?: TxOptions
123
- ) {
124
- const fakeSignature = makeFakeSignature(data, sender);
125
-
126
- super(
127
- {
128
- ...data,
129
- v: data.v ?? 1,
130
- r: data.r ?? fakeSignature.r,
131
- s: data.s ?? fakeSignature.s,
132
- },
133
- { ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
134
- );
135
-
136
- this._sender = sender;
137
- }
138
-
139
- public verifySignature(): boolean {
140
- return true;
141
- }
142
-
143
- public getSenderAddress(): Address {
144
- return this._sender;
145
- }
146
-
147
- public getSenderPublicKey(): never {
148
- throw new InternalError(
149
- "`getSenderPublicKey` is not implemented in FakeSenderEIP1559Transaction"
150
- );
151
- }
152
-
153
- public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
154
- throw new InternalError(
155
- "`_processSignature` is not implemented in FakeSenderEIP1559Transaction"
156
- );
157
- }
158
-
159
- public sign(_privateKey: Uint8Array): never {
160
- throw new InternalError(
161
- "`sign` is not implemented in FakeSenderEIP1559Transaction"
162
- );
163
- }
164
-
165
- public getMessageToSign(): never {
166
- throw new InternalError(
167
- "`getMessageToSign` is not implemented in FakeSenderEIP1559Transaction"
168
- );
169
- }
170
-
171
- public getMessageToVerifySignature(): never {
172
- throw new InternalError(
173
- "`getMessageToVerifySignature` is not implemented in FakeSenderEIP1559Transaction"
174
- );
175
- }
176
-
177
- public validate(stringError?: false): boolean;
178
- public validate(stringError: true): string[];
179
- public validate(stringError: boolean = false): boolean | string[] {
180
- if (stringError) {
181
- return [];
182
- }
183
-
184
- return true;
185
- }
186
- }
187
-
188
- function checkIsFeeMarketEIP1559ValuesArray(
189
- values: unknown
190
- ): asserts values is TxValuesArray[TransactionType.FeeMarketEIP1559] {
191
- if (!Array.isArray(values)) {
192
- throw new InvalidArgumentsError(
193
- `Invalid deserialized tx. Expected a Uint8Array[], but got '${
194
- values as any
195
- }'`
196
- );
197
- }
198
-
199
- if (values.length !== 9 && values.length !== 12) {
200
- throw new InvalidArgumentsError(
201
- "Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx)."
202
- );
203
- }
204
-
205
- // all elements in the array are buffers, except the 9th one that is an
206
- // AccessListBuffer (an array of AccessListBufferItems)
207
- for (const [i, value] of values.entries()) {
208
- if (i === 8) {
209
- if (!Array.isArray(value)) {
210
- // we could check more things to assert that it's an AccessListBuffer,
211
- // but we're assuming that just checking if it's an array is enough
212
- throw new InvalidArgumentsError(
213
- `Invalid deserialized tx. Expected a AccessListBuffer in position ${i}, but got '${value}'`
214
- );
215
- }
216
- } else {
217
- if (!(values[i] instanceof Uint8Array)) {
218
- throw new InvalidArgumentsError(
219
- `Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
220
- );
221
- }
222
- }
223
- }
224
- }
@@ -1,216 +0,0 @@
1
- import { Common } from "@nomicfoundation/ethereumjs-common";
2
- import * as rlp from "@nomicfoundation/ethereumjs-rlp";
3
- import {
4
- LegacyTransaction,
5
- LegacyTxData,
6
- TxOptions,
7
- } from "@nomicfoundation/ethereumjs-tx";
8
- import { Address } from "@nomicfoundation/ethereumjs-util";
9
-
10
- import {
11
- InternalError,
12
- InvalidArgumentsError,
13
- } from "../../../core/providers/errors";
14
- import { makeFakeSignature } from "../utils/makeFakeSignature";
15
-
16
- /* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
17
-
18
- /**
19
- * This class represents a legacy transaction sent by a sender whose private
20
- * key we don't control.
21
- *
22
- * The transaction's signature is never validated, but assumed to be valid.
23
- *
24
- * The sender's private key is never recovered from the signature. Instead,
25
- * the sender's address is received as parameter.
26
- */
27
- export class FakeSenderTransaction extends LegacyTransaction {
28
- public static fromTxData(_txData: LegacyTxData, _opts?: TxOptions): never {
29
- throw new InternalError(
30
- "`fromTxData` is not implemented in FakeSenderTransaction"
31
- );
32
- }
33
-
34
- public static fromSerializedTx(
35
- _serialized: Uint8Array,
36
- _opts?: TxOptions
37
- ): never {
38
- throw new InternalError(
39
- "`fromSerializedTx` is not implemented in FakeSenderTransaction"
40
- );
41
- }
42
-
43
- public static fromRlpSerializedTx(
44
- _serialized: Uint8Array,
45
- _opts?: TxOptions
46
- ): never {
47
- throw new InternalError(
48
- "`fromRlpSerializedTx` is not implemented in FakeSenderTransaction"
49
- );
50
- }
51
-
52
- public static fromValuesArray(
53
- _values: Uint8Array[],
54
- _opts?: TxOptions
55
- ): never {
56
- throw new InternalError(
57
- "`fromRlpSerializedTx` is not implemented in FakeSenderTransaction"
58
- );
59
- }
60
-
61
- public static fromSenderAndRlpSerializedTx(
62
- sender: Address,
63
- serialized: Uint8Array,
64
- opts?: TxOptions
65
- ) {
66
- const values = rlp.decode(serialized);
67
-
68
- checkIsFlatBufferArray(values);
69
-
70
- return this.fromSenderAndValuesArray(sender, values, opts);
71
- }
72
-
73
- public static fromSenderAndValuesArray(
74
- sender: Address,
75
- values: Uint8Array[],
76
- opts?: TxOptions
77
- ) {
78
- if (values.length !== 6 && values.length !== 9) {
79
- throw new InternalError(
80
- "FakeSenderTransaction initialized with invalid values"
81
- );
82
- }
83
-
84
- const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = values;
85
-
86
- return new FakeSenderTransaction(
87
- sender,
88
- {
89
- nonce,
90
- gasPrice,
91
- gasLimit,
92
- to: to !== undefined && to.length > 0 ? to : undefined,
93
- value,
94
- data,
95
- v,
96
- r,
97
- s,
98
- },
99
- opts
100
- );
101
- }
102
-
103
- public readonly common: Common;
104
-
105
- private readonly _sender: Address;
106
-
107
- constructor(sender: Address, data: LegacyTxData = {}, opts?: TxOptions) {
108
- const fakeSignature = makeFakeSignature(data, sender);
109
-
110
- super(
111
- {
112
- ...data,
113
- v: data.v ?? 27,
114
- r: data.r ?? fakeSignature.r,
115
- s: data.s ?? fakeSignature.s,
116
- },
117
- { ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
118
- );
119
-
120
- this.common = this._getCommon(opts?.common);
121
- this._sender = sender;
122
- }
123
-
124
- public verifySignature(): boolean {
125
- return true;
126
- }
127
-
128
- public getSenderAddress(): Address {
129
- return this._sender;
130
- }
131
-
132
- public sign(): never {
133
- throw new InternalError(
134
- "`sign` is not implemented in FakeSenderTransaction"
135
- );
136
- }
137
-
138
- public getSenderPublicKey(): never {
139
- throw new InternalError(
140
- "`getSenderPublicKey` is not implemented in FakeSenderTransaction"
141
- );
142
- }
143
-
144
- public getMessageToVerifySignature(): never {
145
- throw new InternalError(
146
- "`getMessageToVerifySignature` is not implemented in FakeSenderTransaction"
147
- );
148
- }
149
-
150
- public getMessageToSign(): never {
151
- throw new InternalError(
152
- "`getMessageToSign` is not implemented in FakeSenderTransaction"
153
- );
154
- }
155
-
156
- public validate(stringError?: false): boolean;
157
- public validate(stringError: true): string[];
158
- public validate(stringError: boolean = false): boolean | string[] {
159
- if (stringError) {
160
- return [];
161
- }
162
-
163
- return true;
164
- }
165
- }
166
-
167
- // Override private methods
168
- const FakeSenderTransactionPrototype: any = FakeSenderTransaction.prototype;
169
-
170
- FakeSenderTransactionPrototype._validateTxV = function (_v: any, common: any) {
171
- return this._getCommon(common);
172
- };
173
-
174
- FakeSenderTransactionPrototype._signedTxImplementsEIP155 = function () {
175
- throw new InternalError(
176
- "`_signedTxImplementsEIP155` is not implemented in FakeSenderTransaction"
177
- );
178
- };
179
-
180
- FakeSenderTransactionPrototype._unsignedTxImplementsEIP155 = function () {
181
- throw new InternalError(
182
- "`_unsignedTxImplementsEIP155` is not implemented in FakeSenderTransaction"
183
- );
184
- };
185
-
186
- FakeSenderTransactionPrototype._getMessageToSign = function () {
187
- throw new InternalError(
188
- "`_getMessageToSign` is not implemented in FakeSenderTransaction"
189
- );
190
- };
191
-
192
- FakeSenderTransactionPrototype._processSignature = function () {
193
- throw new InternalError(
194
- "`_processSignature` is not implemented in FakeSenderTransaction"
195
- );
196
- };
197
-
198
- function checkIsFlatBufferArray(
199
- values: unknown
200
- ): asserts values is Uint8Array[] {
201
- if (!Array.isArray(values)) {
202
- throw new InvalidArgumentsError(
203
- `Invalid deserialized tx. Expected a Uint8Array[], but got '${
204
- values as any
205
- }'`
206
- );
207
- }
208
-
209
- for (const [i, value] of values.entries()) {
210
- if (!(value instanceof Uint8Array)) {
211
- throw new InvalidArgumentsError(
212
- `Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
213
- );
214
- }
215
- }
216
- }