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,272 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EthereumJSAdapter = void 0;
|
|
4
|
-
const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
|
|
5
|
-
const ethereumjs_common_1 = require("@nomicfoundation/ethereumjs-common");
|
|
6
|
-
const ethereumjs_evm_1 = require("@nomicfoundation/ethereumjs-evm");
|
|
7
|
-
const ethereumjs_statemanager_1 = require("@nomicfoundation/ethereumjs-statemanager");
|
|
8
|
-
const ethereumjs_vm_1 = require("@nomicfoundation/ethereumjs-vm");
|
|
9
|
-
const errors_1 = require("../../../core/errors");
|
|
10
|
-
const errors_2 = require("../../../core/providers/errors");
|
|
11
|
-
const vm_debug_tracer_1 = require("../../stack-traces/vm-debug-tracer");
|
|
12
|
-
const ForkStateManager_1 = require("../fork/ForkStateManager");
|
|
13
|
-
const node_types_1 = require("../node-types");
|
|
14
|
-
const FakeSenderAccessListEIP2930Transaction_1 = require("../transactions/FakeSenderAccessListEIP2930Transaction");
|
|
15
|
-
const FakeSenderEIP1559Transaction_1 = require("../transactions/FakeSenderEIP1559Transaction");
|
|
16
|
-
const FakeSenderTransaction_1 = require("../transactions/FakeSenderTransaction");
|
|
17
|
-
const makeForkClient_1 = require("../utils/makeForkClient");
|
|
18
|
-
const makeStateTrie_1 = require("../utils/makeStateTrie");
|
|
19
|
-
class EthereumJSAdapter {
|
|
20
|
-
constructor(_vm, _stateManager, _blockchain, _configNetworkId, _configChainId, _selectHardfork, _forkNetworkId, _forkBlockNumber) {
|
|
21
|
-
this._vm = _vm;
|
|
22
|
-
this._stateManager = _stateManager;
|
|
23
|
-
this._blockchain = _blockchain;
|
|
24
|
-
this._configNetworkId = _configNetworkId;
|
|
25
|
-
this._configChainId = _configChainId;
|
|
26
|
-
this._selectHardfork = _selectHardfork;
|
|
27
|
-
this._forkNetworkId = _forkNetworkId;
|
|
28
|
-
this._forkBlockNumber = _forkBlockNumber;
|
|
29
|
-
}
|
|
30
|
-
static async create(common, blockchain, config, selectHardfork) {
|
|
31
|
-
let stateManager;
|
|
32
|
-
let forkBlockNum;
|
|
33
|
-
let forkNetworkId;
|
|
34
|
-
if ((0, node_types_1.isForkedNodeConfig)(config)) {
|
|
35
|
-
const { forkClient, forkBlockNumber } = await (0, makeForkClient_1.makeForkClient)(config.forkConfig, config.forkCachePath);
|
|
36
|
-
forkNetworkId = forkClient.getNetworkId();
|
|
37
|
-
forkBlockNum = forkBlockNumber;
|
|
38
|
-
const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
|
|
39
|
-
await forkStateManager.initializeGenesisAccounts(config.genesisAccounts);
|
|
40
|
-
stateManager = forkStateManager;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
const stateTrie = await (0, makeStateTrie_1.makeStateTrie)(config.genesisAccounts);
|
|
44
|
-
stateManager = new ethereumjs_statemanager_1.DefaultStateManager({
|
|
45
|
-
trie: stateTrie,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
const eei = new ethereumjs_vm_1.EEI(stateManager, common, blockchain);
|
|
49
|
-
const evm = await ethereumjs_evm_1.EVM.create({
|
|
50
|
-
eei,
|
|
51
|
-
allowUnlimitedContractSize: config.allowUnlimitedContractSize,
|
|
52
|
-
common,
|
|
53
|
-
});
|
|
54
|
-
const vm = await ethereumjs_vm_1.VM.create({
|
|
55
|
-
evm,
|
|
56
|
-
activatePrecompiles: true,
|
|
57
|
-
common,
|
|
58
|
-
stateManager,
|
|
59
|
-
blockchain,
|
|
60
|
-
});
|
|
61
|
-
return new EthereumJSAdapter(vm, stateManager, blockchain, config.networkId, config.chainId, selectHardfork, forkNetworkId, forkBlockNum);
|
|
62
|
-
}
|
|
63
|
-
async dryRun(tx, blockContext, forceBaseFeeZero = false) {
|
|
64
|
-
const initialStateRoot = await this.getStateRoot();
|
|
65
|
-
let originalCommon;
|
|
66
|
-
try {
|
|
67
|
-
// NOTE: This is a workaround of both an @nomicfoundation/ethereumjs-vm limitation, and
|
|
68
|
-
// a bug in Hardhat Network.
|
|
69
|
-
//
|
|
70
|
-
// See: https://github.com/nomiclabs/hardhat/issues/1666
|
|
71
|
-
//
|
|
72
|
-
// If this VM is running with EIP1559 activated, and the block is not
|
|
73
|
-
// an EIP1559 one, this will crash, so we create a new one that has
|
|
74
|
-
// baseFeePerGas = 0.
|
|
75
|
-
//
|
|
76
|
-
// We also have an option to force the base fee to be zero,
|
|
77
|
-
// we don't want to debit any balance nor fail any tx when running an
|
|
78
|
-
// eth_call. This will make the BASEFEE option also return 0, which
|
|
79
|
-
// shouldn't. See: https://github.com/nomiclabs/hardhat/issues/1688
|
|
80
|
-
if (this.isEip1559Active(blockContext.header.number) &&
|
|
81
|
-
(blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)) {
|
|
82
|
-
blockContext = ethereumjs_block_1.Block.fromBlockData(blockContext, {
|
|
83
|
-
freeze: false,
|
|
84
|
-
common: this.getCommon(),
|
|
85
|
-
skipConsensusFormatValidation: true,
|
|
86
|
-
});
|
|
87
|
-
blockContext.header.baseFeePerGas = 0n;
|
|
88
|
-
}
|
|
89
|
-
originalCommon = this._vm._common;
|
|
90
|
-
this._vm._common = ethereumjs_common_1.Common.custom({
|
|
91
|
-
chainId: this._forkBlockNumber === undefined ||
|
|
92
|
-
blockContext.header.number >= this._forkBlockNumber
|
|
93
|
-
? this._configChainId
|
|
94
|
-
: this._forkNetworkId,
|
|
95
|
-
networkId: this._forkNetworkId ?? this._configNetworkId,
|
|
96
|
-
}, {
|
|
97
|
-
hardfork: this._selectHardfork(blockContext.header.number),
|
|
98
|
-
});
|
|
99
|
-
return await this._vm.runTx({
|
|
100
|
-
block: blockContext,
|
|
101
|
-
tx,
|
|
102
|
-
skipNonce: true,
|
|
103
|
-
skipBalance: true,
|
|
104
|
-
skipBlockGasLimitValidation: true,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
if (originalCommon !== undefined) {
|
|
109
|
-
this._vm._common = originalCommon;
|
|
110
|
-
}
|
|
111
|
-
await this._stateManager.setStateRoot(initialStateRoot);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
getCommon() {
|
|
115
|
-
return this._vm._common;
|
|
116
|
-
}
|
|
117
|
-
async getStateRoot() {
|
|
118
|
-
return this._stateManager.getStateRoot();
|
|
119
|
-
}
|
|
120
|
-
async getAccount(address) {
|
|
121
|
-
return this._stateManager.getAccount(address);
|
|
122
|
-
}
|
|
123
|
-
async getContractStorage(address, key) {
|
|
124
|
-
return this._stateManager.getContractStorage(address, key);
|
|
125
|
-
}
|
|
126
|
-
async getContractCode(address) {
|
|
127
|
-
return this._stateManager.getContractCode(address);
|
|
128
|
-
}
|
|
129
|
-
async putAccount(address, account) {
|
|
130
|
-
return this._stateManager.putAccount(address, account);
|
|
131
|
-
}
|
|
132
|
-
async putContractCode(address, value) {
|
|
133
|
-
return this._stateManager.putContractCode(address, value);
|
|
134
|
-
}
|
|
135
|
-
async putContractStorage(address, key, value) {
|
|
136
|
-
return this._stateManager.putContractStorage(address, key, value);
|
|
137
|
-
}
|
|
138
|
-
async restoreContext(stateRoot) {
|
|
139
|
-
if (this._stateManager instanceof ForkStateManager_1.ForkStateManager) {
|
|
140
|
-
return this._stateManager.restoreForkBlockContext(stateRoot);
|
|
141
|
-
}
|
|
142
|
-
return this._stateManager.setStateRoot(stateRoot);
|
|
143
|
-
}
|
|
144
|
-
enableTracing(callbacks) {
|
|
145
|
-
(0, errors_1.assertHardhatInvariant)(this._vm.evm.events !== undefined, "EVM should have an 'events' property");
|
|
146
|
-
this._tracingCallbacks = callbacks;
|
|
147
|
-
this._vm.evm.events.on("beforeMessage", this._tracingCallbacks.beforeMessage);
|
|
148
|
-
this._vm.evm.events.on("step", this._tracingCallbacks.step);
|
|
149
|
-
this._vm.evm.events.on("afterMessage", this._tracingCallbacks.afterMessage);
|
|
150
|
-
}
|
|
151
|
-
disableTracing() {
|
|
152
|
-
(0, errors_1.assertHardhatInvariant)(this._vm.evm.events !== undefined, "EVM should have an 'events' property");
|
|
153
|
-
if (this._tracingCallbacks !== undefined) {
|
|
154
|
-
this._vm.evm.events.removeListener("beforeMessage", this._tracingCallbacks.beforeMessage);
|
|
155
|
-
this._vm.evm.events.removeListener("step", this._tracingCallbacks.step);
|
|
156
|
-
this._vm.evm.events.removeListener("afterMessage", this._tracingCallbacks.afterMessage);
|
|
157
|
-
this._tracingCallbacks = undefined;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async setBlockContext(block, irregularStateOrUndefined) {
|
|
161
|
-
if (this._stateManager instanceof ForkStateManager_1.ForkStateManager) {
|
|
162
|
-
return this._stateManager.setBlockContext(block.header.stateRoot, block.header.number, irregularStateOrUndefined);
|
|
163
|
-
}
|
|
164
|
-
return this._stateManager.setStateRoot(irregularStateOrUndefined ?? block.header.stateRoot);
|
|
165
|
-
}
|
|
166
|
-
async traceTransaction(hash, block, config) {
|
|
167
|
-
const blockNumber = block.header.number;
|
|
168
|
-
let vm = this._vm;
|
|
169
|
-
if (this._forkBlockNumber !== undefined &&
|
|
170
|
-
blockNumber <= this._forkBlockNumber) {
|
|
171
|
-
(0, errors_1.assertHardhatInvariant)(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if this._forkBlockNumber exists");
|
|
172
|
-
const common = this._getCommonForTracing(this._forkNetworkId, blockNumber);
|
|
173
|
-
vm = await ethereumjs_vm_1.VM.create({
|
|
174
|
-
common,
|
|
175
|
-
activatePrecompiles: true,
|
|
176
|
-
stateManager: this._vm.stateManager,
|
|
177
|
-
blockchain: this._vm.blockchain,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
// We don't support tracing transactions before the spuriousDragon fork
|
|
181
|
-
// to avoid having to distinguish between empty and non-existing accounts.
|
|
182
|
-
// We *could* do it during the non-forked mode, but for simplicity we just
|
|
183
|
-
// don't support it at all.
|
|
184
|
-
const isPreSpuriousDragon = !vm._common.gteHardfork("spuriousDragon");
|
|
185
|
-
if (isPreSpuriousDragon) {
|
|
186
|
-
throw new errors_2.InvalidInputError("Tracing is not supported for transactions using hardforks older than Spurious Dragon. ");
|
|
187
|
-
}
|
|
188
|
-
for (const tx of block.transactions) {
|
|
189
|
-
let txWithCommon;
|
|
190
|
-
const sender = tx.getSenderAddress();
|
|
191
|
-
if (tx.type === 0) {
|
|
192
|
-
txWithCommon = new FakeSenderTransaction_1.FakeSenderTransaction(sender, tx, {
|
|
193
|
-
common: vm._common,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
else if (tx.type === 1) {
|
|
197
|
-
txWithCommon = new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, tx, {
|
|
198
|
-
common: vm._common,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
else if (tx.type === 2) {
|
|
202
|
-
txWithCommon = new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, { ...tx, gasPrice: undefined }, {
|
|
203
|
-
common: vm._common,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
throw new errors_2.InternalError("Only legacy, EIP2930, and EIP1559 txs are supported");
|
|
208
|
-
}
|
|
209
|
-
const txHash = txWithCommon.hash();
|
|
210
|
-
if (txHash.equals(hash)) {
|
|
211
|
-
const vmDebugTracer = new vm_debug_tracer_1.VMDebugTracer(vm);
|
|
212
|
-
return vmDebugTracer.trace(async () => {
|
|
213
|
-
await vm.runTx({ tx: txWithCommon, block });
|
|
214
|
-
}, config);
|
|
215
|
-
}
|
|
216
|
-
await vm.runTx({ tx: txWithCommon, block });
|
|
217
|
-
}
|
|
218
|
-
throw new errors_2.TransactionExecutionError(`Unable to find a transaction in a block that contains that transaction, this should never happen`);
|
|
219
|
-
}
|
|
220
|
-
isEip1559Active(blockNumberOrPending) {
|
|
221
|
-
if (blockNumberOrPending !== undefined &&
|
|
222
|
-
blockNumberOrPending !== "pending") {
|
|
223
|
-
return this.getCommon().hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
|
|
224
|
-
}
|
|
225
|
-
return this.getCommon().gteHardfork("london");
|
|
226
|
-
}
|
|
227
|
-
async startBlock() {
|
|
228
|
-
if (this._blockStartStateRoot !== undefined) {
|
|
229
|
-
throw new Error("a block is already started");
|
|
230
|
-
}
|
|
231
|
-
this._blockStartStateRoot = await this.getStateRoot();
|
|
232
|
-
}
|
|
233
|
-
async runTxInBlock(tx, block) {
|
|
234
|
-
return this._vm.runTx({ tx, block });
|
|
235
|
-
}
|
|
236
|
-
async addBlockRewards(rewards) {
|
|
237
|
-
for (const [address, reward] of rewards) {
|
|
238
|
-
const account = await this._stateManager.getAccount(address);
|
|
239
|
-
account.balance += reward;
|
|
240
|
-
await this._stateManager.putAccount(address, account);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
async sealBlock() {
|
|
244
|
-
if (this._blockStartStateRoot === undefined) {
|
|
245
|
-
throw new Error("Cannot seal a block that wasn't started");
|
|
246
|
-
}
|
|
247
|
-
this._blockStartStateRoot = undefined;
|
|
248
|
-
}
|
|
249
|
-
async revertBlock() {
|
|
250
|
-
if (this._blockStartStateRoot === undefined) {
|
|
251
|
-
throw new Error("Cannot revert a block that wasn't started");
|
|
252
|
-
}
|
|
253
|
-
await this._stateManager.setStateRoot(this._blockStartStateRoot);
|
|
254
|
-
this._blockStartStateRoot = undefined;
|
|
255
|
-
}
|
|
256
|
-
_getCommonForTracing(networkId, blockNumber) {
|
|
257
|
-
try {
|
|
258
|
-
const common = ethereumjs_common_1.Common.custom({
|
|
259
|
-
chainId: networkId,
|
|
260
|
-
networkId,
|
|
261
|
-
}, {
|
|
262
|
-
hardfork: this._selectHardfork(BigInt(blockNumber)),
|
|
263
|
-
});
|
|
264
|
-
return common;
|
|
265
|
-
}
|
|
266
|
-
catch {
|
|
267
|
-
throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
exports.EthereumJSAdapter = EthereumJSAdapter;
|
|
272
|
-
//# sourceMappingURL=ethereumjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ethereumjs.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/ethereumjs.ts"],"names":[],"mappings":";;;AAAA,wEAA0D;AAC1D,0EAA4D;AAC5D,oEAKyC;AACzC,sFAGkD;AAGlD,kEAAsE;AACtE,iDAA8D;AAE9D,2DAIwC;AACxC,wEAAmE;AACnE,+DAA4D;AAC5D,8CAA+D;AAE/D,mHAAgH;AAChH,+FAA4F;AAC5F,iFAA8E;AAE9E,4DAAyD;AACzD,0DAAuD;AAWvD,MAAa,iBAAiB;IAK5B,YACU,GAAO,EACP,aAA2B,EAC3B,WAAuC,EAC9B,gBAAwB,EACxB,cAAsB,EACtB,eAAgD,EACzD,cAAuB,EACvB,gBAAyB;QAPzB,QAAG,GAAH,GAAG,CAAI;QACP,kBAAa,GAAb,aAAa,CAAc;QAC3B,gBAAW,GAAX,WAAW,CAA4B;QAC9B,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,mBAAc,GAAd,cAAc,CAAQ;QACtB,oBAAe,GAAf,eAAe,CAAiC;QACzD,mBAAc,GAAd,cAAc,CAAS;QACvB,qBAAgB,GAAhB,gBAAgB,CAAS;IAChC,CAAC;IAEG,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,MAAc,EACd,UAAsC,EACtC,MAAkB,EAClB,cAA+C;QAE/C,IAAI,YAA0B,CAAC;QAC/B,IAAI,YAAgC,CAAC;QACrC,IAAI,aAAiC,CAAC;QAEtC,IAAI,IAAA,+BAAkB,EAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,IAAA,+BAAc,EAC1D,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,aAAa,CACrB,CAAC;YAEF,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;YAC1C,YAAY,GAAG,eAAe,CAAC;YAE/B,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,CAC3C,UAAU,EACV,eAAe,CAChB,CAAC;YACF,MAAM,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAEzE,YAAY,GAAG,gBAAgB,CAAC;SACjC;aAAM;YACL,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAa,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAE9D,YAAY,GAAG,IAAI,6CAAmB,CAAC;gBACrC,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;SACJ;QAED,MAAM,GAAG,GAAG,IAAI,mBAAG,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,oBAAG,CAAC,MAAM,CAAC;YAC3B,GAAG;YACH,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;YAC7D,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,MAAM,kBAAE,CAAC,MAAM,CAAC;YACzB,GAAG;YACH,mBAAmB,EAAE,IAAI;YACzB,MAAM;YACN,YAAY;YACZ,UAAU;SACX,CAAC,CAAC;QAEH,OAAO,IAAI,iBAAiB,CAC1B,EAAE,EACF,YAAY,EACZ,UAAU,EACV,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,cAAc,EACd,aAAa,EACb,YAAY,CACb,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAAoB,EACpB,YAAmB,EACnB,gBAAgB,GAAG,KAAK;QAExB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEnD,IAAI,cAAkC,CAAC;QAEvC,IAAI;YACF,uFAAuF;YACvF,8BAA8B;YAC9B,EAAE;YACF,wDAAwD;YACxD,EAAE;YACF,qEAAqE;YACrE,mEAAmE;YACnE,qBAAqB;YACrB,EAAE;YACF,2DAA2D;YAC3D,qEAAqE;YACrE,mEAAmE;YACnE,mEAAmE;YACnE,IACE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;gBAChD,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,gBAAgB,CAAC,EACrE;gBACA,YAAY,GAAG,wBAAK,CAAC,aAAa,CAAC,YAAY,EAAE;oBAC/C,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;oBAExB,6BAA6B,EAAE,IAAI;iBACpC,CAAC,CAAC;gBAEF,YAAY,CAAC,MAAc,CAAC,aAAa,GAAG,EAAE,CAAC;aACjD;YAED,cAAc,GAAI,IAAI,CAAC,GAAW,CAAC,OAAO,CAAC;YAE1C,IAAI,CAAC,GAAW,CAAC,OAAO,GAAG,0BAAM,CAAC,MAAM,CACvC;gBACE,OAAO,EACL,IAAI,CAAC,gBAAgB,KAAK,SAAS;oBACnC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB;oBACjD,CAAC,CAAC,IAAI,CAAC,cAAc;oBACrB,CAAC,CAAC,IAAI,CAAC,cAAc;gBACzB,SAAS,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB;aACxD,EACD;gBACE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;aAC3D,CACF,CAAC;YAEF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC1B,KAAK,EAAE,YAAY;gBACnB,EAAE;gBACF,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,2BAA2B,EAAE,IAAI;aAClC,CAAC,CAAC;SACJ;gBAAS;YACR,IAAI,cAAc,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,GAAW,CAAC,OAAO,GAAG,cAAc,CAAC;aAC5C;YACD,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;SACzD;IACH,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,OAAgB,EAChB,GAAW;QAEX,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAgB;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,OAAgB;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAgB,EAAE,KAAa;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,OAAgB,EAChB,GAAW,EACX,KAAa;QAEb,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC3C,IAAI,IAAI,CAAC,aAAa,YAAY,mCAAgB,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,aAAa,CAAC,SAA2B;QAC9C,IAAA,+BAAsB,EACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EACjC,sCAAsC,CACvC,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpB,eAAe,EACf,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACrC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC9E,CAAC;IAEM,cAAc;QACnB,IAAA,+BAAsB,EACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EACjC,sCAAsC,CACvC,CAAC;QAEF,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAChC,eAAe,EACf,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACrC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAChC,cAAc,EACd,IAAI,CAAC,iBAAiB,CAAC,YAAY,CACpC,CAAC;YAEF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;SACpC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,KAAY,EACZ,yBAA6C;QAE7C,IAAI,IAAI,CAAC,aAAa,YAAY,mCAAgB,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CACvC,KAAK,CAAC,MAAM,CAAC,SAAS,EACtB,KAAK,CAAC,MAAM,CAAC,MAAM,EACnB,yBAAyB,CAC1B,CAAC;SACH;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CACpC,yBAAyB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CACpD,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,IAAY,EACZ,KAAY,EACZ,MAA6B;QAE7B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAClB,IACE,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,WAAW,IAAI,IAAI,CAAC,gBAAgB,EACpC;YACA,IAAA,+BAAsB,EACpB,IAAI,CAAC,cAAc,KAAK,SAAS,EACjC,kEAAkE,CACnE,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CACtC,IAAI,CAAC,cAAc,EACnB,WAAW,CACZ,CAAC;YAEF,EAAE,GAAG,MAAM,kBAAE,CAAC,MAAM,CAAC;gBACnB,MAAM;gBACN,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;gBACnC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;aAChC,CAAC,CAAC;SACJ;QAED,uEAAuE;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,mBAAmB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACtE,IAAI,mBAAmB,EAAE;YACvB,MAAM,IAAI,0BAAiB,CACzB,wFAAwF,CACzF,CAAC;SACH;QAED,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE;YACnC,IAAI,YAA8B,CAAC;YACnC,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE;gBACjB,YAAY,GAAG,IAAI,6CAAqB,CAAC,MAAM,EAAE,EAAE,EAAE;oBACnD,MAAM,EAAE,EAAE,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE;gBACxB,YAAY,GAAG,IAAI,+EAAsC,CAAC,MAAM,EAAE,EAAE,EAAE;oBACpE,MAAM,EAAE,EAAE,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE;gBACxB,YAAY,GAAG,IAAI,2DAA4B,CAC7C,MAAM,EACN,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAC9B;oBACE,MAAM,EAAE,EAAE,CAAC,OAAO;iBACnB,CACF,CAAC;aACH;iBAAM;gBACL,MAAM,IAAI,sBAAa,CACrB,qDAAqD,CACtD,CAAC;aACH;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACvB,MAAM,aAAa,GAAG,IAAI,+BAAa,CAAC,EAAE,CAAC,CAAC;gBAC5C,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;oBACpC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC,EAAE,MAAM,CAAC,CAAC;aACZ;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;SAC7C;QACD,MAAM,IAAI,kCAAyB,CACjC,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAEM,eAAe,CAAC,oBAAyC;QAC9D,IACE,oBAAoB,KAAK,SAAS;YAClC,oBAAoB,KAAK,SAAS,EAClC;YACA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,mBAAmB,CACzC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAC1C,QAAQ,CACT,CAAC;SACH;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,oBAAoB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,EAAoB,EACpB,KAAY;QAEZ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,OAAiC;QAEjC,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC7D,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;YAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACvD;IACH,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC9D;QAED,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAC,SAAiB,EAAE,WAAmB;QACjE,IAAI;YACF,MAAM,MAAM,GAAG,0BAAM,CAAC,MAAM,CAC1B;gBACE,OAAO,EAAE,SAAS;gBAClB,SAAS;aACV,EACD;gBACE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aACpD,CACF,CAAC;YAEF,OAAO,MAAM,CAAC;SACf;QAAC,MAAM;YACN,MAAM,IAAI,sBAAa,CACrB,cAAc,SAAS,0DAA0D,CAClF,CAAC;SACH;IACH,CAAC;CACF;AA9YD,8CA8YC"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { Message } from "@nomicfoundation/ethereumjs-evm";
|
|
3
|
-
import type { RunTxResult } from "@nomicfoundation/ethereumjs-vm";
|
|
4
|
-
import { BlockchainInterface } from "@nomicfoundation/ethereumjs-blockchain";
|
|
5
|
-
import { Block } from "@nomicfoundation/ethereumjs-block";
|
|
6
|
-
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
7
|
-
import { StateManager } from "@nomicfoundation/ethereumjs-statemanager";
|
|
8
|
-
import { Account, Address } from "@nomicfoundation/ethereumjs-util";
|
|
9
|
-
import { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
10
|
-
import { Rethnet } from "rethnet-evm";
|
|
11
|
-
import { NodeConfig } from "../node-types";
|
|
12
|
-
import { RpcDebugTraceOutput } from "../output";
|
|
13
|
-
import { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
|
|
14
|
-
import { VMAdapter } from "./vm-adapter";
|
|
15
|
-
export declare class RethnetAdapter implements VMAdapter {
|
|
16
|
-
private _rethnet;
|
|
17
|
-
private readonly _selectHardfork;
|
|
18
|
-
constructor(_rethnet: Rethnet, _selectHardfork: (blockNumber: bigint) => string);
|
|
19
|
-
static create(stateManager: StateManager, blockchain: BlockchainInterface, config: NodeConfig, selectHardfork: (blockNumber: bigint) => string): Promise<RethnetAdapter>;
|
|
20
|
-
/**
|
|
21
|
-
* Run `tx` with the given `blockContext`, without modifying the state.
|
|
22
|
-
*/
|
|
23
|
-
dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<RunTxResult>;
|
|
24
|
-
/**
|
|
25
|
-
* Temporary method, will be removed.
|
|
26
|
-
*/
|
|
27
|
-
getCommon(): Common;
|
|
28
|
-
/**
|
|
29
|
-
* Temporary method, will be removed.
|
|
30
|
-
*/
|
|
31
|
-
isEip1559Active(): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Get the account info for the given address.
|
|
34
|
-
*/
|
|
35
|
-
getAccount(address: Address): Promise<Account>;
|
|
36
|
-
/**
|
|
37
|
-
* Get the storage value at the given address and slot.
|
|
38
|
-
*/
|
|
39
|
-
getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
|
|
40
|
-
/**
|
|
41
|
-
* Get the contract code at the given address.
|
|
42
|
-
*/
|
|
43
|
-
getContractCode(address: Address): Promise<Buffer>;
|
|
44
|
-
/**
|
|
45
|
-
* Update the account info for the given address.
|
|
46
|
-
*/
|
|
47
|
-
putAccount(address: Address, account: Account): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Update the contract code for the given address.
|
|
50
|
-
*/
|
|
51
|
-
putContractCode(address: Address, value: Buffer): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Update the value of the given storage slot.
|
|
54
|
-
*/
|
|
55
|
-
putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Get the root of the current state trie.
|
|
58
|
-
*/
|
|
59
|
-
getStateRoot(): Promise<Buffer>;
|
|
60
|
-
/**
|
|
61
|
-
* Reset the state trie to the point after `block` was mined. If
|
|
62
|
-
* `irregularStateOrUndefined` is passed, use it as the state root.
|
|
63
|
-
*/
|
|
64
|
-
setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Reset the state trie to the point where it had the given state root.
|
|
67
|
-
*
|
|
68
|
-
* Throw if it can't.
|
|
69
|
-
*/
|
|
70
|
-
restoreContext(stateRoot: Buffer): Promise<void>;
|
|
71
|
-
/**
|
|
72
|
-
* Start a new block and accept transactions sent with `runTxInBlock`.
|
|
73
|
-
*/
|
|
74
|
-
startBlock(): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Must be called after `startBlock`, and before `addBlockRewards`.
|
|
77
|
-
*/
|
|
78
|
-
runTxInBlock(tx: TypedTransaction, block: Block): Promise<RunTxResult>;
|
|
79
|
-
/**
|
|
80
|
-
* Must be called after `startBlock` and all `runTxInBlock` calls.
|
|
81
|
-
*/
|
|
82
|
-
addBlockRewards(rewards: Array<[Address, bigint]>): Promise<void>;
|
|
83
|
-
/**
|
|
84
|
-
* Finish the block successfully. Must be called after `addBlockRewards`.
|
|
85
|
-
*/
|
|
86
|
-
sealBlock(): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Revert the block and discard the changes to the state. Can be called
|
|
89
|
-
* at any point after `startBlock`.
|
|
90
|
-
*/
|
|
91
|
-
revertBlock(): Promise<void>;
|
|
92
|
-
/**
|
|
93
|
-
* Re-execute the transactions in the block up until the transaction with the
|
|
94
|
-
* given hash, and trace the execution of that transaction.
|
|
95
|
-
*/
|
|
96
|
-
traceTransaction(hash: Buffer, block: Block, config: RpcDebugTracingConfig): Promise<RpcDebugTraceOutput>;
|
|
97
|
-
/**
|
|
98
|
-
* Start tracing the VM execution with the given callbacks.
|
|
99
|
-
*/
|
|
100
|
-
enableTracing(callbacks: {
|
|
101
|
-
beforeMessage: (message: Message, next: any) => Promise<void>;
|
|
102
|
-
step: () => Promise<void>;
|
|
103
|
-
afterMessage: () => Promise<void>;
|
|
104
|
-
}): void;
|
|
105
|
-
/**
|
|
106
|
-
* Stop tracing the execution.
|
|
107
|
-
*/
|
|
108
|
-
disableTracing(): void;
|
|
109
|
-
private _getBlockEnvDifficulty;
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=rethnet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rethnet.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RethnetAdapter = void 0;
|
|
4
|
-
const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
|
|
5
|
-
const convertToRethnet_1 = require("../utils/convertToRethnet");
|
|
6
|
-
const hardforks_1 = require("../../../util/hardforks");
|
|
7
|
-
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
9
|
-
class RethnetAdapter {
|
|
10
|
-
constructor(_rethnet, _selectHardfork) {
|
|
11
|
-
this._rethnet = _rethnet;
|
|
12
|
-
this._selectHardfork = _selectHardfork;
|
|
13
|
-
}
|
|
14
|
-
static async create(stateManager, blockchain, config, selectHardfork) {
|
|
15
|
-
const hardhatDB = new convertToRethnet_1.HardhatDB(stateManager, blockchain);
|
|
16
|
-
const limitContractCodeSize = config.allowUnlimitedContractSize === true ? 2n ** 64n - 1n : undefined;
|
|
17
|
-
const rethnet = (0, convertToRethnet_1.createRethnetFromHardhatDB)({
|
|
18
|
-
chainId: BigInt(config.chainId),
|
|
19
|
-
limitContractCodeSize,
|
|
20
|
-
disableBlockGasLimit: true,
|
|
21
|
-
disableEip3607: true,
|
|
22
|
-
}, hardhatDB);
|
|
23
|
-
return new RethnetAdapter(rethnet, selectHardfork);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Run `tx` with the given `blockContext`, without modifying the state.
|
|
27
|
-
*/
|
|
28
|
-
async dryRun(tx, blockContext, forceBaseFeeZero) {
|
|
29
|
-
const rethnetTx = (0, convertToRethnet_1.ethereumjsTransactionToRethnet)(tx);
|
|
30
|
-
const difficulty = this._getBlockEnvDifficulty(blockContext.header.number, blockContext.header.difficulty, (0, ethereumjs_util_1.bufferToBigInt)(blockContext.header.mixHash));
|
|
31
|
-
await this._rethnet.guaranteeTransaction(rethnetTx);
|
|
32
|
-
const rethnetResult = await this._rethnet.dryRun(rethnetTx, {
|
|
33
|
-
number: blockContext.header.number,
|
|
34
|
-
coinbase: blockContext.header.coinbase.buf,
|
|
35
|
-
timestamp: blockContext.header.timestamp,
|
|
36
|
-
basefee: forceBaseFeeZero === true ? 0n : blockContext.header.baseFeePerGas,
|
|
37
|
-
gasLimit: blockContext.header.gasLimit,
|
|
38
|
-
difficulty,
|
|
39
|
-
});
|
|
40
|
-
return (0, convertToRethnet_1.rethnetResultToRunTxResult)(rethnetResult.execResult);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Temporary method, will be removed.
|
|
44
|
-
*/
|
|
45
|
-
getCommon() {
|
|
46
|
-
throw new Error("not implemented");
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Temporary method, will be removed.
|
|
50
|
-
*/
|
|
51
|
-
isEip1559Active() {
|
|
52
|
-
throw new Error("not implemented");
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get the account info for the given address.
|
|
56
|
-
*/
|
|
57
|
-
async getAccount(address) {
|
|
58
|
-
throw new Error("not implemented");
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get the storage value at the given address and slot.
|
|
62
|
-
*/
|
|
63
|
-
async getContractStorage(address, key) {
|
|
64
|
-
throw new Error("not implemented");
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Get the contract code at the given address.
|
|
68
|
-
*/
|
|
69
|
-
async getContractCode(address) {
|
|
70
|
-
throw new Error("not implemented");
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Update the account info for the given address.
|
|
74
|
-
*/
|
|
75
|
-
async putAccount(address, account) {
|
|
76
|
-
throw new Error("not implemented");
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Update the contract code for the given address.
|
|
80
|
-
*/
|
|
81
|
-
async putContractCode(address, value) {
|
|
82
|
-
throw new Error("not implemented");
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Update the value of the given storage slot.
|
|
86
|
-
*/
|
|
87
|
-
async putContractStorage(address, key, value) {
|
|
88
|
-
throw new Error("not implemented");
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get the root of the current state trie.
|
|
92
|
-
*/
|
|
93
|
-
async getStateRoot() {
|
|
94
|
-
throw new Error("not implemented");
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Reset the state trie to the point after `block` was mined. If
|
|
98
|
-
* `irregularStateOrUndefined` is passed, use it as the state root.
|
|
99
|
-
*/
|
|
100
|
-
async setBlockContext(block, irregularStateOrUndefined) {
|
|
101
|
-
throw new Error("not implemented");
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Reset the state trie to the point where it had the given state root.
|
|
105
|
-
*
|
|
106
|
-
* Throw if it can't.
|
|
107
|
-
*/
|
|
108
|
-
async restoreContext(stateRoot) {
|
|
109
|
-
throw new Error("not implemented");
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Start a new block and accept transactions sent with `runTxInBlock`.
|
|
113
|
-
*/
|
|
114
|
-
async startBlock() {
|
|
115
|
-
throw new Error("not implemented");
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Must be called after `startBlock`, and before `addBlockRewards`.
|
|
119
|
-
*/
|
|
120
|
-
async runTxInBlock(tx, block) {
|
|
121
|
-
throw new Error("not implemented");
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Must be called after `startBlock` and all `runTxInBlock` calls.
|
|
125
|
-
*/
|
|
126
|
-
async addBlockRewards(rewards) {
|
|
127
|
-
throw new Error("not implemented");
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Finish the block successfully. Must be called after `addBlockRewards`.
|
|
131
|
-
*/
|
|
132
|
-
async sealBlock() {
|
|
133
|
-
throw new Error("not implemented");
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Revert the block and discard the changes to the state. Can be called
|
|
137
|
-
* at any point after `startBlock`.
|
|
138
|
-
*/
|
|
139
|
-
async revertBlock() {
|
|
140
|
-
throw new Error("not implemented");
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Re-execute the transactions in the block up until the transaction with the
|
|
144
|
-
* given hash, and trace the execution of that transaction.
|
|
145
|
-
*/
|
|
146
|
-
async traceTransaction(hash, block, config) {
|
|
147
|
-
throw new Error("not implemented");
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Start tracing the VM execution with the given callbacks.
|
|
151
|
-
*/
|
|
152
|
-
enableTracing(callbacks) {
|
|
153
|
-
throw new Error("not implemented");
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Stop tracing the execution.
|
|
157
|
-
*/
|
|
158
|
-
disableTracing() {
|
|
159
|
-
throw new Error("not implemented");
|
|
160
|
-
}
|
|
161
|
-
_getBlockEnvDifficulty(blockNumber, difficulty, mixHash) {
|
|
162
|
-
const hardfork = this._selectHardfork(blockNumber);
|
|
163
|
-
const isPostMergeHardfork = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.MERGE);
|
|
164
|
-
if (isPostMergeHardfork) {
|
|
165
|
-
return mixHash;
|
|
166
|
-
}
|
|
167
|
-
return difficulty;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
exports.RethnetAdapter = RethnetAdapter;
|
|
171
|
-
//# sourceMappingURL=rethnet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rethnet.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/rethnet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { EVMResult, InterpreterStep, Message } from "@nomicfoundation/ethereumjs-evm";
|
|
3
|
-
import type { RunTxResult } from "@nomicfoundation/ethereumjs-vm";
|
|
4
|
-
import type { Block } from "@nomicfoundation/ethereumjs-block";
|
|
5
|
-
import type { Common } from "@nomicfoundation/ethereumjs-common";
|
|
6
|
-
import type { TypedTransaction } from "@nomicfoundation/ethereumjs-tx";
|
|
7
|
-
import type { Account, Address } from "@nomicfoundation/ethereumjs-util";
|
|
8
|
-
import type { RpcDebugTracingConfig } from "../../../core/jsonrpc/types/input/debugTraceTransaction";
|
|
9
|
-
import type { RpcDebugTraceOutput } from "../output";
|
|
10
|
-
export interface VMAdapter {
|
|
11
|
-
dryRun(tx: TypedTransaction, blockContext: Block, forceBaseFeeZero?: boolean): Promise<RunTxResult>;
|
|
12
|
-
getCommon(): Common;
|
|
13
|
-
isEip1559Active(blockNumberOrPending?: bigint | "pending"): boolean;
|
|
14
|
-
getAccount(address: Address): Promise<Account>;
|
|
15
|
-
getContractStorage(address: Address, key: Buffer): Promise<Buffer>;
|
|
16
|
-
getContractCode(address: Address): Promise<Buffer>;
|
|
17
|
-
putAccount(address: Address, account: Account): Promise<void>;
|
|
18
|
-
putContractCode(address: Address, value: Buffer): Promise<void>;
|
|
19
|
-
putContractStorage(address: Address, key: Buffer, value: Buffer): Promise<void>;
|
|
20
|
-
getStateRoot(): Promise<Buffer>;
|
|
21
|
-
setBlockContext(block: Block, irregularStateOrUndefined: Buffer | undefined): Promise<void>;
|
|
22
|
-
restoreContext(stateRoot: Buffer): Promise<void>;
|
|
23
|
-
startBlock(): Promise<void>;
|
|
24
|
-
runTxInBlock(tx: TypedTransaction, block: Block): Promise<RunTxResult>;
|
|
25
|
-
addBlockRewards(rewards: Array<[Address, bigint]>): Promise<void>;
|
|
26
|
-
sealBlock(): Promise<void>;
|
|
27
|
-
revertBlock(): 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: (step: InterpreterStep, next: any) => Promise<void>;
|
|
32
|
-
afterMessage: (result: EVMResult, next: any) => Promise<void>;
|
|
33
|
-
}): void;
|
|
34
|
-
disableTracing(): void;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=vm-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vm-adapter.d.ts","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vm-adapter.js","sourceRoot":"","sources":["../../../../src/internal/hardhat-network/provider/vm/vm-adapter.ts"],"names":[],"mappings":""}
|