hardhat 2.13.0-dev.2 → 2.13.0-dev.3

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 (292) hide show
  1. package/builtin-tasks/compile.js +16 -6
  2. package/builtin-tasks/compile.js.map +1 -1
  3. package/builtin-tasks/flatten.js +1 -1
  4. package/builtin-tasks/flatten.js.map +1 -1
  5. package/builtin-tasks/help.js +2 -4
  6. package/builtin-tasks/help.js.map +1 -1
  7. package/builtin-tasks/task-names.d.ts +1 -0
  8. package/builtin-tasks/task-names.d.ts.map +1 -1
  9. package/builtin-tasks/task-names.js +3 -2
  10. package/builtin-tasks/task-names.js.map +1 -1
  11. package/builtin-tasks/test.js +22 -1
  12. package/builtin-tasks/test.js.map +1 -1
  13. package/internal/cli/bootstrap.d.ts +1 -0
  14. package/internal/cli/bootstrap.js +12 -20
  15. package/internal/cli/bootstrap.js.map +1 -1
  16. package/internal/cli/cli.d.ts +0 -1
  17. package/internal/cli/cli.d.ts.map +1 -1
  18. package/internal/cli/cli.js +20 -29
  19. package/internal/cli/cli.js.map +1 -1
  20. package/internal/cli/project-creation.d.ts +1 -2
  21. package/internal/cli/project-creation.d.ts.map +1 -1
  22. package/internal/cli/project-creation.js +105 -36
  23. package/internal/cli/project-creation.js.map +1 -1
  24. package/internal/cli/prompt.d.ts +2 -2
  25. package/internal/cli/prompt.d.ts.map +1 -1
  26. package/internal/cli/prompt.js +1 -2
  27. package/internal/cli/prompt.js.map +1 -1
  28. package/internal/cli/types.d.ts +1 -0
  29. package/internal/cli/types.d.ts.map +1 -1
  30. package/internal/core/config/config-env.d.ts +5 -11
  31. package/internal/core/config/config-env.d.ts.map +1 -1
  32. package/internal/core/config/config-env.js +2 -13
  33. package/internal/core/config/config-env.js.map +1 -1
  34. package/internal/core/config/config-loading.d.ts +2 -1
  35. package/internal/core/config/config-loading.d.ts.map +1 -1
  36. package/internal/core/config/config-loading.js +25 -7
  37. package/internal/core/config/config-loading.js.map +1 -1
  38. package/internal/core/config/config-validation.d.ts +2 -0
  39. package/internal/core/config/config-validation.d.ts.map +1 -1
  40. package/internal/core/config/config-validation.js +18 -1
  41. package/internal/core/config/config-validation.js.map +1 -1
  42. package/internal/core/config/extenders.d.ts +4 -7
  43. package/internal/core/config/extenders.d.ts.map +1 -1
  44. package/internal/core/config/extenders.js +5 -12
  45. package/internal/core/config/extenders.js.map +1 -1
  46. package/internal/core/errors-list.d.ts +28 -7
  47. package/internal/core/errors-list.d.ts.map +1 -1
  48. package/internal/core/errors-list.js +33 -10
  49. package/internal/core/errors-list.js.map +1 -1
  50. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
  51. package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
  52. package/internal/core/project-structure.d.ts.map +1 -1
  53. package/internal/core/project-structure.js +6 -0
  54. package/internal/core/project-structure.js.map +1 -1
  55. package/internal/core/providers/construction.d.ts.map +1 -1
  56. package/internal/core/providers/construction.js +25 -5
  57. package/internal/core/providers/construction.js.map +1 -1
  58. package/internal/core/providers/http.d.ts +2 -2
  59. package/internal/core/providers/http.d.ts.map +1 -1
  60. package/internal/core/providers/http.js +41 -19
  61. package/internal/core/providers/http.js.map +1 -1
  62. package/internal/core/runtime-environment.d.ts +4 -2
  63. package/internal/core/runtime-environment.d.ts.map +1 -1
  64. package/internal/core/runtime-environment.js +39 -47
  65. package/internal/core/runtime-environment.js.map +1 -1
  66. package/internal/core/tasks/dsl.d.ts +6 -6
  67. package/internal/core/tasks/dsl.d.ts.map +1 -1
  68. package/internal/core/tasks/dsl.js.map +1 -1
  69. package/internal/core/tasks/task-definitions.d.ts +2 -2
  70. package/internal/core/tasks/task-definitions.d.ts.map +1 -1
  71. package/internal/core/tasks/task-definitions.js.map +1 -1
  72. package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -0
  73. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
  74. package/internal/hardhat-network/jsonrpc/handler.js +13 -18
  75. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  76. package/internal/hardhat-network/provider/RethnetState.d.ts +26 -0
  77. package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
  78. package/internal/hardhat-network/provider/RethnetState.js +84 -0
  79. package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
  80. package/internal/hardhat-network/provider/modules/evm.d.ts +2 -1
  81. package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
  82. package/internal/hardhat-network/provider/modules/evm.js +10 -4
  83. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  84. package/internal/hardhat-network/provider/node-types.d.ts +1 -1
  85. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  86. package/internal/hardhat-network/provider/node.d.ts +1 -0
  87. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  88. package/internal/hardhat-network/provider/node.js +6 -4
  89. package/internal/hardhat-network/provider/node.js.map +1 -1
  90. package/internal/hardhat-network/provider/provider.d.ts +25 -21
  91. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  92. package/internal/hardhat-network/provider/provider.js +25 -42
  93. package/internal/hardhat-network/provider/provider.js.map +1 -1
  94. package/internal/hardhat-network/provider/return-data.js +2 -2
  95. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  96. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
  97. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +4 -2
  98. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  99. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
  100. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +4 -2
  101. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  102. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
  103. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +4 -2
  104. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  105. package/internal/hardhat-network/provider/utils/bloom.d.ts +32 -0
  106. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -0
  107. package/internal/hardhat-network/provider/utils/bloom.js +79 -0
  108. package/internal/hardhat-network/provider/utils/bloom.js.map +1 -0
  109. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +12 -0
  110. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -0
  111. package/internal/hardhat-network/provider/utils/convertToRethnet.js +162 -0
  112. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -0
  113. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +7 -0
  114. package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -0
  115. package/internal/hardhat-network/provider/utils/makeFakeSignature.js +31 -0
  116. package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -0
  117. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -1
  118. package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
  119. package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -2
  120. package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
  121. package/internal/hardhat-network/provider/vm/block-builder.d.ts +31 -0
  122. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -0
  123. package/internal/hardhat-network/provider/vm/block-builder.js +151 -0
  124. package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -0
  125. package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
  126. package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
  127. package/internal/hardhat-network/provider/vm/creation.js +29 -0
  128. package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
  129. package/internal/hardhat-network/provider/vm/dual.d.ts +43 -0
  130. package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -0
  131. package/internal/hardhat-network/provider/vm/dual.js +488 -0
  132. package/internal/hardhat-network/provider/vm/dual.js.map +1 -0
  133. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +56 -0
  134. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -0
  135. package/internal/hardhat-network/provider/vm/ethereumjs.js +416 -0
  136. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -0
  137. package/internal/hardhat-network/provider/vm/exit.d.ts +23 -0
  138. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  139. package/internal/hardhat-network/provider/vm/exit.js +130 -0
  140. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  141. package/internal/hardhat-network/provider/vm/rethnet.d.ts +99 -0
  142. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -0
  143. package/internal/hardhat-network/provider/vm/rethnet.js +284 -0
  144. package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -0
  145. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +52 -0
  146. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -0
  147. package/internal/hardhat-network/provider/vm/vm-adapter.js +3 -0
  148. package/internal/hardhat-network/provider/vm/vm-adapter.js.map +1 -0
  149. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -1
  150. package/internal/hardhat-network/stack-traces/compiler-to-model.js +37 -11
  151. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  152. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  153. package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
  154. package/internal/hardhat-network/stack-traces/constants.js +1 -1
  155. package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
  156. package/internal/hardhat-network/stack-traces/debug.js +6 -2
  157. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  158. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +1 -0
  159. package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
  160. package/internal/hardhat-network/stack-traces/error-inferrer.js +85 -55
  161. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  162. package/internal/hardhat-network/stack-traces/model.d.ts +3 -1
  163. package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
  164. package/internal/hardhat-network/stack-traces/model.js +9 -1
  165. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  166. package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
  167. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  168. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +2 -2
  169. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  170. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
  171. package/internal/hardhat-network/stack-traces/solidityTracer.js +1 -0
  172. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  173. package/internal/lib/hardhat-lib.d.ts.map +1 -1
  174. package/internal/lib/hardhat-lib.js +1 -4
  175. package/internal/lib/hardhat-lib.js.map +1 -1
  176. package/internal/solidity/compiler/downloader.js +2 -2
  177. package/internal/solidity/compiler/downloader.js.map +1 -1
  178. package/internal/solidity/compiler/index.js +1 -1
  179. package/internal/solidity/compiler/index.js.map +1 -1
  180. package/internal/solidity/resolver.d.ts +4 -3
  181. package/internal/solidity/resolver.d.ts.map +1 -1
  182. package/internal/solidity/resolver.js +18 -7
  183. package/internal/solidity/resolver.js.map +1 -1
  184. package/internal/util/abi-helpers.d.ts +1 -0
  185. package/internal/util/abi-helpers.d.ts.map +1 -1
  186. package/internal/util/abi-helpers.js +9 -0
  187. package/internal/util/abi-helpers.js.map +1 -1
  188. package/internal/util/download.d.ts.map +1 -1
  189. package/internal/util/download.js +12 -11
  190. package/internal/util/download.js.map +1 -1
  191. package/internal/util/packageInfo.d.ts +6 -1
  192. package/internal/util/packageInfo.d.ts.map +1 -1
  193. package/internal/util/packageInfo.js +14 -11
  194. package/internal/util/packageInfo.js.map +1 -1
  195. package/internal/util/proxy.d.ts +2 -0
  196. package/internal/util/proxy.d.ts.map +1 -0
  197. package/internal/util/proxy.js +19 -0
  198. package/internal/util/proxy.js.map +1 -0
  199. package/package.json +9 -10
  200. package/register.js +1 -4
  201. package/register.js.map +1 -1
  202. package/sample-projects/javascript/hardhat.config.js +1 -1
  203. package/sample-projects/javascript/scripts/deploy.js +2 -2
  204. package/sample-projects/javascript-esm/LICENSE.md +11 -0
  205. package/sample-projects/javascript-esm/README.md +13 -0
  206. package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
  207. package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
  208. package/sample-projects/javascript-esm/scripts/deploy.js +22 -0
  209. package/sample-projects/javascript-esm/test/Lock.js +123 -0
  210. package/sample-projects/typescript/hardhat.config.ts +1 -1
  211. package/sample-projects/typescript/scripts/deploy.ts +2 -2
  212. package/sample-projects/typescript/tsconfig.json +2 -1
  213. package/src/builtin-tasks/compile.ts +28 -7
  214. package/src/builtin-tasks/flatten.ts +4 -1
  215. package/src/builtin-tasks/help.ts +15 -16
  216. package/src/builtin-tasks/task-names.ts +2 -0
  217. package/src/builtin-tasks/test.ts +30 -2
  218. package/src/internal/artifacts.ts +947 -0
  219. package/src/internal/cli/bootstrap.ts +14 -36
  220. package/src/internal/cli/cli.ts +38 -43
  221. package/src/internal/cli/project-creation.ts +128 -47
  222. package/src/internal/cli/prompt.ts +2 -4
  223. package/src/internal/cli/types.ts +2 -0
  224. package/src/internal/core/config/config-env.ts +15 -27
  225. package/src/internal/core/config/config-loading.ts +35 -11
  226. package/src/internal/core/config/config-validation.ts +20 -0
  227. package/src/internal/core/config/extenders.ts +6 -15
  228. package/src/internal/core/errors-list.ts +36 -10
  229. package/src/internal/core/project-structure.ts +8 -0
  230. package/src/internal/core/providers/construction.ts +29 -24
  231. package/src/internal/core/providers/http.ts +38 -26
  232. package/src/internal/core/runtime-environment.ts +65 -60
  233. package/src/internal/core/tasks/dsl.ts +17 -17
  234. package/src/internal/core/tasks/task-definitions.ts +6 -2
  235. package/src/internal/hardhat-network/jsonrpc/handler.ts +31 -28
  236. package/src/internal/hardhat-network/provider/modules/evm.ts +15 -3
  237. package/src/internal/hardhat-network/provider/node-types.ts +1 -1
  238. package/src/internal/hardhat-network/provider/node.ts +5 -1
  239. package/src/internal/hardhat-network/provider/provider.ts +60 -49
  240. package/src/internal/hardhat-network/provider/return-data.ts +2 -2
  241. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +5 -2
  242. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +5 -2
  243. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +5 -2
  244. package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +46 -0
  245. package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +2 -2
  246. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +71 -9
  247. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
  248. package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
  249. package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
  250. package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +177 -89
  251. package/src/internal/hardhat-network/stack-traces/model.ts +11 -1
  252. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
  253. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
  254. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -0
  255. package/src/internal/lib/hardhat-lib.ts +1 -6
  256. package/src/internal/solidity/compiler/downloader.ts +2 -2
  257. package/src/internal/solidity/compiler/index.ts +1 -1
  258. package/src/internal/solidity/resolver.ts +28 -11
  259. package/src/internal/util/abi-helpers.ts +9 -0
  260. package/src/internal/util/download.ts +13 -15
  261. package/src/internal/util/packageInfo.ts +24 -10
  262. package/src/internal/util/proxy.ts +18 -0
  263. package/src/register.ts +1 -6
  264. package/src/types/artifacts.ts +14 -112
  265. package/src/types/config.ts +2 -0
  266. package/src/types/runtime.ts +16 -13
  267. package/types/artifacts.d.ts +10 -96
  268. package/types/artifacts.d.ts.map +1 -1
  269. package/types/config.d.ts +2 -0
  270. package/types/config.d.ts.map +1 -1
  271. package/types/runtime.d.ts +9 -10
  272. package/types/runtime.d.ts.map +1 -1
  273. package/internal/artifacts/caching.d.ts +0 -28
  274. package/internal/artifacts/caching.d.ts.map +0 -1
  275. package/internal/artifacts/caching.js +0 -178
  276. package/internal/artifacts/caching.js.map +0 -1
  277. package/internal/artifacts/index.d.ts +0 -45
  278. package/internal/artifacts/index.d.ts.map +0 -1
  279. package/internal/artifacts/index.js +0 -191
  280. package/internal/artifacts/index.js.map +0 -1
  281. package/internal/artifacts/mutable.d.ts +0 -29
  282. package/internal/artifacts/mutable.d.ts.map +0 -1
  283. package/internal/artifacts/mutable.js +0 -226
  284. package/internal/artifacts/mutable.js.map +0 -1
  285. package/internal/artifacts/readonly.d.ts +0 -94
  286. package/internal/artifacts/readonly.d.ts.map +0 -1
  287. package/internal/artifacts/readonly.js +0 -343
  288. package/internal/artifacts/readonly.js.map +0 -1
  289. package/src/internal/artifacts/caching.ts +0 -259
  290. package/src/internal/artifacts/index.ts +0 -302
  291. package/src/internal/artifacts/mutable.ts +0 -330
  292. package/src/internal/artifacts/readonly.ts +0 -470
