hardhat 2.16.1-dev.0 → 2.17.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 (268) hide show
  1. package/.eslintrc.js +34 -3
  2. package/builtin-tasks/compile.js +2 -2
  3. package/builtin-tasks/compile.js.map +1 -1
  4. package/builtin-tasks/flatten.js +1 -1
  5. package/builtin-tasks/flatten.js.map +1 -1
  6. package/builtin-tasks/node.js +1 -1
  7. package/builtin-tasks/node.js.map +1 -1
  8. package/builtin-tasks/run.js +1 -1
  9. package/builtin-tasks/run.js.map +1 -1
  10. package/internal/artifacts.d.ts +1 -2
  11. package/internal/artifacts.d.ts.map +1 -1
  12. package/internal/artifacts.js +3 -11
  13. package/internal/artifacts.js.map +1 -1
  14. package/internal/cli/analytics.d.ts.map +1 -1
  15. package/internal/cli/analytics.js +27 -4
  16. package/internal/cli/analytics.js.map +1 -1
  17. package/internal/cli/bootstrap.js +3 -3
  18. package/internal/cli/bootstrap.js.map +1 -1
  19. package/internal/cli/constants.d.ts +2 -0
  20. package/internal/cli/constants.d.ts.map +1 -0
  21. package/internal/cli/constants.js +5 -0
  22. package/internal/cli/constants.js.map +1 -0
  23. package/internal/cli/project-creation.d.ts +1 -1
  24. package/internal/cli/project-creation.js +4 -4
  25. package/internal/cli/project-creation.js.map +1 -1
  26. package/internal/cli/prompt.js +2 -2
  27. package/internal/cli/prompt.js.map +1 -1
  28. package/internal/core/config/config-loading.js +2 -2
  29. package/internal/core/config/config-loading.js.map +1 -1
  30. package/internal/core/jsonrpc/types/input/validation.js +1 -1
  31. package/internal/core/jsonrpc/types/input/validation.js.map +1 -1
  32. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js +1 -1
  33. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js.map +1 -1
  34. package/internal/core/params/argumentTypes.js +4 -4
  35. package/internal/core/params/argumentTypes.js.map +1 -1
  36. package/internal/core/params/env-variables.js +1 -1
  37. package/internal/core/params/env-variables.js.map +1 -1
  38. package/internal/core/providers/backwards-compatibility.js +1 -1
  39. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  40. package/internal/core/providers/gas-providers.js +1 -1
  41. package/internal/core/providers/gas-providers.js.map +1 -1
  42. package/internal/core/providers/http.js +5 -5
  43. package/internal/core/providers/http.js.map +1 -1
  44. package/internal/core/providers/wrapper.js +1 -1
  45. package/internal/core/providers/wrapper.js.map +1 -1
  46. package/internal/core/runtime-environment.js +1 -1
  47. package/internal/core/runtime-environment.js.map +1 -1
  48. package/internal/hardhat-network/jsonrpc/client.js +3 -3
  49. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  50. package/internal/hardhat-network/jsonrpc/handler.js +3 -3
  51. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  52. package/internal/hardhat-network/provider/BlockchainBase.js +1 -1
  53. package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
  54. package/internal/hardhat-network/provider/HardhatBlockchain.js +1 -1
  55. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  56. package/internal/hardhat-network/provider/MiningTimer.js +1 -1
  57. package/internal/hardhat-network/provider/MiningTimer.js.map +1 -1
  58. package/internal/hardhat-network/provider/TransactionQueue.js +3 -3
  59. package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
  60. package/internal/hardhat-network/provider/TxPool.js +1 -1
  61. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  62. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +1 -1
  63. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  64. package/internal/hardhat-network/provider/modules/debug.js +1 -1
  65. package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
  66. package/internal/hardhat-network/provider/modules/eth.js +1 -1
  67. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  68. package/internal/hardhat-network/provider/modules/evm.js +1 -1
  69. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  70. package/internal/hardhat-network/provider/modules/hardhat.js +1 -1
  71. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  72. package/internal/hardhat-network/provider/modules/net.js +1 -1
  73. package/internal/hardhat-network/provider/modules/net.js.map +1 -1
  74. package/internal/hardhat-network/provider/modules/personal.js +1 -1
  75. package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
  76. package/internal/hardhat-network/provider/modules/web3.js +1 -1
  77. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  78. package/internal/hardhat-network/provider/node.js +3 -3
  79. package/internal/hardhat-network/provider/node.js.map +1 -1
  80. package/internal/hardhat-network/provider/output.js +1 -1
  81. package/internal/hardhat-network/provider/output.js.map +1 -1
  82. package/internal/hardhat-network/provider/provider.js +1 -1
  83. package/internal/hardhat-network/provider/provider.js.map +1 -1
  84. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +1 -1
  85. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  86. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +1 -1
  87. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  88. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +1 -1
  89. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.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.js +1 -1
  93. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  94. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
  95. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  96. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +1 -1
  97. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  98. package/internal/hardhat-network/provider/utils/assertions.js +1 -1
  99. package/internal/hardhat-network/provider/utils/assertions.js.map +1 -1
  100. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
  101. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
  102. package/internal/hardhat-network/provider/utils/makeForkClient.js +9 -3
  103. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  104. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +1 -1
  105. package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
  106. package/internal/hardhat-network/stack-traces/compiler-to-model.js +1 -1
  107. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  108. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +1 -0
  109. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
  110. package/internal/hardhat-network/stack-traces/consoleLogger.js +20 -1
  111. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  112. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  113. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  114. package/internal/hardhat-network/stack-traces/error-inferrer.js +1 -1
  115. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  116. package/internal/hardhat-network/stack-traces/model.js +1 -1
  117. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  118. package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
  119. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  120. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  121. package/internal/hardhat-network/stack-traces/solidityTracer.js +2 -1
  122. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  123. package/internal/hardhat-network/stack-traces/vm-tracer.js +1 -1
  124. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  125. package/internal/solidity/parse.js +1 -1
  126. package/internal/solidity/parse.js.map +1 -1
  127. package/internal/solidity/resolver.js +2 -2
  128. package/internal/solidity/resolver.js.map +1 -1
  129. package/internal/util/caller-package.d.ts.map +1 -1
  130. package/internal/util/caller-package.js +5 -1
  131. package/internal/util/caller-package.js.map +1 -1
  132. package/internal/util/ci-detection.d.ts.map +1 -1
  133. package/internal/util/ci-detection.js +2 -2
  134. package/internal/util/ci-detection.js.map +1 -1
  135. package/internal/util/download.d.ts.map +1 -1
  136. package/internal/util/download.js +1 -1
  137. package/internal/util/download.js.map +1 -1
  138. package/internal/util/fs-utils.js +10 -10
  139. package/internal/util/fs-utils.js.map +1 -1
  140. package/internal/util/jsonrpc.js +1 -1
  141. package/internal/util/jsonrpc.js.map +1 -1
  142. package/internal/vendor/await-semaphore/index.js +1 -1
  143. package/internal/vendor/await-semaphore/index.js.map +1 -1
  144. package/package.json +9 -8
  145. package/sample-projects/javascript/hardhat.config.js +1 -1
  146. package/sample-projects/javascript-esm/hardhat.config.cjs +1 -1
  147. package/sample-projects/typescript/hardhat.config.ts +1 -1
  148. package/src/builtin-tasks/compile.ts +2 -2
  149. package/src/builtin-tasks/flatten.ts +1 -1
  150. package/src/builtin-tasks/node.ts +1 -1
  151. package/src/builtin-tasks/run.ts +1 -1
  152. package/src/internal/artifacts.ts +3 -11
  153. package/src/internal/cli/analytics.ts +5 -2
  154. package/src/internal/cli/bootstrap.ts +2 -2
  155. package/src/internal/cli/constants.ts +1 -0
  156. package/src/internal/cli/project-creation.ts +4 -4
  157. package/src/internal/cli/prompt.ts +2 -2
  158. package/src/internal/core/config/config-loading.ts +2 -2
  159. package/src/internal/core/jsonrpc/types/input/validation.ts +1 -1
  160. package/src/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.ts +1 -1
  161. package/src/internal/core/params/argumentTypes.ts +4 -4
  162. package/src/internal/core/params/env-variables.ts +1 -1
  163. package/src/internal/core/providers/backwards-compatibility.ts +1 -1
  164. package/src/internal/core/providers/gas-providers.ts +1 -1
  165. package/src/internal/core/providers/http.ts +5 -5
  166. package/src/internal/core/providers/wrapper.ts +1 -1
  167. package/src/internal/core/runtime-environment.ts +1 -1
  168. package/src/internal/hardhat-network/jsonrpc/client.ts +3 -3
  169. package/src/internal/hardhat-network/jsonrpc/handler.ts +3 -3
  170. package/src/internal/hardhat-network/provider/BlockchainBase.ts +1 -1
  171. package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +1 -1
  172. package/src/internal/hardhat-network/provider/MiningTimer.ts +1 -1
  173. package/src/internal/hardhat-network/provider/TransactionQueue.ts +3 -3
  174. package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
  175. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
  176. package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +1 -1
  177. package/src/internal/hardhat-network/provider/modules/debug.ts +1 -1
  178. package/src/internal/hardhat-network/provider/modules/eth.ts +1 -1
  179. package/src/internal/hardhat-network/provider/modules/evm.ts +1 -1
  180. package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
  181. package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
  182. package/src/internal/hardhat-network/provider/modules/personal.ts +1 -1
  183. package/src/internal/hardhat-network/provider/modules/web3.ts +1 -1
  184. package/src/internal/hardhat-network/provider/node.ts +3 -3
  185. package/src/internal/hardhat-network/provider/output.ts +1 -1
  186. package/src/internal/hardhat-network/provider/provider.ts +1 -1
  187. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +1 -1
  188. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +1 -1
  189. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +1 -1
  190. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
  191. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +1 -1
  192. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +1 -1
  193. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +1 -1
  194. package/src/internal/hardhat-network/provider/utils/assertions.ts +1 -1
  195. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +11 -2
  196. package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +1 -1
  197. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +1 -1
  198. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +26 -1
  199. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  200. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +1 -1
  201. package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
  202. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
  203. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +4 -1
  204. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +1 -1
  205. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +1 -1
  206. package/src/internal/solidity/parse.ts +1 -1
  207. package/src/internal/solidity/resolver.ts +2 -2
  208. package/src/internal/util/caller-package.ts +7 -1
  209. package/src/internal/util/ci-detection.ts +3 -1
  210. package/src/internal/util/download.ts +1 -3
  211. package/src/internal/util/fs-utils.ts +10 -10
  212. package/src/internal/util/jsonrpc.ts +1 -1
  213. package/src/internal/vendor/await-semaphore/index.ts +1 -1
  214. package/src/utils/source-names.ts +2 -2
  215. package/utils/source-names.js +2 -2
  216. package/utils/source-names.js.map +1 -1
  217. package/internal/hardhat-network/provider/RethnetState.d.ts +0 -29
  218. package/internal/hardhat-network/provider/RethnetState.d.ts.map +0 -1
  219. package/internal/hardhat-network/provider/RethnetState.js +0 -110
  220. package/internal/hardhat-network/provider/RethnetState.js.map +0 -1
  221. package/internal/hardhat-network/provider/utils/bloom.d.ts +0 -32
  222. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +0 -1
  223. package/internal/hardhat-network/provider/utils/bloom.js +0 -79
  224. package/internal/hardhat-network/provider/utils/bloom.js.map +0 -1
  225. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +0 -17
  226. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +0 -1
  227. package/internal/hardhat-network/provider/utils/convertToRethnet.js +0 -392
  228. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +0 -1
  229. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts +0 -14
  230. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts.map +0 -1
  231. package/internal/hardhat-network/provider/vm/block-builder/dual.js +0 -47
  232. package/internal/hardhat-network/provider/vm/block-builder/dual.js.map +0 -1
  233. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts +0 -27
  234. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts.map +0 -1
  235. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js +0 -136
  236. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js.map +0 -1
  237. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts +0 -20
  238. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts.map +0 -1
  239. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js +0 -55
  240. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js.map +0 -1
  241. package/internal/hardhat-network/provider/vm/block-builder.d.ts +0 -19
  242. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +0 -1
  243. package/internal/hardhat-network/provider/vm/block-builder.js +0 -24
  244. package/internal/hardhat-network/provider/vm/block-builder.js.map +0 -1
  245. package/internal/hardhat-network/provider/vm/creation.d.ts +0 -10
  246. package/internal/hardhat-network/provider/vm/creation.d.ts.map +0 -1
  247. package/internal/hardhat-network/provider/vm/creation.js +0 -29
  248. package/internal/hardhat-network/provider/vm/creation.js.map +0 -1
  249. package/internal/hardhat-network/provider/vm/dual.d.ts +0 -43
  250. package/internal/hardhat-network/provider/vm/dual.d.ts.map +0 -1
  251. package/internal/hardhat-network/provider/vm/dual.js +0 -487
  252. package/internal/hardhat-network/provider/vm/dual.js.map +0 -1
  253. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +0 -61
  254. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +0 -1
  255. package/internal/hardhat-network/provider/vm/ethereumjs.js +0 -517
  256. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +0 -1
  257. package/internal/hardhat-network/provider/vm/exit.d.ts +0 -24
  258. package/internal/hardhat-network/provider/vm/exit.d.ts.map +0 -1
  259. package/internal/hardhat-network/provider/vm/exit.js +0 -140
  260. package/internal/hardhat-network/provider/vm/exit.js.map +0 -1
  261. package/internal/hardhat-network/provider/vm/rethnet.d.ts +0 -87
  262. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +0 -1
  263. package/internal/hardhat-network/provider/vm/rethnet.js +0 -262
  264. package/internal/hardhat-network/provider/vm/rethnet.js.map +0 -1
  265. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +0 -53
  266. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +0 -1
  267. package/internal/hardhat-network/provider/vm/vm-adapter.js +0 -3
  268. package/internal/hardhat-network/provider/vm/vm-adapter.js.map +0 -1
