hardhat 2.6.6 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtin-tasks/check.js +1 -1
- package/builtin-tasks/check.js.map +1 -1
- package/builtin-tasks/clean.js +3 -3
- package/builtin-tasks/clean.js.map +1 -1
- package/builtin-tasks/compile.js +57 -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 +45 -22
- 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 +22 -8
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-resolution.d.ts.map +1 -1
- package/internal/core/config/config-resolution.js +29 -8
- 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 +113 -38
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts +1 -0
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +12 -5
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors-list.d.ts +14 -0
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +21 -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 +22 -7
- 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 +20 -18
- 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 +3 -0
- package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +31 -15
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +17 -17
- 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.d.ts +9 -0
- package/internal/hardhat-network/provider/modules/personal.d.ts.map +1 -0
- package/internal/hardhat-network/provider/modules/personal.js +31 -0
- package/internal/hardhat-network/provider/modules/personal.js.map +1 -0
- 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 +5 -0
- 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 +4 -1
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +107 -71
- 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 +6 -2
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +14 -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.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +42 -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.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +11 -11
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/source-maps.js +7 -7
- package/internal/hardhat-network/stack-traces/source-maps.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +5 -5
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +2 -2
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +3 -3
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/lib/hardhat-lib.js +3 -3
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/reset.js +1 -1
- package/internal/reset.js.map +1 -1
- package/internal/sentry/anonymizer.js.map +1 -1
- package/internal/sentry/reporter.js +5 -5
- package/internal/sentry/reporter.js.map +1 -1
- package/internal/sentry/subprocess.js +2 -2
- package/internal/sentry/subprocess.js.map +1 -1
- package/internal/sentry/transport.js +1 -1
- package/internal/sentry/transport.js.map +1 -1
- package/internal/solidity/compilation-job.js +4 -4
- package/internal/solidity/compilation-job.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts +1 -1
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +21 -7
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/solidity/compiler/index.js +1 -1
- package/internal/solidity/compiler/index.js.map +1 -1
- package/internal/solidity/dependencyGraph.js +2 -1
- package/internal/solidity/dependencyGraph.js.map +1 -1
- package/internal/solidity/parse.js +3 -2
- package/internal/solidity/parse.js.map +1 -1
- package/internal/solidity/resolver.js +10 -10
- package/internal/solidity/resolver.js.map +1 -1
- package/internal/util/abi-helpers.js +1 -1
- package/internal/util/abi-helpers.js.map +1 -1
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +12 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/global-dir.js +1 -1
- package/internal/util/global-dir.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -1
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +3 -1
- package/internal/util/hardforks.js.map +1 -1
- package/internal/util/jsonrpc.js +1 -1
- package/internal/util/jsonrpc.js.map +1 -1
- package/internal/util/packageInfo.js +1 -1
- package/internal/util/packageInfo.js.map +1 -1
- package/internal/util/scripts-runner.js +3 -3
- package/internal/util/scripts-runner.js.map +1 -1
- package/package.json +14 -14
- package/register.js +7 -7
- package/register.js.map +1 -1
- package/src/builtin-tasks/compile.ts +14 -0
- package/src/builtin-tasks/flatten.ts +4 -2
- package/src/builtin-tasks/node.ts +56 -17
- 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 +25 -3
- package/src/internal/core/config/config-resolution.ts +28 -0
- package/src/internal/core/config/config-validation.ts +147 -15
- package/src/internal/core/config/default-config.ts +10 -3
- package/src/internal/core/errors-list.ts +21 -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 +23 -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 +8 -2
- package/src/internal/core/providers/gas-providers.ts +7 -5
- 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 +24 -1
- package/src/internal/hardhat-network/provider/modules/personal.ts +39 -0
- package/src/internal/hardhat-network/provider/node-types.ts +6 -0
- package/src/internal/hardhat-network/provider/node.ts +68 -26
- package/src/internal/hardhat-network/provider/output.ts +9 -9
- package/src/internal/hardhat-network/provider/provider.ts +16 -2
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +19 -0
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/solidityTracer.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 +14 -0
- package/src/utils/contract-names.ts +112 -0
- package/src/utils/source-names.ts +14 -12
- package/types/config.d.ts +10 -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 -32
|
@@ -3,6 +3,7 @@ import { Context, getFunctionName, ValidationError } from "io-ts/lib";
|
|
|
3
3
|
import { Reporter } from "io-ts/lib/Reporter";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
+
HARDHAT_MEMPOOL_SUPPORTED_ORDERS,
|
|
6
7
|
HARDHAT_NETWORK_NAME,
|
|
7
8
|
HARDHAT_NETWORK_SUPPORTED_HARDFORKS,
|
|
8
9
|
} from "../../constants";
|
|
@@ -53,6 +54,59 @@ function getErrorMessage(path: string, value: any, expectedType: string) {
|
|
|
53
54
|
)} for ${path} - Expected a value of type ${expectedType}.`;
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
function getPrivateKeyError(index: number, network: string, message: string) {
|
|
58
|
+
return `Invalid account: #${index} for network: ${network} - ${message}`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function validatePrivateKey(
|
|
62
|
+
privateKey: unknown,
|
|
63
|
+
index: number,
|
|
64
|
+
network: string,
|
|
65
|
+
errors: string[]
|
|
66
|
+
) {
|
|
67
|
+
if (typeof privateKey !== "string") {
|
|
68
|
+
errors.push(
|
|
69
|
+
getPrivateKeyError(
|
|
70
|
+
index,
|
|
71
|
+
network,
|
|
72
|
+
`Expected string, received ${typeof privateKey}`
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
} else {
|
|
76
|
+
// private key validation
|
|
77
|
+
const pkWithPrefix = /^0x/.test(privateKey)
|
|
78
|
+
? privateKey
|
|
79
|
+
: `0x${privateKey}`;
|
|
80
|
+
|
|
81
|
+
// 32 bytes = 64 characters + 2 char prefix = 66
|
|
82
|
+
if (pkWithPrefix.length < 66) {
|
|
83
|
+
errors.push(
|
|
84
|
+
getPrivateKeyError(
|
|
85
|
+
index,
|
|
86
|
+
network,
|
|
87
|
+
"private key too short, expected 32 bytes"
|
|
88
|
+
)
|
|
89
|
+
);
|
|
90
|
+
} else if (pkWithPrefix.length > 66) {
|
|
91
|
+
errors.push(
|
|
92
|
+
getPrivateKeyError(
|
|
93
|
+
index,
|
|
94
|
+
network,
|
|
95
|
+
"private key too long, expected 32 bytes"
|
|
96
|
+
)
|
|
97
|
+
);
|
|
98
|
+
} else if (hexString.decode(pkWithPrefix).isLeft()) {
|
|
99
|
+
errors.push(
|
|
100
|
+
getPrivateKeyError(
|
|
101
|
+
index,
|
|
102
|
+
network,
|
|
103
|
+
"invalid hex character(s) found in string"
|
|
104
|
+
)
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
56
110
|
export function failure(es: ValidationError[]): string[] {
|
|
57
111
|
return es.map(getMessage);
|
|
58
112
|
}
|
|
@@ -91,6 +145,27 @@ export const hexString = new t.Type<string>(
|
|
|
91
145
|
t.identity
|
|
92
146
|
);
|
|
93
147
|
|
|
148
|
+
function isAddress(v: unknown): v is string {
|
|
149
|
+
if (typeof v !== "string") {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const trimmed = v.trim();
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
trimmed.match(HEX_STRING_REGEX) !== null &&
|
|
157
|
+
trimmed.startsWith("0x") &&
|
|
158
|
+
trimmed.length === 42
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export const address = new t.Type<string>(
|
|
163
|
+
"address",
|
|
164
|
+
isAddress,
|
|
165
|
+
(u, c) => (isAddress(u) ? t.success(u) : t.failure(u, c)),
|
|
166
|
+
t.identity
|
|
167
|
+
);
|
|
168
|
+
|
|
94
169
|
export const decimalString = new t.Type<string>(
|
|
95
170
|
"decimal string",
|
|
96
171
|
isDecimalString,
|
|
@@ -123,6 +198,22 @@ const HardhatNetworkForkingConfig = t.type({
|
|
|
123
198
|
blockNumber: optional(t.number),
|
|
124
199
|
});
|
|
125
200
|
|
|
201
|
+
const HardhatNetworkMempoolConfig = t.type({
|
|
202
|
+
order: optional(
|
|
203
|
+
t.keyof(
|
|
204
|
+
fromEntries(
|
|
205
|
+
HARDHAT_MEMPOOL_SUPPORTED_ORDERS.map((order) => [order, null])
|
|
206
|
+
)
|
|
207
|
+
)
|
|
208
|
+
),
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
const HardhatNetworkMiningConfig = t.type({
|
|
212
|
+
auto: optional(t.boolean),
|
|
213
|
+
interval: optional(t.union([t.number, t.tuple([t.number, t.number])])),
|
|
214
|
+
mempool: optional(HardhatNetworkMempoolConfig),
|
|
215
|
+
});
|
|
216
|
+
|
|
126
217
|
const commonNetworkConfigFields = {
|
|
127
218
|
chainId: optional(t.number),
|
|
128
219
|
from: optional(t.string),
|
|
@@ -149,6 +240,8 @@ const HardhatNetworkConfig = t.type({
|
|
|
149
240
|
initialDate: optional(t.string),
|
|
150
241
|
loggingEnabled: optional(t.boolean),
|
|
151
242
|
forking: optional(HardhatNetworkForkingConfig),
|
|
243
|
+
mining: optional(HardhatNetworkMiningConfig),
|
|
244
|
+
coinbase: optional(address),
|
|
152
245
|
});
|
|
153
246
|
|
|
154
247
|
const HDAccountsConfig = t.type({
|
|
@@ -224,7 +317,7 @@ export function validateConfig(config: any) {
|
|
|
224
317
|
}
|
|
225
318
|
|
|
226
319
|
export function getValidationErrors(config: any): string[] {
|
|
227
|
-
const errors = [];
|
|
320
|
+
const errors: string[] = [];
|
|
228
321
|
|
|
229
322
|
// These can't be validated with io-ts
|
|
230
323
|
if (config !== undefined && typeof config.networks === "object") {
|
|
@@ -237,8 +330,7 @@ export function getValidationErrors(config: any): string[] {
|
|
|
237
330
|
}
|
|
238
331
|
|
|
239
332
|
// Validating the accounts with io-ts leads to very confusing errors messages
|
|
240
|
-
const configExceptAccounts =
|
|
241
|
-
delete configExceptAccounts.accounts;
|
|
333
|
+
const { accounts, ...configExceptAccounts } = hardhatNetwork;
|
|
242
334
|
|
|
243
335
|
const netConfigResult = HardhatNetworkConfig.decode(configExceptAccounts);
|
|
244
336
|
if (netConfigResult.isLeft()) {
|
|
@@ -251,31 +343,37 @@ export function getValidationErrors(config: any): string[] {
|
|
|
251
343
|
);
|
|
252
344
|
}
|
|
253
345
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
346
|
+
// manual validation of accounts
|
|
347
|
+
if (Array.isArray(accounts)) {
|
|
348
|
+
for (const [index, account] of accounts.entries()) {
|
|
349
|
+
if (typeof account !== "object") {
|
|
257
350
|
errors.push(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
351
|
+
getPrivateKeyError(
|
|
352
|
+
index,
|
|
353
|
+
HARDHAT_NETWORK_NAME,
|
|
354
|
+
`Expected object, received ${typeof account}`
|
|
262
355
|
)
|
|
263
356
|
);
|
|
357
|
+
continue;
|
|
264
358
|
}
|
|
265
359
|
|
|
266
|
-
|
|
360
|
+
const { privateKey, balance } = account;
|
|
361
|
+
|
|
362
|
+
validatePrivateKey(privateKey, index, HARDHAT_NETWORK_NAME, errors);
|
|
363
|
+
|
|
364
|
+
if (typeof balance !== "string") {
|
|
267
365
|
errors.push(
|
|
268
366
|
getErrorMessage(
|
|
269
367
|
`HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.accounts[].balance`,
|
|
270
|
-
|
|
368
|
+
balance,
|
|
271
369
|
"string"
|
|
272
370
|
)
|
|
273
371
|
);
|
|
274
|
-
} else if (decimalString.decode(
|
|
372
|
+
} else if (decimalString.decode(balance).isLeft()) {
|
|
275
373
|
errors.push(
|
|
276
374
|
getErrorMessage(
|
|
277
375
|
`HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.accounts[].balance`,
|
|
278
|
-
|
|
376
|
+
balance,
|
|
279
377
|
"decimal(wei)"
|
|
280
378
|
)
|
|
281
379
|
);
|
|
@@ -340,7 +438,9 @@ export function getValidationErrors(config: any): string[] {
|
|
|
340
438
|
}
|
|
341
439
|
}
|
|
342
440
|
|
|
343
|
-
const
|
|
441
|
+
const { accounts, ...configExceptAccounts } = netConfig;
|
|
442
|
+
|
|
443
|
+
const netConfigResult = HttpNetworkConfig.decode(configExceptAccounts);
|
|
344
444
|
if (netConfigResult.isLeft()) {
|
|
345
445
|
errors.push(
|
|
346
446
|
getErrorMessage(
|
|
@@ -350,6 +450,38 @@ export function getValidationErrors(config: any): string[] {
|
|
|
350
450
|
)
|
|
351
451
|
);
|
|
352
452
|
}
|
|
453
|
+
|
|
454
|
+
// manual validation of accounts
|
|
455
|
+
if (Array.isArray(accounts)) {
|
|
456
|
+
accounts.forEach((privateKey, index) =>
|
|
457
|
+
validatePrivateKey(privateKey, index, networkName, errors)
|
|
458
|
+
);
|
|
459
|
+
} else if (typeof accounts === "object") {
|
|
460
|
+
const hdConfigResult = HDAccountsConfig.decode(accounts);
|
|
461
|
+
if (hdConfigResult.isLeft()) {
|
|
462
|
+
errors.push(
|
|
463
|
+
getErrorMessage(
|
|
464
|
+
`HardhatConfig.networks.${networkName}`,
|
|
465
|
+
accounts,
|
|
466
|
+
"HttpNetworkHDAccountsConfig"
|
|
467
|
+
)
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
} else if (typeof accounts === "string") {
|
|
471
|
+
if (accounts !== "remote") {
|
|
472
|
+
errors.push(
|
|
473
|
+
`Invalid 'accounts' entry for network '${networkName}': expected an array of accounts or the string 'remote', but got the string '${accounts}'`
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
} else if (accounts !== undefined) {
|
|
477
|
+
errors.push(
|
|
478
|
+
getErrorMessage(
|
|
479
|
+
`HardhatConfig.networks.${networkName}.accounts`,
|
|
480
|
+
accounts,
|
|
481
|
+
'"remote" | string[] | HttpNetworkHDAccountsConfig | undefined'
|
|
482
|
+
)
|
|
483
|
+
);
|
|
484
|
+
}
|
|
353
485
|
}
|
|
354
486
|
}
|
|
355
487
|
|
|
@@ -7,7 +7,7 @@ export const DEFAULT_SOLC_VERSION = "0.7.3";
|
|
|
7
7
|
export const HARDHAT_NETWORK_DEFAULT_GAS_PRICE = "auto";
|
|
8
8
|
export const HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS = 1e9;
|
|
9
9
|
export const HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS = 1e9;
|
|
10
|
-
const HARDHAT_NETWORK_MNEMONIC =
|
|
10
|
+
export const HARDHAT_NETWORK_MNEMONIC =
|
|
11
11
|
"test test test test test test test test test test test junk";
|
|
12
12
|
export const DEFAULT_HARDHAT_NETWORK_BALANCE = "10000000000000000000000";
|
|
13
13
|
|
|
@@ -35,14 +35,20 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
35
35
|
HardhatNetworkConfig,
|
|
36
36
|
"gas" | "initialDate"
|
|
37
37
|
> = {
|
|
38
|
-
hardfork: "
|
|
38
|
+
hardfork: "arrowGlacier",
|
|
39
39
|
blockGasLimit: 30_000_000,
|
|
40
40
|
gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
|
|
41
41
|
chainId: 31337,
|
|
42
42
|
throwOnTransactionFailures: true,
|
|
43
43
|
throwOnCallFailures: true,
|
|
44
44
|
allowUnlimitedContractSize: false,
|
|
45
|
-
mining: {
|
|
45
|
+
mining: {
|
|
46
|
+
auto: true,
|
|
47
|
+
interval: 0,
|
|
48
|
+
mempool: {
|
|
49
|
+
order: "priority",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
46
52
|
accounts: defaultHardhatNetworkHdAccountsConfigParams,
|
|
47
53
|
loggingEnabled: false,
|
|
48
54
|
gasMultiplier: DEFAULT_GAS_MULTIPLIER,
|
|
@@ -69,6 +75,7 @@ export const defaultSolcOutputSelection = {
|
|
|
69
75
|
"evm.bytecode",
|
|
70
76
|
"evm.deployedBytecode",
|
|
71
77
|
"evm.methodIdentifiers",
|
|
78
|
+
"metadata",
|
|
72
79
|
],
|
|
73
80
|
"": ["ast"],
|
|
74
81
|
},
|
|
@@ -360,6 +360,15 @@ Please double check your transactions' parameters.`,
|
|
|
360
360
|
Please double check your transactions' parameters.`,
|
|
361
361
|
shouldBeReported: false,
|
|
362
362
|
},
|
|
363
|
+
PERSONALSIGN_MISSING_ADDRESS_PARAM: {
|
|
364
|
+
number: 116,
|
|
365
|
+
message: 'Missing "address" param when calling personal_sign.',
|
|
366
|
+
title: "Missing `address` param when calling personal_sign.",
|
|
367
|
+
description: `You called \`personal_sign\` with incorrect parameters.
|
|
368
|
+
|
|
369
|
+
Please check that you are sending an \`address\` parameter.`,
|
|
370
|
+
shouldBeReported: false,
|
|
371
|
+
},
|
|
363
372
|
},
|
|
364
373
|
TASK_DEFINITIONS: {
|
|
365
374
|
PARAM_AFTER_VARIADIC: {
|
|
@@ -562,7 +571,7 @@ Please double check how you invoked Hardhat or ran your task.`,
|
|
|
562
571
|
},
|
|
563
572
|
MISSING_TASK_ARGUMENT: {
|
|
564
573
|
number: 306,
|
|
565
|
-
message: "
|
|
574
|
+
message: "The '%param%' parameter expects a value, but none was passed.",
|
|
566
575
|
title: "Missing task argument",
|
|
567
576
|
description: `You tried to run a task, but one of its required arguments was missing.
|
|
568
577
|
|
|
@@ -861,11 +870,21 @@ To start the JSON-RPC server, retry the command without the --network parameter.
|
|
|
861
870
|
if the URL of the JSON-RPC wasn't set.`,
|
|
862
871
|
shouldBeReported: false,
|
|
863
872
|
},
|
|
873
|
+
COMPILE_TASK_UNSUPPORTED_SOLC_VERSION: {
|
|
874
|
+
number: 608,
|
|
875
|
+
message: `Version %version% is not supported by Hardhat.
|
|
876
|
+
|
|
877
|
+
The first supported version is %firstSupportedVersion%`,
|
|
878
|
+
title: "Unsupported solc version",
|
|
879
|
+
description: `This version of solidity is not supported by Hardhtat.
|
|
880
|
+
Please use a newer, supported version.`,
|
|
881
|
+
shouldBeReported: true,
|
|
882
|
+
},
|
|
864
883
|
},
|
|
865
884
|
ARTIFACTS: {
|
|
866
885
|
NOT_FOUND: {
|
|
867
886
|
number: 700,
|
|
868
|
-
message: 'Artifact for contract "%contractName%" not found.',
|
|
887
|
+
message: 'Artifact for contract "%contractName%" not found. %suggestion%',
|
|
869
888
|
title: "Artifact not found",
|
|
870
889
|
description: `Tried to import a nonexistent artifact.
|
|
871
890
|
|
|
@@ -6,6 +6,7 @@ import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
|
|
|
6
6
|
export type RpcLog = t.TypeOf<typeof rpcLog>;
|
|
7
7
|
export const rpcLog = t.type(
|
|
8
8
|
{
|
|
9
|
+
logIndex: nullable(rpcQuantity),
|
|
9
10
|
transactionIndex: nullable(rpcQuantity),
|
|
10
11
|
transactionHash: nullable(rpcHash),
|
|
11
12
|
blockHash: nullable(rpcHash),
|
|
@@ -185,14 +185,19 @@ export const inputFile: CLIArgumentType<string> = {
|
|
|
185
185
|
throw new Error(`${strValue} is a directory, not a file`);
|
|
186
186
|
}
|
|
187
187
|
} catch (error) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
188
|
+
if (error instanceof Error) {
|
|
189
|
+
throw new HardhatError(
|
|
190
|
+
ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
|
|
191
|
+
{
|
|
192
|
+
name: argName,
|
|
193
|
+
value: strValue,
|
|
194
|
+
},
|
|
195
|
+
error
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
200
|
+
throw error;
|
|
196
201
|
}
|
|
197
202
|
|
|
198
203
|
return strValue;
|
|
@@ -212,15 +217,20 @@ export const inputFile: CLIArgumentType<string> = {
|
|
|
212
217
|
inputFile.parse(argName, value);
|
|
213
218
|
} catch (error) {
|
|
214
219
|
// the input value is considered invalid, throw error.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
if (error instanceof Error) {
|
|
221
|
+
throw new HardhatError(
|
|
222
|
+
ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
|
|
223
|
+
{
|
|
224
|
+
value,
|
|
225
|
+
name: argName,
|
|
226
|
+
type: inputFile.name,
|
|
227
|
+
},
|
|
228
|
+
error
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
233
|
+
throw error;
|
|
224
234
|
}
|
|
225
235
|
},
|
|
226
236
|
};
|
|
@@ -231,14 +241,19 @@ export const json: CLIArgumentType<any> = {
|
|
|
231
241
|
try {
|
|
232
242
|
return JSON.parse(strValue);
|
|
233
243
|
} catch (error) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
244
|
+
if (error instanceof Error) {
|
|
245
|
+
throw new HardhatError(
|
|
246
|
+
ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
|
|
247
|
+
{
|
|
248
|
+
param: argName,
|
|
249
|
+
error: error.message,
|
|
250
|
+
},
|
|
251
|
+
error
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
256
|
+
throw error;
|
|
242
257
|
}
|
|
243
258
|
},
|
|
244
259
|
|
|
@@ -48,14 +48,19 @@ export function getEnvHardhatArguments(
|
|
|
48
48
|
try {
|
|
49
49
|
envArgs[paramName] = definition.type.parse(paramName, rawValue);
|
|
50
50
|
} catch (error) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
if (error instanceof Error) {
|
|
52
|
+
throw new HardhatError(
|
|
53
|
+
ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
|
|
54
|
+
{
|
|
55
|
+
varName: envVarName,
|
|
56
|
+
value: rawValue,
|
|
57
|
+
},
|
|
58
|
+
error
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
63
|
+
throw error;
|
|
59
64
|
}
|
|
60
65
|
} else {
|
|
61
66
|
envArgs[paramName] = definition.defaultValue;
|
|
@@ -78,8 +78,8 @@ export const HARDHAT_PARAM_DEFINITIONS: HardhatParamDefinitions = {
|
|
|
78
78
|
tsconfig: {
|
|
79
79
|
name: "tsconfig",
|
|
80
80
|
defaultValue: undefined,
|
|
81
|
-
description: "
|
|
82
|
-
type: types.
|
|
81
|
+
description: "A TypeScript config file.",
|
|
82
|
+
type: types.inputFile,
|
|
83
83
|
isOptional: true,
|
|
84
84
|
isFlag: false,
|
|
85
85
|
isVariadic: false,
|
|
@@ -74,6 +74,25 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
if (args.method === "personal_sign") {
|
|
78
|
+
if (params.length > 0) {
|
|
79
|
+
const [data, address] = validateParams(params, rpcData, rpcAddress);
|
|
80
|
+
|
|
81
|
+
if (data !== undefined) {
|
|
82
|
+
if (address === undefined) {
|
|
83
|
+
throw new HardhatError(
|
|
84
|
+
ERRORS.NETWORK.PERSONALSIGN_MISSING_ADDRESS_PARAM
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const privateKey = this._getPrivateKeyForAddress(address);
|
|
89
|
+
const messageHash = hashPersonalMessage(toBuffer(data));
|
|
90
|
+
const signature = ecsign(messageHash, privateKey);
|
|
91
|
+
return toRpcSig(signature.v, signature.r, signature.s);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
77
96
|
if (args.method === "eth_signTypedData_v4") {
|
|
78
97
|
const [address, data] = validateParams(params, rpcAddress, t.any);
|
|
79
98
|
|
|
@@ -85,7 +104,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
85
104
|
if (typeof data === "string") {
|
|
86
105
|
try {
|
|
87
106
|
typedMessage = JSON.parse(data);
|
|
88
|
-
} catch
|
|
107
|
+
} catch {
|
|
89
108
|
throw new HardhatError(
|
|
90
109
|
ERRORS.NETWORK.ETHSIGN_TYPED_DATA_V4_INVALID_DATA_PARAM
|
|
91
110
|
);
|
|
@@ -200,7 +219,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
200
219
|
private _getPrivateKeyForAddressOrNull(address: Buffer): Buffer | null {
|
|
201
220
|
try {
|
|
202
221
|
return this._getPrivateKeyForAddress(address);
|
|
203
|
-
} catch
|
|
222
|
+
} catch {
|
|
204
223
|
return null;
|
|
205
224
|
}
|
|
206
225
|
}
|
|
@@ -234,6 +253,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
234
253
|
gasLimit: transactionRequest.gas,
|
|
235
254
|
};
|
|
236
255
|
|
|
256
|
+
// TODO: consider changing instances of "london" below to ["latest hardfork"]
|
|
237
257
|
const common =
|
|
238
258
|
chains.names[chainId] !== undefined
|
|
239
259
|
? new Common({ chain: chainId, hardfork: "london" })
|
|
@@ -328,7 +348,7 @@ abstract class SenderProvider extends ProviderWrapper {
|
|
|
328
348
|
return this._wrappedProvider.request(args);
|
|
329
349
|
}
|
|
330
350
|
|
|
331
|
-
protected abstract
|
|
351
|
+
protected abstract _getSender(): Promise<string | undefined>;
|
|
332
352
|
}
|
|
333
353
|
|
|
334
354
|
export class AutomaticSenderProvider extends SenderProvider {
|
|
@@ -56,7 +56,7 @@ export class BackwardsCompatibilityProviderAdapter
|
|
|
56
56
|
method: request.method,
|
|
57
57
|
params: request.params,
|
|
58
58
|
});
|
|
59
|
-
} catch (error) {
|
|
59
|
+
} catch (error: any) {
|
|
60
60
|
if (error.code === undefined) {
|
|
61
61
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
62
62
|
throw error;
|
|
@@ -12,7 +12,7 @@ export abstract class ProviderWrapperWithChainId extends ProviderWrapper {
|
|
|
12
12
|
if (this._chainId === undefined) {
|
|
13
13
|
try {
|
|
14
14
|
this._chainId = await this._getChainIdFromEthChainId();
|
|
15
|
-
} catch
|
|
15
|
+
} catch {
|
|
16
16
|
// If eth_chainId fails we default to net_version
|
|
17
17
|
this._chainId = await this._getChainIdFromEthNetVersion();
|
|
18
18
|
}
|
|
@@ -13,7 +13,10 @@ import type {
|
|
|
13
13
|
} from "../../../types";
|
|
14
14
|
import { HARDHAT_NETWORK_NAME } from "../../constants";
|
|
15
15
|
import { ModulesLogger } from "../../hardhat-network/provider/modules/logger";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
ForkConfig,
|
|
18
|
+
MempoolOrder,
|
|
19
|
+
} from "../../hardhat-network/provider/node-types";
|
|
17
20
|
import { getForkCacheDirPath } from "../../hardhat-network/provider/utils/disk-cache";
|
|
18
21
|
import { parseDateString } from "../../util/date";
|
|
19
22
|
|
|
@@ -88,6 +91,8 @@ export function createProvider(
|
|
|
88
91
|
hardhatNetConfig.throwOnCallFailures,
|
|
89
92
|
hardhatNetConfig.mining.auto,
|
|
90
93
|
hardhatNetConfig.mining.interval,
|
|
94
|
+
// This cast is valid because of the config validation and resolution
|
|
95
|
+
hardhatNetConfig.mining.mempool.order as MempoolOrder,
|
|
91
96
|
new ModulesLogger(hardhatNetConfig.loggingEnabled),
|
|
92
97
|
accounts,
|
|
93
98
|
artifacts,
|
|
@@ -97,7 +102,8 @@ export function createProvider(
|
|
|
97
102
|
: undefined,
|
|
98
103
|
experimentalHardhatNetworkMessageTraceHooks,
|
|
99
104
|
forkConfig,
|
|
100
|
-
paths !== undefined ? getForkCacheDirPath(paths) : undefined
|
|
105
|
+
paths !== undefined ? getForkCacheDirPath(paths) : undefined,
|
|
106
|
+
hardhatNetConfig.coinbase
|
|
101
107
|
);
|
|
102
108
|
} else {
|
|
103
109
|
const HttpProvider = importProvider<
|
|
@@ -86,9 +86,11 @@ abstract class MultipliedGasEstimationProvider extends ProviderWrapper {
|
|
|
86
86
|
|
|
87
87
|
return numberToRpcQuantity(gas);
|
|
88
88
|
} catch (error) {
|
|
89
|
-
if (error
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
if (error instanceof Error) {
|
|
90
|
+
if (error.message.toLowerCase().includes("execution error")) {
|
|
91
|
+
const blockGasLimit = await this._getBlockGasLimit();
|
|
92
|
+
return numberToRpcQuantity(blockGasLimit);
|
|
93
|
+
}
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
@@ -142,7 +144,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
|
|
|
142
144
|
public static readonly EIP1559_BASE_FEE_MAX_FULL_BLOCKS_PREFERENCE: number = 3;
|
|
143
145
|
|
|
144
146
|
// See eth_feeHistory for an explanation of what this means
|
|
145
|
-
public static readonly EIP1559_REWARD_PERCENTILE: number =
|
|
147
|
+
public static readonly EIP1559_REWARD_PERCENTILE: number = 50;
|
|
146
148
|
|
|
147
149
|
private _nodeHasFeeHistory?: boolean;
|
|
148
150
|
private _nodeSupportsEIP1559?: boolean;
|
|
@@ -277,7 +279,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
|
|
|
277
279
|
|
|
278
280
|
maxPriorityFeePerGas: rpcQuantityToBN(response.reward[0][0]),
|
|
279
281
|
};
|
|
280
|
-
} catch
|
|
282
|
+
} catch {
|
|
281
283
|
this._nodeHasFeeHistory = false;
|
|
282
284
|
|
|
283
285
|
return undefined;
|
|
@@ -171,7 +171,7 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
return parseJsonResponse(await response.text());
|
|
174
|
-
} catch (error) {
|
|
174
|
+
} catch (error: any) {
|
|
175
175
|
if (error.code === "ECONNREFUSED") {
|
|
176
176
|
throw new HardhatError(
|
|
177
177
|
ERRORS.NETWORK.NODE_IS_NOT_RUNNING,
|
|
@@ -11,7 +11,7 @@ export abstract class ProviderWrapper
|
|
|
11
11
|
super(_wrappedProvider);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public abstract
|
|
14
|
+
public abstract request(args: RequestArguments): Promise<unknown>;
|
|
15
15
|
|
|
16
16
|
protected _getParams<ParamsT extends any[] = any[]>(
|
|
17
17
|
args: RequestArguments
|
|
@@ -266,7 +266,9 @@ export class Environment implements HardhatRuntimeEnvironment {
|
|
|
266
266
|
values[paramName] = resolvedArgumentValue;
|
|
267
267
|
}
|
|
268
268
|
} catch (error) {
|
|
269
|
-
|
|
269
|
+
if (HardhatError.isHardhatError(error)) {
|
|
270
|
+
errors.push(error);
|
|
271
|
+
}
|
|
270
272
|
}
|
|
271
273
|
return { errors, values };
|
|
272
274
|
},
|