hardhat 2.16.0 → 2.16.1-dev.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 (58) hide show
  1. package/internal/cli/bootstrap.js +0 -0
  2. package/internal/hardhat-network/provider/RethnetState.d.ts +29 -0
  3. package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
  4. package/internal/hardhat-network/provider/RethnetState.js +110 -0
  5. package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
  6. package/internal/hardhat-network/provider/utils/bloom.d.ts +32 -0
  7. package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -0
  8. package/internal/hardhat-network/provider/utils/bloom.js +79 -0
  9. package/internal/hardhat-network/provider/utils/bloom.js.map +1 -0
  10. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +17 -0
  11. package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -0
  12. package/internal/hardhat-network/provider/utils/convertToRethnet.js +392 -0
  13. package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -0
  14. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts +14 -0
  15. package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts.map +1 -0
  16. package/internal/hardhat-network/provider/vm/block-builder/dual.js +47 -0
  17. package/internal/hardhat-network/provider/vm/block-builder/dual.js.map +1 -0
  18. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts +27 -0
  19. package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts.map +1 -0
  20. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js +136 -0
  21. package/internal/hardhat-network/provider/vm/block-builder/hardhat.js.map +1 -0
  22. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts +20 -0
  23. package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts.map +1 -0
  24. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js +55 -0
  25. package/internal/hardhat-network/provider/vm/block-builder/rethnet.js.map +1 -0
  26. package/internal/hardhat-network/provider/vm/block-builder.d.ts +19 -0
  27. package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -0
  28. package/internal/hardhat-network/provider/vm/block-builder.js +24 -0
  29. package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -0
  30. package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
  31. package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
  32. package/internal/hardhat-network/provider/vm/creation.js +29 -0
  33. package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
  34. package/internal/hardhat-network/provider/vm/dual.d.ts +43 -0
  35. package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -0
  36. package/internal/hardhat-network/provider/vm/dual.js +487 -0
  37. package/internal/hardhat-network/provider/vm/dual.js.map +1 -0
  38. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +61 -0
  39. package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -0
  40. package/internal/hardhat-network/provider/vm/ethereumjs.js +517 -0
  41. package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -0
  42. package/internal/hardhat-network/provider/vm/exit.d.ts +24 -0
  43. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  44. package/internal/hardhat-network/provider/vm/exit.js +140 -0
  45. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  46. package/internal/hardhat-network/provider/vm/rethnet.d.ts +87 -0
  47. package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -0
  48. package/internal/hardhat-network/provider/vm/rethnet.js +262 -0
  49. package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -0
  50. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +53 -0
  51. package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -0
  52. package/internal/hardhat-network/provider/vm/vm-adapter.js +3 -0
  53. package/internal/hardhat-network/provider/vm/vm-adapter.js.map +1 -0
  54. package/internal/util/download.d.ts.map +1 -1
  55. package/internal/util/download.js +2 -5
  56. package/internal/util/download.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/internal/util/download.ts +2 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardhat.js","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/hardhat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Block } from "@nomicfoundation/ethereumjs-block";
