hardhat 2.13.0-dev.1 → 2.13.0-dev.2
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/builtin-tasks/compile.js +1 -1
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/flatten.js +9 -3
- package/builtin-tasks/flatten.js.map +1 -1
- package/internal/artifacts/caching.d.ts +2 -1
- package/internal/artifacts/caching.d.ts.map +1 -1
- package/internal/artifacts/caching.js +12 -1
- package/internal/artifacts/caching.js.map +1 -1
- package/internal/artifacts/index.d.ts +1 -0
- package/internal/artifacts/index.d.ts.map +1 -1
- package/internal/artifacts/index.js +14 -10
- package/internal/artifacts/index.js.map +1 -1
- package/internal/artifacts/readonly.d.ts +6 -0
- package/internal/artifacts/readonly.d.ts.map +1 -1
- package/internal/artifacts/readonly.js +19 -0
- package/internal/artifacts/readonly.js.map +1 -1
- package/internal/artifacts.d.ts +5 -0
- package/internal/artifacts.d.ts.map +1 -1
- package/internal/artifacts.js +29 -10
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/cli.js +10 -1
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.d.ts +1 -0
- package/internal/cli/project-creation.d.ts.map +1 -1
- package/internal/cli/project-creation.js +13 -2
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/core/config/config-resolution.d.ts.map +1 -1
- package/internal/core/config/config-resolution.js +2 -1
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/errors-list.d.ts +7 -0
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +84 -75
- package/internal/core/errors-list.js.map +1 -1
- package/internal/core/flamegraph.js +10 -10
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/metadata.d.ts +13 -0
- package/internal/core/jsonrpc/types/output/metadata.d.ts.map +1 -0
- package/internal/{hardhat-network/provider/vm/vm-adapter.js → core/jsonrpc/types/output/metadata.js} +1 -1
- package/internal/core/jsonrpc/types/output/metadata.js.map +1 -0
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +4 -1
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/backwards-compatibility.d.ts.map +1 -1
- package/internal/core/providers/backwards-compatibility.js +3 -0
- package/internal/core/providers/backwards-compatibility.js.map +1 -1
- package/internal/core/providers/gas-providers.d.ts +1 -1
- package/internal/core/providers/gas-providers.d.ts.map +1 -1
- package/internal/core/providers/gas-providers.js +1 -1
- package/internal/core/providers/gas-providers.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +5 -3
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +4 -4
- package/internal/hardhat-network/provider/modules/hardhat.d.ts +2 -0
- package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +9 -0
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.d.ts +3 -0
- package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.js +4 -4
- package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +5 -0
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +40 -3
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +1 -1
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +1 -1
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.js +1 -1
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +2 -5
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +2 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/solidity/compiler/index.d.ts.map +1 -1
- package/internal/solidity/compiler/index.js +6 -0
- package/internal/solidity/compiler/index.js.map +1 -1
- package/internal/solidity/dependencyGraph.d.ts.map +1 -1
- package/internal/solidity/dependencyGraph.js +2 -0
- package/internal/solidity/dependencyGraph.js.map +1 -1
- package/internal/solidity/resolver.d.ts.map +1 -1
- package/internal/solidity/resolver.js +8 -0
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/console.d.ts.map +1 -1
- package/internal/util/console.js +1 -1
- package/internal/util/console.js.map +1 -1
- package/internal/util/download.d.ts +3 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +2 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/keys-derivation.d.ts.map +1 -1
- package/internal/util/keys-derivation.js +4 -1
- package/internal/util/keys-derivation.js.map +1 -1
- package/internal/util/packageInfo.d.ts +1 -0
- package/internal/util/packageInfo.d.ts.map +1 -1
- package/internal/util/packageInfo.js +10 -1
- package/internal/util/packageInfo.js.map +1 -1
- package/package.json +1 -1
- package/recommended-gitignore.txt +1 -1
- package/src/builtin-tasks/compile.ts +2 -4
- package/src/builtin-tasks/flatten.ts +14 -3
- package/src/internal/artifacts/caching.ts +21 -1
- package/src/internal/artifacts/index.ts +21 -15
- package/src/internal/artifacts/readonly.ts +32 -0
- package/src/internal/cli/cli.ts +16 -2
- package/src/internal/cli/project-creation.ts +17 -1
- package/src/internal/core/config/config-resolution.ts +4 -3
- package/src/internal/core/errors-list.ts +85 -75
- package/src/internal/core/flamegraph.ts +10 -10
- package/src/internal/core/jsonrpc/types/output/metadata.ts +32 -0
- package/src/internal/core/providers/accounts.ts +5 -2
- package/src/internal/core/providers/backwards-compatibility.ts +3 -0
- package/src/internal/core/providers/gas-providers.ts +1 -1
- package/src/internal/hardhat-network/jsonrpc/client.ts +7 -4
- package/src/internal/hardhat-network/provider/modules/eth.ts +4 -4
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +14 -0
- package/src/internal/hardhat-network/provider/modules/web3.ts +4 -4
- package/src/internal/hardhat-network/provider/node.ts +58 -0
- package/src/internal/hardhat-network/provider/output.ts +2 -2
- package/src/internal/hardhat-network/provider/provider.ts +1 -1
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +10 -1
- package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +2 -6
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +3 -1
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +4 -1
- package/src/internal/solidity/compiler/downloader.ts +1 -1
- package/src/internal/solidity/compiler/index.ts +8 -0
- package/src/internal/solidity/dependencyGraph.ts +2 -0
- package/src/internal/solidity/resolver.ts +10 -0
- package/src/internal/util/console.ts +4 -2
- package/src/internal/util/download.ts +3 -1
- package/src/internal/util/keys-derivation.ts +4 -1
- package/src/internal/util/packageInfo.ts +9 -0
- package/src/types/artifacts.ts +12 -0
- package/src/utils/source-names.ts +15 -0
- package/types/artifacts.d.ts +10 -0
- package/types/artifacts.d.ts.map +1 -1
- package/utils/source-names.d.ts +5 -0
- package/utils/source-names.d.ts.map +1 -1
- package/utils/source-names.js +14 -1
- package/utils/source-names.js.map +1 -1
- package/internal/hardhat-network/provider/utils/bloom.d.ts +0 -28
- package/internal/hardhat-network/provider/utils/bloom.d.ts.map +0 -1
- package/internal/hardhat-network/provider/utils/bloom.js +0 -73
- package/internal/hardhat-network/provider/utils/bloom.js.map +0 -1
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +0 -29
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +0 -1
- package/internal/hardhat-network/provider/utils/convertToRethnet.js +0 -214
- package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +0 -1
- package/internal/hardhat-network/provider/vm/block-builder.d.ts +0 -30
- package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +0 -1
- package/internal/hardhat-network/provider/vm/block-builder.js +0 -147
- package/internal/hardhat-network/provider/vm/block-builder.js.map +0 -1
- package/internal/hardhat-network/provider/vm/dual.d.ts +0 -43
- package/internal/hardhat-network/provider/vm/dual.d.ts.map +0 -1
- package/internal/hardhat-network/provider/vm/dual.js +0 -120
- package/internal/hardhat-network/provider/vm/dual.js.map +0 -1
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +0 -55
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +0 -1
- package/internal/hardhat-network/provider/vm/ethereumjs.js +0 -272
- package/internal/hardhat-network/provider/vm/ethereumjs.js.map +0 -1
- package/internal/hardhat-network/provider/vm/rethnet.d.ts +0 -111
- package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +0 -1
- package/internal/hardhat-network/provider/vm/rethnet.js +0 -171
- package/internal/hardhat-network/provider/vm/rethnet.js.map +0 -1
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +0 -36
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +0 -1
- package/internal/hardhat-network/provider/vm/vm-adapter.js.map +0 -1
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BlockBuilder = void 0;
|
|
4
|
-
const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
|
|
5
|
-
const ethereumjs_rlp_1 = require("@nomicfoundation/ethereumjs-rlp");
|
|
6
|
-
const ethereumjs_trie_1 = require("@nomicfoundation/ethereumjs-trie");
|
|
7
|
-
const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
|
|
8
|
-
const bigint_1 = require("../../../util/bigint");
|
|
9
|
-
const bloom_1 = require("../utils/bloom");
|
|
10
|
-
class BlockBuilder {
|
|
11
|
-
constructor(_vm, _opts) {
|
|
12
|
-
this._vm = _vm;
|
|
13
|
-
this._opts = _opts;
|
|
14
|
-
this._state = "ready";
|
|
15
|
-
this._gasUsed = 0n;
|
|
16
|
-
this._transactions = [];
|
|
17
|
-
this._transactionResults = [];
|
|
18
|
-
}
|
|
19
|
-
async startBlock() {
|
|
20
|
-
await this._vm.startBlock();
|
|
21
|
-
this._state = "started";
|
|
22
|
-
}
|
|
23
|
-
getGasUsed() {
|
|
24
|
-
return this._gasUsed;
|
|
25
|
-
}
|
|
26
|
-
async addTransaction(tx) {
|
|
27
|
-
if (this._state !== "started") {
|
|
28
|
-
throw new Error(`BlockBuilder.addTransaction cannot be used in state ${this._state}`);
|
|
29
|
-
}
|
|
30
|
-
const blockGasLimit = (0, bigint_1.fromBigIntLike)(this._opts.headerData?.gasLimit) ?? 1000000n;
|
|
31
|
-
const blockGasRemaining = blockGasLimit - this._gasUsed;
|
|
32
|
-
if (tx.gasLimit > blockGasRemaining) {
|
|
33
|
-
throw new Error("tx has a higher gas limit than the remaining gas in the block");
|
|
34
|
-
}
|
|
35
|
-
const header = {
|
|
36
|
-
...this._opts.headerData,
|
|
37
|
-
gasUsed: this._gasUsed,
|
|
38
|
-
};
|
|
39
|
-
const blockData = { header, transactions: this._transactions };
|
|
40
|
-
const block = ethereumjs_block_1.Block.fromBlockData(blockData, {
|
|
41
|
-
common: this._vm.getCommon(),
|
|
42
|
-
skipConsensusFormatValidation: true,
|
|
43
|
-
calcDifficultyFromHeader: this._opts.parentBlock.header,
|
|
44
|
-
});
|
|
45
|
-
const result = await this._vm.runTxInBlock(tx, block);
|
|
46
|
-
this._transactions.push(tx);
|
|
47
|
-
this._transactionResults.push(result);
|
|
48
|
-
this._gasUsed += result.totalGasSpent;
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
async addRewards(rewards) {
|
|
52
|
-
if (this._state !== "started") {
|
|
53
|
-
throw new Error(`BlockBuilder.addRewards cannot be used in state ${this._state}`);
|
|
54
|
-
}
|
|
55
|
-
await this._vm.addBlockRewards(rewards);
|
|
56
|
-
this._state = "rewarded";
|
|
57
|
-
}
|
|
58
|
-
async seal() {
|
|
59
|
-
if (this._state !== "rewarded") {
|
|
60
|
-
throw new Error(`BlockBuilder.seal cannot be used in state ${this._state}`);
|
|
61
|
-
}
|
|
62
|
-
const stateRoot = await this._vm.getStateRoot();
|
|
63
|
-
const transactionsTrie = await this._getTransactionsTrie();
|
|
64
|
-
const receiptTrie = await this._getReceiptsTrie();
|
|
65
|
-
const logsBloom = this._getLogsBloom();
|
|
66
|
-
const gasUsed = this._gasUsed;
|
|
67
|
-
const timestamp = this._opts.headerData?.timestamp ?? Math.round(Date.now() / 1000);
|
|
68
|
-
const headerData = {
|
|
69
|
-
...this._opts.headerData,
|
|
70
|
-
stateRoot,
|
|
71
|
-
transactionsTrie,
|
|
72
|
-
receiptTrie,
|
|
73
|
-
logsBloom,
|
|
74
|
-
gasUsed,
|
|
75
|
-
timestamp,
|
|
76
|
-
};
|
|
77
|
-
const blockData = {
|
|
78
|
-
header: {
|
|
79
|
-
...headerData,
|
|
80
|
-
parentHash: this._opts.headerData?.parentHash ?? this._opts.parentBlock.hash(),
|
|
81
|
-
number: this._opts.headerData?.number ??
|
|
82
|
-
this._opts.parentBlock.header.number + BigInt(1),
|
|
83
|
-
gasLimit: this._opts.headerData?.gasLimit ??
|
|
84
|
-
this._opts.parentBlock.header.gasLimit,
|
|
85
|
-
},
|
|
86
|
-
transactions: this._transactions,
|
|
87
|
-
};
|
|
88
|
-
const block = ethereumjs_block_1.Block.fromBlockData(blockData, {
|
|
89
|
-
common: this._vm.getCommon(),
|
|
90
|
-
skipConsensusFormatValidation: true,
|
|
91
|
-
calcDifficultyFromHeader: this._opts.parentBlock.header,
|
|
92
|
-
});
|
|
93
|
-
await this._vm.sealBlock();
|
|
94
|
-
this._state = "sealed";
|
|
95
|
-
return block;
|
|
96
|
-
}
|
|
97
|
-
async revert() {
|
|
98
|
-
if (this._state !== "started" && this._state !== "rewarded") {
|
|
99
|
-
throw new Error(`BlockBuilder.revert cannot be used in state ${this._state}`);
|
|
100
|
-
}
|
|
101
|
-
await this._vm.revertBlock();
|
|
102
|
-
this._state = "reverted";
|
|
103
|
-
}
|
|
104
|
-
async _getTransactionsTrie() {
|
|
105
|
-
const trie = new ethereumjs_trie_1.Trie();
|
|
106
|
-
for (const [i, tx] of this._transactions.entries()) {
|
|
107
|
-
await trie.put(Buffer.from(ethereumjs_rlp_1.RLP.encode(i)), tx.serialize());
|
|
108
|
-
}
|
|
109
|
-
return trie.root();
|
|
110
|
-
}
|
|
111
|
-
async _getReceiptsTrie() {
|
|
112
|
-
const receiptTrie = new ethereumjs_trie_1.Trie();
|
|
113
|
-
for (const [i, txResult] of this._transactionResults.entries()) {
|
|
114
|
-
const tx = this._transactions[i];
|
|
115
|
-
const encodedReceipt = encodeReceipt(txResult.receipt, tx.type);
|
|
116
|
-
await receiptTrie.put(Buffer.from(ethereumjs_rlp_1.RLP.encode(i)), encodedReceipt);
|
|
117
|
-
}
|
|
118
|
-
return receiptTrie.root();
|
|
119
|
-
}
|
|
120
|
-
_getLogsBloom() {
|
|
121
|
-
const bloom = new bloom_1.Bloom();
|
|
122
|
-
for (const txResult of this._transactionResults) {
|
|
123
|
-
// Combine blooms via bitwise OR
|
|
124
|
-
bloom.or(txResult.bloom);
|
|
125
|
-
}
|
|
126
|
-
return bloom.bitvector;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
exports.BlockBuilder = BlockBuilder;
|
|
130
|
-
function encodeReceipt(receipt, txType) {
|
|
131
|
-
const encoded = Buffer.from(ethereumjs_rlp_1.RLP.encode((0, ethereumjs_util_1.bufArrToArr)([
|
|
132
|
-
receipt.stateRoot ??
|
|
133
|
-
(receipt.status === 0
|
|
134
|
-
? Buffer.from([])
|
|
135
|
-
: Buffer.from("01", "hex")),
|
|
136
|
-
(0, ethereumjs_util_1.bigIntToBuffer)(receipt.cumulativeBlockGasUsed),
|
|
137
|
-
receipt.bitvector,
|
|
138
|
-
receipt.logs,
|
|
139
|
-
])));
|
|
140
|
-
if (txType === 0) {
|
|
141
|
-
return encoded;
|
|
142
|
-
}
|
|
143
|
-
// Serialize receipt according to EIP-2718:
|
|
144
|
-
// `typed-receipt = tx-type || receipt-data`
|
|
145
|
-
return Buffer.concat([(0, ethereumjs_util_1.intToBuffer)(txType), encoded]);
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=block-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"block-builder.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/block-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { Message } from "@nomicfoundation/ethereumjs-evm";
|
|
3
|
-
import type { RunTxResult } from "@nomicfoundation/ethereumjs-vm";
|
|
4
|
-
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
5
|
-
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
6
|
-
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
7
|
-
import { Account, Address } from "@nomicfoundation/ethereumjs-util";
|
|
8
|
-
import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
|
|
9
|
-
import { NodeConfig } from "../node-types";
|
|
10
|
-
import { RpcDebugTraceOutput } from "../output";
|
|
11
|
-
import { HardhatBlockchainInterface } from "../types/HardhatBlockchainInterface";
|
|
12
|
-
import { VMAdapter } from "./vm-adapter";
|
|
13
|
-
export declare class DualModeAdapter implements VMAdapter {
|
|
14
|
-
private _ethereumJSAdapter;
|
|
15
|
-
private _rethnetAdapter;
|
|
16
|
-
constructor(_ethereumJSAdapter: VMAdapter, _rethnetAdapter: VMAdapter);
|
|
17
|
-
static create(common: Common, blockchain: HardhatBlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<DualModeAdapter>;
|
|
18
|
-
dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<RunTxResult>;
|
|
19
|
-
getCommon(): Common;
|
|
20
|
-
getStateRoot(): Promise<Buffer>;
|
|
21
|
-
getAccount(address: Address): Promise<Account>;
|
|
22
|
-
getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
|
|
23
|
-
getContractCode(address: Address): Promise<Buffer>;
|
|
24
|
-
putAccount(address: Address, account: Account): Promise<void>;
|
|
25
|
-
putContractCode(address: Address, value: Buffer): Promise<void>;
|
|
26
|
-
putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
|
|
27
|
-
restoreContext(stateRoot: Buffer): Promise<void>;
|
|
28
|
-
traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
|
|
29
|
-
enableTracing(callbacks: {
|
|
30
|
-
beforeMessage: (message: Message, next: any) => Promise<void>;
|
|
31
|
-
step: () => Promise<void>;
|
|
32
|
-
afterMessage: () => Promise<void>;
|
|
33
|
-
}): void;
|
|
34
|
-
disableTracing(): void;
|
|
35
|
-
setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
|
|
36
|
-
isEip1559Active(blockNumberOrPending?: bigint | "pending"): boolean;
|
|
37
|
-
startBlock(): Promise<void>;
|
|
38
|
-
runTxInBlock(tx: TypedTransaction, block: Block): Promise<RunTxResult>;
|
|
39
|
-
addBlockRewards(rewards: Array<[Address, bigint]>): Promise<void>;
|
|
40
|
-
sealBlock(): Promise<void>;
|
|
41
|
-
revertBlock(): Promise<void>;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=dual.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dual.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/dual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DualModeAdapter = void 0;
|
|
4
|
-
const ethereumjs_1 = require("./ethereumjs");
|
|
5
|
-
const rethnet_1 = require("./rethnet");
|
|
6
|
-
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
7
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
8
|
-
class DualModeAdapter {
|
|
9
|
-
constructor(_ethereumJSAdapter, _rethnetAdapter) {
|
|
10
|
-
this._ethereumJSAdapter = _ethereumJSAdapter;
|
|
11
|
-
this._rethnetAdapter = _rethnetAdapter;
|
|
12
|
-
}
|
|
13
|
-
static async create(common, blockchain, config, selectHardfork) {
|
|
14
|
-
const ethereumJSAdapter = await ethereumjs_1.EthereumJSAdapter.create(common, blockchain, config, selectHardfork);
|
|
15
|
-
const rethnetAdapter = await rethnet_1.RethnetAdapter.create(
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
17
|
-
ethereumJSAdapter["_stateManager"], blockchain, config, selectHardfork);
|
|
18
|
-
return new DualModeAdapter(ethereumJSAdapter, rethnetAdapter);
|
|
19
|
-
}
|
|
20
|
-
async dryRun(tx, blockContext, forceBaseFeeZero) {
|
|
21
|
-
const ethereumJSResult = await this._ethereumJSAdapter.dryRun(tx, blockContext, forceBaseFeeZero);
|
|
22
|
-
const rethnetResult = await this._rethnetAdapter.dryRun(tx, blockContext, forceBaseFeeZero);
|
|
23
|
-
assertEqualRunTxResults(ethereumJSResult, rethnetResult);
|
|
24
|
-
return rethnetResult;
|
|
25
|
-
}
|
|
26
|
-
getCommon() {
|
|
27
|
-
return this._ethereumJSAdapter.getCommon();
|
|
28
|
-
}
|
|
29
|
-
async getStateRoot() {
|
|
30
|
-
return this._ethereumJSAdapter.getStateRoot();
|
|
31
|
-
}
|
|
32
|
-
async getAccount(address) {
|
|
33
|
-
return this._ethereumJSAdapter.getAccount(address);
|
|
34
|
-
}
|
|
35
|
-
async getContractStorage(address, key) {
|
|
36
|
-
return this._ethereumJSAdapter.getContractStorage(address, key);
|
|
37
|
-
}
|
|
38
|
-
async getContractCode(address) {
|
|
39
|
-
return this._ethereumJSAdapter.getContractCode(address);
|
|
40
|
-
}
|
|
41
|
-
async putAccount(address, account) {
|
|
42
|
-
return this._ethereumJSAdapter.putAccount(address, account);
|
|
43
|
-
}
|
|
44
|
-
async putContractCode(address, value) {
|
|
45
|
-
return this._ethereumJSAdapter.putContractCode(address, value);
|
|
46
|
-
}
|
|
47
|
-
async putContractStorage(address, key, value) {
|
|
48
|
-
return this._ethereumJSAdapter.putContractStorage(address, key, value);
|
|
49
|
-
}
|
|
50
|
-
async restoreContext(stateRoot) {
|
|
51
|
-
return this._ethereumJSAdapter.restoreContext(stateRoot);
|
|
52
|
-
}
|
|
53
|
-
async traceTransaction(hash, block, config) {
|
|
54
|
-
return this._ethereumJSAdapter.traceTransaction(hash, block, config);
|
|
55
|
-
}
|
|
56
|
-
enableTracing(callbacks) {
|
|
57
|
-
return this._ethereumJSAdapter.enableTracing(callbacks);
|
|
58
|
-
}
|
|
59
|
-
disableTracing() {
|
|
60
|
-
return this._ethereumJSAdapter.disableTracing();
|
|
61
|
-
}
|
|
62
|
-
async setBlockContext(block, irregularStateOrUndefined) {
|
|
63
|
-
return this._ethereumJSAdapter.setBlockContext(block, irregularStateOrUndefined);
|
|
64
|
-
}
|
|
65
|
-
isEip1559Active(blockNumberOrPending) {
|
|
66
|
-
return this._ethereumJSAdapter.isEip1559Active(blockNumberOrPending);
|
|
67
|
-
}
|
|
68
|
-
async startBlock() {
|
|
69
|
-
return this._ethereumJSAdapter.startBlock();
|
|
70
|
-
}
|
|
71
|
-
async runTxInBlock(tx, block) {
|
|
72
|
-
return this._ethereumJSAdapter.runTxInBlock(tx, block);
|
|
73
|
-
}
|
|
74
|
-
async addBlockRewards(rewards) {
|
|
75
|
-
return this._ethereumJSAdapter.addBlockRewards(rewards);
|
|
76
|
-
}
|
|
77
|
-
async sealBlock() {
|
|
78
|
-
return this._ethereumJSAdapter.sealBlock();
|
|
79
|
-
}
|
|
80
|
-
async revertBlock() {
|
|
81
|
-
return this._ethereumJSAdapter.revertBlock();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.DualModeAdapter = DualModeAdapter;
|
|
85
|
-
function assertEqualRunTxResults(ethereumJSResult, rethnetResult) {
|
|
86
|
-
if (ethereumJSResult.totalGasSpent !== rethnetResult.totalGasSpent) {
|
|
87
|
-
console.trace(`Different totalGasSpent: ${ethereumJSResult.totalGasSpent} !== ${rethnetResult.totalGasSpent}`);
|
|
88
|
-
throw new Error("Different totalGasSpent");
|
|
89
|
-
}
|
|
90
|
-
if (ethereumJSResult.gasRefund !== rethnetResult.gasRefund) {
|
|
91
|
-
console.trace(`Different gasRefund: ${ethereumJSResult.gasRefund} !== ${rethnetResult.gasRefund}`);
|
|
92
|
-
throw new Error("Different gasRefund");
|
|
93
|
-
}
|
|
94
|
-
if (ethereumJSResult.createdAddress?.toString() !==
|
|
95
|
-
rethnetResult.createdAddress?.toString()) {
|
|
96
|
-
console.trace(`Different createdAddress: ${ethereumJSResult.createdAddress?.toString()} !== ${rethnetResult.createdAddress?.toString()}`);
|
|
97
|
-
throw new Error("Different createdAddress");
|
|
98
|
-
}
|
|
99
|
-
if (ethereumJSResult.execResult.exceptionError?.error !==
|
|
100
|
-
rethnetResult.execResult.exceptionError?.error) {
|
|
101
|
-
console.trace(`Different exceptionError.error: ${ethereumJSResult.execResult.exceptionError?.error} !== ${rethnetResult.execResult.exceptionError?.error}`);
|
|
102
|
-
throw new Error("Different exceptionError.error");
|
|
103
|
-
}
|
|
104
|
-
if (ethereumJSResult.execResult.exceptionError?.errorType !==
|
|
105
|
-
rethnetResult.execResult.exceptionError?.errorType) {
|
|
106
|
-
console.trace(`Different exceptionError.errorType: ${ethereumJSResult.execResult.exceptionError?.errorType} !== ${rethnetResult.execResult.exceptionError?.errorType}`);
|
|
107
|
-
throw new Error("Different exceptionError.errorType");
|
|
108
|
-
}
|
|
109
|
-
// TODO: we only compare the return values when a contract was *not* created,
|
|
110
|
-
// because sometimes ethereumjs has the created bytecode in the return value
|
|
111
|
-
// and rethnet doesn't
|
|
112
|
-
if (ethereumJSResult.createdAddress === undefined) {
|
|
113
|
-
if (ethereumJSResult.execResult.returnValue.toString("hex") !==
|
|
114
|
-
rethnetResult.execResult.returnValue.toString("hex")) {
|
|
115
|
-
console.trace(`Different returnValue: ${ethereumJSResult.execResult.returnValue.toString("hex")} !== ${rethnetResult.execResult.returnValue.toString("hex")}`);
|
|
116
|
-
throw new Error("Different returnValue");
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=dual.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dual.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/dual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
3
|
-
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
4
|
-
import { EVMResult, InterpreterStep, Message } from "@nomicfoundation/ethereumjs-evm";
|
|
5
|
-
import { StateManager } from "@nomicfoundation/ethereumjs-statemanager";
|
|
6
|
-
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
7
|
-
import { Account, Address } from "@nomicfoundation/ethereumjs-util";
|
|
8
|
-
import { RunTxResult, VM } from "@nomicfoundation/ethereumjs-vm";
|
|
9
|
-
import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
|
|
10
|
-
import { NodeConfig } from "../node-types";
|
|
11
|
-
import { RpcDebugTraceOutput } from "../output";
|
|
12
|
-
import { HardhatBlockchainInterface } from "../types/HardhatBlockchainInterface";
|
|
13
|
-
import { VMAdapter } from "./vm-adapter";
|
|
14
|
-
interface TracingCallbacks {
|
|
15
|
-
beforeMessage: (message: Message, next: any) => Promise<void>;
|
|
16
|
-
step: (step: InterpreterStep, next: any) => Promise<void>;
|
|
17
|
-
afterMessage: (result: EVMResult, next: any) => Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export declare class EthereumJSAdapter implements VMAdapter {
|
|
20
|
-
private _vm;
|
|
21
|
-
private _stateManager;
|
|
22
|
-
private _blockchain;
|
|
23
|
-
private readonly _configNetworkId;
|
|
24
|
-
private readonly _configChainId;
|
|
25
|
-
private readonly _selectHardfork;
|
|
26
|
-
private _forkNetworkId?;
|
|
27
|
-
private _forkBlockNumber?;
|
|
28
|
-
private _tracingCallbacks;
|
|
29
|
-
private _blockStartStateRoot;
|
|
30
|
-
constructor(_vm: VM, _stateManager: StateManager, _blockchain: HardhatBlockchainInterface, _configNetworkId: number, _configChainId: number, _selectHardfork: (blockNumber: bigint) => string, _forkNetworkId?: number | undefined, _forkBlockNumber?: bigint | undefined);
|
|
31
|
-
static create(common: Common, blockchain: HardhatBlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<EthereumJSAdapter>;
|
|
32
|
-
dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<RunTxResult>;
|
|
33
|
-
getCommon(): Common;
|
|
34
|
-
getStateRoot(): Promise<Buffer>;
|
|
35
|
-
getAccount(address: Address): Promise<Account>;
|
|
36
|
-
getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
|
|
37
|
-
getContractCode(address: Address): Promise<Buffer>;
|
|
38
|
-
putAccount(address: Address, account: Account): Promise<void>;
|
|
39
|
-
putContractCode(address: Address, value: Buffer): Promise<void>;
|
|
40
|
-
putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
|
|
41
|
-
restoreContext(stateRoot: Buffer): Promise<void>;
|
|
42
|
-
enableTracing(callbacks: TracingCallbacks): void;
|
|
43
|
-
disableTracing(): void;
|
|
44
|
-
setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
|
|
45
|
-
traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
|
|
46
|
-
isEip1559Active(blockNumberOrPending?: bigint | "pending"): boolean;
|
|
47
|
-
startBlock(): Promise<void>;
|
|
48
|
-
runTxInBlock(tx: TypedTransaction, block: Block): Promise<RunTxResult>;
|
|
49
|
-
addBlockRewards(rewards: Array<[Address, bigint]>): Promise<void>;
|
|
50
|
-
sealBlock(): Promise<void>;
|
|
51
|
-
revertBlock(): Promise<void>;
|
|
52
|
-
private _getCommonForTracing;
|
|
53
|
-
}
|
|
54
|
-
export {};
|
|
55
|
-
//# sourceMappingURL=ethereumjs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ethereumjs.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/ethereumjs.ts"],"names":[],"mappings":"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"}
|