hardhat 2.6.8 → 2.8.0
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 +21 -15
- 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 +11 -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.d.ts +49 -0
- package/internal/artifacts.d.ts.map +1 -1
- package/internal/artifacts.js +204 -68
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/analytics.js +11 -10
- 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 +16 -16
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.js +13 -13
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/constants.d.ts +2 -0
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +4 -1
- 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.map +1 -1
- package/internal/core/config/config-loading.js +21 -7
- 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 +50 -12
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/config/config-validation.d.ts +1 -0
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +151 -38
- 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 +66 -2
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors-list.js +2 -2
- package/internal/core/errors-list.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 +1 -1
- package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/log.js +5 -4
- package/internal/core/jsonrpc/types/output/log.js.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts +1 -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/params/hardhat-params.js +2 -2
- package/internal/core/params/hardhat-params.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 +6 -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.d.ts +1 -1
- package/internal/core/typescript-support.d.ts.map +1 -1
- package/internal/core/typescript-support.js +8 -5
- package/internal/core/typescript-support.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts +2 -0
- package/internal/hardhat-network/jsonrpc/client.d.ts.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.js +16 -8
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/server.js +1 -1
- 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/HardhatStateManager.js +29 -29
- package/internal/hardhat-network/provider/HardhatStateManager.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/TransactionQueue.d.ts +2 -1
- package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TransactionQueue.js +16 -2
- package/internal/hardhat-network/provider/TransactionQueue.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.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +8 -10
- 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.d.ts +2 -0
- package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +25 -15
- 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 +7 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node-types.js.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +10 -2
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +144 -75
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +1 -1
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +94 -91
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +7 -3
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +11 -4
- 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.js +3 -3
- 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 +13 -13
- 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 +17 -10
- package/src/builtin-tasks/run.ts +13 -8
- package/src/builtin-tasks/utils/watch.ts +3 -1
- package/src/internal/artifacts.ts +269 -72
- package/src/internal/cli/analytics.ts +1 -1
- package/src/internal/cli/autocomplete.ts +3 -3
- package/src/internal/cli/bootstrap.ts +1 -1
- package/src/internal/cli/cli.ts +2 -2
- package/src/internal/cli/project-creation.ts +2 -2
- package/src/internal/constants.ts +4 -0
- package/src/internal/context.ts +1 -1
- package/src/internal/core/config/config-loading.ts +24 -2
- package/src/internal/core/config/config-resolution.ts +61 -3
- package/src/internal/core/config/config-validation.ts +217 -15
- package/src/internal/core/config/default-config.ts +66 -2
- package/src/internal/core/errors-list.ts +2 -2
- package/src/internal/core/execution-mode.ts +1 -1
- package/src/internal/core/jsonrpc/types/output/log.ts +1 -0
- package/src/internal/core/params/argumentTypes.ts +40 -25
- package/src/internal/core/params/env-variables.ts +13 -8
- package/src/internal/core/params/hardhat-params.ts +2 -2
- 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 +9 -2
- 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 +7 -3
- package/src/internal/hardhat-network/jsonrpc/client.ts +2 -2
- package/src/internal/hardhat-network/jsonrpc/handler.ts +12 -2
- package/src/internal/hardhat-network/jsonrpc/server.ts +2 -2
- package/src/internal/hardhat-network/provider/TransactionQueue.ts +31 -4
- package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +2 -4
- package/src/internal/hardhat-network/provider/modules/eth.ts +23 -21
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +15 -1
- package/src/internal/hardhat-network/provider/modules/logger.ts +13 -9
- package/src/internal/hardhat-network/provider/node-types.ts +8 -1
- package/src/internal/hardhat-network/provider/node.ts +156 -29
- package/src/internal/hardhat-network/provider/output.ts +9 -9
- package/src/internal/hardhat-network/provider/provider.ts +12 -2
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
- 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/register.ts +1 -1
- package/src/types/config.ts +42 -0
- package/src/utils/contract-names.ts +112 -0
- package/src/utils/source-names.ts +14 -12
- package/types/config.d.ts +26 -0
- package/types/config.d.ts.map +1 -1
- package/utils/contract-names.d.ts +10 -0
- package/utils/contract-names.d.ts.map +1 -1
- package/utils/contract-names.js +92 -1
- package/utils/contract-names.js.map +1 -1
- package/utils/source-names.d.ts +1 -1
- package/utils/source-names.js +8 -6
- package/utils/source-names.js.map +1 -1
- package/CHANGELOG.md +0 -54
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.HardhatNode =
|
|
6
|
+
exports.HardhatNode = void 0;
|
|
7
7
|
const block_1 = require("@ethereumjs/block");
|
|
8
8
|
const common_1 = __importDefault(require("@ethereumjs/common"));
|
|
9
9
|
const tx_1 = require("@ethereumjs/tx");
|
|
@@ -14,6 +14,7 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
14
14
|
const debug_1 = __importDefault(require("debug"));
|
|
15
15
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
16
16
|
const events_1 = __importDefault(require("events"));
|
|
17
|
+
const constants_1 = require("../../constants");
|
|
17
18
|
const default_config_1 = require("../../core/config/default-config");
|
|
18
19
|
const errors_1 = require("../../core/errors");
|
|
19
20
|
const errors_2 = require("../../core/providers/errors");
|
|
@@ -51,12 +52,11 @@ const makeForkClient_1 = require("./utils/makeForkClient");
|
|
|
51
52
|
const makeForkCommon_1 = require("./utils/makeForkCommon");
|
|
52
53
|
const putGenesisBlock_1 = require("./utils/putGenesisBlock");
|
|
53
54
|
const txMapToArray_1 = require("./utils/txMapToArray");
|
|
54
|
-
const log = debug_1.default("hardhat:core:hardhat-network:node");
|
|
55
|
+
const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
|
|
55
56
|
const ethSigUtil = require("eth-sig-util");
|
|
56
|
-
exports.COINBASE_ADDRESS = ethereumjs_util_1.Address.fromString("0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e");
|
|
57
57
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
58
58
|
class HardhatNode extends events_1.default {
|
|
59
|
-
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
|
|
59
|
+
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), _mempoolOrder, _coinbase, genesisAccounts, _configNetworkId, _configChainId, _hardforkActivations, tracingConfig, _forkNetworkId, _forkBlockNumber, nextBlockBaseFee) {
|
|
60
60
|
super();
|
|
61
61
|
this._vm = _vm;
|
|
62
62
|
this._stateManager = _stateManager;
|
|
@@ -65,7 +65,13 @@ class HardhatNode extends events_1.default {
|
|
|
65
65
|
this._automine = _automine;
|
|
66
66
|
this._minGasPrice = _minGasPrice;
|
|
67
67
|
this._blockTimeOffsetSeconds = _blockTimeOffsetSeconds;
|
|
68
|
+
this._mempoolOrder = _mempoolOrder;
|
|
69
|
+
this._coinbase = _coinbase;
|
|
70
|
+
this._configNetworkId = _configNetworkId;
|
|
71
|
+
this._configChainId = _configChainId;
|
|
72
|
+
this._hardforkActivations = _hardforkActivations;
|
|
68
73
|
this._forkNetworkId = _forkNetworkId;
|
|
74
|
+
this._forkBlockNumber = _forkBlockNumber;
|
|
69
75
|
this._localAccounts = new Map(); // address => private key
|
|
70
76
|
this._impersonatedAccounts = new Set(); // address
|
|
71
77
|
this._nextBlockTimestamp = new ethereumjs_util_1.BN(0);
|
|
@@ -90,7 +96,7 @@ class HardhatNode extends events_1.default {
|
|
|
90
96
|
}
|
|
91
97
|
try {
|
|
92
98
|
for (const buildInfo of tracingConfig.buildInfos) {
|
|
93
|
-
const bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
99
|
+
const bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
94
100
|
for (const bytecode of bytecodes) {
|
|
95
101
|
this._vmTraceDecoder.addBytecode(bytecode);
|
|
96
102
|
}
|
|
@@ -99,37 +105,42 @@ class HardhatNode extends events_1.default {
|
|
|
99
105
|
catch (error) {
|
|
100
106
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be initialized. Run Hardhat with --verbose to learn more."));
|
|
101
107
|
log("Hardhat Network tracing disabled: ContractsIdentifier failed to be initialized. Please report this to help us improve Hardhat.\n", error);
|
|
102
|
-
|
|
108
|
+
if (error instanceof Error) {
|
|
109
|
+
reporter_1.Reporter.reportError(error);
|
|
110
|
+
}
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
113
|
static async create(config) {
|
|
106
|
-
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, } = config;
|
|
114
|
+
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, mempoolOrder, networkId, chainId, } = config;
|
|
107
115
|
let common;
|
|
108
116
|
let stateManager;
|
|
109
117
|
let blockchain;
|
|
110
118
|
let initialBlockTimeOffset;
|
|
111
119
|
let nextBlockBaseFeePerGas;
|
|
112
120
|
let forkNetworkId;
|
|
121
|
+
let forkBlockNum;
|
|
122
|
+
let hardforkActivations = new Map();
|
|
113
123
|
const initialBaseFeePerGasConfig = config.initialBaseFeePerGas !== undefined
|
|
114
124
|
? new ethereumjs_util_1.BN(config.initialBaseFeePerGas)
|
|
115
125
|
: undefined;
|
|
116
|
-
const hardfork = hardforks_1.getHardforkName(config.hardfork);
|
|
117
|
-
if (node_types_1.isForkedNodeConfig(config)) {
|
|
118
|
-
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await makeForkClient_1.makeForkClient(config.forkConfig, config.forkCachePath);
|
|
119
|
-
common = await makeForkCommon_1.makeForkCommon(config);
|
|
126
|
+
const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
|
|
127
|
+
if ((0, node_types_1.isForkedNodeConfig)(config)) {
|
|
128
|
+
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await (0, makeForkClient_1.makeForkClient)(config.forkConfig, config.forkCachePath);
|
|
129
|
+
common = await (0, makeForkCommon_1.makeForkCommon)(config);
|
|
120
130
|
forkNetworkId = forkClient.getNetworkId();
|
|
131
|
+
forkBlockNum = forkBlockNumber.toNumber();
|
|
121
132
|
this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
|
|
122
133
|
const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
|
|
123
134
|
await forkStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
124
135
|
stateManager = forkStateManager;
|
|
125
136
|
blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
|
|
126
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(new Date(forkBlockTimestamp), new Date()));
|
|
137
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
|
|
127
138
|
// If the hardfork is London or later we need a base fee per gas for the
|
|
128
139
|
// first local block. If initialBaseFeePerGas config was provided we use
|
|
129
140
|
// that. Otherwise, what we do depends on the block we forked from. If
|
|
130
141
|
// it's an EIP-1559 block we don't need to do anything here, as we'll
|
|
131
142
|
// end up automatically computing the next base fee per gas based on it.
|
|
132
|
-
if (hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
143
|
+
if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
133
144
|
if (initialBaseFeePerGasConfig !== undefined) {
|
|
134
145
|
nextBlockBaseFeePerGas = initialBaseFeePerGasConfig;
|
|
135
146
|
}
|
|
@@ -140,18 +151,22 @@ class HardhatNode extends events_1.default {
|
|
|
140
151
|
}
|
|
141
152
|
}
|
|
142
153
|
}
|
|
154
|
+
if (config.chains.has(forkNetworkId)) {
|
|
155
|
+
hardforkActivations = config.chains.get(forkNetworkId).hardforkHistory;
|
|
156
|
+
}
|
|
143
157
|
}
|
|
144
158
|
else {
|
|
145
159
|
const hardhatStateManager = new HardhatStateManager_1.HardhatStateManager();
|
|
146
160
|
await hardhatStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
147
161
|
const initialStateRoot = await hardhatStateManager.getStateRoot();
|
|
148
|
-
common = makeCommon_1.makeCommon(config, initialStateRoot);
|
|
162
|
+
common = (0, makeCommon_1.makeCommon)(config, initialStateRoot);
|
|
149
163
|
const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain();
|
|
150
|
-
const genesisBlockBaseFeePerGas = hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)
|
|
151
|
-
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
152
|
-
|
|
164
|
+
const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
|
|
165
|
+
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
166
|
+
: undefined;
|
|
167
|
+
await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, genesisBlockBaseFeePerGas);
|
|
153
168
|
if (config.initialDate !== undefined) {
|
|
154
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(config.initialDate, new Date()));
|
|
169
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
|
|
155
170
|
}
|
|
156
171
|
blockchain = hardhatBlockchain;
|
|
157
172
|
stateManager = hardhatStateManager;
|
|
@@ -164,7 +179,7 @@ class HardhatNode extends events_1.default {
|
|
|
164
179
|
blockchain: blockchain,
|
|
165
180
|
allowUnlimitedContractSize,
|
|
166
181
|
});
|
|
167
|
-
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
|
|
182
|
+
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, networkId, chainId, hardforkActivations, tracingConfig, forkNetworkId, forkBlockNum, nextBlockBaseFeePerGas);
|
|
168
183
|
return [common, node];
|
|
169
184
|
}
|
|
170
185
|
static _validateHardforks(forkBlockNumber, common, remoteChainId) {
|
|
@@ -178,7 +193,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
|
|
|
178
193
|
try {
|
|
179
194
|
upstreamCommon = new common_1.default({ chain: remoteChainId });
|
|
180
195
|
}
|
|
181
|
-
catch (
|
|
196
|
+
catch (_a) {
|
|
182
197
|
// If ethereumjs doesn't have a common it will throw and we won't have
|
|
183
198
|
// info about the activation block of each hardfork, so we don't run
|
|
184
199
|
// this validation.
|
|
@@ -193,7 +208,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
193
208
|
}
|
|
194
209
|
}
|
|
195
210
|
async getSignedTransaction(txParams) {
|
|
196
|
-
const senderAddress = ethereumjs_util_1.bufferToHex(txParams.from);
|
|
211
|
+
const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
|
|
197
212
|
const pk = this._localAccounts.get(senderAddress);
|
|
198
213
|
if (pk !== undefined) {
|
|
199
214
|
let tx;
|
|
@@ -239,14 +254,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
239
254
|
result = await this._mineBlockWithPendingTxs(blockTimestamp);
|
|
240
255
|
}
|
|
241
256
|
catch (err) {
|
|
242
|
-
if (err
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
257
|
+
if (err instanceof Error) {
|
|
258
|
+
if (err === null || err === void 0 ? void 0 : err.message.includes("sender doesn't have enough funds")) {
|
|
259
|
+
throw new errors_2.InvalidInputError(err.message, err);
|
|
260
|
+
}
|
|
261
|
+
// Some network errors are HardhatErrors, and can end up here when forking
|
|
262
|
+
if (errors_1.HardhatError.isHardhatError(err)) {
|
|
263
|
+
throw err;
|
|
264
|
+
}
|
|
265
|
+
throw new errors_2.TransactionExecutionError(err);
|
|
248
266
|
}
|
|
249
|
-
|
|
267
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
268
|
+
throw err;
|
|
250
269
|
}
|
|
251
270
|
await this._saveBlockAsSuccessfullyRun(result.block, result.blockResult);
|
|
252
271
|
if (needsTimestampIncrease) {
|
|
@@ -263,7 +282,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
263
282
|
var _a, _b, _c, _d;
|
|
264
283
|
let txParams;
|
|
265
284
|
const nonce = await this._getNonce(new ethereumjs_util_1.Address(call.from), blockNumberOrPending);
|
|
266
|
-
if (call.gasPrice !== undefined ||
|
|
285
|
+
if (call.gasPrice !== undefined ||
|
|
286
|
+
!this.isEip1559Active(blockNumberOrPending)) {
|
|
267
287
|
txParams = Object.assign({ gasPrice: new ethereumjs_util_1.BN(0), nonce }, call);
|
|
268
288
|
}
|
|
269
289
|
else {
|
|
@@ -294,8 +314,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
294
314
|
}
|
|
295
315
|
async getCodeFromTrace(trace, blockNumberOrPending) {
|
|
296
316
|
if (trace === undefined ||
|
|
297
|
-
message_trace_1.isPrecompileTrace(trace) ||
|
|
298
|
-
message_trace_1.isCreateTrace(trace)) {
|
|
317
|
+
(0, message_trace_1.isPrecompileTrace)(trace) ||
|
|
318
|
+
(0, message_trace_1.isCreateTrace)(trace)) {
|
|
299
319
|
return Buffer.from("");
|
|
300
320
|
}
|
|
301
321
|
return this.getCode(new ethereumjs_util_1.Address(trace.address), blockNumberOrPending);
|
|
@@ -385,7 +405,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
385
405
|
return new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS);
|
|
386
406
|
}
|
|
387
407
|
getCoinbaseAddress() {
|
|
388
|
-
return
|
|
408
|
+
return ethereumjs_util_1.Address.fromString(this._coinbase);
|
|
389
409
|
}
|
|
390
410
|
async getStorageAt(address, positionIndex, blockNumberOrPending) {
|
|
391
411
|
const key = positionIndex.toArrayLike(Buffer, "be", 32);
|
|
@@ -457,19 +477,19 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
457
477
|
return (_a = this._txPool.getTransactionByHash(hash)) === null || _a === void 0 ? void 0 : _a.data;
|
|
458
478
|
}
|
|
459
479
|
async getTransactionReceipt(hash) {
|
|
460
|
-
const hashBuffer = hash instanceof Buffer ? hash : ethereumjs_util_1.toBuffer(hash);
|
|
480
|
+
const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
|
|
461
481
|
const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
|
|
462
482
|
return receipt !== null && receipt !== void 0 ? receipt : undefined;
|
|
463
483
|
}
|
|
464
484
|
async getPendingTransactions() {
|
|
465
|
-
const txPoolPending = txMapToArray_1.txMapToArray(this._txPool.getPendingTransactions());
|
|
466
|
-
const txPoolQueued = txMapToArray_1.txMapToArray(this._txPool.getQueuedTransactions());
|
|
485
|
+
const txPoolPending = (0, txMapToArray_1.txMapToArray)(this._txPool.getPendingTransactions());
|
|
486
|
+
const txPoolQueued = (0, txMapToArray_1.txMapToArray)(this._txPool.getQueuedTransactions());
|
|
467
487
|
return txPoolPending.concat(txPoolQueued);
|
|
468
488
|
}
|
|
469
489
|
async signPersonalMessage(address, data) {
|
|
470
|
-
const messageHash = ethereumjs_util_1.hashPersonalMessage(data);
|
|
490
|
+
const messageHash = (0, ethereumjs_util_1.hashPersonalMessage)(data);
|
|
471
491
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
472
|
-
return ethereumjs_util_1.ecsign(messageHash, privateKey);
|
|
492
|
+
return (0, ethereumjs_util_1.ecsign)(messageHash, privateKey);
|
|
473
493
|
}
|
|
474
494
|
async signTypedDataV4(address, typedData) {
|
|
475
495
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
@@ -492,6 +512,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
492
512
|
nextBlockTimestamp: this.getNextBlockTimestamp(),
|
|
493
513
|
irregularStatesByBlockNumber: this._irregularStatesByBlockNumber,
|
|
494
514
|
userProvidedNextBlockBaseFeePerGas: this.getUserProvidedNextBlockBaseFeePerGas(),
|
|
515
|
+
coinbase: this.getCoinbaseAddress().toString(),
|
|
495
516
|
};
|
|
496
517
|
this._irregularStatesByBlockNumber = new Map(this._irregularStatesByBlockNumber);
|
|
497
518
|
this._snapshots.push(snapshot);
|
|
@@ -528,6 +549,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
528
549
|
else {
|
|
529
550
|
this._resetUserProvidedNextBlockBaseFeePerGas();
|
|
530
551
|
}
|
|
552
|
+
this._coinbase = snapshot.coinbase;
|
|
531
553
|
// We delete this and the following snapshots, as they can only be used
|
|
532
554
|
// once in Ganache
|
|
533
555
|
this._snapshots.splice(snapshotIndex);
|
|
@@ -559,7 +581,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
559
581
|
id: filterId,
|
|
560
582
|
type: filter_1.Type.BLOCK_SUBSCRIPTION,
|
|
561
583
|
deadline: this._newDeadline(),
|
|
562
|
-
hashes: [ethereumjs_util_1.bufferToHex(block.header.hash())],
|
|
584
|
+
hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
|
|
563
585
|
logs: [],
|
|
564
586
|
subscription: isSubscription,
|
|
565
587
|
});
|
|
@@ -628,7 +650,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
628
650
|
async addCompilationResult(solcVersion, compilerInput, compilerOutput) {
|
|
629
651
|
let bytecodes;
|
|
630
652
|
try {
|
|
631
|
-
bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(solcVersion, compilerInput, compilerOutput);
|
|
653
|
+
bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(solcVersion, compilerInput, compilerOutput);
|
|
632
654
|
}
|
|
633
655
|
catch (error) {
|
|
634
656
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be updated. Run Hardhat with --verbose to learn more."));
|
|
@@ -641,11 +663,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
641
663
|
return true;
|
|
642
664
|
}
|
|
643
665
|
addImpersonatedAccount(address) {
|
|
644
|
-
this._impersonatedAccounts.add(ethereumjs_util_1.bufferToHex(address));
|
|
666
|
+
this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
|
|
645
667
|
return true;
|
|
646
668
|
}
|
|
647
669
|
removeImpersonatedAccount(address) {
|
|
648
|
-
return this._impersonatedAccounts.delete(ethereumjs_util_1.bufferToHex(address));
|
|
670
|
+
return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
|
|
649
671
|
}
|
|
650
672
|
setAutomine(automine) {
|
|
651
673
|
this._automine = automine;
|
|
@@ -667,7 +689,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
667
689
|
}
|
|
668
690
|
const isTransactionMined = await this._isTransactionMined(hash);
|
|
669
691
|
if (isTransactionMined) {
|
|
670
|
-
throw new errors_2.InvalidArgumentsError(`Transaction ${ethereumjs_util_1.bufferToHex(hash)} cannot be dropped because it's already mined`);
|
|
692
|
+
throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
|
|
671
693
|
}
|
|
672
694
|
return false;
|
|
673
695
|
}
|
|
@@ -700,7 +722,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
700
722
|
async traceTransaction(hash, config) {
|
|
701
723
|
const block = await this.getBlockByTransactionHash(hash);
|
|
702
724
|
if (block === undefined) {
|
|
703
|
-
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${ethereumjs_util_1.bufferToHex(hash)}`);
|
|
725
|
+
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
|
|
704
726
|
}
|
|
705
727
|
return this._runInBlockContext(new ethereumjs_util_1.BN(block.header.number).subn(1), async () => {
|
|
706
728
|
const blockNumber = block.header.number.toNumber();
|
|
@@ -708,8 +730,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
708
730
|
let vm = this._vm;
|
|
709
731
|
if (blockchain instanceof ForkBlockchain_1.ForkBlockchain &&
|
|
710
732
|
blockNumber <= blockchain.getForkBlockNumber().toNumber()) {
|
|
711
|
-
errors_1.assertHardhatInvariant(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
712
|
-
const common =
|
|
733
|
+
(0, errors_1.assertHardhatInvariant)(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
734
|
+
const common = this._getCommonForTracing(this._forkNetworkId, blockNumber);
|
|
713
735
|
vm = new vm_1.default({
|
|
714
736
|
common,
|
|
715
737
|
activatePrecompiles: true,
|
|
@@ -802,7 +824,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
802
824
|
baseFeePerGas.push(pendingBlock.header.calcNextBaseFee());
|
|
803
825
|
}
|
|
804
826
|
else {
|
|
805
|
-
errors_1.assertHardhatInvariant(false, "This should never happen");
|
|
827
|
+
(0, errors_1.assertHardhatInvariant)(false, "This should never happen");
|
|
806
828
|
}
|
|
807
829
|
}
|
|
808
830
|
return {
|
|
@@ -812,6 +834,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
812
834
|
reward: rewardPercentiles.length > 0 ? reward : undefined,
|
|
813
835
|
};
|
|
814
836
|
}
|
|
837
|
+
async setCoinbase(coinbase) {
|
|
838
|
+
this._coinbase = coinbase.toString();
|
|
839
|
+
}
|
|
815
840
|
_getGasUsedRatio(block) {
|
|
816
841
|
const FLOATS_PRECISION = 100000;
|
|
817
842
|
return (block.header.gasUsed
|
|
@@ -845,7 +870,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
845
870
|
}
|
|
846
871
|
return {
|
|
847
872
|
effectiveGasReward,
|
|
848
|
-
gasUsed: base_types_1.rpcQuantityToBN(r === null || r === void 0 ? void 0 : r.gasUsed),
|
|
873
|
+
gasUsed: (0, base_types_1.rpcQuantityToBN)(r === null || r === void 0 ? void 0 : r.gasUsed),
|
|
849
874
|
};
|
|
850
875
|
})
|
|
851
876
|
.sort((a, b) => a.effectiveGasReward.cmp(b.effectiveGasReward));
|
|
@@ -867,7 +892,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
867
892
|
async _addPendingTransaction(tx) {
|
|
868
893
|
await this._txPool.addTransaction(tx);
|
|
869
894
|
await this._notifyPendingTransaction(tx);
|
|
870
|
-
return ethereumjs_util_1.bufferToHex(tx.hash());
|
|
895
|
+
return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
871
896
|
}
|
|
872
897
|
async _mineTransaction(tx) {
|
|
873
898
|
await this._addPendingTransaction(tx);
|
|
@@ -923,7 +948,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
923
948
|
sender = tx.getSenderAddress(); // verifies signature as a side effect
|
|
924
949
|
}
|
|
925
950
|
catch (e) {
|
|
926
|
-
|
|
951
|
+
if (e instanceof Error) {
|
|
952
|
+
throw new errors_2.InvalidInputError(e.message);
|
|
953
|
+
}
|
|
954
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
955
|
+
throw e;
|
|
927
956
|
}
|
|
928
957
|
// validate nonce
|
|
929
958
|
const nextPendingNonce = await this._txPool.getNextPendingNonce(sender);
|
|
@@ -980,7 +1009,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
980
1009
|
const blockGasLimit = this.getBlockGasLimit();
|
|
981
1010
|
const minTxFee = this._getMinimalTransactionFee();
|
|
982
1011
|
const pendingTxs = this._txPool.getPendingTransactions();
|
|
983
|
-
const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, headerData.baseFeePerGas);
|
|
1012
|
+
const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, this._mempoolOrder, headerData.baseFeePerGas);
|
|
984
1013
|
let tx = transactionQueue.getNextTransaction();
|
|
985
1014
|
const results = [];
|
|
986
1015
|
const receipts = [];
|
|
@@ -1058,9 +1087,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1058
1087
|
this._snapshots.splice(snapshotIndex);
|
|
1059
1088
|
}
|
|
1060
1089
|
_initLocalAccounts(genesisAccounts) {
|
|
1061
|
-
const privateKeys = genesisAccounts.map((acc) => ethereumjs_util_1.toBuffer(acc.privateKey));
|
|
1090
|
+
const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
|
|
1062
1091
|
for (const pk of privateKeys) {
|
|
1063
|
-
this._localAccounts.set(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.privateToAddress(pk)), pk);
|
|
1092
|
+
this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
|
|
1064
1093
|
}
|
|
1065
1094
|
}
|
|
1066
1095
|
async _getConsoleLogMessages(vmTrace, vmTracerError) {
|
|
@@ -1098,7 +1127,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1098
1127
|
if (error.error === exceptions_1.ERROR.OUT_OF_GAS) {
|
|
1099
1128
|
if (stackTrace !== undefined &&
|
|
1100
1129
|
this._isContractTooLargeStackTrace(stackTrace)) {
|
|
1101
|
-
return solidity_errors_1.encodeSolidityStackTrace("Transaction ran out of gas", stackTrace);
|
|
1130
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)("Transaction ran out of gas", stackTrace);
|
|
1102
1131
|
}
|
|
1103
1132
|
return new errors_2.TransactionExecutionError("Transaction ran out of gas");
|
|
1104
1133
|
}
|
|
@@ -1120,12 +1149,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1120
1149
|
if (error.error === exceptions_1.ERROR.REVERT) {
|
|
1121
1150
|
const fallbackMessage = `VM Exception while processing transaction: revert ${returnDataExplanation}`;
|
|
1122
1151
|
if (stackTrace !== undefined) {
|
|
1123
|
-
return solidity_errors_1.encodeSolidityStackTrace(fallbackMessage, stackTrace);
|
|
1152
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(fallbackMessage, stackTrace);
|
|
1124
1153
|
}
|
|
1125
1154
|
return new errors_2.TransactionExecutionError(fallbackMessage);
|
|
1126
1155
|
}
|
|
1127
1156
|
if (stackTrace !== undefined) {
|
|
1128
|
-
return solidity_errors_1.encodeSolidityStackTrace(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1157
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1129
1158
|
}
|
|
1130
1159
|
return new errors_2.TransactionExecutionError(`Transaction reverted ${returnDataExplanation}`);
|
|
1131
1160
|
}
|
|
@@ -1138,7 +1167,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1138
1167
|
let blockTimestamp;
|
|
1139
1168
|
let offsetShouldChange;
|
|
1140
1169
|
let newOffset = new ethereumjs_util_1.BN(0);
|
|
1141
|
-
const currentTimestamp = new ethereumjs_util_1.BN(getCurrentTimestamp_1.getCurrentTimestamp());
|
|
1170
|
+
const currentTimestamp = new ethereumjs_util_1.BN((0, getCurrentTimestamp_1.getCurrentTimestamp)());
|
|
1142
1171
|
// if timestamp is not provided, we check nextBlockTimestamp, if it is
|
|
1143
1172
|
// set, we use it as the timestamp instead. If it is not set, we use
|
|
1144
1173
|
// time offset + real time as the timestamp.
|
|
@@ -1167,7 +1196,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1167
1196
|
async _notifyPendingTransaction(tx) {
|
|
1168
1197
|
this._filters.forEach((filter) => {
|
|
1169
1198
|
if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
|
|
1170
|
-
const hash = ethereumjs_util_1.bufferToHex(tx.hash());
|
|
1199
|
+
const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
1171
1200
|
if (filter.subscription) {
|
|
1172
1201
|
this._emitEthEvent(filter.id, hash);
|
|
1173
1202
|
return;
|
|
@@ -1188,7 +1217,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1188
1217
|
* was added to the blockchain.
|
|
1189
1218
|
*/
|
|
1190
1219
|
async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
|
|
1191
|
-
const receipts = output_1.getRpcReceiptOutputsFromLocalBlockExecution(block, runBlockResult, output_1.shouldShowTransactionTypeForHardfork(this._vm._common));
|
|
1220
|
+
const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
|
|
1192
1221
|
this._blockchain.addTransactionReceipts(receipts);
|
|
1193
1222
|
const td = await this.getBlockTotalDifficulty(block);
|
|
1194
1223
|
const rpcLogs = [];
|
|
@@ -1203,14 +1232,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1203
1232
|
case filter_1.Type.BLOCK_SUBSCRIPTION:
|
|
1204
1233
|
const hash = block.hash();
|
|
1205
1234
|
if (filter.subscription) {
|
|
1206
|
-
this._emitEthEvent(filter.id, output_1.getRpcBlock(block, td, output_1.shouldShowTransactionTypeForHardfork(this._vm._common), false));
|
|
1235
|
+
this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
|
|
1207
1236
|
return;
|
|
1208
1237
|
}
|
|
1209
|
-
filter.hashes.push(ethereumjs_util_1.bufferToHex(hash));
|
|
1238
|
+
filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
|
|
1210
1239
|
break;
|
|
1211
1240
|
case filter_1.Type.LOGS_SUBSCRIPTION:
|
|
1212
|
-
if (filter_1.bloomFilter(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1213
|
-
const logs = filter_1.filterLogs(rpcLogs, filter.criteria);
|
|
1241
|
+
if ((0, filter_1.bloomFilter)(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1242
|
+
const logs = (0, filter_1.filterLogs)(rpcLogs, filter.criteria);
|
|
1214
1243
|
if (logs.length === 0) {
|
|
1215
1244
|
return;
|
|
1216
1245
|
}
|
|
@@ -1333,8 +1362,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1333
1362
|
* makes.
|
|
1334
1363
|
*/
|
|
1335
1364
|
async _runTxAndRevertMutations(tx, blockNumberOrPending, forceBaseFeeZero = false) {
|
|
1365
|
+
var _a, _b;
|
|
1336
1366
|
const initialStateRoot = await this._stateManager.getStateRoot();
|
|
1337
1367
|
let blockContext;
|
|
1368
|
+
let originalCommon;
|
|
1338
1369
|
try {
|
|
1339
1370
|
if (blockNumberOrPending === "pending") {
|
|
1340
1371
|
// the new block has already been mined by _runInBlockContext hence we take latest here
|
|
@@ -1344,7 +1375,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1344
1375
|
// We know that this block number exists, because otherwise
|
|
1345
1376
|
// there would be an error in the RPC layer.
|
|
1346
1377
|
const block = await this.getBlockByNumber(blockNumberOrPending);
|
|
1347
|
-
errors_1.assertHardhatInvariant(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1378
|
+
(0, errors_1.assertHardhatInvariant)(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1348
1379
|
blockContext = block;
|
|
1349
1380
|
// we don't need to add the tx to the block because runTx doesn't
|
|
1350
1381
|
// know anything about the txs in the current block
|
|
@@ -1362,7 +1393,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1362
1393
|
// we don't want to debit any balance nor fail any tx when running an
|
|
1363
1394
|
// eth_call. This will make the BASEFEE option also return 0, which
|
|
1364
1395
|
// shouldn't. See: https://github.com/nomiclabs/hardhat/issues/1688
|
|
1365
|
-
if (this.isEip1559Active() &&
|
|
1396
|
+
if (this.isEip1559Active(blockNumberOrPending) &&
|
|
1366
1397
|
(blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)) {
|
|
1367
1398
|
blockContext = block_1.Block.fromBlockData(blockContext, {
|
|
1368
1399
|
freeze: false,
|
|
@@ -1370,6 +1401,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1370
1401
|
});
|
|
1371
1402
|
blockContext.header.baseFeePerGas = new ethereumjs_util_1.BN(0);
|
|
1372
1403
|
}
|
|
1404
|
+
originalCommon = this._vm._common;
|
|
1405
|
+
this._vm._common = new common_1.default({
|
|
1406
|
+
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 }),
|
|
1407
|
+
hardfork: this._selectHardfork(blockContext.header.number),
|
|
1408
|
+
});
|
|
1373
1409
|
return await this._vm.runTx({
|
|
1374
1410
|
block: blockContext,
|
|
1375
1411
|
tx,
|
|
@@ -1379,6 +1415,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1379
1415
|
});
|
|
1380
1416
|
}
|
|
1381
1417
|
finally {
|
|
1418
|
+
if (originalCommon !== undefined) {
|
|
1419
|
+
this._vm._common = originalCommon;
|
|
1420
|
+
}
|
|
1382
1421
|
await this._stateManager.setStateRoot(initialStateRoot);
|
|
1383
1422
|
}
|
|
1384
1423
|
}
|
|
@@ -1441,12 +1480,17 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1441
1480
|
async _persistIrregularWorldState() {
|
|
1442
1481
|
this._irregularStatesByBlockNumber.set((await this.getLatestBlock()).header.number.toString(), await this._stateManager.getStateRoot());
|
|
1443
1482
|
}
|
|
1444
|
-
isEip1559Active() {
|
|
1483
|
+
isEip1559Active(blockNumberOrPending) {
|
|
1484
|
+
if (blockNumberOrPending !== undefined &&
|
|
1485
|
+
blockNumberOrPending !== "pending") {
|
|
1486
|
+
return this._vm._common.hardforkGteHardfork(this._selectHardfork(blockNumberOrPending), "london");
|
|
1487
|
+
}
|
|
1445
1488
|
return this._vm._common.gteHardfork("london");
|
|
1446
1489
|
}
|
|
1447
1490
|
async _getEstimateGasFeePriceFields(callParams, blockNumberOrPending) {
|
|
1448
1491
|
var _a, _b;
|
|
1449
|
-
if (!this.isEip1559Active() ||
|
|
1492
|
+
if (!this.isEip1559Active(blockNumberOrPending) ||
|
|
1493
|
+
callParams.gasPrice !== undefined) {
|
|
1450
1494
|
return { gasPrice: (_a = callParams.gasPrice) !== null && _a !== void 0 ? _a : (await this.getGasPrice()) };
|
|
1451
1495
|
}
|
|
1452
1496
|
let maxFeePerGas = callParams.maxFeePerGas;
|
|
@@ -1469,16 +1513,41 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1469
1513
|
}
|
|
1470
1514
|
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
1471
1515
|
}
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1516
|
+
_selectHardfork(blockNumber) {
|
|
1517
|
+
if (this._forkBlockNumber === undefined ||
|
|
1518
|
+
blockNumber.gte(new ethereumjs_util_1.BN(this._forkBlockNumber))) {
|
|
1519
|
+
return this._vm._common.hardfork();
|
|
1520
|
+
}
|
|
1521
|
+
if (this._hardforkActivations.size === 0) {
|
|
1522
|
+
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`);
|
|
1523
|
+
}
|
|
1524
|
+
/** search this._hardforkActivations for the highest block number that
|
|
1525
|
+
* isn't higher than blockNumber, and then return that found block number's
|
|
1526
|
+
* associated hardfork name. */
|
|
1527
|
+
const hardforkHistory = Array.from(this._hardforkActivations.entries());
|
|
1528
|
+
const [hardfork, activationBlock] = hardforkHistory.reduce(([highestHardfork, highestBlock], [thisHardfork, thisBlock]) => thisBlock > highestBlock && new ethereumjs_util_1.BN(thisBlock).lte(blockNumber)
|
|
1529
|
+
? [thisHardfork, thisBlock]
|
|
1530
|
+
: [highestHardfork, highestBlock]);
|
|
1531
|
+
if (hardfork === undefined || blockNumber.ltn(activationBlock)) {
|
|
1532
|
+
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`);
|
|
1533
|
+
}
|
|
1534
|
+
if (!constants_1.HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardfork)) {
|
|
1535
|
+
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(", ")}`);
|
|
1536
|
+
}
|
|
1537
|
+
return hardfork;
|
|
1479
1538
|
}
|
|
1480
|
-
|
|
1481
|
-
|
|
1539
|
+
_getCommonForTracing(networkId, blockNumber) {
|
|
1540
|
+
try {
|
|
1541
|
+
const common = new common_1.default({
|
|
1542
|
+
chain: Object.assign(Object.assign({}, common_1.default["_getChainParams"]("mainnet")), { chainId: networkId, networkId }),
|
|
1543
|
+
hardfork: this._selectHardfork(new ethereumjs_util_1.BN(blockNumber)),
|
|
1544
|
+
});
|
|
1545
|
+
return common;
|
|
1546
|
+
}
|
|
1547
|
+
catch (_a) {
|
|
1548
|
+
throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
|
|
1549
|
+
}
|
|
1482
1550
|
}
|
|
1483
1551
|
}
|
|
1552
|
+
exports.HardhatNode = HardhatNode;
|
|
1484
1553
|
//# sourceMappingURL=node.js.map
|