2
+ import { Common } from "@nomicfoundation/ethereumjs-common";
3
+ import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
4
+ import { BlockBuilder, Blockchain, Config } from "rethnet-evm";
5
+ import { BlockBuilderAdapter, BuildBlockOpts, Reward } from "../block-builder";
6
+ import { RunTxResult } from "../vm-adapter";
7
+ import { RethnetStateManager } from "../../RethnetState";
8
+ import { VMTracer } from "../../../stack-traces/vm-tracer";
9
+ export declare class RethnetBlockBuilder implements BlockBuilderAdapter {
10
+ private _blockBuilder;
11
+ private _vmTracer;
12
+ private _common;
13
+ constructor(_blockBuilder: BlockBuilder, _vmTracer: VMTracer, _common: Common);
14
+ static create(blockchain: Blockchain, state: RethnetStateManager, vmTracer: VMTracer, vmConfig: Config, common: Common, opts: BuildBlockOpts): Promise<RethnetBlockBuilder>;
15
+ addTransaction(tx: TypedTransaction): Promise<RunTxResult>;
16
+ finalize(rewards: Reward[], timestamp?: bigint): Promise<Block>;
17
+ revert(): Promise<void>;
18
+ getGasUsed(): Promise<bigint>;
19
+ }
20
+ //# sourceMappingURL=rethnet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rethnet.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/rethnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AASzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,qBAAa,mBAAoB,YAAW,mBAAmB;IAE3D,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBAFP,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,MAAM;WAGL,MAAM,CACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAmBlB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IA0B1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAW/D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAG3C"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RethnetBlockBuilder = void 0;
4
+ const rethnet_evm_1 = require("rethnet-evm");
5
+ const rethnet_1 = require("../rethnet");
6
+ const convertToRethnet_1 = require("../../utils/convertToRethnet");
7
+ class RethnetBlockBuilder {
8
+ constructor(_blockBuilder, _vmTracer, _common) {
9
+ this._blockBuilder = _blockBuilder;
10
+ this._vmTracer = _vmTracer;
11
+ this._common = _common;
12
+ }
13
+ static async create(blockchain, state, vmTracer, vmConfig, common, opts) {
14
+ const blockBuilder = await rethnet_evm_1.BlockBuilder.create(rethnet_1.globalRethnetContext, blockchain, state.asInner(), {
15
+ chainId: common.chainId(),
16
+ specId: (0, convertToRethnet_1.ethereumsjsHardforkToRethnet)(common.hardfork()),
17
+ limitContractCodeSize: vmConfig.limitContractCodeSize ?? undefined,
18
+ disableBlockGasLimit: vmConfig.disableBlockGasLimit,
19
+ disableEip3607: vmConfig.disableEip3607,
20
+ }, (0, convertToRethnet_1.ethereumjsBlockHeaderToRethnet)(opts.parentBlock.header), (0, convertToRethnet_1.ethereumjsHeaderDataToRethnetBlockOptions)(opts.headerData));
21
+ return new RethnetBlockBuilder(blockBuilder, vmTracer, common);
22
+ }
23
+ async addTransaction(tx) {
24
+ const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnetPendingTransaction)(tx);
25
+ const cumulativeBlockGasUsed = await this.getGasUsed();
26
+ const rethnetResult = await this._blockBuilder.addTransaction(rethnetTx, true);
27
+ const trace = rethnetResult.trace;
28
+ for (const traceItem of trace) {
29
+ if ("pc" in traceItem) {
30
+ await this._vmTracer.addStep(traceItem);
31
+ }
32
+ else if ("executionResult" in traceItem) {
33
+ await this._vmTracer.addAfterMessage(traceItem);
34
+ }
35
+ else {
36
+ await this._vmTracer.addBeforeMessage(traceItem);
37
+ }
38
+ }
39
+ return (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.result, cumulativeBlockGasUsed);
40
+ }
41
+ async finalize(rewards, timestamp) {
42
+ const block = await this._blockBuilder.finalize(rewards.map(([address, reward]) => {
43
+ return [address.buf, reward];
44
+ }), timestamp);
45
+ return (0, convertToRethnet_1.rethnetBlockToEthereumJS)(block, this._common);
46
+ }
47
+ async revert() {
48
+ await this._blockBuilder.abort();
49
+ }
50
+ async getGasUsed() {
51
+ return this._blockBuilder.gasUsed;
52
+ }
53
+ }
54
+ exports.RethnetBlockBuilder = RethnetBlockBuilder;
55
+ //# sourceMappingURL=rethnet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rethnet.js","sourceRoot":"","sources":["../../../../../src/internal/hardhat-network/provider/vm/block-builder/rethnet.ts"],"names":[],"mappings":";;;AAGA,6CAA+D;AAE/D,wCAAkD;AAGlD,mEAOsC;AAItC,MAAa,mBAAmB;IAC9B,YACU,aAA2B,EAC3B,SAAmB,EACnB,OAAe;QAFf,kBAAa,GAAb,aAAa,CAAc;QAC3B,cAAS,GAAT,SAAS,CAAU;QACnB,YAAO,GAAP,OAAO,CAAQ;IACtB,CAAC;IAEG,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,UAAsB,EACtB,KAA0B,EAC1B,QAAkB,EAClB,QAAgB,EAChB,MAAc,EACd,IAAoB;QAEpB,MAAM,YAAY,GAAG,MAAM,0BAAY,CAAC,MAAM,CAC5C,8BAAoB,EACpB,UAAU,EACV,KAAK,CAAC,OAAO,EAAE,EACf;YACE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;YACzB,MAAM,EAAE,IAAA,+CAA4B,EAAC,MAAM,CAAC,QAAQ,EAAkB,CAAC;YACvE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,IAAI,SAAS;YAClE,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;YACnD,cAAc,EAAE,QAAQ,CAAC,cAAc;SACxC,EACD,IAAA,iDAA8B,EAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EACvD,IAAA,4DAAyC,EAAC,IAAI,CAAC,UAAU,CAAC,CAC3D,CAAC;QAEF,OAAO,IAAI,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAAoB;QAC9C,MAAM,SAAS,GAAG,IAAA,mEAAgD,EAAC,EAAE,CAAC,CAAC;QAEvE,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAC3D,SAAS,EACT,IAAI,CACL,CAAC;QAEF,MAAM,KAAK,GAAG,aAAa,CAAC,KAAM,CAAC;QACnC,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;YAC7B,IAAI,IAAI,IAAI,SAAS,EAAE;gBACrB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aACzC;iBAAM,IAAI,iBAAiB,IAAI,SAAS,EAAE;gBACzC,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACjD;iBAAM;gBACL,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAClD;SACF;QAED,OAAO,IAAA,6CAA0B,EAC/B,aAAa,CAAC,MAAM,EACpB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAiB,EAAE,SAAkB;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,EACF,SAAS,CACV,CAAC;QAEF,OAAO,IAAA,2CAAwB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACpC,CAAC;CACF;AA7ED,kDA6EC"}
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import { Block, HeaderData } from "@nomicfoundation/ethereumjs-block";
3
+ import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
4
+ import { Address } from "@nomicfoundation/ethereumjs-util";
5
+ import { TxReceipt } from "@nomicfoundation/ethereumjs-vm";
6
+ import { RunTxResult } from "./vm-adapter";
7
+ export declare type Reward = [address: Address, reward: bigint];
8
+ export interface BuildBlockOpts {
9
+ parentBlock: Block;
10
+ headerData?: HeaderData;
11
+ }
12
+ export interface BlockBuilderAdapter {
13
+ addTransaction(tx: TypedTransaction): Promise<RunTxResult>;
14
+ finalize(rewards: Reward[], timestamp?: bigint): Promise<Block>;
15
+ revert(): Promise<void>;
16
+ getGasUsed(): Promise<bigint>;
17
+ }
18
+ export declare function encodeReceipt(receipt: TxReceipt, txType: number): Buffer;
19
+ //# sourceMappingURL=block-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-builder.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/block-builder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EACL,OAAO,EAIR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAGL,SAAS,EACV,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,oBAAY,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,KAAK,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAsB/D"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeReceipt = void 0;
4
+ const ethereumjs_rlp_1 = require("@nomicfoundation/ethereumjs-rlp");
5
+ const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
6
+ function encodeReceipt(receipt, txType) {
7
+ const encoded = Buffer.from(ethereumjs_rlp_1.RLP.encode((0, ethereumjs_util_1.bufArrToArr)([
8
+ receipt.stateRoot ??
9
+ (receipt.status === 0
10
+ ? Buffer.from([])
11
+ : Buffer.from("01", "hex")),
12
+ (0, ethereumjs_util_1.bigIntToBuffer)(receipt.cumulativeBlockGasUsed),
13
+ receipt.bitvector,
14
+ receipt.logs,
15
+ ])));
16
+ if (txType === 0) {
17
+ return encoded;
18
+ }
19
+ // Serialize receipt according to EIP-2718:
20
+ // `typed-receipt = tx-type || receipt-data`
21
+ return Buffer.concat([(0, ethereumjs_util_1.intToBuffer)(txType), encoded]);
22
+ }
23
+ exports.encodeReceipt = encodeReceipt;
24
+ //# sourceMappingURL=block-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-builder.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/block-builder.ts"],"names":[],"mappings":";;;AACA,oEAAsD;AAEtD,sEAK0C;AA0B1C,SAAgB,aAAa,CAAC,OAAkB,EAAE,MAAc;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CACzB,oBAAG,CAAC,MAAM,CACR,IAAA,6BAAW,EAAC;QACT,OAAiC,CAAC,SAAS;YAC1C,CAAE,OAAkC,CAAC,MAAM,KAAK,CAAC;gBAC/C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAA,gCAAc,EAAC,OAAO,CAAC,sBAAsB,CAAC;QAC9C,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,IAAI;KACb,CAAC,CACH,CACF,CAAC;IAEF,IAAI,MAAM,KAAK,CAAC,EAAE;QAChB,OAAO,OAAO,CAAC;KAChB;IAED,2CAA2C;IAC3C,4CAA4C;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAA,6BAAW,EAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AAtBD,sCAsBC"}
@@ -0,0 +1,10 @@
1
+ import { Common } from "@nomicfoundation/ethereumjs-common";
2
+ import { NodeConfig } from "../node-types";
3
+ import { HardhatBlockchainInterface } from "../types/HardhatBlockchainInterface";
4
+ import { VMAdapter } from "./vm-adapter";
5
+ /**
6
+ * Creates an instance of a VMAdapter. Which implementation is used depends on
7
+ * the value of the HARDHAT_EXPERIMENTAL_VM_MODE environment variable.
8
+ */
9
+ export declare function createVm(common: Common, blockchain: HardhatBlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<VMAdapter>;
10
+ //# sourceMappingURL=creation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/creation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAIjF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAC9C,OAAO,CAAC,SAAS,CAAC,CAoBpB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createVm = void 0;
4
+ const errors_1 = require("../../../core/errors");
5
+ const dual_1 = require("./dual");
6
+ const ethereumjs_1 = require("./ethereumjs");
7
+ const rethnet_1 = require("./rethnet");
8
+ /**
9
+ * Creates an instance of a VMAdapter. Which implementation is used depends on
10
+ * the value of the HARDHAT_EXPERIMENTAL_VM_MODE environment variable.
11
+ */
12
+ function createVm(common, blockchain, config, selectHardfork) {
13
+ const vmModeEnvVar = process.env.HARDHAT_EXPERIMENTAL_VM_MODE;
14
+ if (vmModeEnvVar === "ethereumjs") {
15
+ return ethereumjs_1.EthereumJSAdapter.create(common, blockchain, config, selectHardfork);
16
+ }
17
+ else if (vmModeEnvVar === "rethnet") {
18
+ return rethnet_1.RethnetAdapter.create(config, selectHardfork, async (blockNumber) => {
19
+ const block = await blockchain.getBlock(blockNumber);
20
+ (0, errors_1.assertHardhatInvariant)(block !== null, "Should be able to get block");
21
+ return block.header.hash();
22
+ }, common);
23
+ }
24
+ else {
25
+ return dual_1.DualModeAdapter.create(common, blockchain, config, selectHardfork);
26
+ }
27
+ }
28
+ exports.createVm = createVm;
29
+ //# sourceMappingURL=creation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creation.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/creation.ts"],"names":[],"mappings":";;;AACA,iDAA8D;AAI9D,iCAAyC;AACzC,6CAAiD;AACjD,uCAA2C;AAG3C;;;GAGG;AACH,SAAgB,QAAQ,CACtB,MAAc,EACd,UAAsC,EACtC,MAAkB,EAClB,cAA+C;IAE/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAE9D,IAAI,YAAY,KAAK,YAAY,EAAE;QACjC,OAAO,8BAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAC7E;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE;QACrC,OAAO,wBAAc,CAAC,MAAM,CAC1B,MAAM,EACN,cAAc,EACd,KAAK,EAAE,WAAW,EAAE,EAAE;YACpB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACrD,IAAA,+BAAsB,EAAC,KAAK,KAAK,IAAI,EAAE,6BAA6B,CAAC,CAAC;YAEtE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC,EACD,MAAM,CACP,CAAC;KACH;SAAM;QACL,OAAO,sBAAe,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;KAC3E;AACH,CAAC;AAzBD,4BAyBC"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="node" />
2
+ import { Block } from "@nomicfoundation/ethereumjs-block";
3
+ import { Common } from "@nomicfoundation/ethereumjs-common";
4
+ import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
5
+ import { Account, Address } from "@nomicfoundation/ethereumjs-util";
6
+ import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
7
+ import { MessageTrace } from "../../stack-traces/message-trace";
8
+ import { VMTracer } from "../../stack-traces/vm-tracer";
9
+ import { NodeConfig } from "../node-types";
10
+ import { RpcDebugTraceOutput } from "../output";
11
+ import { HardhatBlockchainInterface } from "../types/HardhatBlockchainInterface";
12
+ import { RunTxResult, Trace, VMAdapter } from "./vm-adapter";
13
+ import { BlockBuilderAdapter, BuildBlockOpts } from "./block-builder";
14
+ export declare class DualModeAdapter implements VMAdapter {
15
+ private _ethereumJSAdapter;
16
+ private _rethnetAdapter;
17
+ private _ethereumJSVMTracer;
18
+ private _rethnetVMTracer;
19
+ constructor(_ethereumJSAdapter: VMAdapter, _rethnetAdapter: VMAdapter, _ethereumJSVMTracer: VMTracer, _rethnetVMTracer: VMTracer);
20
+ static create(common: Common, blockchain: HardhatBlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<DualModeAdapter>;
21
+ dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<[RunTxResult, Trace]>;
22
+ getStateRoot(): Promise<Buffer>;
23
+ getAccount(address: Address): Promise<Account>;
24
+ getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
25
+ getContractCode(address: Address): Promise<Buffer>;
26
+ putAccount(address: Address, account: Account): Promise<void>;
27
+ putContractCode(address: Address, value: Buffer): Promise<void>;
28
+ putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
29
+ restoreContext(stateRoot: Buffer): Promise<void>;
30
+ traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
31
+ setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
32
+ runTxInBlock(tx: TypedTransaction, block: Block): Promise<[RunTxResult, Trace]>;
33
+ makeSnapshot(): Promise<Buffer>;
34
+ removeSnapshot(stateRoot: Buffer): Promise<void>;
35
+ getLastTrace(): {
36
+ trace: MessageTrace | undefined;
37
+ error: Error | undefined;
38
+ };
39
+ clearLastError(): void;
40
+ printState(): Promise<void>;
41
+ createBlockBuilder(common: Common, opts: BuildBlockOpts): Promise<BlockBuilderAdapter>;
42
+ }
43
+ //# sourceMappingURL=dual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dual.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/dual.ts"],"names":[],"mappings":"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"}