hardhat 2.13.0-dev.2 → 2.13.0-dev.3
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 +16 -6
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/flatten.js +1 -1
- package/builtin-tasks/flatten.js.map +1 -1
- package/builtin-tasks/help.js +2 -4
- package/builtin-tasks/help.js.map +1 -1
- package/builtin-tasks/task-names.d.ts +1 -0
- package/builtin-tasks/task-names.d.ts.map +1 -1
- package/builtin-tasks/task-names.js +3 -2
- package/builtin-tasks/task-names.js.map +1 -1
- package/builtin-tasks/test.js +22 -1
- package/builtin-tasks/test.js.map +1 -1
- package/internal/cli/bootstrap.d.ts +1 -0
- package/internal/cli/bootstrap.js +12 -20
- package/internal/cli/bootstrap.js.map +1 -1
- package/internal/cli/cli.d.ts +0 -1
- package/internal/cli/cli.d.ts.map +1 -1
- package/internal/cli/cli.js +20 -29
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.d.ts +1 -2
- package/internal/cli/project-creation.d.ts.map +1 -1
- package/internal/cli/project-creation.js +105 -36
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/cli/prompt.d.ts +2 -2
- package/internal/cli/prompt.d.ts.map +1 -1
- package/internal/cli/prompt.js +1 -2
- package/internal/cli/prompt.js.map +1 -1
- package/internal/cli/types.d.ts +1 -0
- package/internal/cli/types.d.ts.map +1 -1
- package/internal/core/config/config-env.d.ts +5 -11
- package/internal/core/config/config-env.d.ts.map +1 -1
- package/internal/core/config/config-env.js +2 -13
- package/internal/core/config/config-env.js.map +1 -1
- package/internal/core/config/config-loading.d.ts +2 -1
- package/internal/core/config/config-loading.d.ts.map +1 -1
- package/internal/core/config/config-loading.js +25 -7
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-validation.d.ts +2 -0
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +18 -1
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/extenders.d.ts +4 -7
- package/internal/core/config/extenders.d.ts.map +1 -1
- package/internal/core/config/extenders.js +5 -12
- package/internal/core/config/extenders.js.map +1 -1
- package/internal/core/errors-list.d.ts +28 -7
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +33 -10
- package/internal/core/errors-list.js.map +1 -1
- 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/project-structure.d.ts.map +1 -1
- package/internal/core/project-structure.js +6 -0
- package/internal/core/project-structure.js.map +1 -1
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +25 -5
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/http.d.ts +2 -2
- package/internal/core/providers/http.d.ts.map +1 -1
- package/internal/core/providers/http.js +41 -19
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/runtime-environment.d.ts +4 -2
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js +39 -47
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/tasks/dsl.d.ts +6 -6
- package/internal/core/tasks/dsl.d.ts.map +1 -1
- package/internal/core/tasks/dsl.js.map +1 -1
- package/internal/core/tasks/task-definitions.d.ts +2 -2
- package/internal/core/tasks/task-definitions.d.ts.map +1 -1
- package/internal/core/tasks/task-definitions.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -0
- package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +13 -18
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/provider/RethnetState.d.ts +26 -0
- package/internal/hardhat-network/provider/RethnetState.d.ts.map +1 -0
- package/internal/hardhat-network/provider/RethnetState.js +84 -0
- package/internal/hardhat-network/provider/RethnetState.js.map +1 -0
- package/internal/hardhat-network/provider/modules/evm.d.ts +2 -1
- package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +10 -4
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +1 -0
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +6 -4
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +25 -21
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +25 -42
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +2 -2
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +4 -2
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/utils/bloom.d.ts +32 -0
- package/internal/hardhat-network/provider/utils/bloom.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/bloom.js +79 -0
- package/internal/hardhat-network/provider/utils/bloom.js.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts +12 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js +162 -0
- package/internal/hardhat-network/provider/utils/convertToRethnet.js.map +1 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +7 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js +31 -0
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -0
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -2
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/vm/block-builder.d.ts +31 -0
- package/internal/hardhat-network/provider/vm/block-builder.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/block-builder.js +151 -0
- package/internal/hardhat-network/provider/vm/block-builder.js.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts +10 -0
- package/internal/hardhat-network/provider/vm/creation.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/creation.js +29 -0
- package/internal/hardhat-network/provider/vm/creation.js.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts +43 -0
- package/internal/hardhat-network/provider/vm/dual.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/dual.js +488 -0
- package/internal/hardhat-network/provider/vm/dual.js.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts +56 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js +416 -0
- package/internal/hardhat-network/provider/vm/ethereumjs.js.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts +23 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +130 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts +99 -0
- package/internal/hardhat-network/provider/vm/rethnet.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/rethnet.js +284 -0
- package/internal/hardhat-network/provider/vm/rethnet.js.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts +52 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js +3 -0
- package/internal/hardhat-network/provider/vm/vm-adapter.js.map +1 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +37 -11
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/constants.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/constants.js +1 -1
- package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +6 -2
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts +1 -0
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +85 -55
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.d.ts +3 -1
- package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +9 -1
- package/internal/hardhat-network/stack-traces/model.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/solidity-stack-trace.d.ts +2 -2
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +1 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/lib/hardhat-lib.d.ts.map +1 -1
- package/internal/lib/hardhat-lib.js +1 -4
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/solidity/compiler/downloader.js +2 -2
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/solidity/compiler/index.js +1 -1
- package/internal/solidity/compiler/index.js.map +1 -1
- package/internal/solidity/resolver.d.ts +4 -3
- package/internal/solidity/resolver.d.ts.map +1 -1
- package/internal/solidity/resolver.js +18 -7
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/abi-helpers.d.ts +1 -0
- package/internal/util/abi-helpers.d.ts.map +1 -1
- package/internal/util/abi-helpers.js +9 -0
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +12 -11
- package/internal/util/download.js.map +1 -1
- package/internal/util/packageInfo.d.ts +6 -1
- package/internal/util/packageInfo.d.ts.map +1 -1
- package/internal/util/packageInfo.js +14 -11
- package/internal/util/packageInfo.js.map +1 -1
- package/internal/util/proxy.d.ts +2 -0
- package/internal/util/proxy.d.ts.map +1 -0
- package/internal/util/proxy.js +19 -0
- package/internal/util/proxy.js.map +1 -0
- package/package.json +9 -10
- package/register.js +1 -4
- package/register.js.map +1 -1
- package/sample-projects/javascript/hardhat.config.js +1 -1
- package/sample-projects/javascript/scripts/deploy.js +2 -2
- package/sample-projects/javascript-esm/LICENSE.md +11 -0
- package/sample-projects/javascript-esm/README.md +13 -0
- package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
- package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
- package/sample-projects/javascript-esm/scripts/deploy.js +22 -0
- package/sample-projects/javascript-esm/test/Lock.js +123 -0
- package/sample-projects/typescript/hardhat.config.ts +1 -1
- package/sample-projects/typescript/scripts/deploy.ts +2 -2
- package/sample-projects/typescript/tsconfig.json +2 -1
- package/src/builtin-tasks/compile.ts +28 -7
- package/src/builtin-tasks/flatten.ts +4 -1
- package/src/builtin-tasks/help.ts +15 -16
- package/src/builtin-tasks/task-names.ts +2 -0
- package/src/builtin-tasks/test.ts +30 -2
- package/src/internal/artifacts.ts +947 -0
- package/src/internal/cli/bootstrap.ts +14 -36
- package/src/internal/cli/cli.ts +38 -43
- package/src/internal/cli/project-creation.ts +128 -47
- package/src/internal/cli/prompt.ts +2 -4
- package/src/internal/cli/types.ts +2 -0
- package/src/internal/core/config/config-env.ts +15 -27
- package/src/internal/core/config/config-loading.ts +35 -11
- package/src/internal/core/config/config-validation.ts +20 -0
- package/src/internal/core/config/extenders.ts +6 -15
- package/src/internal/core/errors-list.ts +36 -10
- package/src/internal/core/project-structure.ts +8 -0
- package/src/internal/core/providers/construction.ts +29 -24
- package/src/internal/core/providers/http.ts +38 -26
- package/src/internal/core/runtime-environment.ts +65 -60
- package/src/internal/core/tasks/dsl.ts +17 -17
- package/src/internal/core/tasks/task-definitions.ts +6 -2
- package/src/internal/hardhat-network/jsonrpc/handler.ts +31 -28
- package/src/internal/hardhat-network/provider/modules/evm.ts +15 -3
- package/src/internal/hardhat-network/provider/node-types.ts +1 -1
- package/src/internal/hardhat-network/provider/node.ts +5 -1
- package/src/internal/hardhat-network/provider/provider.ts +60 -49
- package/src/internal/hardhat-network/provider/return-data.ts +2 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +5 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +5 -2
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +5 -2
- package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +46 -0
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +71 -9
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/constants.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +177 -89
- package/src/internal/hardhat-network/stack-traces/model.ts +11 -1
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +3 -0
- package/src/internal/lib/hardhat-lib.ts +1 -6
- package/src/internal/solidity/compiler/downloader.ts +2 -2
- package/src/internal/solidity/compiler/index.ts +1 -1
- package/src/internal/solidity/resolver.ts +28 -11
- package/src/internal/util/abi-helpers.ts +9 -0
- package/src/internal/util/download.ts +13 -15
- package/src/internal/util/packageInfo.ts +24 -10
- package/src/internal/util/proxy.ts +18 -0
- package/src/register.ts +1 -6
- package/src/types/artifacts.ts +14 -112
- package/src/types/config.ts +2 -0
- package/src/types/runtime.ts +16 -13
- package/types/artifacts.d.ts +10 -96
- package/types/artifacts.d.ts.map +1 -1
- package/types/config.d.ts +2 -0
- package/types/config.d.ts.map +1 -1
- package/types/runtime.d.ts +9 -10
- package/types/runtime.d.ts.map +1 -1
- package/internal/artifacts/caching.d.ts +0 -28
- package/internal/artifacts/caching.d.ts.map +0 -1
- package/internal/artifacts/caching.js +0 -178
- package/internal/artifacts/caching.js.map +0 -1
- package/internal/artifacts/index.d.ts +0 -45
- package/internal/artifacts/index.d.ts.map +0 -1
- package/internal/artifacts/index.js +0 -191
- package/internal/artifacts/index.js.map +0 -1
- package/internal/artifacts/mutable.d.ts +0 -29
- package/internal/artifacts/mutable.d.ts.map +0 -1
- package/internal/artifacts/mutable.js +0 -226
- package/internal/artifacts/mutable.js.map +0 -1
- package/internal/artifacts/readonly.d.ts +0 -94
- package/internal/artifacts/readonly.d.ts.map +0 -1
- package/internal/artifacts/readonly.js +0 -343
- package/internal/artifacts/readonly.js.map +0 -1
- package/src/internal/artifacts/caching.ts +0 -259
- package/src/internal/artifacts/index.ts +0 -302
- package/src/internal/artifacts/mutable.ts +0 -330
- package/src/internal/artifacts/readonly.ts +0 -470
|
@@ -58,6 +58,30 @@ const PRIVATE_RPC_METHODS = new Set([
|
|
|
58
58
|
|
|
59
59
|
export const DEFAULT_COINBASE = "0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e";
|
|
60
60
|
|
|
61
|
+
interface HardhatNetworkProviderConfig {
|
|
62
|
+
hardfork: string;
|
|
63
|
+
chainId: number;
|
|
64
|
+
networkId: number;
|
|
65
|
+
blockGasLimit: number;
|
|
66
|
+
minGasPrice: bigint;
|
|
67
|
+
automine: boolean;
|
|
68
|
+
intervalMining: IntervalMiningConfig;
|
|
69
|
+
mempoolOrder: MempoolOrder;
|
|
70
|
+
chains: HardhatNetworkChainsConfig;
|
|
71
|
+
genesisAccounts: GenesisAccount[];
|
|
72
|
+
allowUnlimitedContractSize: boolean;
|
|
73
|
+
throwOnTransactionFailures: boolean;
|
|
74
|
+
throwOnCallFailures: boolean;
|
|
75
|
+
allowBlocksWithSameTimestamp: boolean;
|
|
76
|
+
|
|
77
|
+
initialBaseFeePerGas?: number;
|
|
78
|
+
initialDate?: Date;
|
|
79
|
+
coinbase?: string;
|
|
80
|
+
experimentalHardhatNetworkMessageTraceHooks?: BoundExperimentalHardhatNetworkMessageTraceHook[];
|
|
81
|
+
forkConfig?: ForkConfig;
|
|
82
|
+
forkCachePath?: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
61
85
|
export class HardhatNetworkProvider
|
|
62
86
|
extends EventEmitter
|
|
63
87
|
implements EIP1193Provider
|
|
@@ -75,28 +99,9 @@ export class HardhatNetworkProvider
|
|
|
75
99
|
private _common?: Common;
|
|
76
100
|
|
|
77
101
|
constructor(
|
|
78
|
-
private readonly
|
|
79
|
-
private readonly _networkName: string,
|
|
80
|
-
private readonly _chainId: number,
|
|
81
|
-
private readonly _networkId: number,
|
|
82
|
-
private readonly _blockGasLimit: number,
|
|
83
|
-
private readonly _initialBaseFeePerGas: number | undefined,
|
|
84
|
-
private readonly _minGasPrice: bigint,
|
|
85
|
-
private readonly _throwOnTransactionFailures: boolean,
|
|
86
|
-
private readonly _throwOnCallFailures: boolean,
|
|
87
|
-
private readonly _automine: boolean,
|
|
88
|
-
private readonly _intervalMining: IntervalMiningConfig,
|
|
89
|
-
private readonly _mempoolOrder: MempoolOrder,
|
|
90
|
-
private readonly _chains: HardhatNetworkChainsConfig,
|
|
102
|
+
private readonly _config: HardhatNetworkProviderConfig,
|
|
91
103
|
private readonly _logger: ModulesLogger,
|
|
92
|
-
private readonly
|
|
93
|
-
private readonly _artifacts?: Artifacts,
|
|
94
|
-
private readonly _allowUnlimitedContractSize = false,
|
|
95
|
-
private readonly _initialDate?: Date,
|
|
96
|
-
private readonly _experimentalHardhatNetworkMessageTraceHooks: BoundExperimentalHardhatNetworkMessageTraceHook[] = [],
|
|
97
|
-
private _forkConfig?: ForkConfig,
|
|
98
|
-
private readonly _forkCachePath?: string,
|
|
99
|
-
private readonly _coinbase = DEFAULT_COINBASE
|
|
104
|
+
private readonly _artifacts?: Artifacts
|
|
100
105
|
) {
|
|
101
106
|
super();
|
|
102
107
|
}
|
|
@@ -228,24 +233,26 @@ export class HardhatNetworkProvider
|
|
|
228
233
|
}
|
|
229
234
|
|
|
230
235
|
const config: NodeConfig = {
|
|
231
|
-
automine: this.
|
|
232
|
-
blockGasLimit: this.
|
|
233
|
-
minGasPrice: this.
|
|
234
|
-
genesisAccounts: this.
|
|
235
|
-
allowUnlimitedContractSize: this.
|
|
236
|
+
automine: this._config.automine,
|
|
237
|
+
blockGasLimit: this._config.blockGasLimit,
|
|
238
|
+
minGasPrice: this._config.minGasPrice,
|
|
239
|
+
genesisAccounts: this._config.genesisAccounts,
|
|
240
|
+
allowUnlimitedContractSize: this._config.allowUnlimitedContractSize,
|
|
236
241
|
tracingConfig: await this._makeTracingConfig(),
|
|
237
|
-
initialBaseFeePerGas: this.
|
|
238
|
-
mempoolOrder: this.
|
|
239
|
-
hardfork: this.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
forkConfig: this._forkConfig,
|
|
242
|
+
initialBaseFeePerGas: this._config.initialBaseFeePerGas,
|
|
243
|
+
mempoolOrder: this._config.mempoolOrder,
|
|
244
|
+
hardfork: this._config.hardfork,
|
|
245
|
+
chainId: this._config.chainId,
|
|
246
|
+
networkId: this._config.networkId,
|
|
247
|
+
initialDate: this._config.initialDate,
|
|
248
|
+
forkConfig: this._config.forkConfig,
|
|
245
249
|
forkCachePath:
|
|
246
|
-
this.
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
this._config.forkConfig !== undefined
|
|
251
|
+
? this._config.forkCachePath
|
|
252
|
+
: undefined,
|
|
253
|
+
coinbase: this._config.coinbase ?? DEFAULT_COINBASE,
|
|
254
|
+
chains: this._config.chains,
|
|
255
|
+
allowBlocksWithSameTimestamp: this._config.allowBlocksWithSameTimestamp,
|
|
249
256
|
};
|
|
250
257
|
|
|
251
258
|
const [common, node] = await HardhatNode.create(config);
|
|
@@ -256,10 +263,10 @@ export class HardhatNetworkProvider
|
|
|
256
263
|
this._ethModule = new EthModule(
|
|
257
264
|
common,
|
|
258
265
|
node,
|
|
259
|
-
this.
|
|
260
|
-
this.
|
|
266
|
+
this._config.throwOnTransactionFailures,
|
|
267
|
+
this._config.throwOnCallFailures,
|
|
261
268
|
this._logger,
|
|
262
|
-
this.
|
|
269
|
+
this._config.experimentalHardhatNetworkMessageTraceHooks
|
|
263
270
|
);
|
|
264
271
|
|
|
265
272
|
const miningTimer = this._makeMiningTimer();
|
|
@@ -270,7 +277,8 @@ export class HardhatNetworkProvider
|
|
|
270
277
|
node,
|
|
271
278
|
miningTimer,
|
|
272
279
|
this._logger,
|
|
273
|
-
this.
|
|
280
|
+
this._config.allowBlocksWithSameTimestamp,
|
|
281
|
+
this._config.experimentalHardhatNetworkMessageTraceHooks
|
|
274
282
|
);
|
|
275
283
|
this._hardhatModule = new HardhatModule(
|
|
276
284
|
node,
|
|
@@ -279,7 +287,7 @@ export class HardhatNetworkProvider
|
|
|
279
287
|
this._logger.setEnabled(loggingEnabled);
|
|
280
288
|
},
|
|
281
289
|
this._logger,
|
|
282
|
-
this.
|
|
290
|
+
this._config.experimentalHardhatNetworkMessageTraceHooks
|
|
283
291
|
);
|
|
284
292
|
this._debugModule = new DebugModule(node);
|
|
285
293
|
this._personalModule = new PersonalModule(node);
|
|
@@ -320,13 +328,16 @@ export class HardhatNetworkProvider
|
|
|
320
328
|
}
|
|
321
329
|
|
|
322
330
|
private _makeMiningTimer(): MiningTimer {
|
|
323
|
-
const miningTimer = new MiningTimer(
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
331
|
+
const miningTimer = new MiningTimer(
|
|
332
|
+
this._config.intervalMining,
|
|
333
|
+
async () => {
|
|
334
|
+
try {
|
|
335
|
+
await this.request({ method: "hardhat_intervalMine" });
|
|
336
|
+
} catch (e) {
|
|
337
|
+
console.error("Unexpected error calling hardhat_intervalMine:", e);
|
|
338
|
+
}
|
|
328
339
|
}
|
|
329
|
-
|
|
340
|
+
);
|
|
330
341
|
|
|
331
342
|
miningTimer.start();
|
|
332
343
|
|
|
@@ -334,7 +345,7 @@ export class HardhatNetworkProvider
|
|
|
334
345
|
}
|
|
335
346
|
|
|
336
347
|
private async _reset(miningTimer: MiningTimer, forkConfig?: ForkConfig) {
|
|
337
|
-
this.
|
|
348
|
+
this._config.forkConfig = forkConfig;
|
|
338
349
|
if (this._node !== undefined) {
|
|
339
350
|
this._stopForwardingNodeEvents(this._node);
|
|
340
351
|
}
|
package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
InternalError,
|
|
17
17
|
InvalidArgumentsError,
|
|
18
18
|
} from "../../../core/providers/errors";
|
|
19
|
+
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
19
20
|
|
|
20
21
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
21
22
|
|
|
@@ -124,12 +125,14 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
|
|
|
124
125
|
data: AccessListEIP2930TxData = {},
|
|
125
126
|
opts?: TxOptions
|
|
126
127
|
) {
|
|
128
|
+
const fakeSignature = makeFakeSignature(data, sender);
|
|
129
|
+
|
|
127
130
|
super(
|
|
128
131
|
{
|
|
129
132
|
...data,
|
|
130
133
|
v: data.v ?? 1,
|
|
131
|
-
r: data.r ??
|
|
132
|
-
s: data.s ??
|
|
134
|
+
r: data.r ?? fakeSignature.r,
|
|
135
|
+
s: data.s ?? fakeSignature.s,
|
|
133
136
|
},
|
|
134
137
|
{ ...opts, freeze: false }
|
|
135
138
|
);
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
InternalError,
|
|
16
16
|
InvalidArgumentsError,
|
|
17
17
|
} from "../../../core/providers/errors";
|
|
18
|
+
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
18
19
|
|
|
19
20
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
20
21
|
|
|
@@ -123,12 +124,14 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
|
123
124
|
data: FeeMarketEIP1559TxData = {},
|
|
124
125
|
opts?: TxOptions
|
|
125
126
|
) {
|
|
127
|
+
const fakeSignature = makeFakeSignature(data, sender);
|
|
128
|
+
|
|
126
129
|
super(
|
|
127
130
|
{
|
|
128
131
|
...data,
|
|
129
132
|
v: data.v ?? 1,
|
|
130
|
-
r: data.r ??
|
|
131
|
-
s: data.s ??
|
|
133
|
+
r: data.r ?? fakeSignature.r,
|
|
134
|
+
s: data.s ?? fakeSignature.s,
|
|
132
135
|
},
|
|
133
136
|
{ ...opts, freeze: false }
|
|
134
137
|
);
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
InternalError,
|
|
8
8
|
InvalidArgumentsError,
|
|
9
9
|
} from "../../../core/providers/errors";
|
|
10
|
+
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
10
11
|
|
|
11
12
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
12
13
|
|
|
@@ -97,12 +98,14 @@ export class FakeSenderTransaction extends Transaction {
|
|
|
97
98
|
private readonly _sender: Address;
|
|
98
99
|
|
|
99
100
|
constructor(sender: Address, data: TxData = {}, opts?: TxOptions) {
|
|
101
|
+
const fakeSignature = makeFakeSignature(data, sender);
|
|
102
|
+
|
|
100
103
|
super(
|
|
101
104
|
{
|
|
102
105
|
...data,
|
|
103
106
|
v: data.v ?? 27,
|
|
104
|
-
r: data.r ??
|
|
105
|
-
s: data.s ??
|
|
107
|
+
r: data.r ?? fakeSignature.r,
|
|
108
|
+
s: data.s ?? fakeSignature.s,
|
|
106
109
|
},
|
|
107
110
|
{ ...opts, freeze: false }
|
|
108
111
|
);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AccessListEIP2930Transaction,
|
|
3
|
+
FeeMarketEIP1559Transaction,
|
|
4
|
+
TxData,
|
|
5
|
+
} from "@nomicfoundation/ethereumjs-tx";
|
|
6
|
+
import { Address } from "@nomicfoundation/ethereumjs-util";
|
|
7
|
+
|
|
8
|
+
import { createNonCryptographicHashBasedIdentifier } from "../../../util/hash";
|
|
9
|
+
|
|
10
|
+
// Produces a signature with r and s values taken from a hash of the inputs.
|
|
11
|
+
export function makeFakeSignature(
|
|
12
|
+
tx: TxData | AccessListEIP2930Transaction | FeeMarketEIP1559Transaction,
|
|
13
|
+
sender: Address
|
|
14
|
+
): {
|
|
15
|
+
r: number;
|
|
16
|
+
s: number;
|
|
17
|
+
} {
|
|
18
|
+
const hashInputString = [
|
|
19
|
+
sender,
|
|
20
|
+
tx.nonce,
|
|
21
|
+
tx.gasLimit,
|
|
22
|
+
tx.value,
|
|
23
|
+
tx.to,
|
|
24
|
+
tx.data,
|
|
25
|
+
"gasPrice" in tx ? tx.gasPrice : "",
|
|
26
|
+
"chainId" in tx ? tx.chainId : "",
|
|
27
|
+
"maxPriorityFeePerGas" in tx ? tx.maxPriorityFeePerGas : "",
|
|
28
|
+
"maxFeePerGas" in tx ? tx.maxFeePerGas : "",
|
|
29
|
+
"accessList" in tx
|
|
30
|
+
? tx.accessList?.map(([buf, bufs]) =>
|
|
31
|
+
[buf, ...bufs].map((b) => b.toString("hex")).join(";")
|
|
32
|
+
)
|
|
33
|
+
: "",
|
|
34
|
+
]
|
|
35
|
+
.map((a) => a?.toString() ?? "")
|
|
36
|
+
.join(",");
|
|
37
|
+
|
|
38
|
+
const hashDigest = createNonCryptographicHashBasedIdentifier(
|
|
39
|
+
Buffer.from(hashInputString)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
r: hashDigest.readUInt32LE(),
|
|
44
|
+
s: hashDigest.readUInt32LE(4),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -12,7 +12,7 @@ import { getCurrentTimestamp } from "./getCurrentTimestamp";
|
|
|
12
12
|
export async function putGenesisBlock(
|
|
13
13
|
blockchain: HardhatBlockchain,
|
|
14
14
|
common: Common,
|
|
15
|
-
{ initialDate, blockGasLimit }: LocalNodeConfig,
|
|
15
|
+
{ initialDate, blockGasLimit: initialBlockGasLimit }: LocalNodeConfig,
|
|
16
16
|
stateTrie: Trie,
|
|
17
17
|
hardfork: HardforkName,
|
|
18
18
|
initialMixHash: Buffer,
|
|
@@ -27,7 +27,7 @@ export async function putGenesisBlock(
|
|
|
27
27
|
|
|
28
28
|
const header: HeaderData = {
|
|
29
29
|
timestamp: `0x${initialBlockTimestamp.toString(16)}`,
|
|
30
|
-
gasLimit:
|
|
30
|
+
gasLimit: initialBlockGasLimit,
|
|
31
31
|
difficulty: isPostMerge ? 0 : 1,
|
|
32
32
|
nonce: isPostMerge ? "0x0000000000000000" : "0x0000000000000042",
|
|
33
33
|
extraData: "0x1234",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import debug from "debug";
|
|
2
|
-
import abi from "ethereumjs-abi";
|
|
3
2
|
|
|
4
3
|
import {
|
|
5
4
|
CompilerInput,
|
|
@@ -24,8 +23,19 @@ import {
|
|
|
24
23
|
} from "./model";
|
|
25
24
|
import { decodeInstructions } from "./source-maps";
|
|
26
25
|
|
|
26
|
+
const abi = require("ethereumjs-abi");
|
|
27
|
+
|
|
27
28
|
const log = debug("hardhat:core:hardhat-network:compiler-to-model");
|
|
28
29
|
|
|
30
|
+
interface ContractAbiEntry {
|
|
31
|
+
name?: string;
|
|
32
|
+
inputs?: Array<{
|
|
33
|
+
type: string;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
type ContractAbi = ContractAbiEntry[];
|
|
38
|
+
|
|
29
39
|
export function createModelsAndDecodeBytecodes(
|
|
30
40
|
solcVersion: string,
|
|
31
41
|
compilerInput: CompilerInput,
|
|
@@ -61,7 +71,20 @@ function createSourcesModelFromAst(
|
|
|
61
71
|
) {
|
|
62
72
|
const contractIdToLinearizedBaseContractIds = new Map<number, number[]>();
|
|
63
73
|
|
|
74
|
+
// Create a `sourceName => contract => abi` mapping
|
|
75
|
+
const sourceNameToContractToAbi = new Map<string, Map<string, ContractAbi>>();
|
|
76
|
+
for (const [sourceName, contracts] of Object.entries(
|
|
77
|
+
compilerOutput.contracts
|
|
78
|
+
)) {
|
|
79
|
+
const contractToAbi = new Map<string, ContractAbi>();
|
|
80
|
+
sourceNameToContractToAbi.set(sourceName, contractToAbi);
|
|
81
|
+
for (const [contractName, contract] of Object.entries(contracts)) {
|
|
82
|
+
contractToAbi.set(contractName, contract.abi);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
64
86
|
for (const [sourceName, source] of Object.entries(compilerOutput.sources)) {
|
|
87
|
+
const contractToAbi = sourceNameToContractToAbi.get(sourceName);
|
|
65
88
|
const file = new SourceFile(
|
|
66
89
|
sourceName,
|
|
67
90
|
compilerInput.sources[sourceName].content
|
|
@@ -77,13 +100,16 @@ function createSourcesModelFromAst(
|
|
|
77
100
|
continue;
|
|
78
101
|
}
|
|
79
102
|
|
|
103
|
+
const contractAbi = contractToAbi?.get(node.name);
|
|
104
|
+
|
|
80
105
|
processContractAstNode(
|
|
81
106
|
file,
|
|
82
107
|
node,
|
|
83
108
|
fileIdToSourceFile,
|
|
84
109
|
contractType,
|
|
85
110
|
contractIdToContract,
|
|
86
|
-
contractIdToLinearizedBaseContractIds
|
|
111
|
+
contractIdToLinearizedBaseContractIds,
|
|
112
|
+
contractAbi
|
|
87
113
|
);
|
|
88
114
|
}
|
|
89
115
|
|
|
@@ -111,7 +137,8 @@ function processContractAstNode(
|
|
|
111
137
|
fileIdToSourceFile: Map<number, SourceFile>,
|
|
112
138
|
contractType: ContractType,
|
|
113
139
|
contractIdToContract: Map<number, Contract>,
|
|
114
|
-
contractIdToLinearizedBaseContractIds: Map<number, number[]
|
|
140
|
+
contractIdToLinearizedBaseContractIds: Map<number, number[]>,
|
|
141
|
+
contractAbi?: ContractAbi
|
|
115
142
|
) {
|
|
116
143
|
const contractLocation = astSrcToSourceLocation(
|
|
117
144
|
contractNode.src,
|
|
@@ -134,11 +161,16 @@ function processContractAstNode(
|
|
|
134
161
|
|
|
135
162
|
for (const node of contractNode.nodes) {
|
|
136
163
|
if (node.nodeType === "FunctionDefinition") {
|
|
164
|
+
const functionAbis = contractAbi?.filter(
|
|
165
|
+
(abiEntry) => abiEntry.name === node.name
|
|
166
|
+
);
|
|
167
|
+
|
|
137
168
|
processFunctionDefinitionAstNode(
|
|
138
169
|
node,
|
|
139
170
|
fileIdToSourceFile,
|
|
140
171
|
contract,
|
|
141
|
-
file
|
|
172
|
+
file,
|
|
173
|
+
functionAbis
|
|
142
174
|
);
|
|
143
175
|
} else if (node.nodeType === "ModifierDefinition") {
|
|
144
176
|
processModifierDefinitionAstNode(
|
|
@@ -148,11 +180,15 @@ function processContractAstNode(
|
|
|
148
180
|
file
|
|
149
181
|
);
|
|
150
182
|
} else if (node.nodeType === "VariableDeclaration") {
|
|
183
|
+
const getterAbi = contractAbi?.find(
|
|
184
|
+
(abiEntry) => abiEntry.name === node.name
|
|
185
|
+
);
|
|
151
186
|
processVariableDeclarationAstNode(
|
|
152
187
|
node,
|
|
153
188
|
fileIdToSourceFile,
|
|
154
189
|
contract,
|
|
155
|
-
file
|
|
190
|
+
file,
|
|
191
|
+
getterAbi
|
|
156
192
|
);
|
|
157
193
|
}
|
|
158
194
|
}
|
|
@@ -162,7 +198,8 @@ function processFunctionDefinitionAstNode(
|
|
|
162
198
|
functionDefinitionNode: any,
|
|
163
199
|
fileIdToSourceFile: Map<number, SourceFile>,
|
|
164
200
|
contract: Contract | undefined,
|
|
165
|
-
file: SourceFile
|
|
201
|
+
file: SourceFile,
|
|
202
|
+
functionAbis?: ContractAbiEntry[]
|
|
166
203
|
) {
|
|
167
204
|
if (functionDefinitionNode.implemented === false) {
|
|
168
205
|
return;
|
|
@@ -188,6 +225,26 @@ function processFunctionDefinitionAstNode(
|
|
|
188
225
|
selector = astFunctionDefinitionToSelector(functionDefinitionNode);
|
|
189
226
|
}
|
|
190
227
|
|
|
228
|
+
// function can be overloaded, match the abi by the selector
|
|
229
|
+
const matchingFunctionAbi = functionAbis?.find((functionAbi) => {
|
|
230
|
+
if (functionAbi.name === undefined) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const functionAbiSelector = abi.methodID(
|
|
235
|
+
functionAbi.name,
|
|
236
|
+
functionAbi.inputs?.map((input) => input.type) ?? []
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
if (selector === undefined || functionAbiSelector === undefined) {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return selector.equals(functionAbiSelector);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
const paramTypes = matchingFunctionAbi?.inputs?.map((input) => input.type);
|
|
247
|
+
|
|
191
248
|
const cf = new ContractFunction(
|
|
192
249
|
functionDefinitionNode.name,
|
|
193
250
|
functionType,
|
|
@@ -195,7 +252,8 @@ function processFunctionDefinitionAstNode(
|
|
|
195
252
|
contract,
|
|
196
253
|
visibility,
|
|
197
254
|
functionDefinitionNode.stateMutability === "payable",
|
|
198
|
-
selector
|
|
255
|
+
selector,
|
|
256
|
+
paramTypes
|
|
199
257
|
);
|
|
200
258
|
|
|
201
259
|
if (contract !== undefined) {
|
|
@@ -279,7 +337,8 @@ function processVariableDeclarationAstNode(
|
|
|
279
337
|
variableDeclarationNode: any,
|
|
280
338
|
fileIdToSourceFile: Map<number, SourceFile>,
|
|
281
339
|
contract: Contract,
|
|
282
|
-
file: SourceFile
|
|
340
|
+
file: SourceFile,
|
|
341
|
+
getterAbi?: ContractAbiEntry
|
|
283
342
|
) {
|
|
284
343
|
const visibility = astVisibilityToVisibility(
|
|
285
344
|
variableDeclarationNode.visibility
|
|
@@ -295,6 +354,8 @@ function processVariableDeclarationAstNode(
|
|
|
295
354
|
fileIdToSourceFile
|
|
296
355
|
)!;
|
|
297
356
|
|
|
357
|
+
const paramTypes = getterAbi?.inputs?.map((input) => input.type);
|
|
358
|
+
|
|
298
359
|
const cf = new ContractFunction(
|
|
299
360
|
variableDeclarationNode.name,
|
|
300
361
|
ContractFunctionType.GETTER,
|
|
@@ -302,7 +363,8 @@ function processVariableDeclarationAstNode(
|
|
|
302
363
|
contract,
|
|
303
364
|
visibility,
|
|
304
365
|
false, // Getters aren't payable
|
|
305
|
-
getPublicVariableSelectorFromDeclarationAstNode(variableDeclarationNode)
|
|
366
|
+
getPublicVariableSelectorFromDeclarationAstNode(variableDeclarationNode),
|
|
367
|
+
paramTypes
|
|
306
368
|
);
|
|
307
369
|
|
|
308
370
|
contract.addLocalFunction(cf);
|
|
@@ -139,7 +139,7 @@ export class ConsoleLogger {
|
|
|
139
139
|
|
|
140
140
|
private _decode(data: Buffer, types: string[]): ConsoleLogs {
|
|
141
141
|
return types.map((type, i) => {
|
|
142
|
-
const position = i * 32;
|
|
142
|
+
const position: number = i * 32;
|
|
143
143
|
switch (types[i]) {
|
|
144
144
|
case Uint256Ty:
|
|
145
145
|
return bufferToBigInt(
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.
|
|
1
|
+
export const SUPPORTED_SOLIDITY_VERSION_RANGE = "<=0.8.18";
|
|
2
2
|
export const FIRST_SOLC_VERSION_SUPPORTED = "0.5.1";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { bufferToHex } from "@nomicfoundation/ethereumjs-util";
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
5
|
CallMessageTrace,
|
|
@@ -146,7 +147,7 @@ function traceSteps(
|
|
|
146
147
|
if (isJump(inst.opcode)) {
|
|
147
148
|
const jump =
|
|
148
149
|
inst.jumpType !== JumpType.NOT_JUMP
|
|
149
|
-
?
|
|
150
|
+
? chalk.bold(`(${JumpType[inst.jumpType]})`)
|
|
150
151
|
: "";
|
|
151
152
|
|
|
152
153
|
console.log(
|
|
@@ -209,5 +210,11 @@ export function printStackTrace(trace: SolidityStackTrace) {
|
|
|
209
210
|
sourceReference: flattenSourceReference(entry.sourceReference),
|
|
210
211
|
}));
|
|
211
212
|
|
|
212
|
-
console.log(
|
|
213
|
+
console.log(
|
|
214
|
+
JSON.stringify(
|
|
215
|
+
withFlattenedSourceReferences,
|
|
216
|
+
(key, value) => (typeof value === "bigint" ? value.toString() : value),
|
|
217
|
+
2
|
|
218
|
+
)
|
|
219
|
+
);
|
|
213
220
|
}
|