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,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.HardhatNode =
|
|
6
|
+
exports.HardhatNode = void 0;
|
|
7
7
|
const block_1 = require("@ethereumjs/block");
|
|
8
8
|
const common_1 = __importDefault(require("@ethereumjs/common"));
|
|
9
9
|
const tx_1 = require("@ethereumjs/tx");
|
|
@@ -51,12 +51,11 @@ const makeForkClient_1 = require("./utils/makeForkClient");
|
|
|
51
51
|
const makeForkCommon_1 = require("./utils/makeForkCommon");
|
|
52
52
|
const putGenesisBlock_1 = require("./utils/putGenesisBlock");
|
|
53
53
|
const txMapToArray_1 = require("./utils/txMapToArray");
|
|
54
|
-
const log = debug_1.default("hardhat:core:hardhat-network:node");
|
|
54
|
+
const log = (0, debug_1.default)("hardhat:core:hardhat-network:node");
|
|
55
55
|
const ethSigUtil = require("eth-sig-util");
|
|
56
|
-
exports.COINBASE_ADDRESS = ethereumjs_util_1.Address.fromString("0xc014ba5ec014ba5ec014ba5ec014ba5ec014ba5e");
|
|
57
56
|
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
58
57
|
class HardhatNode extends events_1.default {
|
|
59
|
-
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
|
|
58
|
+
constructor(_vm, _stateManager, _blockchain, _txPool, _automine, _minGasPrice, _blockTimeOffsetSeconds = new ethereumjs_util_1.BN(0), _mempoolOrder, _coinbase, genesisAccounts, tracingConfig, _forkNetworkId, nextBlockBaseFee) {
|
|
60
59
|
super();
|
|
61
60
|
this._vm = _vm;
|
|
62
61
|
this._stateManager = _stateManager;
|
|
@@ -65,6 +64,8 @@ class HardhatNode extends events_1.default {
|
|
|
65
64
|
this._automine = _automine;
|
|
66
65
|
this._minGasPrice = _minGasPrice;
|
|
67
66
|
this._blockTimeOffsetSeconds = _blockTimeOffsetSeconds;
|
|
67
|
+
this._mempoolOrder = _mempoolOrder;
|
|
68
|
+
this._coinbase = _coinbase;
|
|
68
69
|
this._forkNetworkId = _forkNetworkId;
|
|
69
70
|
this._localAccounts = new Map(); // address => private key
|
|
70
71
|
this._impersonatedAccounts = new Set(); // address
|
|
@@ -90,7 +91,7 @@ class HardhatNode extends events_1.default {
|
|
|
90
91
|
}
|
|
91
92
|
try {
|
|
92
93
|
for (const buildInfo of tracingConfig.buildInfos) {
|
|
93
|
-
const bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
94
|
+
const bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(buildInfo.solcVersion, buildInfo.input, buildInfo.output);
|
|
94
95
|
for (const bytecode of bytecodes) {
|
|
95
96
|
this._vmTraceDecoder.addBytecode(bytecode);
|
|
96
97
|
}
|
|
@@ -99,11 +100,13 @@ class HardhatNode extends events_1.default {
|
|
|
99
100
|
catch (error) {
|
|
100
101
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be initialized. Run Hardhat with --verbose to learn more."));
|
|
101
102
|
log("Hardhat Network tracing disabled: ContractsIdentifier failed to be initialized. Please report this to help us improve Hardhat.\n", error);
|
|
102
|
-
|
|
103
|
+
if (error instanceof Error) {
|
|
104
|
+
reporter_1.Reporter.reportError(error);
|
|
105
|
+
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
static async create(config) {
|
|
106
|
-
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, } = config;
|
|
109
|
+
const { automine, genesisAccounts, blockGasLimit, allowUnlimitedContractSize, tracingConfig, minGasPrice, mempoolOrder, } = config;
|
|
107
110
|
let common;
|
|
108
111
|
let stateManager;
|
|
109
112
|
let blockchain;
|
|
@@ -113,23 +116,23 @@ class HardhatNode extends events_1.default {
|
|
|
113
116
|
const initialBaseFeePerGasConfig = config.initialBaseFeePerGas !== undefined
|
|
114
117
|
? new ethereumjs_util_1.BN(config.initialBaseFeePerGas)
|
|
115
118
|
: undefined;
|
|
116
|
-
const hardfork = hardforks_1.getHardforkName(config.hardfork);
|
|
117
|
-
if (node_types_1.isForkedNodeConfig(config)) {
|
|
118
|
-
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await makeForkClient_1.makeForkClient(config.forkConfig, config.forkCachePath);
|
|
119
|
-
common = await makeForkCommon_1.makeForkCommon(config);
|
|
119
|
+
const hardfork = (0, hardforks_1.getHardforkName)(config.hardfork);
|
|
120
|
+
if ((0, node_types_1.isForkedNodeConfig)(config)) {
|
|
121
|
+
const { forkClient, forkBlockNumber, forkBlockTimestamp } = await (0, makeForkClient_1.makeForkClient)(config.forkConfig, config.forkCachePath);
|
|
122
|
+
common = await (0, makeForkCommon_1.makeForkCommon)(config);
|
|
120
123
|
forkNetworkId = forkClient.getNetworkId();
|
|
121
124
|
this._validateHardforks(config.forkConfig.blockNumber, common, forkNetworkId);
|
|
122
125
|
const forkStateManager = new ForkStateManager_1.ForkStateManager(forkClient, forkBlockNumber);
|
|
123
126
|
await forkStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
124
127
|
stateManager = forkStateManager;
|
|
125
128
|
blockchain = new ForkBlockchain_1.ForkBlockchain(forkClient, forkBlockNumber, common);
|
|
126
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(new Date(forkBlockTimestamp), new Date()));
|
|
129
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(new Date(forkBlockTimestamp), new Date()));
|
|
127
130
|
// If the hardfork is London or later we need a base fee per gas for the
|
|
128
131
|
// first local block. If initialBaseFeePerGas config was provided we use
|
|
129
132
|
// that. Otherwise, what we do depends on the block we forked from. If
|
|
130
133
|
// it's an EIP-1559 block we don't need to do anything here, as we'll
|
|
131
134
|
// end up automatically computing the next base fee per gas based on it.
|
|
132
|
-
if (hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
135
|
+
if ((0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)) {
|
|
133
136
|
if (initialBaseFeePerGasConfig !== undefined) {
|
|
134
137
|
nextBlockBaseFeePerGas = initialBaseFeePerGasConfig;
|
|
135
138
|
}
|
|
@@ -145,13 +148,14 @@ class HardhatNode extends events_1.default {
|
|
|
145
148
|
const hardhatStateManager = new HardhatStateManager_1.HardhatStateManager();
|
|
146
149
|
await hardhatStateManager.initializeGenesisAccounts(genesisAccounts);
|
|
147
150
|
const initialStateRoot = await hardhatStateManager.getStateRoot();
|
|
148
|
-
common = makeCommon_1.makeCommon(config, initialStateRoot);
|
|
151
|
+
common = (0, makeCommon_1.makeCommon)(config, initialStateRoot);
|
|
149
152
|
const hardhatBlockchain = new HardhatBlockchain_1.HardhatBlockchain();
|
|
150
|
-
const genesisBlockBaseFeePerGas = hardforks_1.hardforkGte(hardfork, hardforks_1.HardforkName.LONDON)
|
|
151
|
-
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
152
|
-
|
|
153
|
+
const genesisBlockBaseFeePerGas = (0, hardforks_1.hardforkGte)(hardfork, hardforks_1.HardforkName.LONDON)
|
|
154
|
+
? initialBaseFeePerGasConfig !== null && initialBaseFeePerGasConfig !== void 0 ? initialBaseFeePerGasConfig : new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_INITIAL_BASE_FEE_PER_GAS)
|
|
155
|
+
: undefined;
|
|
156
|
+
await (0, putGenesisBlock_1.putGenesisBlock)(hardhatBlockchain, common, genesisBlockBaseFeePerGas);
|
|
153
157
|
if (config.initialDate !== undefined) {
|
|
154
|
-
initialBlockTimeOffset = new ethereumjs_util_1.BN(date_1.getDifferenceInSeconds(config.initialDate, new Date()));
|
|
158
|
+
initialBlockTimeOffset = new ethereumjs_util_1.BN((0, date_1.getDifferenceInSeconds)(config.initialDate, new Date()));
|
|
155
159
|
}
|
|
156
160
|
blockchain = hardhatBlockchain;
|
|
157
161
|
stateManager = hardhatStateManager;
|
|
@@ -164,7 +168,7 @@ class HardhatNode extends events_1.default {
|
|
|
164
168
|
blockchain: blockchain,
|
|
165
169
|
allowUnlimitedContractSize,
|
|
166
170
|
});
|
|
167
|
-
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
|
|
171
|
+
const node = new HardhatNode(vm, stateManager, blockchain, txPool, automine, minGasPrice, initialBlockTimeOffset, mempoolOrder, config.coinbase, genesisAccounts, tracingConfig, forkNetworkId, nextBlockBaseFeePerGas);
|
|
168
172
|
return [common, node];
|
|
169
173
|
}
|
|
170
174
|
static _validateHardforks(forkBlockNumber, common, remoteChainId) {
|
|
@@ -178,7 +182,7 @@ The hardfork must be at least spuriousDragon, but ${common.hardfork()} was given
|
|
|
178
182
|
try {
|
|
179
183
|
upstreamCommon = new common_1.default({ chain: remoteChainId });
|
|
180
184
|
}
|
|
181
|
-
catch (
|
|
185
|
+
catch (_a) {
|
|
182
186
|
// If ethereumjs doesn't have a common it will throw and we won't have
|
|
183
187
|
// info about the activation block of each hardfork, so we don't run
|
|
184
188
|
// this validation.
|
|
@@ -193,7 +197,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
193
197
|
}
|
|
194
198
|
}
|
|
195
199
|
async getSignedTransaction(txParams) {
|
|
196
|
-
const senderAddress = ethereumjs_util_1.bufferToHex(txParams.from);
|
|
200
|
+
const senderAddress = (0, ethereumjs_util_1.bufferToHex)(txParams.from);
|
|
197
201
|
const pk = this._localAccounts.get(senderAddress);
|
|
198
202
|
if (pk !== undefined) {
|
|
199
203
|
let tx;
|
|
@@ -239,14 +243,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
239
243
|
result = await this._mineBlockWithPendingTxs(blockTimestamp);
|
|
240
244
|
}
|
|
241
245
|
catch (err) {
|
|
242
|
-
if (err
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
246
|
+
if (err instanceof Error) {
|
|
247
|
+
if (err === null || err === void 0 ? void 0 : err.message.includes("sender doesn't have enough funds")) {
|
|
248
|
+
throw new errors_2.InvalidInputError(err.message, err);
|
|
249
|
+
}
|
|
250
|
+
// Some network errors are HardhatErrors, and can end up here when forking
|
|
251
|
+
if (errors_1.HardhatError.isHardhatError(err)) {
|
|
252
|
+
throw err;
|
|
253
|
+
}
|
|
254
|
+
throw new errors_2.TransactionExecutionError(err);
|
|
248
255
|
}
|
|
249
|
-
|
|
256
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
257
|
+
throw err;
|
|
250
258
|
}
|
|
251
259
|
await this._saveBlockAsSuccessfullyRun(result.block, result.blockResult);
|
|
252
260
|
if (needsTimestampIncrease) {
|
|
@@ -294,8 +302,8 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
294
302
|
}
|
|
295
303
|
async getCodeFromTrace(trace, blockNumberOrPending) {
|
|
296
304
|
if (trace === undefined ||
|
|
297
|
-
message_trace_1.isPrecompileTrace(trace) ||
|
|
298
|
-
message_trace_1.isCreateTrace(trace)) {
|
|
305
|
+
(0, message_trace_1.isPrecompileTrace)(trace) ||
|
|
306
|
+
(0, message_trace_1.isCreateTrace)(trace)) {
|
|
299
307
|
return Buffer.from("");
|
|
300
308
|
}
|
|
301
309
|
return this.getCode(new ethereumjs_util_1.Address(trace.address), blockNumberOrPending);
|
|
@@ -385,7 +393,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
385
393
|
return new ethereumjs_util_1.BN(default_config_1.HARDHAT_NETWORK_DEFAULT_MAX_PRIORITY_FEE_PER_GAS);
|
|
386
394
|
}
|
|
387
395
|
getCoinbaseAddress() {
|
|
388
|
-
return
|
|
396
|
+
return ethereumjs_util_1.Address.fromString(this._coinbase);
|
|
389
397
|
}
|
|
390
398
|
async getStorageAt(address, positionIndex, blockNumberOrPending) {
|
|
391
399
|
const key = positionIndex.toArrayLike(Buffer, "be", 32);
|
|
@@ -457,19 +465,19 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
457
465
|
return (_a = this._txPool.getTransactionByHash(hash)) === null || _a === void 0 ? void 0 : _a.data;
|
|
458
466
|
}
|
|
459
467
|
async getTransactionReceipt(hash) {
|
|
460
|
-
const hashBuffer = hash instanceof Buffer ? hash : ethereumjs_util_1.toBuffer(hash);
|
|
468
|
+
const hashBuffer = hash instanceof Buffer ? hash : (0, ethereumjs_util_1.toBuffer)(hash);
|
|
461
469
|
const receipt = await this._blockchain.getTransactionReceipt(hashBuffer);
|
|
462
470
|
return receipt !== null && receipt !== void 0 ? receipt : undefined;
|
|
463
471
|
}
|
|
464
472
|
async getPendingTransactions() {
|
|
465
|
-
const txPoolPending = txMapToArray_1.txMapToArray(this._txPool.getPendingTransactions());
|
|
466
|
-
const txPoolQueued = txMapToArray_1.txMapToArray(this._txPool.getQueuedTransactions());
|
|
473
|
+
const txPoolPending = (0, txMapToArray_1.txMapToArray)(this._txPool.getPendingTransactions());
|
|
474
|
+
const txPoolQueued = (0, txMapToArray_1.txMapToArray)(this._txPool.getQueuedTransactions());
|
|
467
475
|
return txPoolPending.concat(txPoolQueued);
|
|
468
476
|
}
|
|
469
477
|
async signPersonalMessage(address, data) {
|
|
470
|
-
const messageHash = ethereumjs_util_1.hashPersonalMessage(data);
|
|
478
|
+
const messageHash = (0, ethereumjs_util_1.hashPersonalMessage)(data);
|
|
471
479
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
472
|
-
return ethereumjs_util_1.ecsign(messageHash, privateKey);
|
|
480
|
+
return (0, ethereumjs_util_1.ecsign)(messageHash, privateKey);
|
|
473
481
|
}
|
|
474
482
|
async signTypedDataV4(address, typedData) {
|
|
475
483
|
const privateKey = this._getLocalAccountPrivateKey(address);
|
|
@@ -492,6 +500,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
492
500
|
nextBlockTimestamp: this.getNextBlockTimestamp(),
|
|
493
501
|
irregularStatesByBlockNumber: this._irregularStatesByBlockNumber,
|
|
494
502
|
userProvidedNextBlockBaseFeePerGas: this.getUserProvidedNextBlockBaseFeePerGas(),
|
|
503
|
+
coinbase: this.getCoinbaseAddress().toString(),
|
|
495
504
|
};
|
|
496
505
|
this._irregularStatesByBlockNumber = new Map(this._irregularStatesByBlockNumber);
|
|
497
506
|
this._snapshots.push(snapshot);
|
|
@@ -528,6 +537,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
528
537
|
else {
|
|
529
538
|
this._resetUserProvidedNextBlockBaseFeePerGas();
|
|
530
539
|
}
|
|
540
|
+
this._coinbase = snapshot.coinbase;
|
|
531
541
|
// We delete this and the following snapshots, as they can only be used
|
|
532
542
|
// once in Ganache
|
|
533
543
|
this._snapshots.splice(snapshotIndex);
|
|
@@ -559,7 +569,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
559
569
|
id: filterId,
|
|
560
570
|
type: filter_1.Type.BLOCK_SUBSCRIPTION,
|
|
561
571
|
deadline: this._newDeadline(),
|
|
562
|
-
hashes: [ethereumjs_util_1.bufferToHex(block.header.hash())],
|
|
572
|
+
hashes: [(0, ethereumjs_util_1.bufferToHex)(block.header.hash())],
|
|
563
573
|
logs: [],
|
|
564
574
|
subscription: isSubscription,
|
|
565
575
|
});
|
|
@@ -628,7 +638,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
628
638
|
async addCompilationResult(solcVersion, compilerInput, compilerOutput) {
|
|
629
639
|
let bytecodes;
|
|
630
640
|
try {
|
|
631
|
-
bytecodes = compiler_to_model_1.createModelsAndDecodeBytecodes(solcVersion, compilerInput, compilerOutput);
|
|
641
|
+
bytecodes = (0, compiler_to_model_1.createModelsAndDecodeBytecodes)(solcVersion, compilerInput, compilerOutput);
|
|
632
642
|
}
|
|
633
643
|
catch (error) {
|
|
634
644
|
console.warn(chalk_1.default.yellow("The Hardhat Network tracing engine could not be updated. Run Hardhat with --verbose to learn more."));
|
|
@@ -641,15 +651,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
641
651
|
return true;
|
|
642
652
|
}
|
|
643
653
|
addImpersonatedAccount(address) {
|
|
644
|
-
this._impersonatedAccounts.add(ethereumjs_util_1.bufferToHex(address));
|
|
654
|
+
this._impersonatedAccounts.add((0, ethereumjs_util_1.bufferToHex)(address));
|
|
645
655
|
return true;
|
|
646
656
|
}
|
|
647
657
|
removeImpersonatedAccount(address) {
|
|
648
|
-
return this._impersonatedAccounts.delete(ethereumjs_util_1.bufferToHex(address));
|
|
658
|
+
return this._impersonatedAccounts.delete((0, ethereumjs_util_1.bufferToHex)(address));
|
|
649
659
|
}
|
|
650
660
|
setAutomine(automine) {
|
|
651
661
|
this._automine = automine;
|
|
652
662
|
}
|
|
663
|
+
getAutomine() {
|
|
664
|
+
return this._automine;
|
|
665
|
+
}
|
|
653
666
|
async setBlockGasLimit(gasLimit) {
|
|
654
667
|
this._txPool.setBlockGasLimit(gasLimit);
|
|
655
668
|
await this._txPool.updatePendingAndQueued();
|
|
@@ -664,7 +677,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
664
677
|
}
|
|
665
678
|
const isTransactionMined = await this._isTransactionMined(hash);
|
|
666
679
|
if (isTransactionMined) {
|
|
667
|
-
throw new errors_2.InvalidArgumentsError(`Transaction ${ethereumjs_util_1.bufferToHex(hash)} cannot be dropped because it's already mined`);
|
|
680
|
+
throw new errors_2.InvalidArgumentsError(`Transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)} cannot be dropped because it's already mined`);
|
|
668
681
|
}
|
|
669
682
|
return false;
|
|
670
683
|
}
|
|
@@ -697,7 +710,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
697
710
|
async traceTransaction(hash, config) {
|
|
698
711
|
const block = await this.getBlockByTransactionHash(hash);
|
|
699
712
|
if (block === undefined) {
|
|
700
|
-
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${ethereumjs_util_1.bufferToHex(hash)}`);
|
|
713
|
+
throw new errors_2.InvalidInputError(`Unable to find a block containing transaction ${(0, ethereumjs_util_1.bufferToHex)(hash)}`);
|
|
701
714
|
}
|
|
702
715
|
return this._runInBlockContext(new ethereumjs_util_1.BN(block.header.number).subn(1), async () => {
|
|
703
716
|
const blockNumber = block.header.number.toNumber();
|
|
@@ -705,7 +718,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
705
718
|
let vm = this._vm;
|
|
706
719
|
if (blockchain instanceof ForkBlockchain_1.ForkBlockchain &&
|
|
707
720
|
blockNumber <= blockchain.getForkBlockNumber().toNumber()) {
|
|
708
|
-
errors_1.assertHardhatInvariant(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
721
|
+
(0, errors_1.assertHardhatInvariant)(this._forkNetworkId !== undefined, "this._forkNetworkId should exist if the blockchain is an instance of ForkBlockchain");
|
|
709
722
|
const common = getCommonForTracing(this._forkNetworkId, blockNumber);
|
|
710
723
|
vm = new vm_1.default({
|
|
711
724
|
common,
|
|
@@ -799,7 +812,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
799
812
|
baseFeePerGas.push(pendingBlock.header.calcNextBaseFee());
|
|
800
813
|
}
|
|
801
814
|
else {
|
|
802
|
-
errors_1.assertHardhatInvariant(false, "This should never happen");
|
|
815
|
+
(0, errors_1.assertHardhatInvariant)(false, "This should never happen");
|
|
803
816
|
}
|
|
804
817
|
}
|
|
805
818
|
return {
|
|
@@ -809,6 +822,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
809
822
|
reward: rewardPercentiles.length > 0 ? reward : undefined,
|
|
810
823
|
};
|
|
811
824
|
}
|
|
825
|
+
async setCoinbase(coinbase) {
|
|
826
|
+
this._coinbase = coinbase.toString();
|
|
827
|
+
}
|
|
812
828
|
_getGasUsedRatio(block) {
|
|
813
829
|
const FLOATS_PRECISION = 100000;
|
|
814
830
|
return (block.header.gasUsed
|
|
@@ -824,31 +840,47 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
824
840
|
const receipts = await Promise.all(block.transactions
|
|
825
841
|
.map((tx) => tx.hash())
|
|
826
842
|
.map((hash) => this.getTransactionReceipt(hash)));
|
|
827
|
-
const
|
|
828
|
-
.map((r) =>
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
843
|
+
const effectiveGasRewardAndGas = receipts
|
|
844
|
+
.map((r, i) => {
|
|
845
|
+
var _a;
|
|
846
|
+
const tx = block.transactions[i];
|
|
847
|
+
const baseFeePerGas = (_a = block.header.baseFeePerGas) !== null && _a !== void 0 ? _a : new ethereumjs_util_1.BN(0);
|
|
848
|
+
// reward = min(maxPriorityFeePerGas, maxFeePerGas - baseFeePerGas)
|
|
849
|
+
let effectiveGasReward;
|
|
850
|
+
if ("maxPriorityFeePerGas" in tx) {
|
|
851
|
+
effectiveGasReward = tx.maxFeePerGas.sub(baseFeePerGas);
|
|
852
|
+
if (tx.maxPriorityFeePerGas.lt(effectiveGasReward)) {
|
|
853
|
+
effectiveGasReward = tx.maxPriorityFeePerGas;
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
effectiveGasReward = tx.gasPrice.sub(baseFeePerGas);
|
|
858
|
+
}
|
|
859
|
+
return {
|
|
860
|
+
effectiveGasReward,
|
|
861
|
+
gasUsed: (0, base_types_1.rpcQuantityToBN)(r === null || r === void 0 ? void 0 : r.gasUsed),
|
|
862
|
+
};
|
|
863
|
+
})
|
|
864
|
+
.sort((a, b) => a.effectiveGasReward.cmp(b.effectiveGasReward));
|
|
833
865
|
return rewardPercentiles.map((p) => {
|
|
834
866
|
let gasUsed = new ethereumjs_util_1.BN(0);
|
|
835
867
|
const targetGas = block.header.gasLimit
|
|
836
868
|
.muln(Math.ceil(p * FLOATS_PRECISION))
|
|
837
869
|
.divn(100 * FLOATS_PRECISION);
|
|
838
|
-
for (const values of
|
|
870
|
+
for (const values of effectiveGasRewardAndGas) {
|
|
839
871
|
gasUsed = gasUsed.add(values.gasUsed);
|
|
840
872
|
if (targetGas.lte(gasUsed)) {
|
|
841
|
-
return values.
|
|
873
|
+
return values.effectiveGasReward;
|
|
842
874
|
}
|
|
843
875
|
}
|
|
844
|
-
return
|
|
845
|
-
.
|
|
876
|
+
return effectiveGasRewardAndGas[effectiveGasRewardAndGas.length - 1]
|
|
877
|
+
.effectiveGasReward;
|
|
846
878
|
});
|
|
847
879
|
}
|
|
848
880
|
async _addPendingTransaction(tx) {
|
|
849
881
|
await this._txPool.addTransaction(tx);
|
|
850
882
|
await this._notifyPendingTransaction(tx);
|
|
851
|
-
return ethereumjs_util_1.bufferToHex(tx.hash());
|
|
883
|
+
return (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
852
884
|
}
|
|
853
885
|
async _mineTransaction(tx) {
|
|
854
886
|
await this._addPendingTransaction(tx);
|
|
@@ -904,7 +936,11 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
904
936
|
sender = tx.getSenderAddress(); // verifies signature as a side effect
|
|
905
937
|
}
|
|
906
938
|
catch (e) {
|
|
907
|
-
|
|
939
|
+
if (e instanceof Error) {
|
|
940
|
+
throw new errors_2.InvalidInputError(e.message);
|
|
941
|
+
}
|
|
942
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
943
|
+
throw e;
|
|
908
944
|
}
|
|
909
945
|
// validate nonce
|
|
910
946
|
const nextPendingNonce = await this._txPool.getNextPendingNonce(sender);
|
|
@@ -961,7 +997,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
961
997
|
const blockGasLimit = this.getBlockGasLimit();
|
|
962
998
|
const minTxFee = this._getMinimalTransactionFee();
|
|
963
999
|
const pendingTxs = this._txPool.getPendingTransactions();
|
|
964
|
-
const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, headerData.baseFeePerGas);
|
|
1000
|
+
const transactionQueue = new TransactionQueue_1.TransactionQueue(pendingTxs, this._mempoolOrder, headerData.baseFeePerGas);
|
|
965
1001
|
let tx = transactionQueue.getNextTransaction();
|
|
966
1002
|
const results = [];
|
|
967
1003
|
const receipts = [];
|
|
@@ -1039,9 +1075,9 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1039
1075
|
this._snapshots.splice(snapshotIndex);
|
|
1040
1076
|
}
|
|
1041
1077
|
_initLocalAccounts(genesisAccounts) {
|
|
1042
|
-
const privateKeys = genesisAccounts.map((acc) => ethereumjs_util_1.toBuffer(acc.privateKey));
|
|
1078
|
+
const privateKeys = genesisAccounts.map((acc) => (0, ethereumjs_util_1.toBuffer)(acc.privateKey));
|
|
1043
1079
|
for (const pk of privateKeys) {
|
|
1044
|
-
this._localAccounts.set(ethereumjs_util_1.bufferToHex(ethereumjs_util_1.privateToAddress(pk)), pk);
|
|
1080
|
+
this._localAccounts.set((0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.privateToAddress)(pk)), pk);
|
|
1045
1081
|
}
|
|
1046
1082
|
}
|
|
1047
1083
|
async _getConsoleLogMessages(vmTrace, vmTracerError) {
|
|
@@ -1079,7 +1115,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1079
1115
|
if (error.error === exceptions_1.ERROR.OUT_OF_GAS) {
|
|
1080
1116
|
if (stackTrace !== undefined &&
|
|
1081
1117
|
this._isContractTooLargeStackTrace(stackTrace)) {
|
|
1082
|
-
return solidity_errors_1.encodeSolidityStackTrace("Transaction ran out of gas", stackTrace);
|
|
1118
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)("Transaction ran out of gas", stackTrace);
|
|
1083
1119
|
}
|
|
1084
1120
|
return new errors_2.TransactionExecutionError("Transaction ran out of gas");
|
|
1085
1121
|
}
|
|
@@ -1101,12 +1137,12 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1101
1137
|
if (error.error === exceptions_1.ERROR.REVERT) {
|
|
1102
1138
|
const fallbackMessage = `VM Exception while processing transaction: revert ${returnDataExplanation}`;
|
|
1103
1139
|
if (stackTrace !== undefined) {
|
|
1104
|
-
return solidity_errors_1.encodeSolidityStackTrace(fallbackMessage, stackTrace);
|
|
1140
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(fallbackMessage, stackTrace);
|
|
1105
1141
|
}
|
|
1106
1142
|
return new errors_2.TransactionExecutionError(fallbackMessage);
|
|
1107
1143
|
}
|
|
1108
1144
|
if (stackTrace !== undefined) {
|
|
1109
|
-
return solidity_errors_1.encodeSolidityStackTrace(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1145
|
+
return (0, solidity_errors_1.encodeSolidityStackTrace)(`Transaction failed: revert ${returnDataExplanation}`, stackTrace);
|
|
1110
1146
|
}
|
|
1111
1147
|
return new errors_2.TransactionExecutionError(`Transaction reverted ${returnDataExplanation}`);
|
|
1112
1148
|
}
|
|
@@ -1119,7 +1155,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1119
1155
|
let blockTimestamp;
|
|
1120
1156
|
let offsetShouldChange;
|
|
1121
1157
|
let newOffset = new ethereumjs_util_1.BN(0);
|
|
1122
|
-
const currentTimestamp = new ethereumjs_util_1.BN(getCurrentTimestamp_1.getCurrentTimestamp());
|
|
1158
|
+
const currentTimestamp = new ethereumjs_util_1.BN((0, getCurrentTimestamp_1.getCurrentTimestamp)());
|
|
1123
1159
|
// if timestamp is not provided, we check nextBlockTimestamp, if it is
|
|
1124
1160
|
// set, we use it as the timestamp instead. If it is not set, we use
|
|
1125
1161
|
// time offset + real time as the timestamp.
|
|
@@ -1148,7 +1184,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1148
1184
|
async _notifyPendingTransaction(tx) {
|
|
1149
1185
|
this._filters.forEach((filter) => {
|
|
1150
1186
|
if (filter.type === filter_1.Type.PENDING_TRANSACTION_SUBSCRIPTION) {
|
|
1151
|
-
const hash = ethereumjs_util_1.bufferToHex(tx.hash());
|
|
1187
|
+
const hash = (0, ethereumjs_util_1.bufferToHex)(tx.hash());
|
|
1152
1188
|
if (filter.subscription) {
|
|
1153
1189
|
this._emitEthEvent(filter.id, hash);
|
|
1154
1190
|
return;
|
|
@@ -1169,7 +1205,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1169
1205
|
* was added to the blockchain.
|
|
1170
1206
|
*/
|
|
1171
1207
|
async _saveBlockAsSuccessfullyRun(block, runBlockResult) {
|
|
1172
|
-
const receipts = output_1.getRpcReceiptOutputsFromLocalBlockExecution(block, runBlockResult, output_1.shouldShowTransactionTypeForHardfork(this._vm._common));
|
|
1208
|
+
const receipts = (0, output_1.getRpcReceiptOutputsFromLocalBlockExecution)(block, runBlockResult, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common));
|
|
1173
1209
|
this._blockchain.addTransactionReceipts(receipts);
|
|
1174
1210
|
const td = await this.getBlockTotalDifficulty(block);
|
|
1175
1211
|
const rpcLogs = [];
|
|
@@ -1184,14 +1220,14 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1184
1220
|
case filter_1.Type.BLOCK_SUBSCRIPTION:
|
|
1185
1221
|
const hash = block.hash();
|
|
1186
1222
|
if (filter.subscription) {
|
|
1187
|
-
this._emitEthEvent(filter.id, output_1.getRpcBlock(block, td, output_1.shouldShowTransactionTypeForHardfork(this._vm._common), false));
|
|
1223
|
+
this._emitEthEvent(filter.id, (0, output_1.getRpcBlock)(block, td, (0, output_1.shouldShowTransactionTypeForHardfork)(this._vm._common), false));
|
|
1188
1224
|
return;
|
|
1189
1225
|
}
|
|
1190
|
-
filter.hashes.push(ethereumjs_util_1.bufferToHex(hash));
|
|
1226
|
+
filter.hashes.push((0, ethereumjs_util_1.bufferToHex)(hash));
|
|
1191
1227
|
break;
|
|
1192
1228
|
case filter_1.Type.LOGS_SUBSCRIPTION:
|
|
1193
|
-
if (filter_1.bloomFilter(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1194
|
-
const logs = filter_1.filterLogs(rpcLogs, filter.criteria);
|
|
1229
|
+
if ((0, filter_1.bloomFilter)(new bloom_1.default(block.header.bloom), filter.criteria.addresses, filter.criteria.normalizedTopics)) {
|
|
1230
|
+
const logs = (0, filter_1.filterLogs)(rpcLogs, filter.criteria);
|
|
1195
1231
|
if (logs.length === 0) {
|
|
1196
1232
|
return;
|
|
1197
1233
|
}
|
|
@@ -1325,7 +1361,7 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1325
1361
|
// We know that this block number exists, because otherwise
|
|
1326
1362
|
// there would be an error in the RPC layer.
|
|
1327
1363
|
const block = await this.getBlockByNumber(blockNumberOrPending);
|
|
1328
|
-
errors_1.assertHardhatInvariant(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1364
|
+
(0, errors_1.assertHardhatInvariant)(block !== undefined, "Tried to run a tx in the context of a non-existent block");
|
|
1329
1365
|
blockContext = block;
|
|
1330
1366
|
// we don't need to add the tx to the block because runTx doesn't
|
|
1331
1367
|
// know anything about the txs in the current block
|
|
@@ -1458,7 +1494,7 @@ function getCommonForTracing(networkId, blockNumber) {
|
|
|
1458
1494
|
common.setHardfork(common.activeHardfork(blockNumber));
|
|
1459
1495
|
return common;
|
|
1460
1496
|
}
|
|
1461
|
-
catch (
|
|
1497
|
+
catch (_a) {
|
|
1462
1498
|
throw new errors_2.InternalError(`Network id ${networkId} does not correspond to a network that Hardhat can trace`);
|
|
1463
1499
|
}
|
|
1464
1500
|
}
|