@@ -0,0 +1,488 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DualModeAdapter = void 0;
4
+ const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
5
+ const errors_1 = require("../../../core/errors");
6
+ const message_trace_1 = require("../../stack-traces/message-trace");
7
+ const vm_tracer_1 = require("../../stack-traces/vm-tracer");
8
+ const ethereumjs_1 = require("./ethereumjs");
9
+ const exit_1 = require("./exit");
10
+ const rethnet_1 = require("./rethnet");
11
+ /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
12
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
13
+ function _printEthereumJSTrace(trace) {
14
+ console.log(JSON.stringify(trace, null, 2));
15
+ }
16
+ function _printRethnetTrace(trace) {
17
+ console.log(JSON.stringify(trace, (key, value) => (typeof value === "bigint" ? value.toString() : value), 2));
18
+ }
19
+ class DualModeAdapter {
20
+ constructor(_ethereumJSAdapter, _rethnetAdapter, _ethereumJSVMTracer, _rethnetVMTracer) {
21
+ this._ethereumJSAdapter = _ethereumJSAdapter;
22
+ this._rethnetAdapter = _rethnetAdapter;
23
+ this._ethereumJSVMTracer = _ethereumJSVMTracer;
24
+ this._rethnetVMTracer = _rethnetVMTracer;
25
+ }
26
+ static async create(common, blockchain, config, selectHardfork) {
27
+ const ethereumJSAdapter = await ethereumjs_1.EthereumJSAdapter.create(common, blockchain, config, selectHardfork);
28
+ const rethnetAdapter = await rethnet_1.RethnetAdapter.create(config, selectHardfork, async (blockNumber) => {
29
+ const block = await blockchain.getBlock(blockNumber);
30
+ (0, errors_1.assertHardhatInvariant)(block !== null, "Should be able to get block");
31
+ return block.header.hash();
32
+ }, common);
33
+ const ethereumJSVMTracer = new vm_tracer_1.VMTracer(common, false);
34
+ const rethnetVMTracer = new vm_tracer_1.VMTracer(common, false);
35
+ return new DualModeAdapter(ethereumJSAdapter, rethnetAdapter, ethereumJSVMTracer, rethnetVMTracer);
36
+ }
37
+ async dryRun(tx, blockContext, forceBaseFeeZero) {
38
+ const ethereumJSResultPromise = this._ethereumJSAdapter.dryRun(tx, blockContext, forceBaseFeeZero);
39
+ const rethnetResultPromise = this._rethnetAdapter.dryRun(tx, blockContext, forceBaseFeeZero);
40
+ const [[ethereumJSResult, _ethereumJSTrace], [rethnetResult, rethnetTrace],] = await Promise.all([ethereumJSResultPromise, rethnetResultPromise]);
41
+ try {
42
+ assertEqualRunTxResults(ethereumJSResult, rethnetResult);
43
+ return [rethnetResult, rethnetTrace];
44
+ }
45
+ catch (e) {
46
+ // if the results didn't match, print the traces
47
+ // console.log("EthereumJS trace");
48
+ // printEthereumJSTrace(ethereumJSTrace);
49
+ // console.log();
50
+ // console.log("Rethnet trace");
51
+ // printRethnetTrace(rethnetTrace);
52
+ throw e;
53
+ }
54
+ }
55
+ async getStateRoot() {
56
+ const ethereumJSRoot = await this._ethereumJSAdapter.getStateRoot();
57
+ const rethnetRoot = await this._rethnetAdapter.getStateRoot();
58
+ if (!ethereumJSRoot.equals(rethnetRoot)) {
59
+ console.trace(`Different state root: ${ethereumJSRoot.toString("hex")} !== ${rethnetRoot.toString("hex")}`);
60
+ throw new Error("Different state root");
61
+ }
62
+ return rethnetRoot;
63
+ }
64
+ async getAccount(address) {
65
+ const ethereumJSAccount = await this._ethereumJSAdapter.getAccount(address);
66
+ const rethnetAccount = await this._rethnetAdapter.getAccount(address);
67
+ assertEqualAccounts(address, ethereumJSAccount, rethnetAccount);
68
+ return ethereumJSAccount;
69
+ }
70
+ async getContractStorage(address, key) {
71
+ const ethereumJSStorageSlot = await this._ethereumJSAdapter.getContractStorage(address, key);
72
+ const rethnetStorageSlot = await this._rethnetAdapter.getContractStorage(address, key);
73
+ if (!ethereumJSStorageSlot.equals(rethnetStorageSlot)) {
74
+ // we only throw if any of the returned values was non-empty, but
75
+ // ethereumjs and rethnet return different values when that happens
76
+ if (ethereumJSStorageSlot.length !== 0 ||
77
+ !rethnetStorageSlot.equals(Buffer.from([0x00]))) {
78
+ console.trace(`Different storage slot: ${(0, ethereumjs_util_1.bufferToHex)(ethereumJSStorageSlot)} !== ${(0, ethereumjs_util_1.bufferToHex)(rethnetStorageSlot)}`);
79
+ throw new Error("Different storage slot");
80
+ }
81
+ }
82
+ return rethnetStorageSlot;
83
+ }
84
+ async getContractCode(address) {
85
+ const ethereumJSCode = await this._ethereumJSAdapter.getContractCode(address);
86
+ const rethnetCode = await this._rethnetAdapter.getContractCode(address);
87
+ if (!ethereumJSCode.equals(rethnetCode)) {
88
+ console.trace(`Different contract code: ${ethereumJSCode.toString("hex")} !== ${rethnetCode.toString("hex")}`);
89
+ throw new Error("Different contract code");
90
+ }
91
+ return rethnetCode;
92
+ }
93
+ async putAccount(address, account) {
94
+ await this._ethereumJSAdapter.putAccount(address, account);
95
+ await this._rethnetAdapter.putAccount(address, account);
96
+ }
97
+ async putContractCode(address, value) {
98
+ await this._ethereumJSAdapter.putContractCode(address, value);
99
+ await this._rethnetAdapter.putContractCode(address, value);
100
+ }
101
+ async putContractStorage(address, key, value) {
102
+ await this._ethereumJSAdapter.putContractStorage(address, key, value);
103
+ await this._rethnetAdapter.putContractStorage(address, key, value);
104
+ }
105
+ async restoreContext(stateRoot) {
106
+ await this._ethereumJSAdapter.restoreContext(stateRoot);
107
+ await this._rethnetAdapter.restoreContext(stateRoot);
108
+ }
109
+ async traceTransaction(hash, block, config) {
110
+ return this._ethereumJSAdapter.traceTransaction(hash, block, config);
111
+ }
112
+ async setBlockContext(block, irregularStateOrUndefined) {
113
+ await this._ethereumJSAdapter.setBlockContext(block, irregularStateOrUndefined);
114
+ await this._rethnetAdapter.setBlockContext(block, irregularStateOrUndefined);
115
+ }
116
+ async startBlock() {
117
+ await this._rethnetAdapter.startBlock();
118
+ await this._ethereumJSAdapter.startBlock();
119
+ }
120
+ async runTxInBlock(tx, block) {
121
+ const ethereumJSResultPromise = this._ethereumJSAdapter.runTxInBlock(tx, block);
122
+ const rethnetResultPromise = this._rethnetAdapter.runTxInBlock(tx, block);
123
+ const [[ethereumJSResult, ethereumJSTrace], [rethnetResult, _rethnetTrace],] = await Promise.all([ethereumJSResultPromise, rethnetResultPromise]);
124
+ try {
125
+ assertEqualRunTxResults(ethereumJSResult, rethnetResult);
126
+ return [ethereumJSResult, ethereumJSTrace];
127
+ }
128
+ catch (e) {
129
+ // if the results didn't match, print the traces
130
+ // console.log("EthereumJS trace");
131
+ // printEthereumJSTrace(ethereumJSTrace);
132
+ // console.log();
133
+ // console.log("Rethnet trace");
134
+ // printRethnetTrace(rethnetTrace);
135
+ throw e;
136
+ }
137
+ }
138
+ async addBlockRewards(rewards) {
139
+ await this._rethnetAdapter.addBlockRewards(rewards);
140
+ return this._ethereumJSAdapter.addBlockRewards(rewards);
141
+ }
142
+ async sealBlock() {
143
+ await this._rethnetAdapter.sealBlock();
144
+ return this._ethereumJSAdapter.sealBlock();
145
+ }
146
+ async revertBlock() {
147
+ await this._rethnetAdapter.revertBlock();
148
+ return this._ethereumJSAdapter.revertBlock();
149
+ }
150
+ async makeSnapshot() {
151
+ const ethereumJSRoot = await this._ethereumJSAdapter.makeSnapshot();
152
+ const rethnetRoot = await this._rethnetAdapter.makeSnapshot();
153
+ if (!ethereumJSRoot.equals(rethnetRoot)) {
154
+ console.trace(`Different snapshot state root: ${ethereumJSRoot.toString("hex")} !== ${rethnetRoot.toString("hex")}`);
155
+ throw new Error("Different snapshot state root");
156
+ }
157
+ return rethnetRoot;
158
+ }
159
+ getLastTrace() {
160
+ const { trace: ethereumJSTrace, error: ethereumJSError } = this._ethereumJSAdapter.getLastTrace();
161
+ const { trace: rethnetTrace, error: rethnetError } = this._rethnetAdapter.getLastTrace();
162
+ if (ethereumJSTrace === undefined) {
163
+ if (rethnetTrace !== undefined) {
164
+ throw new Error("ethereumJSTrace is undefined but rethnetTrace is defined");
165
+ }
166
+ }
167
+ else {
168
+ if (rethnetTrace === undefined) {
169
+ throw new Error("ethereumJSTrace is defined but rethnetTrace is undefined");
170
+ }
171
+ assertEqualTraces(ethereumJSTrace, rethnetTrace);
172
+ }
173
+ if (ethereumJSError === undefined) {
174
+ if (rethnetError !== undefined) {
175
+ throw new Error("ethereumJSError is undefined but rethnetError is defined");
176
+ }
177
+ }
178
+ else {
179
+ if (rethnetError === undefined) {
180
+ throw new Error("ethereumJSError is defined but rethnetError is undefined");
181
+ }
182
+ // both errors are defined
183
+ if (ethereumJSError.name !== rethnetError.name) {
184
+ throw new Error(`Different error name: ${ethereumJSError.name} !== ${rethnetError.name}`);
185
+ }
186
+ if (ethereumJSError.message !== rethnetError.message) {
187
+ throw new Error(`Different error message: ${ethereumJSError.message} !== ${rethnetError.message}`);
188
+ }
189
+ if (ethereumJSError.stack === undefined) {
190
+ if (rethnetError.stack !== undefined) {
191
+ throw new Error("ethereumJSError.stack is undefined but rethnetError.stack is defined");
192
+ }
193
+ }
194
+ else {
195
+ if (rethnetError.stack === undefined) {
196
+ throw new Error("ethereumJSError.stack is defined but rethnetError.stack is undefined");
197
+ }
198
+ // both error stacks are defined
199
+ if (ethereumJSError.stack !== rethnetError.stack) {
200
+ throw new Error(`Different error stack: ${ethereumJSError.stack} !== ${rethnetError.stack}`);
201
+ }
202
+ }
203
+ }
204
+ const ethereumJSSteps = this._ethereumJSVMTracer.tracingSteps;
205
+ const rethnetSteps = this._rethnetVMTracer.tracingSteps;
206
+ if (ethereumJSSteps.length !== rethnetSteps.length) {
207
+ throw new Error(`Different number of steps in tracers: ${this._ethereumJSVMTracer.tracingSteps.length} !== ${this._rethnetVMTracer.tracingSteps.length}`);
208
+ }
209
+ for (let stepIdx = 0; stepIdx < ethereumJSSteps.length; ++stepIdx) {
210
+ const ethereumJSStep = ethereumJSSteps[stepIdx];
211
+ const rethnetStep = rethnetSteps[stepIdx];
212
+ if (ethereumJSStep.depth !== rethnetStep.depth) {
213
+ console.trace(`Different steps[${stepIdx}] depth: ${ethereumJSStep.depth} !== ${rethnetStep.depth}`);
214
+ throw new Error("Different step depth");
215
+ }
216
+ if (ethereumJSStep.pc !== rethnetStep.pc) {
217
+ console.trace(`Different steps[${stepIdx}] pc: ${ethereumJSStep.pc} !== ${rethnetStep.pc}`);
218
+ throw new Error("Different step pc");
219
+ }
220
+ if (ethereumJSStep.opcode !== rethnetStep.opcode) {
221
+ console.trace(`Different steps[${stepIdx}] opcode: ${ethereumJSStep.opcode} !== ${rethnetStep.opcode}`);
222
+ throw new Error("Different step opcode");
223
+ }
224
+ if (ethereumJSStep.gasCost !== rethnetStep.gasCost) {
225
+ console.trace(`Different steps[${stepIdx}] gasCost: ${ethereumJSStep.gasCost} !== ${rethnetStep.gasCost}`);
226
+ throw new Error("Different step gasCost");
227
+ }
228
+ if (ethereumJSStep.gasLeft !== rethnetStep.gasLeft) {
229
+ console.trace(`Different steps[${stepIdx}] gasLeft: ${ethereumJSStep.gasLeft} !== ${rethnetStep.gasLeft}`);
230
+ throw new Error("Different step gasLeft");
231
+ }
232
+ const ethereumJSStack = ethereumJSStep.stack;
233
+ const rethnetStack = rethnetStep.stack;
234
+ if (ethereumJSStack.length !== rethnetStack.length) {
235
+ throw new Error(`Different number of stack elements in tracers: ${ethereumJSStack.length} !== ${rethnetStack.length}`);
236
+ }
237
+ for (let stackIdx = 0; stackIdx < ethereumJSSteps.length; ++stackIdx) {
238
+ const ethereumJSStackElement = ethereumJSStack[stackIdx];
239
+ const rethnetStackElement = rethnetStack[stackIdx];
240
+ if (ethereumJSStackElement !== rethnetStackElement) {
241
+ console.trace(`Different steps[${stepIdx}] stack[${stackIdx}]: ${ethereumJSStackElement} !== ${rethnetStackElement}`);
242
+ throw new Error("Different step stack element");
243
+ }
244
+ }
245
+ if (!ethereumJSStep.memory.equals(rethnetStep.memory)) {
246
+ console.trace(`Different steps[${stepIdx}] memory: ${ethereumJSStep.memory} !== ${rethnetStep.memory}`);
247
+ throw new Error("Different step memory");
248
+ }
249
+ if (ethereumJSStep.contract.balance !== rethnetStep.contract.balance) {
250
+ console.trace(`Different steps[${stepIdx}] contract balance: ${ethereumJSStep.contract.balance} !== ${rethnetStep.contract.balance}`);
251
+ throw new Error("Different step contract balance");
252
+ }
253
+ if (ethereumJSStep.contract.nonce !== rethnetStep.contract.nonce) {
254
+ console.trace(`Different steps[${stepIdx}] contract nonce: ${ethereumJSStep.contract.nonce} !== ${rethnetStep.contract.nonce}`);
255
+ throw new Error("Different step contract nonce");
256
+ }
257
+ // Code can be stored separately from the account in Rethnet
258
+ // const ethereumJSCode = ethereumJSStep.contract.code;
259
+ // const rethnetCode = rethnetStep.contract.code;
260
+ // if (ethereumJSCode === undefined) {
261
+ // if (rethnetCode !== undefined) {
262
+ // console.trace(
263
+ // `Different steps[${stepIdx}] contract code: ${ethereumJSCode} !== ${rethnetCode}`
264
+ // );
265
+ // throw new Error(
266
+ // "ethereumJSCode is undefined but rethnetCode is defined"
267
+ // );
268
+ // }
269
+ // } else {
270
+ // if (rethnetCode === undefined) {
271
+ // console.trace(
272
+ // `Different steps[${stepIdx}] contract code: ${ethereumJSCode} !== ${rethnetCode}`
273
+ // );
274
+ // throw new Error(
275
+ // "ethereumJSCode is defined but rethnetCode is undefined"
276
+ // );
277
+ // }
278
+ // if (!ethereumJSCode.equals(rethnetCode)) {
279
+ // console.trace(
280
+ // `Different steps[${stepIdx}] contract code: ${ethereumJSCode} !== ${rethnetCode}`
281
+ // );
282
+ // throw new Error("Different step contract code");
283
+ // }
284
+ // }
285
+ if (!ethereumJSStep.contractAddress.equals(rethnetStep.contractAddress)) {
286
+ console.trace(`Different steps[${stepIdx}] contract address: ${ethereumJSStep.contractAddress} !== ${rethnetStep.contractAddress}`);
287
+ throw new Error("Different step contract address");
288
+ }
289
+ }
290
+ // TODO: compare each step
291
+ // TODO: compare tracers tracingMessages and tracingMessageResults
292
+ return {
293
+ trace: rethnetTrace,
294
+ error: rethnetError,
295
+ };
296
+ }
297
+ clearLastError() {
298
+ this._ethereumJSVMTracer.clearLastError();
299
+ this._rethnetVMTracer.clearLastError();
300
+ }
301
+ }
302
+ exports.DualModeAdapter = DualModeAdapter;
303
+ function assertEqualRunTxResults(ethereumJSResult, rethnetResult) {
304
+ if (ethereumJSResult.exit.kind !== rethnetResult.exit.kind) {
305
+ console.trace(`Different exceptionError.error: ${ethereumJSResult.exit.kind} !== ${rethnetResult.exit.kind}`);
306
+ throw new Error("Different exceptionError.error");
307
+ }
308
+ if (ethereumJSResult.gasUsed !== rethnetResult.gasUsed) {
309
+ console.trace(`Different totalGasSpent: ${ethereumJSResult.gasUsed} !== ${rethnetResult.gasUsed}`);
310
+ throw new Error("Different totalGasSpent");
311
+ }
312
+ const exitCode = ethereumJSResult.exit.kind;
313
+ if (exitCode === exit_1.ExitCode.SUCCESS || exitCode === exit_1.ExitCode.REVERT) {
314
+ // TODO: we only compare the return values when a contract was *not* created,
315
+ // because sometimes ethereumjs has the created bytecode in the return value
316
+ // and rethnet doesn't
317
+ // if (ethereumJSResult.createdAddress === undefined) {
318
+ if (ethereumJSResult.returnValue.toString("hex") !==
319
+ rethnetResult.returnValue.toString("hex")) {
320
+ console.trace(`Different returnValue: ${ethereumJSResult.returnValue.toString("hex")} !== ${rethnetResult.returnValue.toString("hex")}`);
321
+ throw new Error("Different returnValue");
322
+ }
323
+ // }
324
+ if (!ethereumJSResult.bloom.equals(rethnetResult.bloom)) {
325
+ console.trace(`Different bloom: ${ethereumJSResult.bloom} !== ${rethnetResult.bloom}`);
326
+ throw new Error("Different bloom");
327
+ }
328
+ if (!ethereumJSResult.receipt.bitvector.equals(rethnetResult.receipt.bitvector)) {
329
+ console.trace(`Different receipt bitvector: ${ethereumJSResult.receipt.bitvector} !== ${rethnetResult.receipt.bitvector}`);
330
+ throw new Error("Different receipt bitvector");
331
+ }
332
+ if (ethereumJSResult.receipt.cumulativeBlockGasUsed !==
333
+ rethnetResult.receipt.cumulativeBlockGasUsed) {
334
+ console.trace(`Different receipt cumulativeBlockGasUsed: ${ethereumJSResult.receipt.cumulativeBlockGasUsed} !== ${rethnetResult.receipt.cumulativeBlockGasUsed}`);
335
+ throw new Error("Different receipt cumulativeBlockGasUsed");
336
+ }
337
+ assertEqualLogs(ethereumJSResult.receipt.logs, rethnetResult.receipt.logs);
338
+ }
339
+ if (exitCode === exit_1.ExitCode.SUCCESS) {
340
+ if (ethereumJSResult.createdAddress?.toString() !==
341
+ rethnetResult.createdAddress?.toString() &&
342
+ // ethereumjs returns a createdAddress, even when reverting
343
+ !(rethnetResult.createdAddress === undefined &&
344
+ ethereumJSResult.exit.kind !== exit_1.ExitCode.SUCCESS)) {
345
+ console.trace(`Different createdAddress: ${ethereumJSResult.createdAddress?.toString()} !== ${rethnetResult.createdAddress?.toString()}`);
346
+ throw new Error("Different createdAddress");
347
+ }
348
+ }
349
+ }
350
+ function assertEqualLogs(ethereumJSLogs, rethnetLogs) {
351
+ if (ethereumJSLogs.length !== rethnetLogs.length) {
352
+ console.trace(`Different logs length: ${ethereumJSLogs.length} !== ${rethnetLogs.length}`);
353
+ throw new Error("Different logs length");
354
+ }
355
+ for (let logIdx = 0; logIdx < ethereumJSLogs.length; ++logIdx) {
356
+ if (!ethereumJSLogs[logIdx][0].equals(rethnetLogs[logIdx][0])) {
357
+ console.trace(`Different log[${logIdx}] address: ${ethereumJSLogs[logIdx][0]} !== ${rethnetLogs[logIdx][0]}`);
358
+ throw new Error("Different log address");
359
+ }
360
+ const ethereumJSTopics = ethereumJSLogs[logIdx][1];
361
+ const rethnetTopics = rethnetLogs[logIdx][1];
362
+ if (ethereumJSTopics.length !== rethnetTopics.length) {
363
+ console.trace(`Different log[${logIdx}] topics length: ${ethereumJSTopics.length} !== ${rethnetTopics.length}`);
364
+ throw new Error("Different log topics length");
365
+ }
366
+ for (let topicIdx = 0; topicIdx < ethereumJSTopics.length; ++topicIdx) {
367
+ if (!ethereumJSTopics[topicIdx].equals(rethnetTopics[topicIdx])) {
368
+ console.trace(`Different log[${logIdx}] topic[${topicIdx}]: ${ethereumJSTopics[topicIdx]} !== ${rethnetTopics[topicIdx]}`);
369
+ throw new Error("Different log topic");
370
+ }
371
+ }
372
+ if (!ethereumJSLogs[logIdx][2].equals(rethnetLogs[logIdx][2])) {
373
+ console.trace(`Different log[${logIdx}] data: ${ethereumJSLogs[logIdx][2]} !== ${rethnetLogs[logIdx][2]}`);
374
+ throw new Error("Different log data");
375
+ }
376
+ }
377
+ }
378
+ function assertEqualAccounts(address, ethereumJSAccount, rethnetAccount) {
379
+ if (ethereumJSAccount.balance !== rethnetAccount.balance) {
380
+ console.trace(`Account: ${address}`);
381
+ console.trace(`Different balance: ${ethereumJSAccount.balance} !== ${rethnetAccount.balance}`);
382
+ throw new Error("Different balance");
383
+ }
384
+ if (!ethereumJSAccount.codeHash.equals(rethnetAccount.codeHash)) {
385
+ console.trace(`Different codeHash: ${ethereumJSAccount.codeHash} !== ${rethnetAccount.codeHash}`);
386
+ throw new Error("Different codeHash");
387
+ }
388
+ if (ethereumJSAccount.nonce !== rethnetAccount.nonce) {
389
+ console.trace(`Different nonce: ${ethereumJSAccount.nonce} !== ${rethnetAccount.nonce}`);
390
+ throw new Error("Different nonce");
391
+ }
392
+ if (!ethereumJSAccount.storageRoot.equals(rethnetAccount.storageRoot)) {
393
+ // TODO re-enable
394
+ // console.trace(
395
+ // `Different storageRoot: ${ethereumJSAccount.storageRoot.toString(
396
+ // "hex"
397
+ // )} !== ${rethnetAccount.storageRoot.toString("hex")}`
398
+ // );
399
+ // throw new Error("Different storageRoot");
400
+ }
401
+ }
402
+ function assertEqualTraces(ethereumJSTrace, rethnetTrace) {
403
+ // both traces are defined
404
+ if (ethereumJSTrace.depth !== rethnetTrace.depth) {
405
+ throw new Error(`Different depth: ${ethereumJSTrace.depth} !== ${rethnetTrace.depth}`);
406
+ }
407
+ if (ethereumJSTrace.exit.kind !== rethnetTrace.exit.kind) {
408
+ throw new Error(`Different exit: ${ethereumJSTrace.exit.kind} !== ${rethnetTrace.exit.kind}`);
409
+ }
410
+ if (ethereumJSTrace.gasUsed !== rethnetTrace.gasUsed) {
411
+ throw new Error(`Different gasUsed: ${ethereumJSTrace.gasUsed} !== ${rethnetTrace.gasUsed}`);
412
+ }
413
+ if (!ethereumJSTrace.returnData.equals(rethnetTrace.returnData)) {
414
+ throw new Error(`Different returnData: ${ethereumJSTrace.returnData} !== ${rethnetTrace.returnData}`);
415
+ }
416
+ if (ethereumJSTrace.value !== rethnetTrace.value) {
417
+ throw new Error(`Different value: ${ethereumJSTrace.value} !== ${rethnetTrace.value}`);
418
+ }
419
+ if ((0, message_trace_1.isPrecompileTrace)(ethereumJSTrace)) {
420
+ if (!(0, message_trace_1.isPrecompileTrace)(rethnetTrace)) {
421
+ throw new Error(`ethereumJSTrace is a precompiled trace but rethnetTrace is not`);
422
+ }
423
+ // Both traces are precompile traces
424
+ if (ethereumJSTrace.precompile !== rethnetTrace.precompile) {
425
+ throw new Error(`Different precompile: ${ethereumJSTrace.precompile} !== ${rethnetTrace.precompile}`);
426
+ }
427
+ if (!ethereumJSTrace.calldata.equals(rethnetTrace.calldata)) {
428
+ throw new Error(`Different calldata: ${ethereumJSTrace.calldata} !== ${rethnetTrace.calldata}`);
429
+ }
430
+ }
431
+ else {
432
+ if ((0, message_trace_1.isPrecompileTrace)(rethnetTrace)) {
433
+ throw new Error(`ethereumJSTrace is a precompiled trace but ethereumJSTrace is not`);
434
+ }
435
+ // Both traces are NOT precompile traces
436
+ if (!ethereumJSTrace.code.equals(rethnetTrace.code)) {
437
+ console.log("ethereumjs:", ethereumJSTrace);
438
+ console.log("rethnet:", rethnetTrace);
439
+ throw new Error(`Different code: ${ethereumJSTrace.code.toString("hex")} !== ${rethnetTrace.code.toString("hex")}`);
440
+ }
441
+ if (ethereumJSTrace.steps.length !== rethnetTrace.steps.length) {
442
+ throw new Error(`Different steps length: ${ethereumJSTrace.steps.length} !== ${rethnetTrace.steps.length}`);
443
+ }
444
+ for (let stepIdx = 0; stepIdx < ethereumJSTrace.steps.length; stepIdx++) {
445
+ const ethereumJSStep = ethereumJSTrace.steps[stepIdx];
446
+ const rethnetStep = rethnetTrace.steps[stepIdx];
447
+ if ((0, message_trace_1.isEvmStep)(ethereumJSStep)) {
448
+ // if (stepIdx >= rethnetTrace.steps.length) {
449
+ // console.log("code:", ethereumJSTrace.code);
450
+ // console.log(stepIdx);
451
+ // console.log(ethereumJSStep);
452
+ // console.log("opcode:", ethereumJSTrace.code[ethereumJSStep.pc]);
453
+ // continue;
454
+ // }
455
+ if (!(0, message_trace_1.isEvmStep)(rethnetStep)) {
456
+ throw new Error(`ethereumJSStep '${stepIdx}' is an EVM step but rethnetStep '${stepIdx}' is not`);
457
+ }
458
+ if (ethereumJSStep.pc !== rethnetStep.pc) {
459
+ throw new Error(`Different step[${stepIdx}]: ${ethereumJSStep.pc} !== ${rethnetStep.pc}`);
460
+ }
461
+ }
462
+ else {
463
+ if ((0, message_trace_1.isEvmStep)(rethnetStep)) {
464
+ throw new Error(`rethnetStep '${stepIdx}' is an EVM step but ethereumJSStep '${stepIdx}' is not`);
465
+ }
466
+ assertEqualTraces(ethereumJSStep, rethnetStep);
467
+ }
468
+ }
469
+ if (ethereumJSTrace.bytecode === undefined) {
470
+ if (rethnetTrace.bytecode !== undefined) {
471
+ throw new Error("ethereumJSTrace.bytecode is undefined but rethnetTrace.bytecode is defined");
472
+ }
473
+ }
474
+ else {
475
+ if (rethnetTrace.bytecode === undefined) {
476
+ throw new Error("ethereumJSTrace.bytecode is defined but rethnetTrace.bytecode is undefined");
477
+ }
478
+ // Both traces contain bytecode
479
+ if (!ethereumJSTrace.bytecode.equals(rethnetTrace.bytecode)) {
480
+ throw new Error(`Different bytecode: ${ethereumJSTrace.bytecode} !== ${rethnetTrace.bytecode}`);
481
+ }
482
+ }
483
+ if (ethereumJSTrace.numberOfSubtraces !== rethnetTrace.numberOfSubtraces) {
484
+ throw new Error(`Different numberOfSubtraces: ${ethereumJSTrace.numberOfSubtraces} !== ${rethnetTrace.numberOfSubtraces}`);
485
+ }
486
+ }
487
+ }
488
+ //# sourceMappingURL=dual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dual.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/dual.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /// <reference types="node" />
2
+ import { Block } from "@nomicfoundation/ethereumjs-block";
3
+ import { Common } from "@nomicfoundation/ethereumjs-common";
4
+ import { StateManager } from "@nomicfoundation/ethereumjs-statemanager";
5
+ import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
6
+ import { Account, Address } from "@nomicfoundation/ethereumjs-util";
7
+ import { VM } from "@nomicfoundation/ethereumjs-vm";
8
+ import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
9
+ import { MessageTrace } from "../../stack-traces/message-trace";
10
+ import { NodeConfig } from "../node-types";
11
+ import { RpcDebugTraceOutput } from "../output";
12
+ import { HardhatBlockchainInterface } from "../types/HardhatBlockchainInterface";
13
+ import { RunTxResult, Trace, VMAdapter } from "./vm-adapter";
14
+ export declare class EthereumJSAdapter implements VMAdapter {
15
+ private readonly _vm;
16
+ private readonly _stateManager;
17
+ private readonly _blockchain;
18
+ private readonly _common;
19
+ private readonly _configNetworkId;
20
+ private readonly _configChainId;
21
+ private readonly _selectHardfork;
22
+ private readonly _forkNetworkId?;
23
+ private readonly _forkBlockNumber?;
24
+ private _blockStartStateRoot;
25
+ private _vmTracer;
26
+ constructor(_vm: VM, _stateManager: StateManager, _blockchain: HardhatBlockchainInterface, _common: Common, _configNetworkId: number, _configChainId: number, _selectHardfork: (blockNumber: bigint) => string, _forkNetworkId?: number | undefined, _forkBlockNumber?: bigint | undefined);
27
+ static create(common: Common, blockchain: HardhatBlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<EthereumJSAdapter>;
28
+ dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
29
+ getStateRoot(): Promise<Buffer>;
30
+ getAccount(address: Address): Promise<Account>;
31
+ getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
32
+ getContractCode(address: Address): Promise<Buffer>;
33
+ putAccount(address: Address, account: Account): Promise<void>;
34
+ putContractCode(address: Address, value: Buffer): Promise<void>;
35
+ putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
36
+ restoreContext(stateRoot: Buffer): Promise<void>;
37
+ setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
38
+ traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
39
+ startBlock(): Promise<void>;
40
+ runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
41
+ addBlockRewards(rewards: Array<[Address, bigint]>): Promise<void>;
42
+ sealBlock(): Promise<void>;
43
+ revertBlock(): Promise<void>;
44
+ makeSnapshot(): Promise<Buffer>;
45
+ getLastTrace(): {
46
+ trace: MessageTrace | undefined;
47
+ error: Error | undefined;
48
+ };
49
+ clearLastError(): void;
50
+ private _getCommonForTracing;
51
+ private _isEip1559Active;
52
+ private _beforeMessageHandler;
53
+ private _stepHandler;
54
+ private _afterMessageHandler;
55
+ }
56
+ //# sourceMappingURL=ethereumjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereumjs.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/ethereumjs.ts"],"names":[],"mappings":"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"}