hardhat 2.7.0 → 2.8.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/builtin-tasks/check.js +1 -1
- package/builtin-tasks/check.js.map +1 -1
- package/builtin-tasks/clean.js +3 -3
- package/builtin-tasks/clean.js.map +1 -1
- package/builtin-tasks/compile.js +48 -48
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/console.js +3 -3
- package/builtin-tasks/console.js.map +1 -1
- package/builtin-tasks/flatten.js +8 -6
- package/builtin-tasks/flatten.js.map +1 -1
- package/builtin-tasks/help.js +2 -2
- package/builtin-tasks/help.js.map +1 -1
- package/builtin-tasks/node.js +19 -13
- package/builtin-tasks/node.js.map +1 -1
- package/builtin-tasks/run.js +11 -7
- package/builtin-tasks/run.js.map +1 -1
- package/builtin-tasks/test.js +12 -11
- package/builtin-tasks/test.js.map +1 -1
- package/builtin-tasks/utils/solidity-files-cache.js +1 -1
- package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
- package/builtin-tasks/utils/watch.d.ts.map +1 -1
- package/builtin-tasks/utils/watch.js +4 -2
- package/builtin-tasks/utils/watch.js.map +1 -1
- package/internal/artifacts.js +17 -17
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/analytics.js +10 -9
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/autocomplete.js +7 -7
- package/internal/cli/autocomplete.js.map +1 -1
- package/internal/cli/bootstrap.js +2 -2
- package/internal/cli/bootstrap.js.map +1 -1
- package/internal/cli/cli.js +18 -16
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.js +14 -14
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +1 -0
- package/internal/constants.js.map +1 -1
- package/internal/context.d.ts +1 -2
- package/internal/context.d.ts.map +1 -1
- package/internal/context.js +3 -3
- package/internal/context.js.map +1 -1
- package/internal/core/config/config-loading.d.ts +3 -2
- package/internal/core/config/config-loading.d.ts.map +1 -1
- package/internal/core/config/config-loading.js +25 -8
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-resolution.d.ts.map +1 -1
- package/internal/core/config/config-resolution.js +29 -12
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +68 -30
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +59 -1
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors.js +3 -3
- package/internal/core/errors.js.map +1 -1
- package/internal/core/execution-mode.js +2 -2
- package/internal/core/execution-mode.js.map +1 -1
- package/internal/core/jsonrpc/types/access-list.d.ts +0 -1
- package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/access-list.js +1 -1
- package/internal/core/jsonrpc/types/access-list.js.map +1 -1
- package/internal/core/jsonrpc/types/base-types.js +9 -9
- package/internal/core/jsonrpc/types/base-types.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -4
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.js +3 -3
- package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.js +9 -9
- package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +4 -4
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.js +2 -2
- package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/hardhat-network.js +4 -4
- package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -1
- package/internal/core/jsonrpc/types/input/logAddress.js +1 -1
- package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -1
- package/internal/core/jsonrpc/types/input/logTopics.js +1 -1
- package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +0 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.js +10 -10
- package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/output/block.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/block.js +5 -5
- package/internal/core/jsonrpc/types/output/block.js.map +1 -1
- package/internal/core/jsonrpc/types/output/log.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/log.js +5 -5
- package/internal/core/jsonrpc/types/output/log.js.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.js +6 -6
- package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.d.ts +0 -1
- package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.js +9 -9
- package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
- package/internal/core/params/argumentTypes.d.ts.map +1 -1
- package/internal/core/params/argumentTypes.js +25 -13
- package/internal/core/params/argumentTypes.js.map +1 -1
- package/internal/core/params/env-variables.d.ts.map +1 -1
- package/internal/core/params/env-variables.js +9 -5
- package/internal/core/params/env-variables.js.map +1 -1
- package/internal/core/project-structure.js +1 -1
- package/internal/core/project-structure.js.map +1 -1
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +9 -8
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/backwards-compatibility.js.map +1 -1
- package/internal/core/providers/chainId.js +3 -3
- package/internal/core/providers/chainId.js.map +1 -1
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +4 -4
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/gas-providers.d.ts.map +1 -1
- package/internal/core/providers/gas-providers.js +19 -17
- package/internal/core/providers/gas-providers.js.map +1 -1
- package/internal/core/providers/http.js +1 -1
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/providers/util.js +1 -1
- package/internal/core/providers/util.js.map +1 -1
- package/internal/core/providers/wrapper.d.ts.map +1 -1
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js +7 -5
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/typescript-support.js +4 -4
- package/internal/core/typescript-support.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +23 -23
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -1
- package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +18 -9
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/server.js +3 -3
- package/internal/hardhat-network/jsonrpc/server.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +12 -12
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -2
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/PoolState.js +6 -6
- package/internal/hardhat-network/provider/PoolState.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +19 -19
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/filter.js +3 -3
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/AccountState.js +4 -4
- package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +7 -7
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +34 -34
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/random.d.ts +0 -1
- package/internal/hardhat-network/provider/fork/random.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/random.js +13 -8
- package/internal/hardhat-network/provider/fork/random.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +1 -0
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
- package/internal/hardhat-network/provider/modules/debug.js +1 -1
- package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +86 -84
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +9 -9
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +16 -16
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +30 -25
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/modules/net.js +2 -2
- package/internal/hardhat-network/provider/modules/net.js.map +1 -1
- package/internal/hardhat-network/provider/modules/personal.js +2 -2
- package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.js +4 -4
- package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +2 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +7 -1
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +141 -76
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.js +87 -87
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +3 -2
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +5 -3
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +4 -4
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.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/utils/bnToHex.js +1 -1
- package/internal/hardhat-network/provider/utils/bnToHex.js.map +1 -1
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
- package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -2
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +4 -4
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -4
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.js +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.js.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +4 -4
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +44 -44
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -6
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +17 -17
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +28 -28
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js +3 -3
- package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +5 -5
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +10 -10
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/source-maps.js +7 -7
- package/internal/hardhat-network/stack-traces/source-maps.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +5 -5
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +2 -2
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +3 -3
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/lib/hardhat-lib.js +3 -3
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/reset.js +1 -1
- package/internal/reset.js.map +1 -1
- package/internal/sentry/anonymizer.js.map +1 -1
- package/internal/sentry/reporter.js +5 -5
- package/internal/sentry/reporter.js.map +1 -1
- package/internal/sentry/subprocess.js +2 -2
- package/internal/sentry/subprocess.js.map +1 -1
- package/internal/sentry/transport.js +1 -1
- package/internal/sentry/transport.js.map +1 -1
- package/internal/solidity/compilation-job.js +4 -4
- package/internal/solidity/compilation-job.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts +1 -1
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +21 -7
- 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/dependencyGraph.js +2 -1
- package/internal/solidity/dependencyGraph.js.map +1 -1
- package/internal/solidity/parse.js +3 -2
- package/internal/solidity/parse.js.map +1 -1
- package/internal/solidity/resolver.js +10 -10
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/abi-helpers.js +1 -1
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +12 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/global-dir.js +1 -1
- package/internal/util/global-dir.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -1
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +3 -1
- package/internal/util/hardforks.js.map +1 -1
- package/internal/util/jsonrpc.js +1 -1
- package/internal/util/jsonrpc.js.map +1 -1
- package/internal/util/packageInfo.js +1 -1
- package/internal/util/packageInfo.js.map +1 -1
- package/internal/util/scripts-runner.js +3 -3
- package/internal/util/scripts-runner.js.map +1 -1
- package/package.json +14 -14
- package/register.js +7 -7
- package/register.js.map +1 -1
- package/src/builtin-tasks/flatten.ts +4 -2
- package/src/builtin-tasks/node.ts +15 -8
- package/src/builtin-tasks/run.ts +13 -8
- package/src/builtin-tasks/test.ts +2 -0
- package/src/builtin-tasks/utils/watch.ts +3 -1
- package/src/internal/artifacts.ts +3 -3
- package/src/internal/cli/autocomplete.ts +3 -3
- package/src/internal/cli/bootstrap.ts +1 -1
- package/src/internal/cli/cli.ts +4 -1
- package/src/internal/cli/project-creation.ts +3 -3
- package/src/internal/constants.ts +1 -0
- package/src/internal/context.ts +1 -1
- package/src/internal/core/config/config-loading.ts +33 -3
- package/src/internal/core/config/config-resolution.ts +33 -3
- package/src/internal/core/config/config-validation.ts +70 -0
- package/src/internal/core/config/default-config.ts +59 -1
- package/src/internal/core/execution-mode.ts +1 -1
- package/src/internal/core/params/argumentTypes.ts +40 -25
- package/src/internal/core/params/env-variables.ts +13 -8
- package/src/internal/core/providers/accounts.ts +4 -3
- package/src/internal/core/providers/backwards-compatibility.ts +1 -1
- package/src/internal/core/providers/chainId.ts +1 -1
- package/src/internal/core/providers/construction.ts +1 -0
- package/src/internal/core/providers/gas-providers.ts +6 -4
- package/src/internal/core/providers/http.ts +1 -1
- package/src/internal/core/providers/wrapper.ts +1 -1
- package/src/internal/core/runtime-environment.ts +3 -1
- package/src/internal/core/typescript-support.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/client.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/handler.ts +13 -3
- package/src/internal/hardhat-network/jsonrpc/server.ts +3 -3
- package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/eth.ts +23 -21
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/logger.ts +13 -9
- package/src/internal/hardhat-network/provider/node-types.ts +2 -1
- package/src/internal/hardhat-network/provider/node.ts +149 -31
- package/src/internal/hardhat-network/provider/provider.ts +4 -1
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +3 -3
- package/src/internal/reset.ts +1 -1
- package/src/internal/sentry/subprocess.ts +2 -2
- package/src/internal/solidity/compiler/downloader.ts +27 -12
- package/src/internal/solidity/resolver.ts +1 -1
- package/src/internal/util/abi-helpers.ts +1 -1
- package/src/internal/util/download.ts +17 -1
- package/src/internal/util/hardforks.ts +2 -0
- package/src/internal/util/jsonrpc.ts +1 -1
- package/src/internal/util/packageInfo.ts +1 -1
- package/src/internal/util/scripts-runner.ts +1 -1
- package/src/types/config.ts +28 -0
- package/src/utils/source-names.ts +13 -11
- package/types/config.d.ts +16 -0
- package/types/config.d.ts.map +1 -1
- package/utils/source-names.js +7 -5
- package/utils/source-names.js.map +1 -1
- package/CHANGELOG.md +0 -71
- package/internal/hardhat-network/provider/HardhatStateManager.d.ts +0 -50
- package/internal/hardhat-network/provider/HardhatStateManager.d.ts.map +0 -1
- package/internal/hardhat-network/provider/HardhatStateManager.js +0 -249
- package/internal/hardhat-network/provider/HardhatStateManager.js.map +0 -1
- package/src/internal/hardhat-network/provider/HardhatStateManager.ts +0 -349
|
@@ -10,10 +10,12 @@ const tx_1 = require("@ethereumjs/tx");
|
|
|
10
10
|
const vm_1 = __importDefault(require("@ethereumjs/vm"));
|
|
11
11
|
const bloom_1 = __importDefault(require("@ethereumjs/vm/dist/bloom"));
|
|
12
12
|
const exceptions_1 = require("@ethereumjs/vm/dist/exceptions");
|
|
13
|
+
const state_1 = require("@ethereumjs/vm/dist/state");
|
|
13
14
|
const chalk_1 = __importDefault(require("chalk"));
|
|
14
15
|
const debug_1 = __importDefault(require("debug"));
|
|
15
16
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
16
17
|
const events_1 = __importDefault(require("events"));
|
|
18
|
+
const constants_1 = require("../../constants");
|
|
17
19
|
const default_config_1 = require("../../core/config/default-config");
|
|
18
20
|
const errors_1 = require("../../core/errors");
|
|
19
21
|
const errors_2 = require("../../core/providers/errors");
|
|
@@ -36,7 +38,6 @@ const filter_1 = require("./filter");
|
|
|
36
38
|
const ForkBlockchain_1 = require("./fork/ForkBlockchain");
|
|
37
39
|
const ForkStateManager_1 = require("./fork/ForkStateManager");
|
|
38
40
|
const HardhatBlockchain_1 = require("./HardhatBlockchain");
|
|
39
|
-
const HardhatStateManager_1 = require("./HardhatStateManager");
|
|
40
41
|
const node_types_1 = require("./node-types");
|
|
41
42
|
const output_1 = require("./output");
|
|
42
43
|
const return_data_1 = require("./return-data");
|
|
@@ -48,14 +49,15 @@ const TransactionQueue_1 = require("./TransactionQueue");
|
|
|
48
49
|
const getCurrentTimestamp_1 = require("./utils/getCurrentTimestamp");
|
|
49
50
|
const makeCommon_1 = require("./utils/makeCommon");
|
|
50
51
|
const makeForkClient_1 = require("./utils/makeForkClient");
|
|
52
|
+
const makeStateTrie_1 = require("./utils/makeStateTrie");
|
|
51
53
|
const makeForkCommon_1 = require("./utils/makeForkCommon");
|
|
52
54
|
const putGenesisBlock_1 = require("./utils/putGenesisBlock");
|
|
53
55
|
const txMapToArray_1 = require("./utils/txMapToArray");
|
|
54
|
-
const log = debug_1.default("hardhat:core:hardhat-network:node");
|
|
56
|
+
const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
|
|
55
57
|
const ethSigUtil = require("eth-sig-util");
|
|
56
58
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
57
59
|
class HardhatNode extends events_1.default {
|
|
58
|
-
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), _mempoolOrder, _coinbase, genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
|
|
60
|
+
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, _hardforkActivations, tracingConfig, _forkNetworkId, _forkBlockNumber, nextBlockBaseFee) {
|
|
59
61
|
super();
|
|
60
62
|
this._vm = _vm;
|
|
61
63
|
this._stateManager = _stateManager;
|
|
@@ -66,7 +68,11 @@ class HardhatNode extends events_1.default {
|
|
|
66
68
|
this._blockTimeOffsetSeconds = _blockTimeOffsetSeconds;
|
|
67
69
|
this._mempoolOrder = _mempoolOrder;
|
|
68
70
|
this._coinbase = _coinbase;
|
|
71
|
+
this._configNetworkId = _configNetworkId;
|
|
72
|
+
this._configChainId = _configChainId;
|
|
73
|
+
this._hardforkActivations = _hardforkActivations;
|
|
69
74
|
this._forkNetworkId = _forkNetworkId;
|
|
75
|
+
this._forkBlockNumber = _forkBlockNumber;
|
|
70
76
|
this._localAccounts = new Map(); // address => private key
|
|
71
77
|
this._impersonatedAccounts = new Set(); // address
|
|
72
78
|
this._nextBlockTimestamp = new ethereumjs_util_1.BN(0);
|
|
@@ -91,7 +97,7 @@ class HardhatNode extends events_1.default {
|
|
|
91
97
|
}
|
|
92
98
|
try {
|
|
93
99
|
for (const buildInfo of tracingConfig.buildInfos) {
|
|
94
|
-
const bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
100
|
+
const bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
95
101
|
for (const bytecode of bytecodes) {
|
|
96
102
|
this._vmTraceDecoder.addBytecode(bytecode);
|
|
97
103
|
}
|
|
@@ -100,37 +106,42 @@ class HardhatNode extends events_1.default {
|
|
|
100
106
|
catch (error) {
|
|
101
107
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be initialized. Run Hardhat with --verbose to learn more."));
|
|
102
108
|
log("Hardhat Network tracing disabled: ContractsIdentifier failed to be initialized. Please report this to help us improve Hardhat.\n", error);
|
|
103
|
-
|
|
109
|
+
if (error instanceof Error) {
|
|
110
|
+
reporter_1.Reporter.reportError(error);
|
|
111
|
+
}
|
|
104
112
|
}
|
|
105
113
|
}
|
|
106
114
|
static async create(config) {
|
|
107
|
-
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, mempoolOrder, } = config;
|
|
115
|
+
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, mempoolOrder, networkId, chainId, } = config;
|
|
108
116
|
let common;
|
|
109
117
|
let stateManager;
|
|
110
118
|
let blockchain;
|
|
111
119
|
let initialBlockTimeOffset;
|
|
112
120
|
let nextBlockBaseFeePerGas;
|
|
113
121
|
let forkNetworkId;
|
|
122
|
+
let forkBlockNum;
|
|
123
|
+
let hardforkActivations = new Map();
|
|
114
124
|
const initialBaseFeePerGasConfig = config.initialBaseFeePerGas !== undefined
|
|
115
125
|
? new ethereumjs_util_1.BN(config.initialBaseFeePerGas)
|
|
116
126
|
: undefined;
|
|
117
|
-
const hardfork = hardforks_1.getHardforkName(config.hardfork);
|
|
118
|
-
if (node_types_1.isForkedNodeConfig(config)) {
|
|
119
|
-
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await makeForkClient_1.makeForkClient(config.forkConfig, config.forkCachePath);
|
|
120
|
-
common = await makeForkCommon_1.makeForkCommon(config);
|
|
127
|
+
const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
|
|
128
|
+
if ((0, node_types_1.isForkedNodeConfig)(config)) {
|
|
129
|
+
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await (0, makeForkClient_1.makeForkClient)(config.forkConfig, config.forkCachePath);
|
|
130
|
+
common = await (0, makeForkCommon_1.makeForkCommon)(config);
|
|
121
131
|
forkNetworkId = forkClient.getNetworkId();
|
|
132
|
+
forkBlockNum = forkBlockNumber.toNumber();
|
|
122
133
|
this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
|
|
123
134
|
const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
|
|
124
135
|
await forkStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
125
136
|
stateManager = forkStateManager;
|
|
126
137
|
blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
|
|
127
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(new Date(forkBlockTimestamp), new Date()));
|
|
138
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
|
|
128
139
|
// If the hardfork is London or later we need a base fee per gas for the
|
|
129
140
|
// first local block. If initialBaseFeePerGas config was provided we use
|
|
130
141
|
// that. Otherwise, what we do depends on the block we forked from. If
|
|
131
142
|
// it's an EIP-1559 block we don't need to do anything here, as we'll
|
|
132
143
|
// end up automatically computing the next base fee per gas based on it.
|
|
133
|
-
if (hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
144
|
+
if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
134
145
|
if (initialBaseFeePerGasConfig !== undefined) {
|
|
135
146
|
nextBlockBaseFeePerGas = initialBaseFeePerGasConfig;
|
|
136
147
|
}
|
|
@@ -141,21 +152,26 @@ class HardhatNode extends events_1.default {
|
|
|
141
152
|
}
|
|
142
153
|
}
|
|
143
154
|
}
|
|
155
|
+
if (config.chains.has(forkNetworkId)) {
|
|
156
|
+
hardforkActivations = config.chains.get(forkNetworkId).hardforkHistory;
|
|
157
|
+
}
|
|
144
158
|
}
|
|
145
159
|
else {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
160
|
+
const stateTrie = await (0, makeStateTrie_1.makeStateTrie)(genesisAccounts);
|
|
161
|
+
common = (0, makeCommon_1.makeCommon)(config, stateTrie);
|
|
162
|
+
stateManager = new state_1.DefaultStateManager({
|
|
163
|
+
common,
|
|
164
|
+
trie: stateTrie,
|
|
165
|
+
});
|
|
150
166
|
const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain();
|
|
151
|
-
const genesisBlockBaseFeePerGas = hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)
|
|
152
|
-
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
153
|
-
|
|
167
|
+
const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
|
|
168
|
+
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
169
|
+
: undefined;
|
|
170
|
+
await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, genesisBlockBaseFeePerGas);
|
|
154
171
|
if (config.initialDate !== undefined) {
|
|
155
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(config.initialDate, new Date()));
|
|
172
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
|
|
156
173
|
}
|
|
157
174
|
blockchain = hardhatBlockchain;
|
|
158
|
-
stateManager = hardhatStateManager;
|
|
159
175
|
}
|
|
160
176
|
const txPool = new TxPool_1.TxPool(stateManager, new ethereumjs_util_1.BN(blockGasLimit), common);
|
|
161
177
|
const vm = new vm_1.default({
|
|
@@ -165,7 +181,7 @@ class HardhatNode extends events_1.default {
|
|
|
165
181
|
blockchain: blockchain,
|
|
166
182
|
allowUnlimitedContractSize,
|
|
167
183
|
});
|
|
168
|
-
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
|
|
184
|
+
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardforkActivations, tracingConfig, forkNetworkId, forkBlockNum, nextBlockBaseFeePerGas);
|
|
169
185
|
return [common, node];
|
|
170
186
|
}
|
|
171
187
|
static _validateHardforks(forkBlockNumber, common, remoteChainId) {
|
|
@@ -179,7 +195,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
|
|
|
179
195
|
try {
|
|
180
196
|
upstreamCommon = new common_1.default({ chain: remoteChainId });
|
|
181
197
|
}
|
|
182
|
-
catch (
|
|
198
|
+
catch (_a) {
|
|
183
199
|
// If ethereumjs doesn't have a common it will throw and we won't have
|
|
184
200
|
// info about the activation block of each hardfork, so we don't run
|
|
185
201
|
// this validation.
|
|
@@ -194,7 +210,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
194
210
|
}
|
|
195
211
|
}
|
|
196
212
|
async getSignedTransaction(txParams) {
|
|
197
|
-
const senderAddress = ethereumjs_util_1.bufferToHex(txParams.from);
|
|
213
|
+
const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
|
|
198
214
|
const pk = this._localAccounts.get(senderAddress);
|
|
199
215
|
if (pk !== undefined) {
|
|
200
216
|
let tx;
|
|
@@ -240,14 +256,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
240
256
|
result = await this._mineBlockWithPendingTxs(blockTimestamp);
|
|
241
257
|
}
|
|
242
258
|
catch (err) {
|
|
243
|
-
if (err
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
259
|
+
if (err instanceof Error) {
|
|
260
|
+
if (err === null || err === void 0 ? void 0 : err.message.includes("sender doesn't have enough funds")) {
|
|
261
|
+
throw new errors_2.InvalidInputError(err.message, err);
|
|
262
|
+
}
|
|
263
|
+
// Some network errors are HardhatErrors, and can end up here when forking
|
|
264
|
+
if (errors_1.HardhatError.isHardhatError(err)) {
|
|
265
|
+
throw err;
|
|
266
|
+
}
|
|
267
|
+
throw new errors_2.TransactionExecutionError(err);
|
|
249
268
|
}
|
|
250
|
-
|
|
269
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
270
|
+
throw err;
|
|
251
271
|
}
|
|
252
272
|
await this._saveBlockAsSuccessfullyRun(result.block, result.blockResult);
|
|
253
273
|
if (needsTimestampIncrease) {
|
|
@@ -264,7 +284,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
264
284
|
var _a, _b, _c, _d;
|
|
265
285
|
let txParams;
|
|
266
286
|
const nonce = await this._getNonce(new ethereumjs_util_1.Address(call.from), blockNumberOrPending);
|
|
267
|
-
if (call.gasPrice !== undefined ||
|
|
287
|
+
if (call.gasPrice !== undefined ||
|
|
288
|
+
!this.isEip1559Active(blockNumberOrPending)) {
|
|
268
289
|
txParams = Object.assign({ gasPrice: new ethereumjs_util_1.BN(0), nonce }, call);
|
|
269
290
|
}
|
|
270
291
|
else {
|
|
@@ -295,8 +316,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
295
316
|
}
|
|
296
317
|
async getCodeFromTrace(trace, blockNumberOrPending) {
|
|
297
318
|
if (trace === undefined ||
|
|
298
|
-
message_trace_1.isPrecompileTrace(trace) ||
|
|
299
|
-
message_trace_1.isCreateTrace(trace)) {
|
|
319
|
+
(0, message_trace_1.isPrecompileTrace)(trace) ||
|
|
320
|
+
(0, message_trace_1.isCreateTrace)(trace)) {
|
|
300
321
|
return Buffer.from("");
|
|
301
322
|
}
|
|
302
323
|
return this.getCode(new ethereumjs_util_1.Address(trace.address), blockNumberOrPending);
|
|
@@ -458,19 +479,19 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
458
479
|
return (_a = this._txPool.getTransactionByHash(hash)) === null || _a === void 0 ? void 0 : _a.data;
|
|
459
480
|
}
|
|
460
481
|
async getTransactionReceipt(hash) {
|
|
461
|
-
const hashBuffer = hash instanceof Buffer ? hash : ethereumjs_util_1.toBuffer(hash);
|
|
482
|
+
const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
|
|
462
483
|
const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
|
|
463
484
|
return receipt !== null && receipt !== void 0 ? receipt : undefined;
|
|
464
485
|
}
|
|
465
486
|
async getPendingTransactions() {
|
|
466
|
-
const txPoolPending = txMapToArray_1.txMapToArray(this._txPool.getPendingTransactions());
|
|
467
|
-
const txPoolQueued = txMapToArray_1.txMapToArray(this._txPool.getQueuedTransactions());
|
|
487
|
+
const txPoolPending = (0, txMapToArray_1.txMapToArray)(this._txPool.getPendingTransactions());
|
|
488
|
+
const txPoolQueued = (0, txMapToArray_1.txMapToArray)(this._txPool.getQueuedTransactions());
|
|
468
489
|
return txPoolPending.concat(txPoolQueued);
|
|
469
490
|
}
|
|
470
491
|
async signPersonalMessage(address, data) {
|
|
471
|
-
const messageHash = ethereumjs_util_1.hashPersonalMessage(data);
|
|
492
|
+
const messageHash = (0, ethereumjs_util_1.hashPersonalMessage)(data);
|
|
472
493
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
473
|
-
return ethereumjs_util_1.ecsign(messageHash, privateKey);
|
|
494
|
+
return (0, ethereumjs_util_1.ecsign)(messageHash, privateKey);
|
|
474
495
|
}
|
|
475
496
|
async signTypedDataV4(address, typedData) {
|
|
476
497
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
@@ -562,7 +583,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
562
583
|
id: filterId,
|
|
563
584
|
type: filter_1.Type.BLOCK_SUBSCRIPTION,
|
|
564
585
|
deadline: this._newDeadline(),
|
|
565
|
-
hashes: [ethereumjs_util_1.bufferToHex(block.header.hash())],
|
|
586
|
+
hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
|
|
566
587
|
logs: [],
|
|
567
588
|
subscription: isSubscription,
|
|
568
589
|
});
|
|
@@ -631,7 +652,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
631
652
|
async addCompilationResult(solcVersion, compilerInput, compilerOutput) {
|
|
632
653
|
let bytecodes;
|
|
633
654
|
try {
|
|
634
|
-
bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(solcVersion, compilerInput, compilerOutput);
|
|
655
|
+
bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(solcVersion, compilerInput, compilerOutput);
|
|
635
656
|
}
|
|
636
657
|
catch (error) {
|
|
637
658
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be updated. Run Hardhat with --verbose to learn more."));
|
|
@@ -644,11 +665,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
644
665
|
return true;
|
|
645
666
|
}
|
|
646
667
|
addImpersonatedAccount(address) {
|
|
647
|
-
this._impersonatedAccounts.add(ethereumjs_util_1.bufferToHex(address));
|
|
668
|
+
this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
|
|
648
669
|
return true;
|
|
649
670
|
}
|
|
650
671
|
removeImpersonatedAccount(address) {
|
|
651
|
-
return this._impersonatedAccounts.delete(ethereumjs_util_1.bufferToHex(address));
|
|
672
|
+
return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
|
|
652
673
|
}
|
|
653
674
|
setAutomine(automine) {
|
|
654
675
|
this._automine = automine;
|
|
@@ -670,7 +691,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
670
691
|
}
|
|
671
692
|
const isTransactionMined = await this._isTransactionMined(hash);
|
|
672
693
|
if (isTransactionMined) {
|
|
673
|
-
throw new errors_2.InvalidArgumentsError(`Transaction ${ethereumjs_util_1.bufferToHex(hash)} cannot be dropped because it's already mined`);
|
|
694
|
+
throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
|
|
674
695
|
}
|
|
675
696
|
return false;
|
|
676
697
|
}
|
|
@@ -703,7 +724,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
703
724
|
async traceTransaction(hash, config) {
|
|
704
725
|
const block = await this.getBlockByTransactionHash(hash);
|
|
705
726
|
if (block === undefined) {
|
|
706
|
-
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${ethereumjs_util_1.bufferToHex(hash)}`);
|
|
727
|
+
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
|
|
707
728
|
}
|
|
708
729
|
return this._runInBlockContext(new ethereumjs_util_1.BN(block.header.number).subn(1), async () => {
|
|
709
730
|
const blockNumber = block.header.number.toNumber();
|
|
@@ -711,8 +732,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
711
732
|
let vm = this._vm;
|
|
712
733
|
if (blockchain instanceof ForkBlockchain_1.ForkBlockchain &&
|
|
713
734
|
blockNumber <= blockchain.getForkBlockNumber().toNumber()) {
|
|
714
|
-
errors_1.assertHardhatInvariant(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
715
|
-
const common =
|
|
735
|
+
(0, errors_1.assertHardhatInvariant)(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
736
|
+
const common = this._getCommonForTracing(this._forkNetworkId, blockNumber);
|
|
716
737
|
vm = new vm_1.default({
|
|
717
738
|
common,
|
|
718
739
|
activatePrecompiles: true,
|
|
@@ -805,7 +826,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
805
826
|
baseFeePerGas.push(pendingBlock.header.calcNextBaseFee());
|
|
806
827
|
}
|
|
807
828
|
else {
|
|
808
|
-
errors_1.assertHardhatInvariant(false, "This should never happen");
|
|
829
|
+
(0, errors_1.assertHardhatInvariant)(false, "This should never happen");
|
|
809
830
|
}
|
|
810
831
|
}
|
|
811
832
|
return {
|
|
@@ -851,7 +872,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
851
872
|
}
|
|
852
873
|
return {
|
|
853
874
|
effectiveGasReward,
|
|
854
|
-
gasUsed: base_types_1.rpcQuantityToBN(r === null || r === void 0 ? void 0 : r.gasUsed),
|
|
875
|
+
gasUsed: (0, base_types_1.rpcQuantityToBN)(r === null || r === void 0 ? void 0 : r.gasUsed),
|
|
855
876
|
};
|
|
856
877
|
})
|
|
857
878
|
.sort((a, b) => a.effectiveGasReward.cmp(b.effectiveGasReward));
|
|
@@ -873,7 +894,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
873
894
|
async _addPendingTransaction(tx) {
|
|
874
895
|
await this._txPool.addTransaction(tx);
|
|
875
896
|
await this._notifyPendingTransaction(tx);
|
|
876
|
-
return ethereumjs_util_1.bufferToHex(tx.hash());
|
|
897
|
+
return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
877
898
|
}
|
|
878
899
|
async _mineTransaction(tx) {
|
|
879
900
|
await this._addPendingTransaction(tx);
|
|
@@ -929,7 +950,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
929
950
|
sender = tx.getSenderAddress(); // verifies signature as a side effect
|
|
930
951
|
}
|
|
931
952
|
catch (e) {
|
|
932
|
-
|
|
953
|
+
if (e instanceof Error) {
|
|
954
|
+
throw new errors_2.InvalidInputError(e.message);
|
|
955
|
+
}
|
|
956
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
957
|
+
throw e;
|
|
933
958
|
}
|
|
934
959
|
// validate nonce
|
|
935
960
|
const nextPendingNonce = await this._txPool.getNextPendingNonce(sender);
|
|
@@ -1064,9 +1089,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1064
1089
|
this._snapshots.splice(snapshotIndex);
|
|
1065
1090
|
}
|
|
1066
1091
|
_initLocalAccounts(genesisAccounts) {
|
|
1067
|
-
const privateKeys = genesisAccounts.map((acc) => ethereumjs_util_1.toBuffer(acc.privateKey));
|
|
1092
|
+
const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
|
|
1068
1093
|
for (const pk of privateKeys) {
|
|
1069
|
-
this._localAccounts.set(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.privateToAddress(pk)), pk);
|
|
1094
|
+
this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
|
|
1070
1095
|
}
|
|
1071
1096
|
}
|
|
1072
1097
|
async _getConsoleLogMessages(vmTrace, vmTracerError) {
|
|
@@ -1104,7 +1129,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1104
1129
|
if (error.error === exceptions_1.ERROR.OUT_OF_GAS) {
|
|
1105
1130
|
if (stackTrace !== undefined &&
|
|
1106
1131
|
this._isContractTooLargeStackTrace(stackTrace)) {
|
|
1107
|
-
return solidity_errors_1.encodeSolidityStackTrace("Transaction ran out of gas", stackTrace);
|
|
1132
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)("Transaction ran out of gas", stackTrace);
|
|
1108
1133
|
}
|
|
1109
1134
|
return new errors_2.TransactionExecutionError("Transaction ran out of gas");
|
|
1110
1135
|
}
|
|
@@ -1126,12 +1151,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1126
1151
|
if (error.error === exceptions_1.ERROR.REVERT) {
|
|
1127
1152
|
const fallbackMessage = `VM Exception while processing transaction: revert ${returnDataExplanation}`;
|
|
1128
1153
|
if (stackTrace !== undefined) {
|
|
1129
|
-
return solidity_errors_1.encodeSolidityStackTrace(fallbackMessage, stackTrace);
|
|
1154
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(fallbackMessage, stackTrace);
|
|
1130
1155
|
}
|
|
1131
1156
|
return new errors_2.TransactionExecutionError(fallbackMessage);
|
|
1132
1157
|
}
|
|
1133
1158
|
if (stackTrace !== undefined) {
|
|
1134
|
-
return solidity_errors_1.encodeSolidityStackTrace(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1159
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1135
1160
|
}
|
|
1136
1161
|
return new errors_2.TransactionExecutionError(`Transaction reverted ${returnDataExplanation}`);
|
|
1137
1162
|
}
|
|
@@ -1144,7 +1169,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1144
1169
|
let blockTimestamp;
|
|
1145
1170
|
let offsetShouldChange;
|
|
1146
1171
|
let newOffset = new ethereumjs_util_1.BN(0);
|
|
1147
|
-
const currentTimestamp = new ethereumjs_util_1.BN(getCurrentTimestamp_1.getCurrentTimestamp());
|
|
1172
|
+
const currentTimestamp = new ethereumjs_util_1.BN((0, getCurrentTimestamp_1.getCurrentTimestamp)());
|
|
1148
1173
|
// if timestamp is not provided, we check nextBlockTimestamp, if it is
|
|
1149
1174
|
// set, we use it as the timestamp instead. If it is not set, we use
|
|
1150
1175
|
// time offset + real time as the timestamp.
|
|
@@ -1173,7 +1198,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1173
1198
|
async _notifyPendingTransaction(tx) {
|
|
1174
1199
|
this._filters.forEach((filter) => {
|
|
1175
1200
|
if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
|
|
1176
|
-
const hash = ethereumjs_util_1.bufferToHex(tx.hash());
|
|
1201
|
+
const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
1177
1202
|
if (filter.subscription) {
|
|
1178
1203
|
this._emitEthEvent(filter.id, hash);
|
|
1179
1204
|
return;
|
|
@@ -1194,7 +1219,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1194
1219
|
* was added to the blockchain.
|
|
1195
1220
|
*/
|
|
1196
1221
|
async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
|
|
1197
|
-
const receipts = output_1.getRpcReceiptOutputsFromLocalBlockExecution(block, runBlockResult, output_1.shouldShowTransactionTypeForHardfork(this._vm._common));
|
|
1222
|
+
const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
|
|
1198
1223
|
this._blockchain.addTransactionReceipts(receipts);
|
|
1199
1224
|
const td = await this.getBlockTotalDifficulty(block);
|
|
1200
1225
|
const rpcLogs = [];
|
|
@@ -1209,14 +1234,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1209
1234
|
case filter_1.Type.BLOCK_SUBSCRIPTION:
|
|
1210
1235
|
const hash = block.hash();
|
|
1211
1236
|
if (filter.subscription) {
|
|
1212
|
-
this._emitEthEvent(filter.id, output_1.getRpcBlock(block, td, output_1.shouldShowTransactionTypeForHardfork(this._vm._common), false));
|
|
1237
|
+
this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
|
|
1213
1238
|
return;
|
|
1214
1239
|
}
|
|
1215
|
-
filter.hashes.push(ethereumjs_util_1.bufferToHex(hash));
|
|
1240
|
+
filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
|
|
1216
1241
|
break;
|
|
1217
1242
|
case filter_1.Type.LOGS_SUBSCRIPTION:
|
|
1218
|
-
if (filter_1.bloomFilter(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1219
|
-
const logs = filter_1.filterLogs(rpcLogs, filter.criteria);
|
|
1243
|
+
if ((0, filter_1.bloomFilter)(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1244
|
+
const logs = (0, filter_1.filterLogs)(rpcLogs, filter.criteria);
|
|
1220
1245
|
if (logs.length === 0) {
|
|
1221
1246
|
return;
|
|
1222
1247
|
}
|
|
@@ -1339,8 +1364,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1339
1364
|
* makes.
|
|
1340
1365
|
*/
|
|
1341
1366
|
async _runTxAndRevertMutations(tx, blockNumberOrPending, forceBaseFeeZero = false) {
|
|
1367
|
+
var _a, _b;
|
|
1342
1368
|
const initialStateRoot = await this._stateManager.getStateRoot();
|
|
1343
1369
|
let blockContext;
|
|
1370
|
+
let originalCommon;
|
|
1344
1371
|
try {
|
|
1345
1372
|
if (blockNumberOrPending === "pending") {
|
|
1346
1373
|
// the new block has already been mined by _runInBlockContext hence we take latest here
|
|
@@ -1350,7 +1377,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1350
1377
|
// We know that this block number exists, because otherwise
|
|
1351
1378
|
// there would be an error in the RPC layer.
|
|
1352
1379
|
const block = await this.getBlockByNumber(blockNumberOrPending);
|
|
1353
|
-
errors_1.assertHardhatInvariant(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1380
|
+
(0, errors_1.assertHardhatInvariant)(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1354
1381
|
blockContext = block;
|
|
1355
1382
|
// we don't need to add the tx to the block because runTx doesn't
|
|
1356
1383
|
// know anything about the txs in the current block
|
|
@@ -1368,7 +1395,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1368
1395
|
// we don't want to debit any balance nor fail any tx when running an
|
|
1369
1396
|
// eth_call. This will make the BASEFEE option also return 0, which
|
|
1370
1397
|
// shouldn't. See: https://github.com/nomiclabs/hardhat/issues/1688
|
|
1371
|
-
if (this.isEip1559Active() &&
|
|
1398
|
+
if (this.isEip1559Active(blockNumberOrPending) &&
|
|
1372
1399
|
(blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)) {
|
|
1373
1400
|
blockContext = block_1.Block.fromBlockData(blockContext, {
|
|
1374
1401
|
freeze: false,
|
|
@@ -1376,6 +1403,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1376
1403
|
});
|
|
1377
1404
|
blockContext.header.baseFeePerGas = new ethereumjs_util_1.BN(0);
|
|
1378
1405
|
}
|
|
1406
|
+
originalCommon = this._vm._common;
|
|
1407
|
+
this._vm._common = new common_1.default({
|
|
1408
|
+
chain: Object.assign(Object.assign({}, this._vm._common["_chainParams"]), { chainId: (_a = this._forkNetworkId) !== null && _a !== void 0 ? _a : this._configChainId, networkId: (_b = this._forkNetworkId) !== null && _b !== void 0 ? _b : this._configNetworkId }),
|
|
1409
|
+
hardfork: this._selectHardfork(blockContext.header.number),
|
|
1410
|
+
});
|
|
1379
1411
|
return await this._vm.runTx({
|
|
1380
1412
|
block: blockContext,
|
|
1381
1413
|
tx,
|
|
@@ -1385,6 +1417,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1385
1417
|
});
|
|
1386
1418
|
}
|
|
1387
1419
|
finally {
|
|
1420
|
+
if (originalCommon !== undefined) {
|
|
1421
|
+
this._vm._common = originalCommon;
|
|
1422
|
+
}
|
|
1388
1423
|
await this._stateManager.setStateRoot(initialStateRoot);
|
|
1389
1424
|
}
|
|
1390
1425
|
}
|
|
@@ -1447,12 +1482,17 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1447
1482
|
async _persistIrregularWorldState() {
|
|
1448
1483
|
this._irregularStatesByBlockNumber.set((await this.getLatestBlock()).header.number.toString(), await this._stateManager.getStateRoot());
|
|
1449
1484
|
}
|
|
1450
|
-
isEip1559Active() {
|
|
1485
|
+
isEip1559Active(blockNumberOrPending) {
|
|
1486
|
+
if (blockNumberOrPending !== undefined &&
|
|
1487
|
+
blockNumberOrPending !== "pending") {
|
|
1488
|
+
return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
|
|
1489
|
+
}
|
|
1451
1490
|
return this._vm._common.gteHardfork("london");
|
|
1452
1491
|
}
|
|
1453
1492
|
async _getEstimateGasFeePriceFields(callParams, blockNumberOrPending) {
|
|
1454
1493
|
var _a, _b;
|
|
1455
|
-
if (!this.isEip1559Active() ||
|
|
1494
|
+
if (!this.isEip1559Active(blockNumberOrPending) ||
|
|
1495
|
+
callParams.gasPrice !== undefined) {
|
|
1456
1496
|
return { gasPrice: (_a = callParams.gasPrice) !== null && _a !== void 0 ? _a : (await this.getGasPrice()) };
|
|
1457
1497
|
}
|
|
1458
1498
|
let maxFeePerGas = callParams.maxFeePerGas;
|
|
@@ -1475,16 +1515,41 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1475
1515
|
}
|
|
1476
1516
|
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
1477
1517
|
}
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1518
|
+
_selectHardfork(blockNumber) {
|
|
1519
|
+
if (this._forkBlockNumber === undefined ||
|
|
1520
|
+
blockNumber.gte(new ethereumjs_util_1.BN(this._forkBlockNumber))) {
|
|
1521
|
+
return this._vm._common.hardfork();
|
|
1522
|
+
}
|
|
1523
|
+
if (this._hardforkActivations.size === 0) {
|
|
1524
|
+
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/hardhat-network/guides/mainnet-forking.html#using-a-custom-hardfork-history`);
|
|
1525
|
+
}
|
|
1526
|
+
/** search this._hardforkActivations for the highest block number that
|
|
1527
|
+
* isn't higher than blockNumber, and then return that found block number's
|
|
1528
|
+
* associated hardfork name. */
|
|
1529
|
+
const hardforkHistory = Array.from(this._hardforkActivations.entries());
|
|
1530
|
+
const [hardfork, activationBlock] = hardforkHistory.reduce(([highestHardfork, highestBlock], [thisHardfork, thisBlock]) => thisBlock > highestBlock && new ethereumjs_util_1.BN(thisBlock).lte(blockNumber)
|
|
1531
|
+
? [thisHardfork, thisBlock]
|
|
1532
|
+
: [highestHardfork, highestBlock]);
|
|
1533
|
+
if (hardfork === undefined || blockNumber.ltn(activationBlock)) {
|
|
1534
|
+
throw new errors_2.InternalError(`Could not find a hardfork to run for block ${blockNumber}, after having looked for one in the HardhatNode's hardfork activation history, which was: ${JSON.stringify(hardforkHistory)}. For more information, see https://hardhat.org/hardhat-network/reference/#config`);
|
|
1535
|
+
}
|
|
1536
|
+
if (!constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardfork)) {
|
|
1537
|
+
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(", ")}`);
|
|
1538
|
+
}
|
|
1539
|
+
return hardfork;
|
|
1485
1540
|
}
|
|
1486
|
-
|
|
1487
|
-
|
|
1541
|
+
_getCommonForTracing(networkId, blockNumber) {
|
|
1542
|
+
try {
|
|
1543
|
+
const common = new common_1.default({
|
|
1544
|
+
chain: Object.assign(Object.assign({}, common_1.default["_getChainParams"]("mainnet")), { chainId: networkId, networkId }),
|
|
1545
|
+
hardfork: this._selectHardfork(new ethereumjs_util_1.BN(blockNumber)),
|
|
1546
|
+
});
|
|
1547
|
+
return common;
|
|
1548
|
+
}
|
|
1549
|
+
catch (_a) {
|
|
1550
|
+
throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
|
|
1551
|
+
}
|
|
1488
1552
|
}
|
|
1489
1553
|
}
|
|
1554
|
+
exports.HardhatNode = HardhatNode;
|
|
1490
1555
|
//# sourceMappingURL=node.js.map
|