@@ -1,140 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exit = exports.ExitCode = void 0;
4
- const ethereumjs_evm_1 = require("@nomicfoundation/ethereumjs-evm");
5
- const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/exceptions");
6
- var ExitCode;
7
- (function (ExitCode) {
8
- ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
9
- ExitCode[ExitCode["REVERT"] = 1] = "REVERT";
10
- ExitCode[ExitCode["OUT_OF_GAS"] = 2] = "OUT_OF_GAS";
11
- ExitCode[ExitCode["INTERNAL_ERROR"] = 3] = "INTERNAL_ERROR";
12
- ExitCode[ExitCode["INVALID_OPCODE"] = 4] = "INVALID_OPCODE";
13
- ExitCode[ExitCode["STACK_UNDERFLOW"] = 5] = "STACK_UNDERFLOW";
14
- ExitCode[ExitCode["CODESIZE_EXCEEDS_MAXIMUM"] = 6] = "CODESIZE_EXCEEDS_MAXIMUM";
15
- ExitCode[ExitCode["CREATE_COLLISION"] = 7] = "CREATE_COLLISION";
16
- })(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
17
- class Exit {
18
- constructor(kind) {
19
- this.kind = kind;
20
- }
21
- static fromRethnetSuccessReason(reason) {
22
- switch (reason) {
23
- case 0 /* SuccessReason.Stop */:
24
- case 1 /* SuccessReason.Return */:
25
- case 2 /* SuccessReason.SelfDestruct */:
26
- return new Exit(ExitCode.SUCCESS);
27
- // TODO: Should we throw an error if default is hit?
28
- }
29
- }
30
- static fromRethnetExceptionalHalt(halt) {
31
- switch (halt) {
32
- case 0 /* ExceptionalHalt.OutOfGas */:
33
- return new Exit(ExitCode.OUT_OF_GAS);
34
- case 1 /* ExceptionalHalt.OpcodeNotFound */:
35
- case 2 /* ExceptionalHalt.InvalidFEOpcode */:
36
- return new Exit(ExitCode.INVALID_OPCODE);
37
- case 5 /* ExceptionalHalt.StackUnderflow */:
38
- return new Exit(ExitCode.STACK_UNDERFLOW);
39
- case 8 /* ExceptionalHalt.CreateCollision */:
40
- return new Exit(ExitCode.CREATE_COLLISION);
41
- case 11 /* ExceptionalHalt.CreateContractSizeLimit */:
42
- return new Exit(ExitCode.CODESIZE_EXCEEDS_MAXIMUM);
43
- default: {
44
- // TODO temporary, should be removed in production
45
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
46
- throw new Error(`Unmatched rethnet exceptional halt: ${halt}`);
47
- }
48
- }
49
- }
50
- static fromEthereumJSEvmError(evmError) {
51
- if (evmError === undefined) {
52
- return new Exit(ExitCode.SUCCESS);
53
- }
54
- if (evmError.error === exceptions_1.ERROR.REVERT) {
55
- return new Exit(ExitCode.REVERT);
56
- }
57
- if (evmError.error === exceptions_1.ERROR.OUT_OF_GAS) {
58
- return new Exit(ExitCode.OUT_OF_GAS);
59
- }
60
- if (evmError.error === exceptions_1.ERROR.INTERNAL_ERROR) {
61
- return new Exit(ExitCode.INTERNAL_ERROR);
62
- }
63
- if (evmError.error === exceptions_1.ERROR.INVALID_OPCODE) {
64
- return new Exit(ExitCode.INVALID_OPCODE);
65
- }
66
- if (evmError.error === exceptions_1.ERROR.STACK_UNDERFLOW) {
67
- return new Exit(ExitCode.STACK_UNDERFLOW);
68
- }
69
- if (evmError.error === exceptions_1.ERROR.CODESIZE_EXCEEDS_MAXIMUM) {
70
- return new Exit(ExitCode.CODESIZE_EXCEEDS_MAXIMUM);
71
- }
72
- if (evmError.error === exceptions_1.ERROR.CREATE_COLLISION) {
73
- return new Exit(ExitCode.CREATE_COLLISION);
74
- }
75
- // TODO temporary, should be removed in production
76
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
77
- throw new Error(`Unmatched evm error: ${evmError.error}`);
78
- }
79
- isError() {
80
- return this.kind !== ExitCode.SUCCESS;
81
- }
82
- getReason() {
83
- switch (this.kind) {
84
- case ExitCode.SUCCESS:
85
- return "Success";
86
- case ExitCode.REVERT:
87
- return "Reverted";
88
- case ExitCode.OUT_OF_GAS:
89
- return "Out of gas";
90
- case ExitCode.INTERNAL_ERROR:
91
- return "Internal error";
92
- case ExitCode.INVALID_OPCODE:
93
- return "Invalid opcode";
94
- case ExitCode.STACK_UNDERFLOW:
95
- return "Stack underflow";
96
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
97
- return "Codesize exceeds maximum";
98
- case ExitCode.CREATE_COLLISION:
99
- return "Create collision";
100
- }
101
- const _exhaustiveCheck = this.kind;
102
- }
103
- getEthereumJSError() {
104
- switch (this.kind) {
105
- case ExitCode.SUCCESS:
106
- return undefined;
107
- case ExitCode.REVERT:
108
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.REVERT);
109
- case ExitCode.OUT_OF_GAS:
110
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.OUT_OF_GAS);
111
- case ExitCode.INTERNAL_ERROR:
112
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.INTERNAL_ERROR);
113
- case ExitCode.INVALID_OPCODE:
114
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.INVALID_OPCODE);
115
- case ExitCode.STACK_UNDERFLOW:
116
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.STACK_UNDERFLOW);
117
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
118
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.CODESIZE_EXCEEDS_MAXIMUM);
119
- case ExitCode.CREATE_COLLISION:
120
- return new ethereumjs_evm_1.EvmError(exceptions_1.ERROR.CREATE_COLLISION);
121
- }
122
- const _exhaustiveCheck = this.kind;
123
- }
124
- getRethnetExceptionalHalt() {
125
- switch (this.kind) {
126
- case ExitCode.OUT_OF_GAS:
127
- return 0 /* ExceptionalHalt.OutOfGas */;
128
- case ExitCode.INVALID_OPCODE:
129
- return 1 /* ExceptionalHalt.OpcodeNotFound */;
130
- case ExitCode.CODESIZE_EXCEEDS_MAXIMUM:
131
- return 11 /* ExceptionalHalt.CreateContractSizeLimit */;
132
- default:
133
- // TODO temporary, should be removed in production
134
- // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
135
- throw new Error(`Unmatched rethnet exceptional halt: ${this.kind}`);
136
- }
137
- }
138
- }
139
- exports.Exit = Exit;
140
- //# sourceMappingURL=exit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/exit.ts"],"names":[],"mappings":";;;AAAA,oEAA2D;AAC3D,gFAAwE;AAGxE,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,6CAAO,CAAA;IACP,2CAAM,CAAA;IACN,mDAAU,CAAA;IACV,2DAAc,CAAA;IACd,2DAAc,CAAA;IACd,6DAAe,CAAA;IACf,+EAAwB,CAAA;IACxB,+DAAgB,CAAA;AAClB,CAAC,EATW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QASnB;AAED,MAAa,IAAI;IA2Ef,YAAmB,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IA1E9B,MAAM,CAAC,wBAAwB,CAAC,MAAqB;QAC1D,QAAQ,MAAM,EAAE;YACd,gCAAwB;YACxB,kCAA0B;YAC1B;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpC,oDAAoD;SACrD;IACH,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,IAAqB;QAC5D,QAAQ,IAAI,EAAE;YACZ;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEvC,4CAAoC;YACpC;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE3C;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE5C;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE7C;gBACE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YAErD,OAAO,CAAC,CAAC;gBACP,kDAAkD;gBAClD,gFAAgF;gBAChF,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;aAChE;SACF;IACH,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,QAA8B;QACjE,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACnC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,MAAM,EAAE;YACnC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,UAAU,EAAE;YACvC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACtC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,cAAc,EAAE;YAC3C,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC1C;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,cAAc,EAAE;YAC3C,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC1C;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,eAAe,EAAE;YAC5C,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;SAC3C;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,wBAAwB,EAAE;YACrD,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;SACpD;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,kBAAK,CAAC,gBAAgB,EAAE;YAC7C,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SAC5C;QAED,kDAAkD;QAClD,gFAAgF;QAChF,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAIM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC;IACxC,CAAC;IAEM,SAAS;QACd,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,QAAQ,CAAC,OAAO;gBACnB,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ,CAAC,MAAM;gBAClB,OAAO,UAAU,CAAC;YACpB,KAAK,QAAQ,CAAC,UAAU;gBACtB,OAAO,YAAY,CAAC;YACtB,KAAK,QAAQ,CAAC,cAAc;gBAC1B,OAAO,gBAAgB,CAAC;YAC1B,KAAK,QAAQ,CAAC,cAAc;gBAC1B,OAAO,gBAAgB,CAAC;YAC1B,KAAK,QAAQ,CAAC,eAAe;gBAC3B,OAAO,iBAAiB,CAAC;YAC3B,KAAK,QAAQ,CAAC,wBAAwB;gBACpC,OAAO,0BAA0B,CAAC;YACpC,KAAK,QAAQ,CAAC,gBAAgB;gBAC5B,OAAO,kBAAkB,CAAC;SAC7B;QAED,MAAM,gBAAgB,GAAU,IAAI,CAAC,IAAI,CAAC;IAC5C,CAAC;IAEM,kBAAkB;QACvB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,QAAQ,CAAC,OAAO;gBACnB,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ,CAAC,MAAM;gBAClB,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,QAAQ,CAAC,UAAU;gBACtB,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,UAAU,CAAC,CAAC;YACxC,KAAK,QAAQ,CAAC,cAAc;gBAC1B,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,cAAc,CAAC,CAAC;YAC5C,KAAK,QAAQ,CAAC,cAAc;gBAC1B,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,cAAc,CAAC,CAAC;YAC5C,KAAK,QAAQ,CAAC,eAAe;gBAC3B,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,eAAe,CAAC,CAAC;YAC7C,KAAK,QAAQ,CAAC,wBAAwB;gBACpC,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,wBAAwB,CAAC,CAAC;YACtD,KAAK,QAAQ,CAAC,gBAAgB;gBAC5B,OAAO,IAAI,yBAAQ,CAAC,kBAAK,CAAC,gBAAgB,CAAC,CAAC;SAC/C;QAED,MAAM,gBAAgB,GAAU,IAAI,CAAC,IAAI,CAAC;IAC5C,CAAC;IAEM,yBAAyB;QAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,QAAQ,CAAC,UAAU;gBACtB,wCAAgC;YAClC,KAAK,QAAQ,CAAC,cAAc;gBAC1B,8CAAsC;YACxC,KAAK,QAAQ,CAAC,wBAAwB;gBACpC,wDAA+C;YAEjD;gBACE,kDAAkD;gBAClD,gFAAgF;gBAChF,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACvE;IACH,CAAC;CACF;AA9ID,oBA8IC"}
@@ -1,87 +0,0 @@
1
- /// <reference types="node" />
2
- import { Block } from "@nomicfoundation/ethereumjs-block";
3
- import { Common } from "@nomicfoundation/ethereumjs-common";
4
- import { Account, Address } from "@nomicfoundation/ethereumjs-util";
5
- import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
6
- import { Blockchain, Rethnet, RethnetContext } from "rethnet-evm";
7
- import { NodeConfig } from "../node-types";
8
- import { RpcDebugTraceOutput } from "../output";
9
- import { RethnetStateManager } from "../RethnetState";
10
- import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
11
- import { MessageTrace } from "../../stack-traces/message-trace";
12
- import { RunTxResult, Trace, VMAdapter } from "./vm-adapter";
13
- import { BlockBuilderAdapter, BuildBlockOpts } from "./block-builder";
14
- export declare const globalRethnetContext: RethnetContext;
15
- export declare class RethnetAdapter implements VMAdapter {
16
- private _blockchain;
17
- private _state;
18
- private _rethnet;
19
- private readonly _selectHardfork;
20
- private _vmTracer;
21
- constructor(_blockchain: Blockchain, _state: RethnetStateManager, _rethnet: Rethnet, _selectHardfork: (blockNumber: bigint) => string, common: Common);
22
- static create(config: NodeConfig, selectHardfork: (blockNumber: bigint) => string, getBlockHash: (blockNumber: bigint) => Promise<Buffer>, common: Common): Promise<RethnetAdapter>;
23
- /**
24
- * Run `tx` with the given `blockContext`, without modifying the state.
25
- */
26
- dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
27
- /**
28
- * Get the account info for the given address.
29
- */
30
- getAccount(address: Address): Promise<Account>;
31
- /**
32
- * Get the storage value at the given address and slot.
33
- */
34
- getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
35
- /**
36
- * Get the contract code at the given address.
37
- */
38
- getContractCode(address: Address): Promise<Buffer>;
39
- /**
40
- * Update the account info for the given address.
41
- */
42
- putAccount(address: Address, account: Account): Promise<void>;
43
- /**
44
- * Update the contract code for the given address.
45
- */
46
- putContractCode(address: Address, value: Buffer): Promise<void>;
47
- /**
48
- * Update the value of the given storage slot.
49
- */
50
- putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
51
- /**
52
- * Get the root of the current state trie.
53
- */
54
- getStateRoot(): Promise<Buffer>;
55
- /**
56
- * Reset the state trie to the point after `block` was mined. If
57
- * `irregularStateOrUndefined` is passed, use it as the state root.
58
- */
59
- setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
60
- /**
61
- * Reset the state trie to the point where it had the given state root.
62
- *
63
- * Throw if it can't.
64
- */
65
- restoreContext(stateRoot: Buffer): Promise<void>;
66
- /**
67
- * Must be called after `startBlock`, and before `seal`.
68
- */
69
- runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
70
- /**
71
- * Re-execute the transactions in the block up until the transaction with the
72
- * given hash, and trace the execution of that transaction.
73
- */
74
- traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
75
- makeSnapshot(): Promise<Buffer>;
76
- removeSnapshot(stateRoot: Buffer): Promise<void>;
77
- getLastTrace(): {
78
- trace: MessageTrace | undefined;
79
- error: Error | undefined;
80
- };
81
- clearLastError(): void;
82
- printState(): Promise<void>;
83
- createBlockBuilder(common: Common, opts: BuildBlockOpts): Promise<BlockBuilderAdapter>;
84
- private _getBlockEnvDifficulty;
85
- private _getBlockPrevRandao;
86
- }
87
- //# sourceMappingURL=rethnet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rethnet.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
@@ -1,262 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RethnetAdapter = exports.globalRethnetContext = void 0;
4
- const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
5
- const ethereumjs_tx_1 = require("@nomicfoundation/ethereumjs-tx");
6
- const rethnet_evm_1 = require("rethnet-evm");
7
- const node_types_1 = require("../node-types");
8
- const convertToRethnet_1 = require("../utils/convertToRethnet");
9
- const hardforks_1 = require("../../../util/hardforks");
10
- const keccak_1 = require("../../../util/keccak");
11
- const RethnetState_1 = require("../RethnetState");
12
- const vm_tracer_1 = require("../../stack-traces/vm-tracer");
13
- const rethnet_1 = require("./block-builder/rethnet");
14
- /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
15
- /* eslint-disable @typescript-eslint/no-unused-vars */
16
- exports.globalRethnetContext = new rethnet_evm_1.RethnetContext();
17
- class RethnetAdapter {
18
- constructor(_blockchain, _state, _rethnet, _selectHardfork, common) {
19
- this._blockchain = _blockchain;
20
- this._state = _state;
21
- this._rethnet = _rethnet;
22
- this._selectHardfork = _selectHardfork;
23
- this._vmTracer = new vm_tracer_1.VMTracer(common, false);
24
- }
25
- static async create(config, selectHardfork, getBlockHash, common) {
26
- const blockchain = new rethnet_evm_1.Blockchain(getBlockHash);
27
- const limitContractCodeSize = config.allowUnlimitedContractSize === true ? 2n ** 64n - 1n : undefined;
28
- let state;
29
- if ((0, node_types_1.isForkedNodeConfig)(config)) {
30
- state = await RethnetState_1.RethnetStateManager.forkRemote(exports.globalRethnetContext, config.forkConfig, config.genesisAccounts);
31
- }
32
- else {
33
- state = RethnetState_1.RethnetStateManager.withGenesisAccounts(exports.globalRethnetContext, config.genesisAccounts);
34
- }
35
- const rethnet = new rethnet_evm_1.Rethnet(blockchain, state.asInner(), {
36
- chainId: BigInt(config.chainId),
37
- specId: (0, convertToRethnet_1.ethereumsjsHardforkToRethnet)(config.hardfork),
38
- limitContractCodeSize,
39
- disableBlockGasLimit: true,
40
- disableEip3607: true,
41
- });
42
- return new RethnetAdapter(blockchain, state, rethnet, selectHardfork, common);
43
- }
44
- /**
45
- * Run `tx` with the given `blockContext`, without modifying the state.
46
- */
47
- async dryRun(tx, blockContext, forceBaseFeeZero) {
48
- if (tx.supports(ethereumjs_tx_1.Capability.EIP1559FeeMarket) &&
49
- !blockContext._common.hardforkGteHardfork(this._selectHardfork(blockContext.header.number), "london")) {
50
- throw new Error("Cannot run transaction: EIP 1559 is not activated.");
51
- }
52
- const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnetTransactionRequest)(tx);
53
- const difficulty = this._getBlockEnvDifficulty(blockContext.header.difficulty);
54
- const prevRandao = this._getBlockPrevRandao(blockContext.header.number, blockContext.header.mixHash);
55
- const rethnetResult = await this._rethnet.guaranteedDryRun(rethnetTx, {
56
- number: blockContext.header.number,
57
- beneficiary: blockContext.header.coinbase.buf,
58
- timestamp: blockContext.header.timestamp,
59
- baseFee: forceBaseFeeZero === true ? 0n : blockContext.header.baseFeePerGas,
60
- gasLimit: blockContext.header.gasLimit,
61
- difficulty,
62
- mixHash: prevRandao,
63
- }, true);
64
- const trace = rethnetResult.trace;
65
- for (const traceItem of trace) {
66
- if ("pc" in traceItem) {
67
- await this._vmTracer.addStep(traceItem);
68
- }
69
- else if ("executionResult" in traceItem) {
70
- await this._vmTracer.addAfterMessage(traceItem);
71
- }
72
- else {
73
- await this._vmTracer.addBeforeMessage(traceItem);
74
- }
75
- }
76
- try {
77
- const result = (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.result, blockContext.header.gasUsed);
78
- return [result, trace];
79
- }
80
- catch (e) {
81
- // console.log("Rethnet trace");
82
- // console.log(rethnetResult.execResult.trace);
83
- throw e;
84
- }
85
- }
86
- /**
87
- * Get the account info for the given address.
88
- */
89
- async getAccount(address) {
90
- const [accountInfo, storageRoot] = await Promise.all([
91
- this._state.getAccount(address),
92
- this._state.getAccountStorageRoot(address),
93
- ]);
94
- return new ethereumjs_util_1.Account(accountInfo?.nonce, accountInfo?.balance, storageRoot ?? undefined, accountInfo?.code?.hash);
95
- }
96
- /**
97
- * Get the storage value at the given address and slot.
98
- */
99
- async getContractStorage(address, key) {
100
- return this._state.getContractStorage(address, key);
101
- }
102
- /**
103
- * Get the contract code at the given address.
104
- */
105
- async getContractCode(address) {
106
- return this._state.getContractCode(address);
107
- }
108
- /**
109
- * Update the account info for the given address.
110
- */
111
- async putAccount(address, account) {
112
- const contractCode = account.codeHash === ethereumjs_util_1.KECCAK256_NULL
113
- ? undefined
114
- : await this._state.getContractCode(address);
115
- return this._state.modifyAccount(address, async function (balance, nonce, code) {
116
- const newCode = account.codeHash === ethereumjs_util_1.KECCAK256_NULL
117
- ? undefined
118
- : account.codeHash === code?.hash
119
- ? code
120
- : {
121
- hash: account.codeHash,
122
- code: contractCode,
123
- };
124
- return {
125
- balance: account.balance,
126
- nonce: account.nonce,
127
- code: newCode,
128
- };
129
- });
130
- }
131
- /**
132
- * Update the contract code for the given address.
133
- */
134
- async putContractCode(address, value) {
135
- const codeHash = (0, keccak_1.keccak256)(value);
136
- return this._state.modifyAccount(address, async function (balance, nonce, code) {
137
- const newCode = codeHash === ethereumjs_util_1.KECCAK256_NULL
138
- ? undefined
139
- : codeHash === code?.hash
140
- ? code
141
- : {
142
- hash: codeHash,
143
- code: value,
144
- };
145
- return {
146
- balance,
147
- nonce,
148
- code: newCode,
149
- };
150
- });
151
- }
152
- /**
153
- * Update the value of the given storage slot.
154
- */
155
- async putContractStorage(address, key, value) {
156
- await this._state.putContractStorage(address, key, value);
157
- }
158
- /**
159
- * Get the root of the current state trie.
160
- */
161
- async getStateRoot() {
162
- return this._state.getStateRoot();
163
- }
164
- /**
165
- * Reset the state trie to the point after `block` was mined. If
166
- * `irregularStateOrUndefined` is passed, use it as the state root.
167
- */
168
- async setBlockContext(block, irregularStateOrUndefined) {
169
- return this._state.setBlockContext(irregularStateOrUndefined ?? block.header.stateRoot, block.header.number);
170
- }
171
- /**
172
- * Reset the state trie to the point where it had the given state root.
173
- *
174
- * Throw if it can't.
175
- */
176
- async restoreContext(stateRoot) {
177
- return this._state.setBlockContext(stateRoot);
178
- }
179
- /**
180
- * Must be called after `startBlock`, and before `seal`.
181
- */
182
- async runTxInBlock(tx, block) {
183
- if (tx.supports(ethereumjs_tx_1.Capability.EIP1559FeeMarket) &&
184
- !block._common.hardforkGteHardfork(this._selectHardfork(block.header.number), "london")) {
185
- throw new Error("Cannot run transaction: EIP 1559 is not activated.");
186
- }
187
- const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnetTransactionRequest)(tx);
188
- const difficulty = this._getBlockEnvDifficulty(block.header.difficulty);
189
- const prevRandao = this._getBlockPrevRandao(block.header.number, block.header.mixHash);
190
- const rethnetResult = await this._rethnet.run(rethnetTx, (0, convertToRethnet_1.ethereumjsHeaderDataToRethnetBlockConfig)(block.header, difficulty, prevRandao), true);
191
- const trace = rethnetResult.trace;
192
- for (const traceItem of trace) {
193
- if ("pc" in traceItem) {
194
- await this._vmTracer.addStep(traceItem);
195
- }
196
- else if ("executionResult" in traceItem) {
197
- await this._vmTracer.addAfterMessage(traceItem);
198
- }
199
- else {
200
- await this._vmTracer.addBeforeMessage(traceItem);
201
- }
202
- }
203
- try {
204
- const result = (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.result, block.header.gasUsed);
205
- return [result, this._vmTracer.getLastTopLevelMessageTrace()];
206
- }
207
- catch (e) {
208
- // console.log("Rethnet trace");
209
- // console.log(rethnetResult.trace);
210
- throw e;
211
- }
212
- }
213
- /**
214
- * Re-execute the transactions in the block up until the transaction with the
215
- * given hash, and trace the execution of that transaction.
216
- */
217
- async traceTransaction(hash, block, config) {
218
- throw new Error("traceTransaction not implemented for Rethnet");
219
- }
220
- async makeSnapshot() {
221
- return this._state.makeSnapshot();
222
- }
223
- async removeSnapshot(stateRoot) {
224
- return this._state.removeSnapshot(stateRoot);
225
- }
226
- getLastTrace() {
227
- const trace = this._vmTracer.getLastTopLevelMessageTrace();
228
- const error = this._vmTracer.getLastError();
229
- return { trace, error };
230
- }
231
- clearLastError() {
232
- this._vmTracer.clearLastError();
233
- }
234
- async printState() {
235
- console.log(await this._state.serialize());
236
- }
237
- async createBlockBuilder(common, opts) {
238
- await this._state.checkpoint();
239
- return rethnet_1.RethnetBlockBuilder.create(this._blockchain, this._state, this._vmTracer, this._rethnet.config(), common, opts);
240
- }
241
- _getBlockEnvDifficulty(difficulty) {
242
- const MAX_DIFFICULTY = 2n ** 32n - 1n;
243
- if (difficulty !== undefined && difficulty > MAX_DIFFICULTY) {
244
- console.warn("Difficulty is larger than U256::max:", difficulty.toString(16));
245
- return MAX_DIFFICULTY;
246
- }
247
- return difficulty;
248
- }
249
- _getBlockPrevRandao(blockNumber, mixHash) {
250
- const hardfork = this._selectHardfork(blockNumber);
251
- const isPostMergeHardfork = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.MERGE);
252
- if (isPostMergeHardfork) {
253
- if (mixHash === undefined) {
254
- throw new Error("mixHash must be set for post-merge hardfork");
255
- }
256
- return mixHash;
257
- }
258
- return undefined;
259
- }
260
- }
261
- exports.RethnetAdapter = RethnetAdapter;
262
- //# sourceMappingURL=rethnet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rethnet.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /// <reference types="node" />
2
- import type { Block } from "@nomicfoundation/ethereumjs-block";
3
- import type { Common } from "@nomicfoundation/ethereumjs-common";
4
- import type { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
5
- import type { Account, Address } from "@nomicfoundation/ethereumjs-util";
6
- import type { TxReceipt } from "@nomicfoundation/ethereumjs-vm";
7
- import type { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
8
- import type { RpcDebugTraceOutput } from "../output";
9
- import { MessageTrace } from "../../stack-traces/message-trace";
10
- import { Bloom } from "../utils/bloom";
11
- import { Exit } from "./exit";
12
- import { BlockBuilderAdapter, BuildBlockOpts } from "./block-builder";
13
- export declare type Trace = any;
14
- export interface RunTxResult {
15
- bloom: Bloom;
16
- createdAddress?: Address;
17
- gasUsed: bigint;
18
- returnValue: Buffer;
19
- exit: Exit;
20
- receipt: TxReceipt;
21
- }
22
- export interface RunBlockResult {
23
- results: RunTxResult[];
24
- receipts: TxReceipt[];
25
- stateRoot: Buffer;
26
- logsBloom: Buffer;
27
- receiptsRoot: Buffer;
28
- gasUsed: bigint;
29
- }
30
- export interface VMAdapter {
31
- dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
32
- getAccount(address: Address): Promise<Account>;
33
- getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
34
- getContractCode(address: Address): Promise<Buffer>;
35
- putAccount(address: Address, account: Account): Promise<void>;
36
- putContractCode(address: Address, value: Buffer): Promise<void>;
37
- putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
38
- getStateRoot(): Promise<Buffer>;
39
- setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
40
- restoreContext(stateRoot: Buffer): Promise<void>;
41
- runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
42
- getLastTrace(): {
43
- trace: MessageTrace | undefined;
44
- error: Error | undefined;
45
- };
46
- clearLastError(): void;
47
- traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
48
- makeSnapshot(): Promise<Buffer>;
49
- removeSnapshot(stateRoot: Buffer): Promise<void>;
50
- printState(): Promise<void>;
51
- createBlockBuilder(common: Common, opts: BuildBlockOpts): Promise<BlockBuilderAdapter>;
52
- }
53
- //# sourceMappingURL=vm-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vm-adapter.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=vm-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vm-adapter.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":""}