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.
- package/internal/cli/bootstrap.js +0 -0
- package/internal/hardhat-network/provider/RethnetState.d.ts +29 -0
- package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
- package/internal/hardhat-network/provider/RethnetState.js +110 -0
- package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
- package/internal/hardhat-network/provider/utils/bloom.d.ts +32 -0
- package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/bloom.js +79 -0
- package/internal/hardhat-network/provider/utils/bloom.js.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +17 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js +392 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts +14 -0
- package/internal/hardhat-network/provider/vm/block-builder/dual.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/dual.js +47 -0
- package/internal/hardhat-network/provider/vm/block-builder/dual.js.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts +27 -0
- package/internal/hardhat-network/provider/vm/block-builder/hardhat.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/hardhat.js +136 -0
- package/internal/hardhat-network/provider/vm/block-builder/hardhat.js.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts +20 -0
- package/internal/hardhat-network/provider/vm/block-builder/rethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder/rethnet.js +55 -0
- package/internal/hardhat-network/provider/vm/block-builder/rethnet.js.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder.d.ts +19 -0
- package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder.js +24 -0
- package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.js +29 -0
- package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts +43 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.js +487 -0
- package/internal/hardhat-network/provider/vm/dual.js.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +61 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js +517 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts +24 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +140 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts +87 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.js +262 -0
- package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +53 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js +3 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js.map +1 -0
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +2 -5
- package/internal/util/download.js.map +1 -1
- package/package.json +2 -2
- 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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"}
|