hardhat 2.20.1 → 2.21.0-dev.1
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/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +28 -4
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/http.d.ts +2 -0
- package/internal/core/providers/http.d.ts.map +1 -1
- package/internal/core/providers/http.js +2 -1
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts +0 -2
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +0 -16
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +9 -1
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
- package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +10 -10
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +0 -7
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -14
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.d.ts +3 -2
- package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +16 -16
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
- package/internal/hardhat-network/provider/filter.d.ts +6 -5
- package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
- package/internal/hardhat-network/provider/filter.js +2 -2
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +0 -7
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +4 -21
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +13 -19
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +61 -59
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +0 -3
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
- package/internal/hardhat-network/provider/modules/base.js +4 -4
- package/internal/hardhat-network/provider/modules/base.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +9 -16
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts +6 -84
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +3 -530
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +2 -65
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node-types.js +0 -5
- package/internal/hardhat-network/provider/node-types.js.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +2 -6
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +79 -153
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +0 -14
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +0 -264
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +28 -25
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +349 -185
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +10 -8
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +10 -8
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +10 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +7 -6
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +6 -5
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +5 -4
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +8 -7
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +8 -7
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -4
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js +194 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +0 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +1 -5
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +1 -3
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js +1 -15
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +10 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +38 -18
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +3 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -6
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/utils/random.d.ts +1 -0
- package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/random.js +7 -1
- package/internal/hardhat-network/provider/utils/random.js.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.js +5 -5
- package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
- package/internal/hardhat-network/provider/vm/exit.d.ts +22 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +93 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +29 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js +43 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.d.ts +36 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.js +73 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.js.map +1 -0
- package/internal/hardhat-network/provider/vm/types.d.ts +28 -0
- package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/types.js +3 -0
- package/internal/hardhat-network/provider/vm/types.js.map +1 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +6 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +33 -16
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts +1 -2
- package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -7
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +6 -6
- package/internal/hardhat-network/stack-traces/debug.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 +13 -7
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -3
- package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.js +22 -1
- package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.d.ts +8 -0
- package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +52 -0
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/opcodes.d.ts +1 -0
- package/internal/hardhat-network/stack-traces/opcodes.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/opcodes.js +5 -1
- package/internal/hardhat-network/stack-traces/opcodes.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -5
- package/internal/hardhat-network/stack-traces/solidityTracer.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 +28 -34
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +7 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +69 -2
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +7 -12
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +46 -65
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/util/date.d.ts +1 -0
- package/internal/util/date.d.ts.map +1 -1
- package/internal/util/date.js +5 -1
- package/internal/util/date.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -0
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +27 -1
- package/internal/util/hardforks.js.map +1 -1
- package/package.json +16 -14
- package/src/internal/core/providers/construction.ts +7 -9
- package/src/internal/core/providers/http.ts +3 -1
- package/src/internal/core/runtime-environment.ts +2 -1
- package/src/internal/hardhat-network/jsonrpc/client.ts +1 -28
- package/src/internal/hardhat-network/jsonrpc/handler.ts +9 -1
- package/src/internal/hardhat-network/provider/modules/logger.ts +6 -801
- package/src/internal/hardhat-network/provider/node-types.ts +2 -89
- package/src/internal/hardhat-network/provider/output.ts +0 -352
- package/src/internal/hardhat-network/provider/provider.ts +501 -261
- package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +232 -0
- package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +0 -4
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +1 -12
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +63 -24
- package/src/internal/hardhat-network/provider/utils/random.ts +8 -1
- package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +5 -5
- package/src/internal/hardhat-network/provider/vm/exit.ts +101 -0
- package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +98 -0
- package/src/internal/hardhat-network/provider/vm/types.ts +32 -0
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +40 -21
- package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +10 -12
- package/src/internal/hardhat-network/stack-traces/debug.ts +6 -6
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +15 -8
- package/src/internal/hardhat-network/stack-traces/message-trace.ts +40 -4
- package/src/internal/hardhat-network/stack-traces/model.ts +61 -0
- package/src/internal/hardhat-network/stack-traces/opcodes.ts +4 -0
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -5
- package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +113 -4
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +67 -95
- package/src/internal/util/date.ts +4 -0
- package/src/internal/util/hardforks.ts +52 -0
- package/src/internal/hardhat-network/provider/BlockchainBase.ts +0 -185
- package/src/internal/hardhat-network/provider/BlockchainData.ts +0 -261
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +0 -140
- package/src/internal/hardhat-network/provider/PoolState.ts +0 -48
- package/src/internal/hardhat-network/provider/TransactionQueue.ts +0 -158
- package/src/internal/hardhat-network/provider/TxPool.ts +0 -715
- package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +0 -21
- package/src/internal/hardhat-network/provider/filter.ts +0 -142
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +0 -433
- package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +0 -480
- package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +0 -35
- package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +0 -44
- package/src/internal/hardhat-network/provider/modules/base.ts +0 -156
- package/src/internal/hardhat-network/provider/modules/debug.ts +0 -104
- package/src/internal/hardhat-network/provider/modules/eth.ts +0 -1781
- package/src/internal/hardhat-network/provider/modules/evm.ts +0 -249
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +0 -481
- package/src/internal/hardhat-network/provider/modules/net.ts +0 -60
- package/src/internal/hardhat-network/provider/modules/personal.ts +0 -40
- package/src/internal/hardhat-network/provider/modules/web3.ts +0 -49
- package/src/internal/hardhat-network/provider/node.ts +0 -2999
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +0 -226
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +0 -224
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +0 -216
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +0 -143
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +0 -144
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +0 -171
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +0 -169
- package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +0 -25
- package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +0 -60
- package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +0 -29
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +0 -61
- package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +0 -45
- package/src/internal/hardhat-network/provider/utils/txMapToArray.ts +0 -7
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +0 -630
|
@@ -26,14 +26,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.HardhatNode = void 0;
|
|
30
30
|
const ethereumjs_block_1 = require("@nomicfoundation/ethereumjs-block");
|
|
31
31
|
const ethereumjs_common_1 = require("@nomicfoundation/ethereumjs-common");
|
|
32
|
-
const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/cjs/exceptions");
|
|
33
32
|
const ethereumjs_tx_1 = require("@nomicfoundation/ethereumjs-tx");
|
|
34
33
|
const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
|
|
35
34
|
const ethereumjs_vm_1 = require("@nomicfoundation/ethereumjs-vm");
|
|
36
35
|
const ethereumjs_evm_1 = require("@nomicfoundation/ethereumjs-evm");
|
|
36
|
+
const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/exceptions");
|
|
37
37
|
const ethereumjs_statemanager_1 = require("@nomicfoundation/ethereumjs-statemanager");
|
|
38
38
|
const eth_sig_util_1 = require("@metamask/eth-sig-util");
|
|
39
39
|
const chalk_1 = __importDefault(require("chalk"));
|
|
@@ -79,8 +79,6 @@ const makeStateTrie_1 = require("./utils/makeStateTrie");
|
|
|
79
79
|
const putGenesisBlock_1 = require("./utils/putGenesisBlock");
|
|
80
80
|
const txMapToArray_1 = require("./utils/txMapToArray");
|
|
81
81
|
const random_1 = require("./utils/random");
|
|
82
|
-
const BEACON_ROOT_ADDRESS = "0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02";
|
|
83
|
-
const BEACON_ROOT_BYTECODE = "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500";
|
|
84
82
|
const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
|
|
85
83
|
/* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
|
|
86
84
|
class HardhatNode extends events_1.default {
|
|
@@ -100,7 +98,6 @@ class HardhatNode extends events_1.default {
|
|
|
100
98
|
: undefined;
|
|
101
99
|
const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
|
|
102
100
|
const mixHashGenerator = random_1.RandomBufferGenerator.create("randomMixHashSeed");
|
|
103
|
-
const parentBeaconBlockRootGenerator = random_1.RandomBufferGenerator.create("randomParentBeaconBlockRootSeed");
|
|
104
101
|
let forkClient;
|
|
105
102
|
const common = (0, makeCommon_1.makeCommon)(config);
|
|
106
103
|
if ((0, node_types_1.isForkedNodeConfig)(config)) {
|
|
@@ -112,9 +109,6 @@ class HardhatNode extends events_1.default {
|
|
|
112
109
|
this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
|
|
113
110
|
const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
|
|
114
111
|
await forkStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
115
|
-
if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.CANCUN)) {
|
|
116
|
-
await forkStateManager.putContractCode(ethereumjs_util_1.Address.fromString(BEACON_ROOT_ADDRESS), Buffer.from((0, ethereumjs_util_1.toBytes)(BEACON_ROOT_BYTECODE)));
|
|
117
|
-
}
|
|
118
112
|
stateManager = forkStateManager;
|
|
119
113
|
blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
|
|
120
114
|
initialBlockTimeOffset = BigInt((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
|
|
@@ -143,27 +137,23 @@ class HardhatNode extends events_1.default {
|
|
|
143
137
|
stateManager = new ethereumjs_statemanager_1.DefaultStateManager({
|
|
144
138
|
trie: stateTrie,
|
|
145
139
|
});
|
|
146
|
-
if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.CANCUN)) {
|
|
147
|
-
await stateManager.putContractCode(ethereumjs_util_1.Address.fromString(BEACON_ROOT_ADDRESS), Buffer.from((0, ethereumjs_util_1.toBytes)(BEACON_ROOT_BYTECODE)));
|
|
148
|
-
}
|
|
149
140
|
const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain(common);
|
|
150
141
|
const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
|
|
151
142
|
? initialBaseFeePerGasConfig ??
|
|
152
143
|
BigInt(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
153
144
|
: undefined;
|
|
154
|
-
await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, config,
|
|
145
|
+
await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, config, stateTrie, hardfork, mixHashGenerator.next(), genesisBlockBaseFeePerGas);
|
|
155
146
|
if (config.initialDate !== undefined) {
|
|
156
147
|
initialBlockTimeOffset = BigInt((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
|
|
157
148
|
}
|
|
158
149
|
blockchain = hardhatBlockchain;
|
|
159
150
|
}
|
|
160
151
|
const txPool = new TxPool_1.TxPool(stateManager, BigInt(blockGasLimit), common);
|
|
161
|
-
const
|
|
152
|
+
const eei = new ethereumjs_vm_1.EEI(stateManager, common, blockchain);
|
|
153
|
+
const evm = await ethereumjs_evm_1.EVM.create({
|
|
154
|
+
eei,
|
|
162
155
|
allowUnlimitedContractSize,
|
|
163
|
-
allowUnlimitedInitCodeSize: allowUnlimitedContractSize,
|
|
164
|
-
blockchain,
|
|
165
156
|
common,
|
|
166
|
-
stateManager,
|
|
167
157
|
});
|
|
168
158
|
const vm = await ethereumjs_vm_1.VM.create({
|
|
169
159
|
evm,
|
|
@@ -172,8 +162,8 @@ class HardhatNode extends events_1.default {
|
|
|
172
162
|
stateManager,
|
|
173
163
|
blockchain,
|
|
174
164
|
});
|
|
175
|
-
const instanceId = (0, ethereumjs_util_1.
|
|
176
|
-
const node = new HardhatNode(vm, instanceId, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardfork, hardforkActivations, mixHashGenerator,
|
|
165
|
+
const instanceId = (0, ethereumjs_util_1.bufferToBigInt)((0, crypto_1.randomBytes)(32));
|
|
166
|
+
const node = new HardhatNode(vm, instanceId, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardfork, hardforkActivations, mixHashGenerator, allowUnlimitedContractSize, allowBlocksWithSameTimestamp, tracingConfig, forkNetworkId, forkBlockNum, forkBlockHash, nextBlockBaseFeePerGas, forkClient, enableTransientStorage);
|
|
177
167
|
return [common, node];
|
|
178
168
|
}
|
|
179
169
|
static _validateHardforks(forkBlockNumber, common, remoteChainId) {
|
|
@@ -193,7 +183,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
|
|
|
193
183
|
// this validation.
|
|
194
184
|
return;
|
|
195
185
|
}
|
|
196
|
-
upstreamCommon.
|
|
186
|
+
upstreamCommon.setHardforkByBlockNumber(forkBlockNumber);
|
|
197
187
|
if (!upstreamCommon.gteHardfork("spuriousDragon")) {
|
|
198
188
|
throw new errors_2.InternalError(`Cannot fork ${upstreamCommon.chainName()} from block ${forkBlockNumber}.
|
|
199
189
|
|
|
@@ -201,7 +191,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
201
191
|
}
|
|
202
192
|
}
|
|
203
193
|
}
|
|
204
|
-
constructor(_vm, _instanceId, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = 0n, _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, hardfork, _hardforkActivations, _mixHashGenerator,
|
|
194
|
+
constructor(_vm, _instanceId, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = 0n, _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, hardfork, _hardforkActivations, _mixHashGenerator, allowUnlimitedContractSize, _allowBlocksWithSameTimestamp, tracingConfig, _forkNetworkId, _forkBlockNumber, _forkBlockHash, nextBlockBaseFee, _forkClient, _enableTransientStorage = false) {
|
|
205
195
|
super();
|
|
206
196
|
this._vm = _vm;
|
|
207
197
|
this._instanceId = _instanceId;
|
|
@@ -218,7 +208,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
218
208
|
this.hardfork = hardfork;
|
|
219
209
|
this._hardforkActivations = _hardforkActivations;
|
|
220
210
|
this._mixHashGenerator = _mixHashGenerator;
|
|
221
|
-
this._parentBeaconBlockRootGenerator = _parentBeaconBlockRootGenerator;
|
|
222
211
|
this.allowUnlimitedContractSize = allowUnlimitedContractSize;
|
|
223
212
|
this._allowBlocksWithSameTimestamp = _allowBlocksWithSameTimestamp;
|
|
224
213
|
this._forkNetworkId = _forkNetworkId;
|
|
@@ -266,32 +255,26 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
266
255
|
}
|
|
267
256
|
}
|
|
268
257
|
async getSignedTransaction(txParams) {
|
|
269
|
-
const senderAddress = (0, ethereumjs_util_1.
|
|
258
|
+
const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
|
|
270
259
|
const pk = this._localAccounts.get(senderAddress);
|
|
271
260
|
if (pk !== undefined) {
|
|
272
261
|
let tx;
|
|
273
|
-
if ("
|
|
274
|
-
tx = ethereumjs_tx_1.BlobEIP4844Transaction.fromTxData(txParams, {
|
|
275
|
-
common: this._vm.common,
|
|
276
|
-
allowUnlimitedInitCodeSize: true,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
else if ("maxFeePerGas" in txParams) {
|
|
262
|
+
if ("maxFeePerGas" in txParams) {
|
|
280
263
|
tx = ethereumjs_tx_1.FeeMarketEIP1559Transaction.fromTxData(txParams, {
|
|
281
|
-
common: this._vm.
|
|
282
|
-
|
|
264
|
+
common: this._vm._common,
|
|
265
|
+
disableMaxInitCodeSizeCheck: true,
|
|
283
266
|
});
|
|
284
267
|
}
|
|
285
268
|
else if ("accessList" in txParams) {
|
|
286
269
|
tx = ethereumjs_tx_1.AccessListEIP2930Transaction.fromTxData(txParams, {
|
|
287
|
-
common: this._vm.
|
|
288
|
-
|
|
270
|
+
common: this._vm._common,
|
|
271
|
+
disableMaxInitCodeSizeCheck: true,
|
|
289
272
|
});
|
|
290
273
|
}
|
|
291
274
|
else {
|
|
292
|
-
tx = ethereumjs_tx_1.
|
|
293
|
-
common: this._vm.
|
|
294
|
-
|
|
275
|
+
tx = ethereumjs_tx_1.Transaction.fromTxData(txParams, {
|
|
276
|
+
common: this._vm._common,
|
|
277
|
+
disableMaxInitCodeSizeCheck: true,
|
|
295
278
|
});
|
|
296
279
|
}
|
|
297
280
|
return tx.sign(pk);
|
|
@@ -434,11 +417,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
434
417
|
blockNumberOrPending = this.getLatestBlockNumber();
|
|
435
418
|
}
|
|
436
419
|
const account = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getAccount(address));
|
|
437
|
-
return account
|
|
420
|
+
return account.balance;
|
|
438
421
|
}
|
|
439
422
|
async getNextConfirmedNonce(address, blockNumberOrPending) {
|
|
440
423
|
const account = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getAccount(address));
|
|
441
|
-
return account
|
|
424
|
+
return account.nonce;
|
|
442
425
|
}
|
|
443
426
|
async getAccountNextPendingNonce(address) {
|
|
444
427
|
return this._txPool.getNextPendingNonce(address);
|
|
@@ -553,19 +536,13 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
553
536
|
return ethereumjs_util_1.Address.fromString(this._coinbase);
|
|
554
537
|
}
|
|
555
538
|
async getStorageAt(address, positionIndex, blockNumberOrPending) {
|
|
556
|
-
const key = (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.
|
|
557
|
-
const data = await this._runInBlockContext(blockNumberOrPending,
|
|
558
|
-
const account = await this._stateManager.getAccount(address);
|
|
559
|
-
if (account === undefined) {
|
|
560
|
-
return Uint8Array.from([]);
|
|
561
|
-
}
|
|
562
|
-
return this._stateManager.getContractStorage(address, key);
|
|
563
|
-
});
|
|
539
|
+
const key = (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(positionIndex), 32);
|
|
540
|
+
const data = await this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractStorage(address, key));
|
|
564
541
|
const EXPECTED_DATA_SIZE = 32;
|
|
565
542
|
if (data.length < EXPECTED_DATA_SIZE) {
|
|
566
543
|
return Buffer.concat([Buffer.alloc(EXPECTED_DATA_SIZE - data.length, 0), data], EXPECTED_DATA_SIZE);
|
|
567
544
|
}
|
|
568
|
-
return
|
|
545
|
+
return data;
|
|
569
546
|
}
|
|
570
547
|
async getBlockByNumber(blockNumberOrPending) {
|
|
571
548
|
if (blockNumberOrPending === "pending") {
|
|
@@ -596,7 +573,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
596
573
|
return this._blockchain.getTotalDifficulty(block.hash());
|
|
597
574
|
}
|
|
598
575
|
async getCode(address, blockNumberOrPending) {
|
|
599
|
-
return this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractCode(address)
|
|
576
|
+
return this._runInBlockContext(blockNumberOrPending, () => this._stateManager.getContractCode(address));
|
|
600
577
|
}
|
|
601
578
|
getNextBlockTimestamp() {
|
|
602
579
|
return this._nextBlockTimestamp;
|
|
@@ -637,7 +614,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
637
614
|
return this._txPool.getTransactionByHash(hash)?.data;
|
|
638
615
|
}
|
|
639
616
|
async getTransactionReceipt(hash) {
|
|
640
|
-
const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.
|
|
617
|
+
const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
|
|
641
618
|
const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
|
|
642
619
|
return receipt ?? undefined;
|
|
643
620
|
}
|
|
@@ -654,7 +631,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
654
631
|
async signTypedDataV4(address, typedData) {
|
|
655
632
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
656
633
|
return (0, eth_sig_util_1.signTypedData)({
|
|
657
|
-
privateKey
|
|
634
|
+
privateKey,
|
|
658
635
|
version: eth_sig_util_1.SignTypedDataVersion.V4,
|
|
659
636
|
data: typedData,
|
|
660
637
|
});
|
|
@@ -676,7 +653,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
676
653
|
userProvidedNextBlockBaseFeePerGas: this.getUserProvidedNextBlockBaseFeePerGas(),
|
|
677
654
|
coinbase: this.getCoinbaseAddress().toString(),
|
|
678
655
|
mixHashGenerator: this._mixHashGenerator.clone(),
|
|
679
|
-
parentBeaconBlockRootGenerator: this._parentBeaconBlockRootGenerator.clone(),
|
|
680
656
|
};
|
|
681
657
|
this._irregularStatesByBlockNumber = new Map(this._irregularStatesByBlockNumber);
|
|
682
658
|
this._snapshots.push(snapshot);
|
|
@@ -715,8 +691,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
715
691
|
}
|
|
716
692
|
this._coinbase = snapshot.coinbase;
|
|
717
693
|
this._mixHashGenerator = snapshot.mixHashGenerator;
|
|
718
|
-
this._parentBeaconBlockRootGenerator =
|
|
719
|
-
snapshot.parentBeaconBlockRootGenerator;
|
|
720
694
|
// We delete this and the following snapshots, as they can only be used
|
|
721
695
|
// once in Ganache
|
|
722
696
|
this._snapshots.splice(snapshotIndex);
|
|
@@ -748,7 +722,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
748
722
|
id: filterId,
|
|
749
723
|
type: filter_1.Type.BLOCK_SUBSCRIPTION,
|
|
750
724
|
deadline: this._newDeadline(),
|
|
751
|
-
hashes: [(0, ethereumjs_util_1.
|
|
725
|
+
hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
|
|
752
726
|
logs: [],
|
|
753
727
|
subscription: isSubscription,
|
|
754
728
|
});
|
|
@@ -830,11 +804,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
830
804
|
return true;
|
|
831
805
|
}
|
|
832
806
|
addImpersonatedAccount(address) {
|
|
833
|
-
this._impersonatedAccounts.add((0, ethereumjs_util_1.
|
|
807
|
+
this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
|
|
834
808
|
return true;
|
|
835
809
|
}
|
|
836
810
|
removeImpersonatedAccount(address) {
|
|
837
|
-
return this._impersonatedAccounts.delete((0, ethereumjs_util_1.
|
|
811
|
+
return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
|
|
838
812
|
}
|
|
839
813
|
setAutomine(automine) {
|
|
840
814
|
this._automine = automine;
|
|
@@ -856,18 +830,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
856
830
|
}
|
|
857
831
|
const isTransactionMined = await this._isTransactionMined(hash);
|
|
858
832
|
if (isTransactionMined) {
|
|
859
|
-
throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.
|
|
833
|
+
throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
|
|
860
834
|
}
|
|
861
835
|
return false;
|
|
862
836
|
}
|
|
863
837
|
async setAccountBalance(address, newBalance) {
|
|
864
838
|
const account = await this._stateManager.getAccount(address);
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
balance: newBalance,
|
|
868
|
-
storageRoot: account?.storageRoot,
|
|
869
|
-
codeHash: account?.codeHash,
|
|
870
|
-
}));
|
|
839
|
+
account.balance = newBalance;
|
|
840
|
+
await this._stateManager.putAccount(address, account);
|
|
871
841
|
await this._persistIrregularWorldState();
|
|
872
842
|
}
|
|
873
843
|
async setAccountCode(address, newCode) {
|
|
@@ -879,25 +849,15 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
879
849
|
throw new errors_2.InternalError("Cannot set account nonce when the transaction pool is not empty");
|
|
880
850
|
}
|
|
881
851
|
const account = await this._stateManager.getAccount(address);
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
await this._stateManager.putAccount(address,
|
|
887
|
-
nonce: newNonce,
|
|
888
|
-
balance: account?.balance,
|
|
889
|
-
storageRoot: account?.storageRoot,
|
|
890
|
-
codeHash: account?.codeHash,
|
|
891
|
-
}));
|
|
852
|
+
if (newNonce < account.nonce) {
|
|
853
|
+
throw new errors_2.InvalidInputError(`New nonce (${newNonce.toString()}) must not be smaller than the existing nonce (${account.nonce.toString()})`);
|
|
854
|
+
}
|
|
855
|
+
account.nonce = newNonce;
|
|
856
|
+
await this._stateManager.putAccount(address, account);
|
|
892
857
|
await this._persistIrregularWorldState();
|
|
893
858
|
}
|
|
894
859
|
async setStorageAt(address, positionIndex, value) {
|
|
895
|
-
|
|
896
|
-
const account = await this._stateManager.getAccount(address);
|
|
897
|
-
if (account === undefined) {
|
|
898
|
-
await this._stateManager.putAccount(address, new ethereumjs_util_1.Account());
|
|
899
|
-
}
|
|
900
|
-
await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBytes)(positionIndex), 32), value);
|
|
860
|
+
await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(positionIndex), 32), value);
|
|
901
861
|
await this._persistIrregularWorldState();
|
|
902
862
|
}
|
|
903
863
|
async traceCall(callParams, block, traceConfig) {
|
|
@@ -909,7 +869,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
909
869
|
async traceTransaction(hash, config) {
|
|
910
870
|
const block = await this.getBlockByTransactionHash(hash);
|
|
911
871
|
if (block === undefined) {
|
|
912
|
-
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.
|
|
872
|
+
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
|
|
913
873
|
}
|
|
914
874
|
return this._runInBlockContext(block.header.number - 1n, async () => {
|
|
915
875
|
const blockNumber = block.header.number;
|
|
@@ -930,7 +890,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
930
890
|
// to avoid having to distinguish between empty and non-existing accounts.
|
|
931
891
|
// We *could* do it during the non-forked mode, but for simplicity we just
|
|
932
892
|
// don't support it at all.
|
|
933
|
-
const isPreSpuriousDragon = !vm.
|
|
893
|
+
const isPreSpuriousDragon = !vm._common.gteHardfork("spuriousDragon");
|
|
934
894
|
if (isPreSpuriousDragon) {
|
|
935
895
|
throw new errors_2.InvalidInputError("Tracing is not supported for transactions using hardforks older than Spurious Dragon. ");
|
|
936
896
|
}
|
|
@@ -939,20 +899,20 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
939
899
|
const sender = tx.getSenderAddress();
|
|
940
900
|
if (tx.type === 0) {
|
|
941
901
|
txWithCommon = new FakeSenderTransaction_1.FakeSenderTransaction(sender, tx, {
|
|
942
|
-
common: vm.
|
|
902
|
+
common: vm._common,
|
|
943
903
|
});
|
|
944
904
|
}
|
|
945
905
|
else if (tx.type === 1) {
|
|
946
|
-
txWithCommon = new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, tx, { common: vm.
|
|
906
|
+
txWithCommon = new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, tx, { common: vm._common });
|
|
947
907
|
}
|
|
948
908
|
else if (tx.type === 2) {
|
|
949
|
-
txWithCommon = new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, { ...tx, gasPrice: undefined }, { common: vm.
|
|
909
|
+
txWithCommon = new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, { ...tx, gasPrice: undefined }, { common: vm._common });
|
|
950
910
|
}
|
|
951
911
|
else {
|
|
952
912
|
throw new errors_2.InternalError("Only legacy, EIP2930, and EIP1559 txs are supported");
|
|
953
913
|
}
|
|
954
914
|
const txHash = txWithCommon.hash();
|
|
955
|
-
if (
|
|
915
|
+
if (txHash.equals(hash)) {
|
|
956
916
|
const vmDebugTracer = new vm_debug_tracer_1.VMDebugTracer(vm);
|
|
957
917
|
return vmDebugTracer.trace(async () => {
|
|
958
918
|
await vm.runTx({
|
|
@@ -1103,7 +1063,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1103
1063
|
async _addPendingTransaction(tx) {
|
|
1104
1064
|
await this._txPool.addTransaction(tx);
|
|
1105
1065
|
await this._notifyPendingTransaction(tx);
|
|
1106
|
-
return (0, ethereumjs_util_1.
|
|
1066
|
+
return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
1107
1067
|
}
|
|
1108
1068
|
async _mineTransaction(tx) {
|
|
1109
1069
|
await this._addPendingTransaction(tx);
|
|
@@ -1214,9 +1174,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1214
1174
|
if (this.isPostMergeHardfork()) {
|
|
1215
1175
|
headerData.mixHash = this._getNextMixHash();
|
|
1216
1176
|
}
|
|
1217
|
-
if (this.isPostCancunHardfork()) {
|
|
1218
|
-
headerData.parentBeaconBlockRoot = this._getNextParentBeaconBlockRoot();
|
|
1219
|
-
}
|
|
1220
1177
|
headerData.baseFeePerGas = await this.getNextBlockBaseFeePerGas();
|
|
1221
1178
|
const blockBuilder = await this._vm.buildBlock({
|
|
1222
1179
|
parentBlock,
|
|
@@ -1268,22 +1225,22 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1268
1225
|
}
|
|
1269
1226
|
_getMinimalTransactionFee() {
|
|
1270
1227
|
// Typically 21_000 gas
|
|
1271
|
-
return this._vm.
|
|
1228
|
+
return this._vm._common.param("gasPrices", "tx");
|
|
1272
1229
|
}
|
|
1273
1230
|
async _getFakeTransaction(txParams) {
|
|
1274
1231
|
const sender = new ethereumjs_util_1.Address(txParams.from);
|
|
1275
1232
|
if ("maxFeePerGas" in txParams && txParams.maxFeePerGas !== undefined) {
|
|
1276
1233
|
return new FakeSenderEIP1559Transaction_1.FakeSenderEIP1559Transaction(sender, txParams, {
|
|
1277
|
-
common: this._vm.
|
|
1234
|
+
common: this._vm._common,
|
|
1278
1235
|
});
|
|
1279
1236
|
}
|
|
1280
1237
|
if ("accessList" in txParams && txParams.accessList !== undefined) {
|
|
1281
1238
|
return new FakeSenderAccessListEIP2930Transaction_1.FakeSenderAccessListEIP2930Transaction(sender, txParams, {
|
|
1282
|
-
common: this._vm.
|
|
1239
|
+
common: this._vm._common,
|
|
1283
1240
|
});
|
|
1284
1241
|
}
|
|
1285
1242
|
return new FakeSenderTransaction_1.FakeSenderTransaction(sender, txParams, {
|
|
1286
|
-
common: this._vm.
|
|
1243
|
+
common: this._vm._common,
|
|
1287
1244
|
});
|
|
1288
1245
|
}
|
|
1289
1246
|
_getSnapshotIndex(id) {
|
|
@@ -1306,9 +1263,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1306
1263
|
this._snapshots.splice(snapshotIndex);
|
|
1307
1264
|
}
|
|
1308
1265
|
_initLocalAccounts(genesisAccounts) {
|
|
1309
|
-
const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.
|
|
1266
|
+
const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
|
|
1310
1267
|
for (const pk of privateKeys) {
|
|
1311
|
-
this._localAccounts.set((0, ethereumjs_util_1.
|
|
1268
|
+
this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
|
|
1312
1269
|
}
|
|
1313
1270
|
}
|
|
1314
1271
|
async _getConsoleLogMessages(vmTrace, vmTracerError) {
|
|
@@ -1414,7 +1371,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1414
1371
|
async _notifyPendingTransaction(tx) {
|
|
1415
1372
|
this._filters.forEach((filter) => {
|
|
1416
1373
|
if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
|
|
1417
|
-
const hash = (0, ethereumjs_util_1.
|
|
1374
|
+
const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
1418
1375
|
if (filter.subscription) {
|
|
1419
1376
|
this._emitEthEvent(filter.id, hash);
|
|
1420
1377
|
return;
|
|
@@ -1435,7 +1392,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1435
1392
|
* was added to the blockchain.
|
|
1436
1393
|
*/
|
|
1437
1394
|
async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
|
|
1438
|
-
const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm.
|
|
1395
|
+
const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
|
|
1439
1396
|
this._blockchain.addTransactionReceipts(receipts);
|
|
1440
1397
|
const td = await this.getBlockTotalDifficulty(block);
|
|
1441
1398
|
const rpcLogs = [];
|
|
@@ -1450,10 +1407,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1450
1407
|
case filter_1.Type.BLOCK_SUBSCRIPTION:
|
|
1451
1408
|
const hash = block.hash();
|
|
1452
1409
|
if (filter.subscription) {
|
|
1453
|
-
this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm.
|
|
1410
|
+
this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
|
|
1454
1411
|
return;
|
|
1455
1412
|
}
|
|
1456
|
-
filter.hashes.push((0, ethereumjs_util_1.
|
|
1413
|
+
filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
|
|
1457
1414
|
break;
|
|
1458
1415
|
case filter_1.Type.LOGS_SUBSCRIPTION:
|
|
1459
1416
|
if ((0, filter_1.bloomFilter)(new ethereumjs_vm_1.Bloom(block.header.logsBloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
@@ -1587,7 +1544,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1587
1544
|
async _applyStateOverrideSet(stateOverrideSet) {
|
|
1588
1545
|
// Multiple state override set can be configured for different addresses, hence the loop
|
|
1589
1546
|
for (const [addrToOverride, stateOverrideOptions] of Object.entries(stateOverrideSet)) {
|
|
1590
|
-
const address = new ethereumjs_util_1.Address((0, ethereumjs_util_1.
|
|
1547
|
+
const address = new ethereumjs_util_1.Address((0, ethereumjs_util_1.toBuffer)(addrToOverride));
|
|
1591
1548
|
const { balance, nonce, code, state, stateDiff } = stateOverrideOptions;
|
|
1592
1549
|
await this._overrideBalanceAndNonce(address, balance, nonce);
|
|
1593
1550
|
await this._overrideCode(address, code);
|
|
@@ -1630,7 +1587,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1630
1587
|
throw new errors_2.InvalidInputError("The properties 'state' and 'stateDiff' cannot be used simultaneously when configuring the state override set passed to the eth_call method.");
|
|
1631
1588
|
}
|
|
1632
1589
|
for (const [storageKey, value] of Object.entries(newState)) {
|
|
1633
|
-
await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.
|
|
1590
|
+
await this._stateManager.putContractStorage(address, (0, ethereumjs_util_1.toBuffer)(storageKey), (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.bigIntToBuffer)(value), 32));
|
|
1634
1591
|
}
|
|
1635
1592
|
}
|
|
1636
1593
|
/**
|
|
@@ -1656,9 +1613,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1656
1613
|
// we don't need to add the tx to the block because runTx doesn't
|
|
1657
1614
|
// know anything about the txs in the current block
|
|
1658
1615
|
}
|
|
1659
|
-
originalCommon = this._vm.
|
|
1660
|
-
|
|
1661
|
-
this._vm.common = ethereumjs_common_1.Common.custom({
|
|
1616
|
+
originalCommon = this._vm._common;
|
|
1617
|
+
this._vm._common = ethereumjs_common_1.Common.custom({
|
|
1662
1618
|
chainId: this._forkBlockNumber === undefined ||
|
|
1663
1619
|
blockContext.header.number >= this._forkBlockNumber
|
|
1664
1620
|
? this._configChainId
|
|
@@ -1666,6 +1622,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1666
1622
|
networkId: this._forkNetworkId ?? this._configNetworkId,
|
|
1667
1623
|
}, {
|
|
1668
1624
|
hardfork: this._selectHardfork(blockContext.header.number),
|
|
1625
|
+
...this._getTransientStorageSettings(),
|
|
1669
1626
|
});
|
|
1670
1627
|
// If this VM is running without EIP4895, but the block has withdrawals,
|
|
1671
1628
|
// we remove them and the withdrawal root from the block
|
|
@@ -1680,25 +1637,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1680
1637
|
},
|
|
1681
1638
|
}, {
|
|
1682
1639
|
freeze: false,
|
|
1683
|
-
common: this._vm.
|
|
1684
|
-
skipConsensusFormatValidation: true,
|
|
1685
|
-
});
|
|
1686
|
-
}
|
|
1687
|
-
// If this VM is running without cancun, but the block has cancun fields,
|
|
1688
|
-
// we remove them from the block
|
|
1689
|
-
if (!this.isCancunBlock(blockNumberOrPending) &&
|
|
1690
|
-
blockContext.header.blobGasUsed !== undefined) {
|
|
1691
|
-
blockContext = ethereumjs_block_1.Block.fromBlockData({
|
|
1692
|
-
...blockContext,
|
|
1693
|
-
header: {
|
|
1694
|
-
...blockContext.header,
|
|
1695
|
-
blobGasUsed: undefined,
|
|
1696
|
-
excessBlobGas: undefined,
|
|
1697
|
-
parentBeaconBlockRoot: undefined,
|
|
1698
|
-
},
|
|
1699
|
-
}, {
|
|
1700
|
-
freeze: false,
|
|
1701
|
-
common: this._vm.common,
|
|
1640
|
+
common: this._vm._common,
|
|
1702
1641
|
skipConsensusFormatValidation: true,
|
|
1703
1642
|
});
|
|
1704
1643
|
}
|
|
@@ -1719,7 +1658,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1719
1658
|
(blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)) {
|
|
1720
1659
|
blockContext = ethereumjs_block_1.Block.fromBlockData(blockContext, {
|
|
1721
1660
|
freeze: false,
|
|
1722
|
-
common: this._vm.
|
|
1661
|
+
common: this._vm._common,
|
|
1723
1662
|
skipConsensusFormatValidation: true,
|
|
1724
1663
|
});
|
|
1725
1664
|
blockContext.header.baseFeePerGas = 0n;
|
|
@@ -1735,7 +1674,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1735
1674
|
}
|
|
1736
1675
|
finally {
|
|
1737
1676
|
if (originalCommon !== undefined) {
|
|
1738
|
-
this._vm.
|
|
1677
|
+
this._vm._common = originalCommon;
|
|
1739
1678
|
}
|
|
1740
1679
|
await this._stateManager.setStateRoot(initialStateRoot);
|
|
1741
1680
|
}
|
|
@@ -1781,7 +1720,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1781
1720
|
}
|
|
1782
1721
|
return this._runInBlockContext(blockNumberOrPending, async () => {
|
|
1783
1722
|
const account = await this._stateManager.getAccount(address);
|
|
1784
|
-
return account
|
|
1723
|
+
return account.nonce;
|
|
1785
1724
|
});
|
|
1786
1725
|
}
|
|
1787
1726
|
async _isTransactionMined(hash) {
|
|
@@ -1802,30 +1741,20 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1802
1741
|
isEip1559Active(blockNumberOrPending) {
|
|
1803
1742
|
if (blockNumberOrPending !== undefined &&
|
|
1804
1743
|
blockNumberOrPending !== "pending") {
|
|
1805
|
-
return this._vm.
|
|
1744
|
+
return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
|
|
1806
1745
|
}
|
|
1807
|
-
return this._vm.
|
|
1746
|
+
return this._vm._common.gteHardfork("london");
|
|
1808
1747
|
}
|
|
1809
1748
|
isEip4895Active(blockNumberOrPending) {
|
|
1810
1749
|
if (blockNumberOrPending !== undefined &&
|
|
1811
1750
|
blockNumberOrPending !== "pending") {
|
|
1812
|
-
return this._vm.
|
|
1813
|
-
}
|
|
1814
|
-
return this._vm.common.gteHardfork("shanghai");
|
|
1815
|
-
}
|
|
1816
|
-
isCancunBlock(blockNumberOrPending) {
|
|
1817
|
-
if (blockNumberOrPending !== undefined &&
|
|
1818
|
-
blockNumberOrPending !== "pending") {
|
|
1819
|
-
return this._vm.common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "cancun");
|
|
1751
|
+
return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "shanghai");
|
|
1820
1752
|
}
|
|
1821
|
-
return this._vm.
|
|
1753
|
+
return this._vm._common.gteHardfork("shanghai");
|
|
1822
1754
|
}
|
|
1823
1755
|
isPostMergeHardfork() {
|
|
1824
1756
|
return (0, hardforks_1.hardforkGte)(this.hardfork, hardforks_1.HardforkName.MERGE);
|
|
1825
1757
|
}
|
|
1826
|
-
isPostCancunHardfork() {
|
|
1827
|
-
return (0, hardforks_1.hardforkGte)(this.hardfork, hardforks_1.HardforkName.CANCUN);
|
|
1828
|
-
}
|
|
1829
1758
|
setPrevRandao(prevRandao) {
|
|
1830
1759
|
this._mixHashGenerator.setNext(prevRandao);
|
|
1831
1760
|
}
|
|
@@ -1839,7 +1768,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1839
1768
|
const instanceIdHex = BigIntUtils.toEvmWord(this._instanceId);
|
|
1840
1769
|
const instanceId = `0x${instanceIdHex}`;
|
|
1841
1770
|
const latestBlock = await this.getLatestBlock();
|
|
1842
|
-
const latestBlockHashHex =
|
|
1771
|
+
const latestBlockHashHex = latestBlock.header.hash().toString("hex");
|
|
1843
1772
|
const latestBlockHash = `0x${latestBlockHashHex}`;
|
|
1844
1773
|
const metadata = {
|
|
1845
1774
|
clientVersion,
|
|
@@ -1862,9 +1791,6 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1862
1791
|
_getNextMixHash() {
|
|
1863
1792
|
return this._mixHashGenerator.next();
|
|
1864
1793
|
}
|
|
1865
|
-
_getNextParentBeaconBlockRoot() {
|
|
1866
|
-
return this._parentBeaconBlockRootGenerator.next();
|
|
1867
|
-
}
|
|
1868
1794
|
async _getEstimateGasFeePriceFields(callParams, blockNumberOrPending) {
|
|
1869
1795
|
if (!this.isEip1559Active(blockNumberOrPending) ||
|
|
1870
1796
|
callParams.gasPrice !== undefined) {
|
|
@@ -1894,7 +1820,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1894
1820
|
_selectHardfork(blockNumber) {
|
|
1895
1821
|
if (this._forkBlockNumber === undefined ||
|
|
1896
1822
|
blockNumber >= this._forkBlockNumber) {
|
|
1897
|
-
return this._vm.
|
|
1823
|
+
return this._vm._common.hardfork();
|
|
1898
1824
|
}
|
|
1899
1825
|
if (this._hardforkActivations.size === 0) {
|
|
1900
1826
|
throw new errors_2.InternalError(`No known hardfork for execution on historical block ${blockNumber.toString()} (relative to fork block number ${this._forkBlockNumber}). The node was not configured with a hardfork activation history. See http://hardhat.org/custom-hardfork-history`);
|
|
@@ -1912,16 +1838,16 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1912
1838
|
if (!constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardfork)) {
|
|
1913
1839
|
throw new errors_2.InternalError(`Tried to run a call or transaction in the context of a block whose hardfork is "${hardfork}", but Hardhat Network only supports the following hardforks: ${constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.join(", ")}`);
|
|
1914
1840
|
}
|
|
1915
|
-
return hardfork
|
|
1841
|
+
return hardfork;
|
|
1916
1842
|
}
|
|
1917
1843
|
_getCommonForTracing(networkId, blockNumber) {
|
|
1918
|
-
assertTransientStorageCompatibility(this._enableTransientStorage, this._vm.common.hardfork());
|
|
1919
1844
|
try {
|
|
1920
1845
|
const common = ethereumjs_common_1.Common.custom({
|
|
1921
1846
|
chainId: networkId,
|
|
1922
1847
|
networkId,
|
|
1923
1848
|
}, {
|
|
1924
1849
|
hardfork: this._selectHardfork(BigInt(blockNumber)),
|
|
1850
|
+
...this._getTransientStorageSettings(),
|
|
1925
1851
|
});
|
|
1926
1852
|
return common;
|
|
1927
1853
|
}
|
|
@@ -1929,12 +1855,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1929
1855
|
throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
|
|
1930
1856
|
}
|
|
1931
1857
|
}
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1858
|
+
_getTransientStorageSettings() {
|
|
1859
|
+
if (this._enableTransientStorage) {
|
|
1860
|
+
return { eips: [1153] };
|
|
1861
|
+
}
|
|
1862
|
+
return {};
|
|
1937
1863
|
}
|
|
1938
1864
|
}
|
|
1939
|
-
exports.
|
|
1865
|
+
exports.HardhatNode = HardhatNode;
|
|
1940
1866
|
//# sourceMappingURL=node.js.map
|