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
|
@@ -27,6 +27,8 @@ import {
|
|
|
27
27
|
import EventEmitter from "events";
|
|
28
28
|
|
|
29
29
|
import { CompilerInput, CompilerOutput } from "../../../types";
|
|
30
|
+
import { HardforkHistoryConfig } from "../../../types/config";
|
|
31
|
+
import { HARDHAT_NETWORK_SUPPORTED_HARDFORKS } from "../../constants";
|
|
30
32
|
import {
|
|
31
33
|
HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS,
|
|
32
34
|
HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS,
|
|
@@ -82,6 +84,7 @@ import {
|
|
|
82
84
|
GatherTracesResult,
|
|
83
85
|
GenesisAccount,
|
|
84
86
|
isForkedNodeConfig,
|
|
87
|
+
MempoolOrder,
|
|
85
88
|
MineBlockResult,
|
|
86
89
|
NodeConfig,
|
|
87
90
|
RunCallResult,
|
|
@@ -115,10 +118,6 @@ const log = debug("hardhat:core:hardhat-network:node");
|
|
|
115
118
|
|
|
116
119
|
const ethSigUtil = require("eth-sig-util");
|
|
117
120
|
|
|
118
|
-
export const COINBASE_ADDRESS = Address.fromString(
|
|
119
|
-
"0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e"
|
|
120
|
-
);
|
|
121
|
-
|
|
122
121
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
123
122
|
|
|
124
123
|
export class HardhatNode extends EventEmitter {
|
|
@@ -132,6 +131,9 @@ export class HardhatNode extends EventEmitter {
|
|
|
132
131
|
allowUnlimitedContractSize,
|
|
133
132
|
tracingConfig,
|
|
134
133
|
minGasPrice,
|
|
134
|
+
mempoolOrder,
|
|
135
|
+
networkId,
|
|
136
|
+
chainId,
|
|
135
137
|
} = config;
|
|
136
138
|
|
|
137
139
|
let common: Common;
|
|
@@ -140,6 +142,8 @@ export class HardhatNode extends EventEmitter {
|
|
|
140
142
|
let initialBlockTimeOffset: BN | undefined;
|
|
141
143
|
let nextBlockBaseFeePerGas: BN | undefined;
|
|
142
144
|
let forkNetworkId: number | undefined;
|
|
145
|
+
let forkBlockNum: number | undefined;
|
|
146
|
+
let hardforkActivations: HardforkHistoryConfig = new Map();
|
|
143
147
|
|
|
144
148
|
const initialBaseFeePerGasConfig =
|
|
145
149
|
config.initialBaseFeePerGas !== undefined
|
|
@@ -154,6 +158,7 @@ export class HardhatNode extends EventEmitter {
|
|
|
154
158
|
common = await makeForkCommon(config);
|
|
155
159
|
|
|
156
160
|
forkNetworkId = forkClient.getNetworkId();
|
|
161
|
+
forkBlockNum = forkBlockNumber.toNumber();
|
|
157
162
|
|
|
158
163
|
this._validateHardforks(
|
|
159
164
|
config.forkConfig.blockNumber,
|
|
@@ -191,6 +196,10 @@ export class HardhatNode extends EventEmitter {
|
|
|
191
196
|
}
|
|
192
197
|
}
|
|
193
198
|
}
|
|
199
|
+
|
|
200
|
+
if (config.chains.has(forkNetworkId)) {
|
|
201
|
+
hardforkActivations = config.chains.get(forkNetworkId)!.hardforkHistory;
|
|
202
|
+
}
|
|
194
203
|
} else {
|
|
195
204
|
const hardhatStateManager = new HardhatStateManager();
|
|
196
205
|
await hardhatStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
@@ -242,9 +251,15 @@ export class HardhatNode extends EventEmitter {
|
|
|
242
251
|
automine,
|
|
243
252
|
minGasPrice,
|
|
244
253
|
initialBlockTimeOffset,
|
|
254
|
+
mempoolOrder,
|
|
255
|
+
config.coinbase,
|
|
245
256
|
genesisAccounts,
|
|
257
|
+
networkId,
|
|
258
|
+
chainId,
|
|
259
|
+
hardforkActivations,
|
|
246
260
|
tracingConfig,
|
|
247
261
|
forkNetworkId,
|
|
262
|
+
forkBlockNum,
|
|
248
263
|
nextBlockBaseFeePerGas
|
|
249
264
|
);
|
|
250
265
|
|
|
@@ -268,7 +283,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
|
|
|
268
283
|
let upstreamCommon: Common;
|
|
269
284
|
try {
|
|
270
285
|
upstreamCommon = new Common({ chain: remoteChainId });
|
|
271
|
-
} catch
|
|
286
|
+
} catch {
|
|
272
287
|
// If ethereumjs doesn't have a common it will throw and we won't have
|
|
273
288
|
// info about the activation block of each hardfork, so we don't run
|
|
274
289
|
// this validation.
|
|
@@ -315,9 +330,15 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
315
330
|
private _automine: boolean,
|
|
316
331
|
private _minGasPrice: BN,
|
|
317
332
|
private _blockTimeOffsetSeconds: BN = new BN(0),
|
|
333
|
+
private _mempoolOrder: MempoolOrder,
|
|
334
|
+
private _coinbase: string,
|
|
318
335
|
genesisAccounts: GenesisAccount[],
|
|
336
|
+
private readonly _configNetworkId: number,
|
|
337
|
+
private readonly _configChainId: number,
|
|
338
|
+
private readonly _hardforkActivations: HardforkHistoryConfig,
|
|
319
339
|
tracingConfig?: TracingConfig,
|
|
320
340
|
private _forkNetworkId?: number,
|
|
341
|
+
private _forkBlockNumber?: number,
|
|
321
342
|
nextBlockBaseFee?: BN
|
|
322
343
|
) {
|
|
323
344
|
super();
|
|
@@ -367,7 +388,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
367
388
|
error
|
|
368
389
|
);
|
|
369
390
|
|
|
370
|
-
|
|
391
|
+
if (error instanceof Error) {
|
|
392
|
+
Reporter.reportError(error);
|
|
393
|
+
}
|
|
371
394
|
}
|
|
372
395
|
}
|
|
373
396
|
|
|
@@ -434,16 +457,21 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
434
457
|
try {
|
|
435
458
|
result = await this._mineBlockWithPendingTxs(blockTimestamp);
|
|
436
459
|
} catch (err) {
|
|
437
|
-
if (err
|
|
438
|
-
|
|
439
|
-
|
|
460
|
+
if (err instanceof Error) {
|
|
461
|
+
if (err?.message.includes("sender doesn't have enough funds")) {
|
|
462
|
+
throw new InvalidInputError(err.message, err);
|
|
463
|
+
}
|
|
440
464
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
465
|
+
// Some network errors are HardhatErrors, and can end up here when forking
|
|
466
|
+
if (HardhatError.isHardhatError(err)) {
|
|
467
|
+
throw err;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
throw new TransactionExecutionError(err);
|
|
444
471
|
}
|
|
445
472
|
|
|
446
|
-
|
|
473
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
474
|
+
throw err;
|
|
447
475
|
}
|
|
448
476
|
|
|
449
477
|
await this._saveBlockAsSuccessfullyRun(result.block, result.blockResult);
|
|
@@ -473,7 +501,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
473
501
|
blockNumberOrPending
|
|
474
502
|
);
|
|
475
503
|
|
|
476
|
-
if (
|
|
504
|
+
if (
|
|
505
|
+
call.gasPrice !== undefined ||
|
|
506
|
+
!this.isEip1559Active(blockNumberOrPending)
|
|
507
|
+
) {
|
|
477
508
|
txParams = {
|
|
478
509
|
gasPrice: new BN(0),
|
|
479
510
|
nonce,
|
|
@@ -697,7 +728,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
697
728
|
}
|
|
698
729
|
|
|
699
730
|
public getCoinbaseAddress(): Address {
|
|
700
|
-
return
|
|
731
|
+
return Address.fromString(this._coinbase);
|
|
701
732
|
}
|
|
702
733
|
|
|
703
734
|
public async getStorageAt(
|
|
@@ -870,6 +901,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
870
901
|
irregularStatesByBlockNumber: this._irregularStatesByBlockNumber,
|
|
871
902
|
userProvidedNextBlockBaseFeePerGas:
|
|
872
903
|
this.getUserProvidedNextBlockBaseFeePerGas(),
|
|
904
|
+
coinbase: this.getCoinbaseAddress().toString(),
|
|
873
905
|
};
|
|
874
906
|
|
|
875
907
|
this._irregularStatesByBlockNumber = new Map(
|
|
@@ -924,6 +956,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
924
956
|
this._resetUserProvidedNextBlockBaseFeePerGas();
|
|
925
957
|
}
|
|
926
958
|
|
|
959
|
+
this._coinbase = snapshot.coinbase;
|
|
960
|
+
|
|
927
961
|
// We delete this and the following snapshots, as they can only be used
|
|
928
962
|
// once in Ganache
|
|
929
963
|
this._snapshots.splice(snapshotIndex);
|
|
@@ -1209,7 +1243,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1209
1243
|
"this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain"
|
|
1210
1244
|
);
|
|
1211
1245
|
|
|
1212
|
-
const common =
|
|
1246
|
+
const common = this._getCommonForTracing(
|
|
1247
|
+
this._forkNetworkId,
|
|
1248
|
+
blockNumber
|
|
1249
|
+
);
|
|
1213
1250
|
|
|
1214
1251
|
vm = new VM({
|
|
1215
1252
|
common,
|
|
@@ -1349,6 +1386,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1349
1386
|
};
|
|
1350
1387
|
}
|
|
1351
1388
|
|
|
1389
|
+
public async setCoinbase(coinbase: Address) {
|
|
1390
|
+
this._coinbase = coinbase.toString();
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1352
1393
|
private _getGasUsedRatio(block: Block): number {
|
|
1353
1394
|
const FLOATS_PRECISION = 100_000;
|
|
1354
1395
|
|
|
@@ -1499,7 +1540,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1499
1540
|
try {
|
|
1500
1541
|
sender = tx.getSenderAddress(); // verifies signature as a side effect
|
|
1501
1542
|
} catch (e) {
|
|
1502
|
-
|
|
1543
|
+
if (e instanceof Error) {
|
|
1544
|
+
throw new InvalidInputError(e.message);
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
1548
|
+
throw e;
|
|
1503
1549
|
}
|
|
1504
1550
|
|
|
1505
1551
|
// validate nonce
|
|
@@ -1579,6 +1625,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1579
1625
|
const pendingTxs = this._txPool.getPendingTransactions();
|
|
1580
1626
|
const transactionQueue = new TransactionQueue(
|
|
1581
1627
|
pendingTxs,
|
|
1628
|
+
this._mempoolOrder,
|
|
1582
1629
|
headerData.baseFeePerGas
|
|
1583
1630
|
);
|
|
1584
1631
|
|
|
@@ -2129,6 +2176,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2129
2176
|
const initialStateRoot = await this._stateManager.getStateRoot();
|
|
2130
2177
|
|
|
2131
2178
|
let blockContext: Block | undefined;
|
|
2179
|
+
let originalCommon: Common | undefined;
|
|
2132
2180
|
|
|
2133
2181
|
try {
|
|
2134
2182
|
if (blockNumberOrPending === "pending") {
|
|
@@ -2163,7 +2211,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2163
2211
|
// eth_call. This will make the BASEFEE option also return 0, which
|
|
2164
2212
|
// shouldn't. See: https://github.com/nomiclabs/hardhat/issues/1688
|
|
2165
2213
|
if (
|
|
2166
|
-
this.isEip1559Active() &&
|
|
2214
|
+
this.isEip1559Active(blockNumberOrPending) &&
|
|
2167
2215
|
(blockContext.header.baseFeePerGas === undefined || forceBaseFeeZero)
|
|
2168
2216
|
) {
|
|
2169
2217
|
blockContext = Block.fromBlockData(blockContext, {
|
|
@@ -2174,6 +2222,17 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2174
2222
|
(blockContext.header as any).baseFeePerGas = new BN(0);
|
|
2175
2223
|
}
|
|
2176
2224
|
|
|
2225
|
+
originalCommon = (this._vm as any)._common;
|
|
2226
|
+
(this._vm as any)._common = new Common({
|
|
2227
|
+
chain: {
|
|
2228
|
+
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
2229
|
+
...this._vm._common["_chainParams"],
|
|
2230
|
+
chainId: this._forkNetworkId ?? this._configChainId,
|
|
2231
|
+
networkId: this._forkNetworkId ?? this._configNetworkId,
|
|
2232
|
+
},
|
|
2233
|
+
hardfork: this._selectHardfork(blockContext.header.number),
|
|
2234
|
+
});
|
|
2235
|
+
|
|
2177
2236
|
return await this._vm.runTx({
|
|
2178
2237
|
block: blockContext,
|
|
2179
2238
|
tx,
|
|
@@ -2182,6 +2241,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2182
2241
|
skipBlockGasLimitValidation: true,
|
|
2183
2242
|
});
|
|
2184
2243
|
} finally {
|
|
2244
|
+
if (originalCommon !== undefined) {
|
|
2245
|
+
(this._vm as any)._common = originalCommon;
|
|
2246
|
+
}
|
|
2185
2247
|
await this._stateManager.setStateRoot(initialStateRoot);
|
|
2186
2248
|
}
|
|
2187
2249
|
}
|
|
@@ -2277,7 +2339,16 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2277
2339
|
);
|
|
2278
2340
|
}
|
|
2279
2341
|
|
|
2280
|
-
public isEip1559Active(): boolean {
|
|
2342
|
+
public isEip1559Active(blockNumberOrPending?: BN | "pending"): boolean {
|
|
2343
|
+
if (
|
|
2344
|
+
blockNumberOrPending !== undefined &&
|
|
2345
|
+
blockNumberOrPending !== "pending"
|
|
2346
|
+
) {
|
|
2347
|
+
return this._vm._common.hardforkGteHardfork(
|
|
2348
|
+
this._selectHardfork(blockNumberOrPending),
|
|
2349
|
+
"london"
|
|
2350
|
+
);
|
|
2351
|
+
}
|
|
2281
2352
|
return this._vm._common.gteHardfork("london");
|
|
2282
2353
|
}
|
|
2283
2354
|
|
|
@@ -2287,7 +2358,10 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2287
2358
|
): Promise<
|
|
2288
2359
|
{ gasPrice: BN } | { maxFeePerGas: BN; maxPriorityFeePerGas: BN }
|
|
2289
2360
|
> {
|
|
2290
|
-
if (
|
|
2361
|
+
if (
|
|
2362
|
+
!this.isEip1559Active(blockNumberOrPending) ||
|
|
2363
|
+
callParams.gasPrice !== undefined
|
|
2364
|
+
) {
|
|
2291
2365
|
return { gasPrice: callParams.gasPrice ?? (await this.getGasPrice()) };
|
|
2292
2366
|
}
|
|
2293
2367
|
|
|
@@ -2317,18 +2391,71 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
2317
2391
|
|
|
2318
2392
|
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
2319
2393
|
}
|
|
2320
|
-
}
|
|
2321
2394
|
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2395
|
+
private _selectHardfork(blockNumber: BN): string {
|
|
2396
|
+
if (
|
|
2397
|
+
this._forkBlockNumber === undefined ||
|
|
2398
|
+
blockNumber.gte(new BN(this._forkBlockNumber))
|
|
2399
|
+
) {
|
|
2400
|
+
return this._vm._common.hardfork() as HardforkName;
|
|
2401
|
+
}
|
|
2325
2402
|
|
|
2326
|
-
|
|
2403
|
+
if (this._hardforkActivations.size === 0) {
|
|
2404
|
+
throw new InternalError(
|
|
2405
|
+
`No known hardfork for execution on historical block ${blockNumber.toString()} (relative to fork block number ${
|
|
2406
|
+
this._forkBlockNumber
|
|
2407
|
+
}). 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`
|
|
2408
|
+
);
|
|
2409
|
+
}
|
|
2327
2410
|
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2411
|
+
/** search this._hardforkActivations for the highest block number that
|
|
2412
|
+
* isn't higher than blockNumber, and then return that found block number's
|
|
2413
|
+
* associated hardfork name. */
|
|
2414
|
+
const hardforkHistory: Array<[name: string, block: number]> = Array.from(
|
|
2415
|
+
this._hardforkActivations.entries()
|
|
2416
|
+
);
|
|
2417
|
+
const [hardfork, activationBlock] = hardforkHistory.reduce(
|
|
2418
|
+
([highestHardfork, highestBlock], [thisHardfork, thisBlock]) =>
|
|
2419
|
+
thisBlock > highestBlock && new BN(thisBlock).lte(blockNumber)
|
|
2420
|
+
? [thisHardfork, thisBlock]
|
|
2421
|
+
: [highestHardfork, highestBlock]
|
|
2332
2422
|
);
|
|
2423
|
+
if (hardfork === undefined || blockNumber.ltn(activationBlock)) {
|
|
2424
|
+
throw new InternalError(
|
|
2425
|
+
`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(
|
|
2426
|
+
hardforkHistory
|
|
2427
|
+
)}. For more information, see https://hardhat.org/hardhat-network/reference/#config`
|
|
2428
|
+
);
|
|
2429
|
+
}
|
|
2430
|
+
|
|
2431
|
+
if (!HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardfork)) {
|
|
2432
|
+
throw new InternalError(
|
|
2433
|
+
`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: ${HARDHAT_NETWORK_SUPPORTED_HARDFORKS.join(
|
|
2434
|
+
", "
|
|
2435
|
+
)}`
|
|
2436
|
+
);
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2439
|
+
return hardfork;
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
private _getCommonForTracing(networkId: number, blockNumber: number): Common {
|
|
2443
|
+
try {
|
|
2444
|
+
const common = new Common({
|
|
2445
|
+
chain: {
|
|
2446
|
+
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
2447
|
+
...Common["_getChainParams"]("mainnet"),
|
|
2448
|
+
chainId: networkId,
|
|
2449
|
+
networkId,
|
|
2450
|
+
},
|
|
2451
|
+
hardfork: this._selectHardfork(new BN(blockNumber)),
|
|
2452
|
+
});
|
|
2453
|
+
|
|
2454
|
+
return common;
|
|
2455
|
+
} catch {
|
|
2456
|
+
throw new InternalError(
|
|
2457
|
+
`Network id ${networkId} does not correspond to a network that Hardhat can trace`
|
|
2458
|
+
);
|
|
2459
|
+
}
|
|
2333
2460
|
}
|
|
2334
2461
|
}
|
|
@@ -292,18 +292,18 @@ export function getRpcReceiptOutputsFromLocalBlockExecution(
|
|
|
292
292
|
): RpcReceiptOutput[] {
|
|
293
293
|
const receipts: RpcReceiptOutput[] = [];
|
|
294
294
|
|
|
295
|
-
let
|
|
295
|
+
let blockLogIndex = 0;
|
|
296
296
|
|
|
297
297
|
for (let i = 0; i < runBlockResult.results.length; i += 1) {
|
|
298
298
|
const tx = block.transactions[i];
|
|
299
299
|
const { createdAddress, gasUsed } = runBlockResult.results[i];
|
|
300
300
|
const receipt = runBlockResult.receipts[i];
|
|
301
301
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
);
|
|
302
|
+
const logs = receipt.logs.map((log) => {
|
|
303
|
+
const result = getRpcLogOutput(log, tx, block, i, blockLogIndex);
|
|
304
|
+
blockLogIndex += 1;
|
|
305
|
+
return result;
|
|
306
|
+
});
|
|
307
307
|
|
|
308
308
|
const rpcReceipt: RpcReceiptOutput = {
|
|
309
309
|
transactionHash: bufferToRpcData(tx.hash()),
|
|
@@ -312,7 +312,7 @@ export function getRpcReceiptOutputsFromLocalBlockExecution(
|
|
|
312
312
|
blockNumber: numberToRpcQuantity(new BN(block.header.number)),
|
|
313
313
|
from: bufferToRpcData(tx.getSenderAddress().toBuffer()),
|
|
314
314
|
to: tx.to === undefined ? null : bufferToRpcData(tx.to.toBuffer()),
|
|
315
|
-
cumulativeGasUsed: numberToRpcQuantity(
|
|
315
|
+
cumulativeGasUsed: numberToRpcQuantity(new BN(receipt.gasUsed)),
|
|
316
316
|
gasUsed: numberToRpcQuantity(gasUsed),
|
|
317
317
|
contractAddress:
|
|
318
318
|
createdAddress !== undefined
|
|
@@ -395,7 +395,7 @@ export function remoteReceiptToRpcReceiptOutput(
|
|
|
395
395
|
};
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
export function toRpcLogOutput(log: RpcLog
|
|
398
|
+
export function toRpcLogOutput(log: RpcLog): RpcLogOutput {
|
|
399
399
|
return {
|
|
400
400
|
removed: false,
|
|
401
401
|
address: bufferToRpcData(log.address),
|
|
@@ -403,7 +403,7 @@ export function toRpcLogOutput(log: RpcLog, index?: number): RpcLogOutput {
|
|
|
403
403
|
blockNumber:
|
|
404
404
|
log.blockNumber !== null ? numberToRpcQuantity(log.blockNumber) : null,
|
|
405
405
|
data: bufferToRpcData(log.data),
|
|
406
|
-
logIndex:
|
|
406
|
+
logIndex: log.logIndex !== null ? numberToRpcQuantity(log.logIndex) : null,
|
|
407
407
|
transactionIndex:
|
|
408
408
|
log.transactionIndex !== null
|
|
409
409
|
? numberToRpcQuantity(log.transactionIndex)
|
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
BoundExperimentalHardhatNetworkMessageTraceHook,
|
|
12
12
|
EIP1193Provider,
|
|
13
13
|
EthSubscription,
|
|
14
|
+
HardhatNetworkChainsConfig,
|
|
14
15
|
RequestArguments,
|
|
15
16
|
} from "../../../types";
|
|
16
17
|
import {
|
|
@@ -40,6 +41,7 @@ import {
|
|
|
40
41
|
ForkConfig,
|
|
41
42
|
GenesisAccount,
|
|
42
43
|
IntervalMiningConfig,
|
|
44
|
+
MempoolOrder,
|
|
43
45
|
NodeConfig,
|
|
44
46
|
TracingConfig,
|
|
45
47
|
} from "./node-types";
|
|
@@ -54,6 +56,8 @@ const PRIVATE_RPC_METHODS = new Set([
|
|
|
54
56
|
|
|
55
57
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
56
58
|
|
|
59
|
+
export const DEFAULT_COINBASE = "0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e";
|
|
60
|
+
|
|
57
61
|
export class HardhatNetworkProvider
|
|
58
62
|
extends EventEmitter
|
|
59
63
|
implements EIP1193Provider
|
|
@@ -81,6 +85,8 @@ export class HardhatNetworkProvider
|
|
|
81
85
|
private readonly _throwOnCallFailures: boolean,
|
|
82
86
|
private readonly _automine: boolean,
|
|
83
87
|
private readonly _intervalMining: IntervalMiningConfig,
|
|
88
|
+
private readonly _mempoolOrder: MempoolOrder,
|
|
89
|
+
private readonly _chains: HardhatNetworkChainsConfig,
|
|
84
90
|
private readonly _logger: ModulesLogger,
|
|
85
91
|
private readonly _genesisAccounts: GenesisAccount[] = [],
|
|
86
92
|
private readonly _artifacts?: Artifacts,
|
|
@@ -88,7 +94,8 @@ export class HardhatNetworkProvider
|
|
|
88
94
|
private readonly _initialDate?: Date,
|
|
89
95
|
private readonly _experimentalHardhatNetworkMessageTraceHooks: BoundExperimentalHardhatNetworkMessageTraceHook[] = [],
|
|
90
96
|
private _forkConfig?: ForkConfig,
|
|
91
|
-
private readonly _forkCachePath?: string
|
|
97
|
+
private readonly _forkCachePath?: string,
|
|
98
|
+
private readonly _coinbase = DEFAULT_COINBASE
|
|
92
99
|
) {
|
|
93
100
|
super();
|
|
94
101
|
}
|
|
@@ -159,7 +166,7 @@ export class HardhatNetworkProvider
|
|
|
159
166
|
this._logger.printFailedMethod(method);
|
|
160
167
|
this._logger.printLogs();
|
|
161
168
|
|
|
162
|
-
if (!this._logger.isLoggedError(err)) {
|
|
169
|
+
if (err instanceof Error && !this._logger.isLoggedError(err)) {
|
|
163
170
|
if (ProviderError.isProviderError(err)) {
|
|
164
171
|
this._logger.printEmptyLine();
|
|
165
172
|
this._logger.printErrorMessage(err.message);
|
|
@@ -227,6 +234,7 @@ export class HardhatNetworkProvider
|
|
|
227
234
|
allowUnlimitedContractSize: this._allowUnlimitedContractSize,
|
|
228
235
|
tracingConfig: await this._makeTracingConfig(),
|
|
229
236
|
initialBaseFeePerGas: this._initialBaseFeePerGas,
|
|
237
|
+
mempoolOrder: this._mempoolOrder,
|
|
230
238
|
hardfork: this._hardfork,
|
|
231
239
|
networkName: this._networkName,
|
|
232
240
|
chainId: this._chainId,
|
|
@@ -235,6 +243,8 @@ export class HardhatNetworkProvider
|
|
|
235
243
|
forkConfig: this._forkConfig,
|
|
236
244
|
forkCachePath:
|
|
237
245
|
this._forkConfig !== undefined ? this._forkCachePath : undefined,
|
|
246
|
+
coinbase: this._coinbase,
|
|
247
|
+
chains: this._chains,
|
|
238
248
|
};
|
|
239
249
|
|
|
240
250
|
const [common, node] = await HardhatNode.create(config);
|
package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts
CHANGED
|
@@ -57,7 +57,7 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
|
|
|
57
57
|
constructor(sender: Address, data: FeeMarketEIP1559TxData = {}) {
|
|
58
58
|
const fakeCommon = new Common({
|
|
59
59
|
chain: "mainnet",
|
|
60
|
-
hardfork: "london",
|
|
60
|
+
hardfork: "london", // TODO: consider chaning this to ["latest hardfork"]
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
// this class should only be used with txs in a hardfork that
|
|
@@ -36,7 +36,7 @@ export async function wrapWithSolidityErrorsCorrection(
|
|
|
36
36
|
|
|
37
37
|
try {
|
|
38
38
|
return await f();
|
|
39
|
-
} catch (error) {
|
|
39
|
+
} catch (error: any) {
|
|
40
40
|
if (error.stackTrace === undefined) {
|
|
41
41
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
42
42
|
throw error;
|
|
@@ -160,7 +160,7 @@ export class VMTracer {
|
|
|
160
160
|
if (this._throwErrors) {
|
|
161
161
|
next(error);
|
|
162
162
|
} else {
|
|
163
|
-
this._lastError = error;
|
|
163
|
+
this._lastError = error as Error;
|
|
164
164
|
next();
|
|
165
165
|
}
|
|
166
166
|
}
|
|
@@ -187,7 +187,7 @@ export class VMTracer {
|
|
|
187
187
|
if (this._throwErrors) {
|
|
188
188
|
next(error);
|
|
189
189
|
} else {
|
|
190
|
-
this._lastError = error;
|
|
190
|
+
this._lastError = error as Error;
|
|
191
191
|
next();
|
|
192
192
|
}
|
|
193
193
|
}
|
|
@@ -219,7 +219,7 @@ export class VMTracer {
|
|
|
219
219
|
if (this._throwErrors) {
|
|
220
220
|
next(error);
|
|
221
221
|
} else {
|
|
222
|
-
this._lastError = error;
|
|
222
|
+
this._lastError = error as Error;
|
|
223
223
|
next();
|
|
224
224
|
}
|
|
225
225
|
}
|
package/src/internal/reset.ts
CHANGED
|
@@ -36,7 +36,7 @@ async function main() {
|
|
|
36
36
|
let event: any;
|
|
37
37
|
try {
|
|
38
38
|
event = JSON.parse(serializedEvent);
|
|
39
|
-
} catch
|
|
39
|
+
} catch {
|
|
40
40
|
log(
|
|
41
41
|
"HARDHAT_SENTRY_EVENT env variable doesn't have a valid JSON, exiting: %o",
|
|
42
42
|
serializedEvent
|
|
@@ -62,7 +62,7 @@ async function main() {
|
|
|
62
62
|
`There was an error anonymizing an event: ${anonymizedEvent.value}`
|
|
63
63
|
);
|
|
64
64
|
}
|
|
65
|
-
} catch (error) {
|
|
65
|
+
} catch (error: any) {
|
|
66
66
|
log("Couldn't capture event %o, got error %O", event, error);
|
|
67
67
|
Sentry.captureMessage(
|
|
68
68
|
`There was an error capturing an event: ${error.message}`
|
|
@@ -141,25 +141,40 @@ export class CompilerDownloader {
|
|
|
141
141
|
platform: compilerBuild.platform,
|
|
142
142
|
};
|
|
143
143
|
} catch (e) {
|
|
144
|
-
if (
|
|
145
|
-
|
|
144
|
+
if (e instanceof Error) {
|
|
145
|
+
if (HardhatError.isHardhatError(e)) {
|
|
146
|
+
throw e;
|
|
147
|
+
}
|
|
148
|
+
console.warn(
|
|
149
|
+
chalk.yellow(
|
|
150
|
+
`There was an unexpected problem downloading the compiler: ${e.message}`
|
|
151
|
+
)
|
|
152
|
+
);
|
|
146
153
|
}
|
|
147
|
-
console.warn(
|
|
148
|
-
chalk.yellow(
|
|
149
|
-
`There was an unexpected problem downloading the compiler: ${e.message}`
|
|
150
|
-
)
|
|
151
|
-
);
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
public async getCompilersList(
|
|
156
|
-
platform: CompilerPlatform
|
|
158
|
+
platform: CompilerPlatform,
|
|
159
|
+
pendingRetries: number = 3
|
|
157
160
|
): Promise<CompilersList> {
|
|
158
161
|
if (!(await this.compilersListExists(platform))) {
|
|
159
162
|
await this.downloadCompilersList(platform);
|
|
160
163
|
}
|
|
161
164
|
|
|
162
|
-
|
|
165
|
+
try {
|
|
166
|
+
return await fsExtra.readJSON(this.getCompilersListPath(platform));
|
|
167
|
+
} catch (error) {
|
|
168
|
+
// if parsing throws a syntax error, redownload and parse once more
|
|
169
|
+
if (!(error instanceof SyntaxError) || pendingRetries === 0) {
|
|
170
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// remove the malformed list and retry
|
|
175
|
+
await fsExtra.remove(this.getCompilersListPath(platform));
|
|
176
|
+
return this.getCompilersList(platform, pendingRetries - 1);
|
|
177
|
+
}
|
|
163
178
|
}
|
|
164
179
|
|
|
165
180
|
public async getCompilerBuild(version: string): Promise<CompilerBuild> {
|
|
@@ -168,7 +183,7 @@ export class CompilerDownloader {
|
|
|
168
183
|
if (await this._versionExists(version, platform)) {
|
|
169
184
|
try {
|
|
170
185
|
return await this._getCompilerBuildByPlatform(version, platform);
|
|
171
|
-
} catch
|
|
186
|
+
} catch {
|
|
172
187
|
log("Couldn't download native compiler, using solcjs instead");
|
|
173
188
|
}
|
|
174
189
|
}
|
|
@@ -182,7 +197,7 @@ export class CompilerDownloader {
|
|
|
182
197
|
getCompilerListURL(platform),
|
|
183
198
|
this.getCompilersListPath(platform)
|
|
184
199
|
);
|
|
185
|
-
} catch (error) {
|
|
200
|
+
} catch (error: any) {
|
|
186
201
|
throw new HardhatError(
|
|
187
202
|
ERRORS.SOLC.VERSION_LIST_DOWNLOAD_FAILED,
|
|
188
203
|
{},
|
|
@@ -212,7 +227,7 @@ export class CompilerDownloader {
|
|
|
212
227
|
{
|
|
213
228
|
remoteVersion: compilerBuild.version,
|
|
214
229
|
},
|
|
215
|
-
error
|
|
230
|
+
error as Error
|
|
216
231
|
);
|
|
217
232
|
}
|
|
218
233
|
}
|