hardhat 2.10.1 → 2.11.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/builtin-tasks/compile.js +6 -8
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/node.js +9 -12
- package/builtin-tasks/node.js.map +1 -1
- package/builtin-tasks/test.js +2 -3
- package/builtin-tasks/test.js.map +1 -1
- package/console.sol +444 -444
- package/internal/artifacts.js +1 -1
- package/internal/artifacts.js.map +1 -1
- package/internal/cli/ArgumentsParser.js +5 -2
- package/internal/cli/ArgumentsParser.js.map +1 -1
- package/internal/cli/analytics.js +2 -2
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/autocomplete.js +20 -32
- package/internal/cli/autocomplete.js.map +1 -1
- package/internal/cli/cli.js +1 -1
- package/internal/cli/cli.js.map +1 -1
- package/internal/cli/project-creation.js +14 -4
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +2 -0
- package/internal/constants.js.map +1 -1
- package/internal/core/config/config-loading.js +2 -3
- 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 +84 -35
- package/internal/core/config/config-resolution.js.map +1 -1
- package/internal/core/config/config-validation.js +38 -20
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +17 -4
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors.js +4 -2
- 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/flamegraph.d.ts +10 -0
- package/internal/core/flamegraph.d.ts.map +1 -0
- package/internal/core/flamegraph.js +245 -0
- package/internal/core/flamegraph.js.map +1 -0
- package/internal/core/jsonrpc/types/base-types.d.ts +7 -8
- package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/base-types.js +24 -24
- package/internal/core/jsonrpc/types/base-types.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +15 -10
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.js +2 -0
- package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.d.ts +5 -6
- package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -7
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +7 -8
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
- package/internal/core/jsonrpc/types/output/block.d.ts +29 -30
- package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/block.js +8 -2
- package/internal/core/jsonrpc/types/output/block.js.map +1 -1
- package/internal/core/jsonrpc/types/output/log.d.ts +3 -4
- package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/log.js.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.d.ts +10 -11
- package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.d.ts +13 -14
- package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
- package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +30 -24
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/chainId.js +1 -1
- 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 +5 -5
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/gas-providers.d.ts +4 -4
- package/internal/core/providers/gas-providers.d.ts.map +1 -1
- package/internal/core/providers/gas-providers.js +16 -15
- package/internal/core/providers/gas-providers.js.map +1 -1
- package/internal/core/providers/http.js +7 -2
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/providers/util.js +5 -8
- package/internal/core/providers/util.js.map +1 -1
- package/internal/core/runtime-environment.js +1 -1
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/task-profiling.d.ts +18 -0
- package/internal/core/task-profiling.d.ts.map +1 -0
- package/internal/core/task-profiling.js +50 -0
- package/internal/core/task-profiling.js.map +1 -0
- package/internal/core/typescript-support.js +3 -3
- package/internal/core/typescript-support.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts +39 -39
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +14 -14
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainBase.d.ts +13 -10
- package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainBase.js +38 -16
- package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +15 -16
- package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +33 -29
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +7 -8
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +13 -14
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/PoolState.d.ts +1 -1
- package/internal/hardhat-network/provider/PoolState.d.ts.map +1 -1
- package/internal/hardhat-network/provider/PoolState.js +2 -3
- package/internal/hardhat-network/provider/PoolState.js.map +1 -1
- package/internal/hardhat-network/provider/TransactionQueue.d.ts +2 -3
- package/internal/hardhat-network/provider/TransactionQueue.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TransactionQueue.js +3 -3
- package/internal/hardhat-network/provider/TransactionQueue.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.d.ts +8 -8
- package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +66 -68
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js +2 -2
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
- package/internal/hardhat-network/provider/filter.d.ts +5 -6
- package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
- package/internal/hardhat-network/provider/filter.js +7 -8
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +10 -11
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +51 -47
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +8 -10
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +51 -69
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +2 -3
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js +7 -11
- package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts +2 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +92 -68
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/evm.js +14 -14
- package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +13 -13
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts +7 -8
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +29 -32
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/modules/net.d.ts +1 -1
- package/internal/hardhat-network/provider/modules/net.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/personal.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/personal.js +3 -3
- package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/web3.js +5 -4
- package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +30 -29
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +47 -42
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +262 -208
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +5 -6
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +39 -36
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +1 -2
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/return-data.d.ts +2 -2
- package/internal/hardhat-network/provider/return-data.d.ts.map +1 -1
- package/internal/hardhat-network/provider/return-data.js +4 -1
- package/internal/hardhat-network/provider/return-data.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +5 -5
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +60 -17
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +4 -4
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +59 -16
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +3 -3
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +41 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +4 -4
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +7 -23
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +3 -3
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +7 -22
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +3 -3
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -6
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js +2 -3
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +1 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +5 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeAccount.js +6 -6
- package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +2 -2
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +7 -23
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +1 -2
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +7 -8
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +4 -4
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +6 -3
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +22 -4
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/utils/random.d.ts +15 -0
- package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/random.js +48 -0
- package/internal/hardhat-network/provider/utils/random.js.map +1 -0
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts +1 -2
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js +5 -4
- package/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.js.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +2 -2
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.js +7 -7
- package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/txMapToArray.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +6 -8
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +51 -47
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/constants.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/constants.js +6 -0
- package/internal/hardhat-network/stack-traces/constants.js.map +1 -0
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +2 -2
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +29 -19
- 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 +48 -26
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/logger.d.ts +223 -2
- package/internal/hardhat-network/stack-traces/logger.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/logger.js +445 -224
- package/internal/hardhat-network/stack-traces/logger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.d.ts +6 -7
- package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +6 -6
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/panic-errors.d.ts +1 -2
- package/internal/hardhat-network/stack-traces/panic-errors.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/panic-errors.js +1 -1
- package/internal/hardhat-network/stack-traces/panic-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +21 -12
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +6 -5
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts +2 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +79 -78
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +5 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +3 -2
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +15 -16
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/reset.js +1 -1
- package/internal/reset.js.map +1 -1
- package/internal/sentry/anonymizer.js +2 -3
- package/internal/sentry/anonymizer.js.map +1 -1
- package/internal/sentry/subprocess.js +1 -1
- package/internal/sentry/subprocess.js.map +1 -1
- package/internal/sentry/transport.js +3 -4
- package/internal/sentry/transport.js.map +1 -1
- package/internal/solidity/compilation-job.js +2 -4
- package/internal/solidity/compilation-job.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +6 -6
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/solidity/dependencyGraph.js +3 -5
- package/internal/solidity/dependencyGraph.js.map +1 -1
- package/internal/solidity/parse.js +1 -1
- package/internal/solidity/parse.js.map +1 -1
- package/internal/solidity/resolver.js +4 -1
- 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/bigint.d.ts +25 -0
- package/internal/util/bigint.d.ts.map +1 -0
- package/internal/util/bigint.js +67 -0
- package/internal/util/bigint.js.map +1 -0
- package/internal/util/download.js +1 -1
- package/internal/util/download.js.map +1 -1
- package/internal/util/fs-utils.d.ts +32 -0
- package/internal/util/fs-utils.d.ts.map +1 -0
- package/internal/util/fs-utils.js +151 -0
- package/internal/util/fs-utils.js.map +1 -0
- package/internal/util/hardforks.d.ts +3 -3
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +5 -28
- 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/lazy.js +2 -2
- package/internal/util/lazy.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 +5 -2
- package/internal/util/scripts-runner.js.map +1 -1
- package/internal/util/wei-values.d.ts +1 -2
- package/internal/util/wei-values.d.ts.map +1 -1
- package/internal/util/wei-values.js +9 -10
- package/internal/util/wei-values.js.map +1 -1
- package/internal/vendor/await-semaphore/index.d.ts +12 -0
- package/internal/vendor/await-semaphore/index.d.ts.map +1 -0
- package/internal/vendor/await-semaphore/index.js +64 -0
- package/internal/vendor/await-semaphore/index.js.map +1 -0
- package/package.json +13 -9
- package/profiling.d.ts +18 -0
- package/profiling.d.ts.map +1 -0
- package/profiling.js +32 -0
- package/profiling.js.map +1 -0
- package/sample-projects/javascript/scripts/deploy.js +3 -1
- package/sample-projects/javascript/test/Lock.js +1 -1
- package/sample-projects/typescript/scripts/deploy.ts +1 -1
- package/sample-projects/typescript/test/Lock.ts +1 -1
- package/src/builtin-tasks/node.ts +4 -6
- package/src/internal/constants.ts +3 -1
- package/src/internal/core/config/config-resolution.ts +30 -7
- package/src/internal/core/config/default-config.ts +12 -4
- package/src/internal/core/jsonrpc/types/base-types.ts +23 -24
- package/src/internal/core/jsonrpc/types/input/blockTag.ts +2 -4
- package/src/internal/core/jsonrpc/types/input/callRequest.ts +0 -4
- package/src/internal/core/jsonrpc/types/input/filterRequest.ts +0 -4
- package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +0 -4
- package/src/internal/core/jsonrpc/types/output/block.ts +0 -4
- package/src/internal/core/jsonrpc/types/output/log.ts +0 -4
- package/src/internal/core/jsonrpc/types/output/receipt.ts +0 -4
- package/src/internal/core/jsonrpc/types/output/transaction.ts +0 -4
- package/src/internal/core/providers/accounts.ts +16 -26
- package/src/internal/core/providers/construction.ts +5 -3
- package/src/internal/core/providers/gas-providers.ts +25 -33
- package/src/internal/core/providers/util.ts +1 -1
- package/src/internal/hardhat-network/jsonrpc/client.ts +22 -22
- package/src/internal/hardhat-network/provider/BlockchainBase.ts +62 -25
- package/src/internal/hardhat-network/provider/BlockchainData.ts +39 -42
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +21 -21
- package/src/internal/hardhat-network/provider/PoolState.ts +3 -4
- package/src/internal/hardhat-network/provider/TransactionQueue.ts +11 -8
- package/src/internal/hardhat-network/provider/TxPool.ts +62 -64
- package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +3 -3
- package/src/internal/hardhat-network/provider/filter.ts +9 -12
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +52 -50
- package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +35 -60
- package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +2 -2
- package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +3 -3
- package/src/internal/hardhat-network/provider/modules/eth.ts +88 -63
- package/src/internal/hardhat-network/provider/modules/evm.ts +19 -22
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +21 -19
- package/src/internal/hardhat-network/provider/modules/logger.ts +33 -40
- package/src/internal/hardhat-network/provider/modules/net.ts +1 -1
- package/src/internal/hardhat-network/provider/modules/personal.ts +2 -1
- package/src/internal/hardhat-network/provider/modules/web3.ts +5 -4
- package/src/internal/hardhat-network/provider/node-types.ts +32 -31
- package/src/internal/hardhat-network/provider/node.ts +379 -343
- package/src/internal/hardhat-network/provider/output.ts +32 -37
- package/src/internal/hardhat-network/provider/provider.ts +5 -6
- package/src/internal/hardhat-network/provider/return-data.ts +6 -3
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +51 -24
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +50 -23
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +29 -11
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +12 -24
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +11 -22
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +3 -3
- package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +8 -9
- package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +4 -0
- package/src/internal/hardhat-network/provider/utils/makeAccount.ts +4 -10
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +8 -34
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +8 -9
- package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +3 -3
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +34 -6
- package/src/internal/hardhat-network/provider/utils/random.ts +54 -0
- package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +6 -7
- package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +8 -8
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +16 -6
- package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +11 -7
- package/src/internal/hardhat-network/stack-traces/logger.ts +444 -223
- package/src/internal/hardhat-network/stack-traces/message-trace.ts +6 -7
- package/src/internal/hardhat-network/stack-traces/model.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/panic-errors.ts +3 -5
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +16 -1
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +6 -6
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -1
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +106 -103
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +23 -18
- package/src/internal/solidity/compiler/downloader.ts +5 -2
- package/src/internal/util/bigint.ts +84 -0
- package/src/internal/util/hardforks.ts +4 -29
- package/src/internal/util/wei-values.ts +11 -13
- package/src/types/config.ts +8 -10
- package/types/config.d.ts +8 -9
- package/types/config.d.ts.map +1 -1
- package/src/internal/hardhat-network/provider/fork/random.ts +0 -33
- package/src/internal/hardhat-network/provider/utils/bnToHex.ts +0 -5
- package/src/internal/hardhat-network/provider/utils/makeForkCommon.ts +0 -15
package/profiling.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adhocProfileSync = exports.adhocProfile = void 0;
|
|
4
|
+
const errors_1 = require("./internal/core/errors");
|
|
5
|
+
/**
|
|
6
|
+
* Utility to create ad-hoc profiles when computing flamegraphs. You can think
|
|
7
|
+
* of these as virtual tasks that execute the function `f`.
|
|
8
|
+
*
|
|
9
|
+
* This is an **unstable** feature, only meant for development. DO NOT use in
|
|
10
|
+
* production code nor plugins.
|
|
11
|
+
*
|
|
12
|
+
* @param name The name of the profile. Think of it as a virtual task name.
|
|
13
|
+
* @param f The function you want to profile.
|
|
14
|
+
*/
|
|
15
|
+
async function adhocProfile(name, f) {
|
|
16
|
+
const globalAsAny = global;
|
|
17
|
+
(0, errors_1.assertHardhatInvariant)("adhocProfile" in globalAsAny, "adhocProfile is missing. Are you running with --flamegraph?");
|
|
18
|
+
return globalAsAny.adhocProfile(name, f);
|
|
19
|
+
}
|
|
20
|
+
exports.adhocProfile = adhocProfile;
|
|
21
|
+
/**
|
|
22
|
+
* Sync version of adhocProfile
|
|
23
|
+
*
|
|
24
|
+
* @see adhocProfile
|
|
25
|
+
*/
|
|
26
|
+
function adhocProfileSync(name, f) {
|
|
27
|
+
const globalAsAny = global;
|
|
28
|
+
(0, errors_1.assertHardhatInvariant)("adhocProfileSync" in globalAsAny, "adhocProfileSync is missing. Are you running with --flamegraph?");
|
|
29
|
+
return globalAsAny.adhocProfileSync(name, f);
|
|
30
|
+
}
|
|
31
|
+
exports.adhocProfileSync = adhocProfileSync;
|
|
32
|
+
//# sourceMappingURL=profiling.js.map
|
package/profiling.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiling.js","sourceRoot":"","sources":["src/profiling.ts"],"names":[],"mappings":";;;AAAA,mDAAgE;AAEhE;;;;;;;;;GASG;AACI,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,CAAmB;IAEnB,MAAM,WAAW,GAAG,MAAa,CAAC;IAClC,IAAA,+BAAsB,EACpB,cAAc,IAAI,WAAW,EAC7B,6DAA6D,CAC9D,CAAC;IACF,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAVD,oCAUC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAI,IAAY,EAAE,CAAU;IAC1D,MAAM,WAAW,GAAG,MAAa,CAAC;IAClC,IAAA,+BAAsB,EACpB,kBAAkB,IAAI,WAAW,EACjC,iEAAiE,CAClE,CAAC;IACF,OAAO,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAPD,4CAOC"}
|
|
@@ -18,7 +18,9 @@ async function main() {
|
|
|
18
18
|
|
|
19
19
|
await lock.deployed();
|
|
20
20
|
|
|
21
|
-
console.log(
|
|
21
|
+
console.log(
|
|
22
|
+
`Lock with 1 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`
|
|
23
|
+
);
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
// We recommend this pattern to be able to use async/await everywhere
|
|
@@ -8,7 +8,7 @@ const { expect } = require("chai");
|
|
|
8
8
|
describe("Lock", function () {
|
|
9
9
|
// We define a fixture to reuse the same setup in every test.
|
|
10
10
|
// We use loadFixture to run this setup once, snapshot that state,
|
|
11
|
-
// and reset Hardhat Network to that
|
|
11
|
+
// and reset Hardhat Network to that snapshot in every test.
|
|
12
12
|
async function deployOneYearLockFixture() {
|
|
13
13
|
const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
|
|
14
14
|
const ONE_GWEI = 1_000_000_000;
|
|
@@ -12,7 +12,7 @@ async function main() {
|
|
|
12
12
|
|
|
13
13
|
await lock.deployed();
|
|
14
14
|
|
|
15
|
-
console.log(
|
|
15
|
+
console.log(`Lock with 1 ETH and unlock timestamp ${unlockTime} deployed to ${lock.address}`);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// We recommend this pattern to be able to use async/await everywhere
|
|
@@ -6,7 +6,7 @@ import { ethers } from "hardhat";
|
|
|
6
6
|
describe("Lock", function () {
|
|
7
7
|
// We define a fixture to reuse the same setup in every test.
|
|
8
8
|
// We use loadFixture to run this setup once, snapshot that state,
|
|
9
|
-
// and reset Hardhat Network to that
|
|
9
|
+
// and reset Hardhat Network to that snapshot in every test.
|
|
10
10
|
async function deployOneYearLockFixture() {
|
|
11
11
|
const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
|
|
12
12
|
const ONE_GWEI = 1_000_000_000;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type EthereumjsUtilT from "
|
|
1
|
+
import type EthereumjsUtilT from "@ignored/util";
|
|
2
2
|
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import debug from "debug";
|
|
@@ -51,8 +51,8 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
|
|
|
51
51
|
!Array.isArray(networkConfig.accounts) &&
|
|
52
52
|
networkConfig.accounts.mnemonic === HARDHAT_NETWORK_MNEMONIC;
|
|
53
53
|
|
|
54
|
-
const {
|
|
55
|
-
require("
|
|
54
|
+
const { bufferToHex, privateToAddress, toBuffer, toChecksumAddress } =
|
|
55
|
+
require("@ignored/util") as typeof EthereumjsUtilT;
|
|
56
56
|
|
|
57
57
|
console.log("Accounts");
|
|
58
58
|
console.log("========");
|
|
@@ -72,9 +72,7 @@ function logHardhatNetworkAccounts(networkConfig: HardhatNetworkConfig) {
|
|
|
72
72
|
bufferToHex(privateToAddress(toBuffer(account.privateKey)))
|
|
73
73
|
);
|
|
74
74
|
|
|
75
|
-
const balance =
|
|
76
|
-
.div(new BN(10).pow(new BN(18)))
|
|
77
|
-
.toString(10);
|
|
75
|
+
const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
|
|
78
76
|
|
|
79
77
|
let entry = `Account #${index}: ${address} (${balance} ETH)`;
|
|
80
78
|
|
|
@@ -19,9 +19,11 @@ export const HARDHAT_NETWORK_SUPPORTED_HARDFORKS = [
|
|
|
19
19
|
"berlin",
|
|
20
20
|
"london",
|
|
21
21
|
"arrowGlacier",
|
|
22
|
+
"grayGlacier",
|
|
23
|
+
"merge",
|
|
22
24
|
];
|
|
23
25
|
|
|
24
|
-
export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS =
|
|
26
|
+
export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = ["fifo", "priority"] as const;
|
|
25
27
|
|
|
26
28
|
export const ARTIFACT_FORMAT_VERSION = "hh-sol-artifact-1";
|
|
27
29
|
export const DEBUG_FILE_FORMAT_VERSION = "hh-sol-dbg-1";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BN } from "ethereumjs-util";
|
|
2
1
|
import * as fs from "fs";
|
|
3
2
|
import cloneDeep from "lodash/cloneDeep";
|
|
4
3
|
import path from "path";
|
|
@@ -33,6 +32,7 @@ import {
|
|
|
33
32
|
SolidityUserConfig,
|
|
34
33
|
} from "../../../types";
|
|
35
34
|
import { HARDHAT_NETWORK_NAME } from "../../constants";
|
|
35
|
+
import { BigIntUtils } from "../../util/bigint";
|
|
36
36
|
import { HardforkName } from "../../util/hardforks";
|
|
37
37
|
import { fromEntries } from "../../util/lang";
|
|
38
38
|
import { assertHardhatInvariant } from "../errors";
|
|
@@ -157,7 +157,9 @@ function resolveHardhatNetworkConfig(
|
|
|
157
157
|
if (forking !== undefined) {
|
|
158
158
|
const blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
|
|
159
159
|
if (blockNumber !== undefined) {
|
|
160
|
-
forking.blockNumber =
|
|
160
|
+
forking.blockNumber = BigIntUtils.mapNumberToBigInt(
|
|
161
|
+
hardhatNetworkConfig?.forking?.blockNumber
|
|
162
|
+
);
|
|
161
163
|
}
|
|
162
164
|
|
|
163
165
|
const httpHeaders = hardhatNetworkConfig.forking?.httpHeaders;
|
|
@@ -168,16 +170,26 @@ function resolveHardhatNetworkConfig(
|
|
|
168
170
|
|
|
169
171
|
const mining = resolveMiningConfig(hardhatNetworkConfig.mining);
|
|
170
172
|
|
|
171
|
-
const minGasPrice =
|
|
173
|
+
const minGasPrice = BigInt(
|
|
172
174
|
hardhatNetworkConfig.minGasPrice ??
|
|
173
175
|
clonedDefaultHardhatNetworkParams.minGasPrice
|
|
174
176
|
);
|
|
175
177
|
|
|
176
|
-
const blockGasLimit =
|
|
178
|
+
const blockGasLimit = BigInt(
|
|
177
179
|
hardhatNetworkConfig.blockGasLimit ??
|
|
178
|
-
|
|
180
|
+
clonedDefaultHardhatNetworkParams.blockGasLimit
|
|
181
|
+
);
|
|
179
182
|
|
|
180
|
-
const gas =
|
|
183
|
+
const gas = BigIntUtils.mapNumberToBigInt(
|
|
184
|
+
hardhatNetworkConfig.gas ?? blockGasLimit
|
|
185
|
+
);
|
|
186
|
+
const gasPrice = BigIntUtils.mapNumberToBigInt(
|
|
187
|
+
hardhatNetworkConfig.gasPrice ?? clonedDefaultHardhatNetworkParams.gasPrice
|
|
188
|
+
);
|
|
189
|
+
const initialBaseFeePerGas = BigIntUtils.mapNumberToBigInt(
|
|
190
|
+
hardhatNetworkConfig.initialBaseFeePerGas ??
|
|
191
|
+
clonedDefaultHardhatNetworkParams.initialBaseFeePerGas
|
|
192
|
+
);
|
|
181
193
|
|
|
182
194
|
const initialDate =
|
|
183
195
|
hardhatNetworkConfig.initialDate ?? new Date().toISOString();
|
|
@@ -206,7 +218,7 @@ function resolveHardhatNetworkConfig(
|
|
|
206
218
|
}
|
|
207
219
|
}
|
|
208
220
|
|
|
209
|
-
const config = {
|
|
221
|
+
const config: HardhatNetworkConfig = {
|
|
210
222
|
...clonedDefaultHardhatNetworkParams,
|
|
211
223
|
...hardhatNetworkConfig,
|
|
212
224
|
accounts,
|
|
@@ -214,6 +226,8 @@ function resolveHardhatNetworkConfig(
|
|
|
214
226
|
mining,
|
|
215
227
|
blockGasLimit,
|
|
216
228
|
gas,
|
|
229
|
+
gasPrice,
|
|
230
|
+
initialBaseFeePerGas,
|
|
217
231
|
initialDate,
|
|
218
232
|
minGasPrice,
|
|
219
233
|
chains,
|
|
@@ -223,6 +237,9 @@ function resolveHardhatNetworkConfig(
|
|
|
223
237
|
if (config.forking === undefined) {
|
|
224
238
|
delete config.forking;
|
|
225
239
|
}
|
|
240
|
+
if (config.initialBaseFeePerGas === undefined) {
|
|
241
|
+
delete config.initialBaseFeePerGas;
|
|
242
|
+
}
|
|
226
243
|
|
|
227
244
|
return config;
|
|
228
245
|
}
|
|
@@ -260,6 +277,12 @@ function resolveHttpNetworkConfig(
|
|
|
260
277
|
...networkConfig,
|
|
261
278
|
accounts,
|
|
262
279
|
url,
|
|
280
|
+
gas: BigIntUtils.mapNumberToBigInt(
|
|
281
|
+
networkConfig.gas ?? defaultHttpNetworkParams.gas
|
|
282
|
+
),
|
|
283
|
+
gasPrice: BigIntUtils.mapNumberToBigInt(
|
|
284
|
+
networkConfig.gasPrice ?? defaultHttpNetworkParams.gasPrice
|
|
285
|
+
),
|
|
263
286
|
};
|
|
264
287
|
}
|
|
265
288
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { BN } from "ethereumjs-util";
|
|
2
|
-
|
|
3
1
|
import { HardhatNetworkConfig } from "../../../types";
|
|
4
2
|
import { HardforkName } from "../../util/hardforks";
|
|
5
3
|
import { HARDHAT_NETWORK_NAME } from "../../constants";
|
|
@@ -39,7 +37,7 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
39
37
|
"gas" | "initialDate"
|
|
40
38
|
> = {
|
|
41
39
|
hardfork: "arrowGlacier",
|
|
42
|
-
blockGasLimit:
|
|
40
|
+
blockGasLimit: 30_000_000n,
|
|
43
41
|
gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
|
|
44
42
|
chainId: 31337,
|
|
45
43
|
throwOnTransactionFailures: true,
|
|
@@ -55,7 +53,7 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
55
53
|
accounts: defaultHardhatNetworkHdAccountsConfigParams,
|
|
56
54
|
loggingEnabled: false,
|
|
57
55
|
gasMultiplier: DEFAULT_GAS_MULTIPLIER,
|
|
58
|
-
minGasPrice:
|
|
56
|
+
minGasPrice: 0n,
|
|
59
57
|
chains: new Map([
|
|
60
58
|
[
|
|
61
59
|
// block numbers below were taken from https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common/src/chains
|
|
@@ -99,6 +97,16 @@ export const defaultHardhatNetworkParams: Omit<
|
|
|
99
97
|
]),
|
|
100
98
|
},
|
|
101
99
|
],
|
|
100
|
+
[
|
|
101
|
+
5, // goerli
|
|
102
|
+
{
|
|
103
|
+
hardforkHistory: new Map([
|
|
104
|
+
[HardforkName.ISTANBUL, 1561651],
|
|
105
|
+
[HardforkName.BERLIN, 4460644],
|
|
106
|
+
[HardforkName.LONDON, 5062605],
|
|
107
|
+
]),
|
|
108
|
+
},
|
|
109
|
+
],
|
|
102
110
|
[
|
|
103
111
|
42, // kovan
|
|
104
112
|
{
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bufferToHex, isValidAddress, toBuffer } from "@ignored/util";
|
|
2
2
|
import * as t from "io-ts";
|
|
3
3
|
|
|
4
|
+
import { BigIntUtils } from "../../../util/bigint";
|
|
4
5
|
import { assertHardhatInvariant, HardhatError } from "../../errors";
|
|
5
6
|
import { ERRORS } from "../../errors-list";
|
|
6
7
|
|
|
7
8
|
const ADDRESS_LENGTH_BYTES = 20;
|
|
8
9
|
const HASH_LENGTH_BYTES = 32;
|
|
9
10
|
|
|
10
|
-
export const rpcQuantity = new t.Type<
|
|
11
|
+
export const rpcQuantity = new t.Type<bigint>(
|
|
11
12
|
"QUANTITY",
|
|
12
|
-
|
|
13
|
-
(u, c) =>
|
|
14
|
-
isRpcQuantityString(u) ? t.success(new BN(toBuffer(u))) : t.failure(u, c),
|
|
13
|
+
BigIntUtils.isBigInt,
|
|
14
|
+
(u, c) => (isRpcQuantityString(u) ? t.success(BigInt(u)) : t.failure(u, c)),
|
|
15
15
|
t.identity
|
|
16
16
|
);
|
|
17
17
|
|
|
@@ -29,14 +29,14 @@ export const rpcHash = new t.Type<Buffer>(
|
|
|
29
29
|
t.identity
|
|
30
30
|
);
|
|
31
31
|
|
|
32
|
-
export const rpcStorageSlot = new t.Type<
|
|
32
|
+
export const rpcStorageSlot = new t.Type<bigint>(
|
|
33
33
|
"Storage slot",
|
|
34
|
-
|
|
34
|
+
BigIntUtils.isBigInt,
|
|
35
35
|
validateStorageSlot,
|
|
36
36
|
t.identity
|
|
37
37
|
);
|
|
38
38
|
|
|
39
|
-
function validateStorageSlot(u: unknown, c: t.Context): t.Validation<
|
|
39
|
+
function validateStorageSlot(u: unknown, c: t.Context): t.Validation<bigint> {
|
|
40
40
|
if (typeof u !== "string") {
|
|
41
41
|
return t.failure(
|
|
42
42
|
u,
|
|
@@ -61,7 +61,7 @@ function validateStorageSlot(u: unknown, c: t.Context): t.Validation<BN> {
|
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
return t.success(
|
|
64
|
+
return t.success(BigInt(u));
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export const rpcAddress = new t.Type<Buffer>(
|
|
@@ -78,10 +78,10 @@ export const rpcUnsignedInteger = new t.Type<number>(
|
|
|
78
78
|
t.identity
|
|
79
79
|
);
|
|
80
80
|
|
|
81
|
-
export const rpcQuantityAsNumber = new t.Type<
|
|
81
|
+
export const rpcQuantityAsNumber = new t.Type<bigint>(
|
|
82
82
|
"Integer",
|
|
83
|
-
|
|
84
|
-
(u, c) => (isInteger(u) ? t.success(
|
|
83
|
+
BigIntUtils.isBigInt,
|
|
84
|
+
(u, c) => (isInteger(u) ? t.success(BigInt(u)) : t.failure(u, c)),
|
|
85
85
|
t.identity
|
|
86
86
|
);
|
|
87
87
|
|
|
@@ -99,10 +99,10 @@ export const rpcFloat = new t.Type<number>(
|
|
|
99
99
|
* fits in a number.
|
|
100
100
|
*/
|
|
101
101
|
export function rpcQuantityToNumber(quantity: string): number {
|
|
102
|
-
return
|
|
102
|
+
return Number(rpcQuantityToBigInt(quantity));
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
export function
|
|
105
|
+
export function rpcQuantityToBigInt(quantity: string): bigint {
|
|
106
106
|
// We validate it in case a value gets here through a cast or any
|
|
107
107
|
if (!isRpcQuantityString(quantity)) {
|
|
108
108
|
throw new HardhatError(ERRORS.NETWORK.INVALID_RPC_QUANTITY_VALUE, {
|
|
@@ -110,26 +110,25 @@ export function rpcQuantityToBN(quantity: string): BN {
|
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
return new BN(buffer);
|
|
113
|
+
return BigInt(quantity);
|
|
115
114
|
}
|
|
116
115
|
|
|
117
|
-
export function numberToRpcQuantity(n: number |
|
|
116
|
+
export function numberToRpcQuantity(n: number | bigint): string {
|
|
118
117
|
assertHardhatInvariant(
|
|
119
|
-
typeof n === "number" ||
|
|
118
|
+
typeof n === "number" || typeof n === "bigint",
|
|
120
119
|
"Expected number"
|
|
121
120
|
);
|
|
122
121
|
|
|
123
122
|
return `0x${n.toString(16)}`;
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
export function numberToRpcStorageSlot(n: number |
|
|
125
|
+
export function numberToRpcStorageSlot(n: number | bigint): string {
|
|
127
126
|
assertHardhatInvariant(
|
|
128
|
-
typeof n === "number" ||
|
|
127
|
+
typeof n === "number" || typeof n === "bigint",
|
|
129
128
|
"Expected number"
|
|
130
129
|
);
|
|
131
130
|
|
|
132
|
-
return `0x${
|
|
131
|
+
return `0x${BigIntUtils.toWord(n)}`;
|
|
133
132
|
}
|
|
134
133
|
|
|
135
134
|
/**
|
|
@@ -137,11 +136,11 @@ export function numberToRpcStorageSlot(n: number | BN): string {
|
|
|
137
136
|
* represents a value fits in a number.
|
|
138
137
|
*/
|
|
139
138
|
export function rpcDataToNumber(data: string): number {
|
|
140
|
-
return
|
|
139
|
+
return Number(rpcDataToBigInt(data));
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
export function
|
|
144
|
-
return
|
|
142
|
+
export function rpcDataToBigInt(data: string): bigint {
|
|
143
|
+
return data === "0x" ? 0n : BigInt(data);
|
|
145
144
|
}
|
|
146
145
|
|
|
147
146
|
export function bufferToRpcData(
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { optionalOrNullable } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcData, rpcQuantity } from "../base-types";
|
|
9
5
|
|
|
@@ -20,6 +16,8 @@ export const rpcBlockTagName = t.keyof({
|
|
|
20
16
|
earliest: null,
|
|
21
17
|
latest: null,
|
|
22
18
|
pending: null,
|
|
19
|
+
safe: null,
|
|
20
|
+
finalized: null,
|
|
23
21
|
});
|
|
24
22
|
|
|
25
23
|
// This is the new kind of block tag as defined by https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1898.md
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { optionalOrNullable } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcAccessList } from "../access-list";
|
|
9
5
|
import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { optionalOrNullable } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcHash } from "../base-types";
|
|
9
5
|
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { optionalOrNullable } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcAccessList } from "../access-list";
|
|
9
5
|
import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { nullable, optional } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
|
|
9
5
|
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { nullable } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
|
|
9
5
|
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as t from "io-ts";
|
|
2
2
|
|
|
3
|
-
// TS2742 workaround
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
import { BN } from "ethereumjs-util";
|
|
6
|
-
|
|
7
3
|
import { nullable, optional } from "../../../../util/io-ts";
|
|
8
4
|
import { rpcAccessList } from "../access-list";
|
|
9
5
|
import { rpcAddress, rpcData, rpcHash, rpcQuantity } from "../base-types";
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { BN } from "ethereumjs-util";
|
|
2
1
|
import * as t from "io-ts";
|
|
3
2
|
|
|
4
3
|
import { SignTypedDataVersion, signTypedData } from "@metamask/eth-sig-util";
|
|
5
|
-
import { FeeMarketEIP1559Transaction } from "@
|
|
4
|
+
import { FeeMarketEIP1559Transaction } from "@ignored/tx";
|
|
6
5
|
import { EIP1193Provider, RequestArguments } from "../../../types";
|
|
7
6
|
import { HardhatError } from "../errors";
|
|
8
7
|
import { ERRORS } from "../errors-list";
|
|
9
8
|
import {
|
|
10
9
|
rpcAddress,
|
|
11
10
|
rpcData,
|
|
12
|
-
|
|
11
|
+
rpcQuantityToBigInt,
|
|
13
12
|
} from "../jsonrpc/types/base-types";
|
|
14
13
|
import {
|
|
15
14
|
RpcTransactionRequest,
|
|
@@ -45,7 +44,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
45
44
|
|
|
46
45
|
public async request(args: RequestArguments): Promise<unknown> {
|
|
47
46
|
const { ecsign, hashPersonalMessage, toRpcSig, toBuffer, bufferToHex } =
|
|
48
|
-
await import("
|
|
47
|
+
await import("@ignored/util");
|
|
49
48
|
|
|
50
49
|
if (
|
|
51
50
|
args.method === "eth_accounts" ||
|
|
@@ -193,7 +192,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
193
192
|
bufferToHex,
|
|
194
193
|
toBuffer,
|
|
195
194
|
privateToAddress,
|
|
196
|
-
} = require("
|
|
195
|
+
} = require("@ignored/util");
|
|
197
196
|
|
|
198
197
|
const privateKeys: Buffer[] = localAccountsHexPrivateKeys.map((h) =>
|
|
199
198
|
toBuffer(h)
|
|
@@ -206,7 +205,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
206
205
|
}
|
|
207
206
|
|
|
208
207
|
private _getPrivateKeyForAddress(address: Buffer): Buffer {
|
|
209
|
-
const { bufferToHex } = require("
|
|
208
|
+
const { bufferToHex } = require("@ignored/util");
|
|
210
209
|
const pk = this._addressToPrivateKey.get(bufferToHex(address));
|
|
211
210
|
if (pk === undefined) {
|
|
212
211
|
throw new HardhatError(ERRORS.NETWORK.NOT_LOCAL_ACCOUNT, {
|
|
@@ -225,15 +224,15 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
225
224
|
}
|
|
226
225
|
}
|
|
227
226
|
|
|
228
|
-
private async _getNonce(address: Buffer): Promise<
|
|
229
|
-
const { bufferToHex } = await import("
|
|
227
|
+
private async _getNonce(address: Buffer): Promise<bigint> {
|
|
228
|
+
const { bufferToHex } = await import("@ignored/util");
|
|
230
229
|
|
|
231
230
|
const response = (await this._wrappedProvider.request({
|
|
232
231
|
method: "eth_getTransactionCount",
|
|
233
232
|
params: [bufferToHex(address), "pending"],
|
|
234
233
|
})) as string;
|
|
235
234
|
|
|
236
|
-
return
|
|
235
|
+
return rpcQuantityToBigInt(response);
|
|
237
236
|
}
|
|
238
237
|
|
|
239
238
|
private async _getSignedTransaction(
|
|
@@ -241,31 +240,22 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
|
|
|
241
240
|
chainId: number,
|
|
242
241
|
privateKey: Buffer
|
|
243
242
|
): Promise<Buffer> {
|
|
244
|
-
const { chains } = await import("@ethereumjs/common/dist/chains");
|
|
245
|
-
|
|
246
243
|
const { AccessListEIP2930Transaction, Transaction } = await import(
|
|
247
|
-
"@
|
|
244
|
+
"@ignored/tx"
|
|
248
245
|
);
|
|
249
246
|
|
|
250
|
-
const {
|
|
247
|
+
const { Common } = await import("@ignored/common");
|
|
251
248
|
|
|
252
249
|
const txData = {
|
|
253
250
|
...transactionRequest,
|
|
254
251
|
gasLimit: transactionRequest.gas,
|
|
255
252
|
};
|
|
256
253
|
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"mainnet",
|
|
263
|
-
{
|
|
264
|
-
chainId,
|
|
265
|
-
networkId: chainId,
|
|
266
|
-
},
|
|
267
|
-
"london"
|
|
268
|
-
);
|
|
254
|
+
// We don't specify a hardfork here because the default hardfork should
|
|
255
|
+
// support all possible types of transactions.
|
|
256
|
+
// If the network doesn't support a given transaction type, then the
|
|
257
|
+
// transaction it will be rejected somewhere else.
|
|
258
|
+
const common = Common.custom({ chainId, networkId: chainId });
|
|
269
259
|
|
|
270
260
|
// we convert the access list to the type
|
|
271
261
|
// that AccessListEIP2930Transaction expects
|
|
@@ -318,7 +308,7 @@ export class HDWalletProvider extends LocalAccountsProvider {
|
|
|
318
308
|
passphrase
|
|
319
309
|
);
|
|
320
310
|
|
|
321
|
-
const { bufferToHex } = require("
|
|
311
|
+
const { bufferToHex } = require("@ignored/util");
|
|
322
312
|
const privateKeysAsHex = privateKeys.map((pk) => bufferToHex(pk));
|
|
323
313
|
super(provider, privateKeysAsHex);
|
|
324
314
|
}
|
|
@@ -7,7 +7,6 @@ import type {
|
|
|
7
7
|
HDAccountsUserConfig,
|
|
8
8
|
HttpNetworkAccountsUserConfig,
|
|
9
9
|
HttpNetworkConfig,
|
|
10
|
-
HttpNetworkUserConfig,
|
|
11
10
|
NetworkConfig,
|
|
12
11
|
ProjectPathsConfig,
|
|
13
12
|
} from "../../../types";
|
|
@@ -19,6 +18,7 @@ import {
|
|
|
19
18
|
MempoolOrder,
|
|
20
19
|
} from "../../hardhat-network/provider/node-types";
|
|
21
20
|
import { getForkCacheDirPath } from "../../hardhat-network/provider/utils/disk-cache";
|
|
21
|
+
import { BigIntUtils } from "../../util/bigint";
|
|
22
22
|
import { parseDateString } from "../../util/date";
|
|
23
23
|
|
|
24
24
|
import { normalizeHardhatNetworkAccountsConfig } from "./util";
|
|
@@ -72,7 +72,9 @@ export function createProvider(
|
|
|
72
72
|
) {
|
|
73
73
|
forkConfig = {
|
|
74
74
|
jsonRpcUrl: hardhatNetConfig.forking?.url,
|
|
75
|
-
blockNumber:
|
|
75
|
+
blockNumber: BigIntUtils.mapBigIntToNumber(
|
|
76
|
+
hardhatNetConfig.forking?.blockNumber
|
|
77
|
+
),
|
|
76
78
|
httpHeaders: hardhatNetConfig.forking.httpHeaders,
|
|
77
79
|
};
|
|
78
80
|
}
|
|
@@ -113,7 +115,7 @@ export function createProvider(
|
|
|
113
115
|
typeof import("./http"),
|
|
114
116
|
"HttpProvider"
|
|
115
117
|
>("./http", "HttpProvider");
|
|
116
|
-
const httpNetConfig = networkConfig as
|
|
118
|
+
const httpNetConfig = networkConfig as HttpNetworkConfig;
|
|
117
119
|
|
|
118
120
|
eip1193Provider = new HttpProvider(
|
|
119
121
|
httpNetConfig.url!,
|