hardhat 3.2.0 → 3.4.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/CHANGELOG.md +88 -0
- package/dist/src/internal/builtin-global-options.d.ts.map +1 -1
- package/dist/src/internal/builtin-global-options.js +14 -1
- package/dist/src/internal/builtin-global-options.js.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +5 -13
- package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/console/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/console/task-action.js +2 -1
- package/dist/src/internal/builtin-plugins/console/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +1 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +7 -5
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +60 -44
- package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts +6 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +14 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts +4 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js +27 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts +36 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js +86 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js.map +1 -0
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +1 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +10 -2
- package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js +12 -2
- package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +9 -3
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +65 -42
- package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts +11 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +104 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts +4 -4
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js +2 -2
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +6 -3
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +23 -5
- package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +2 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts +6 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js +152 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts +19 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js +104 -0
- package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +23 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +25 -17
- package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +12 -2
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +149 -26
- package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +70 -33
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js +19 -12
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js +9 -3
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js +5 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts +0 -3
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js +9 -12
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts +9 -0
- package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts +2 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js +3 -0
- package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js.map +1 -0
- package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -1
- package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +1 -1
- package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/helpers.js +6 -2
- package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +8 -2
- package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/node/task-action.js +2 -2
- package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/run/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/run/task-action.js +2 -1
- package/dist/src/internal/builtin-plugins/run/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +7 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +6 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +198 -76
- package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +5 -3
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +35 -7
- package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts +16 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js +5 -5
- package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts +2 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +1 -0
- package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js +2 -2
- package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/config.d.ts +4 -2
- package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/config.js +266 -84
- package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.js +19 -0
- package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.d.ts +3 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.js +3 -0
- package/dist/src/internal/builtin-plugins/solidity/exports.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +2 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts +4 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js +7 -0
- package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/index.js +1 -0
- package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts +18 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +33 -0
- package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +225 -55
- package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +227 -28
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/config.js +5 -3
- package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts +12 -6
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +9 -7
- package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts +1 -12
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.js +0 -150
- package/dist/src/internal/builtin-plugins/solidity-test/formatters.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -5
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +5 -12
- package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -7
- package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +7 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +20 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts +24 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +68 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts +13 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js +136 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts +19 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js +133 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts +10 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js +2 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +12 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +81 -0
- package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -0
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +5 -2
- package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts +2 -8
- package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/runner.js +47 -50
- package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +11 -2
- package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts +0 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +122 -39
- package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
- package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -2
- package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/index.js +0 -7
- package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.d.ts +0 -1
- package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
- package/dist/src/internal/builtin-plugins/test/task-action.js +4 -8
- package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
- package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
- package/dist/src/internal/cli/help/get-help-string.js +1 -1
- package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
- package/dist/src/internal/cli/init/init.d.ts.map +1 -1
- package/dist/src/internal/cli/init/init.js +1 -1
- package/dist/src/internal/cli/init/init.js.map +1 -1
- package/dist/src/internal/cli/init/prompt.d.ts.map +1 -1
- package/dist/src/internal/cli/init/prompt.js +1 -7
- package/dist/src/internal/cli/init/prompt.js.map +1 -1
- package/dist/src/internal/cli/main.d.ts.map +1 -1
- package/dist/src/internal/cli/main.js +8 -0
- package/dist/src/internal/cli/main.js.map +1 -1
- package/dist/src/internal/core/hre.d.ts +2 -1
- package/dist/src/internal/core/hre.d.ts.map +1 -1
- package/dist/src/internal/core/hre.js +18 -0
- package/dist/src/internal/core/hre.js.map +1 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.d.ts.map +1 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js +6 -1
- package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js.map +1 -1
- package/dist/src/internal/core/user-interruptions.d.ts.map +1 -1
- package/dist/src/internal/core/user-interruptions.js +2 -5
- package/dist/src/internal/core/user-interruptions.js.map +1 -1
- package/dist/src/internal/utils/colorizer.d.ts +10 -0
- package/dist/src/internal/utils/colorizer.d.ts.map +1 -0
- package/dist/src/internal/utils/colorizer.js +2 -0
- package/dist/src/internal/utils/colorizer.js.map +1 -0
- package/dist/src/internal/utils/package.d.ts.map +1 -1
- package/dist/src/internal/utils/package.js +1 -1
- package/dist/src/internal/utils/package.js.map +1 -1
- package/dist/src/types/artifacts.d.ts +5 -4
- package/dist/src/types/artifacts.d.ts.map +1 -1
- package/dist/src/types/global-options.d.ts +1 -0
- package/dist/src/types/global-options.d.ts.map +1 -1
- package/dist/src/types/hooks.d.ts +32 -0
- package/dist/src/types/hooks.d.ts.map +1 -1
- package/dist/src/types/network.d.ts +39 -0
- package/dist/src/types/network.d.ts.map +1 -1
- package/dist/src/types/solidity/build-system.d.ts +66 -3
- package/dist/src/types/solidity/build-system.d.ts.map +1 -1
- package/dist/src/types/solidity/build-system.js.map +1 -1
- package/dist/src/types/solidity/compilation-job.d.ts +11 -5
- package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
- package/dist/src/types/solidity/solidity-artifacts.d.ts +29 -0
- package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/internal/builtin-global-options.ts +15 -1
- package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +9 -15
- package/src/internal/builtin-plugins/console/task-action.ts +2 -1
- package/src/internal/builtin-plugins/gas-analytics/exports.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +1 -2
- package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +100 -61
- package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +31 -0
- package/src/internal/builtin-plugins/gas-analytics/helpers/compat.ts +37 -0
- package/src/internal/builtin-plugins/gas-analytics/helpers/utils.ts +112 -0
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +1 -1
- package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +1 -2
- package/src/internal/builtin-plugins/gas-analytics/types.ts +11 -2
- package/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.ts +25 -3
- package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +107 -56
- package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +179 -0
- package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts +4 -0
- package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +28 -4
- package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +2 -1
- package/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.ts +197 -0
- package/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.ts +137 -0
- package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +30 -0
- package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +27 -24
- package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
- package/src/internal/builtin-plugins/network-manager/network-manager.ts +213 -37
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.ts +1 -0
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +115 -34
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts +25 -17
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.ts +13 -5
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.ts +7 -1
- package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
- package/src/internal/builtin-plugins/network-manager/request-handlers/types.ts +10 -0
- package/src/internal/builtin-plugins/network-manager/revert-error-code.ts +2 -0
- package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +1 -1
- package/src/internal/builtin-plugins/network-manager/type-validation.ts +5 -1
- package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +1 -2
- package/src/internal/builtin-plugins/node/helpers.ts +9 -2
- package/src/internal/builtin-plugins/node/json-rpc/handler.ts +10 -2
- package/src/internal/builtin-plugins/node/task-action.ts +2 -2
- package/src/internal/builtin-plugins/run/task-action.ts +2 -1
- package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +10 -2
- package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +297 -99
- package/src/internal/builtin-plugins/solidity/build-system/cache.ts +3 -0
- package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +49 -16
- package/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.ts +1 -1
- package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +1 -2
- package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
- package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
- package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +1 -0
- package/src/internal/builtin-plugins/solidity/build-system/warning-suppression.ts +2 -2
- package/src/internal/builtin-plugins/solidity/config.ts +359 -124
- package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
- package/src/internal/builtin-plugins/solidity/exports.ts +2 -0
- package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +3 -0
- package/src/internal/builtin-plugins/solidity/hook-handlers/solidity.ts +9 -0
- package/src/internal/builtin-plugins/solidity/index.ts +1 -0
- package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +53 -0
- package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
- package/src/internal/builtin-plugins/solidity/type-extensions.ts +289 -32
- package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
- package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +22 -10
- package/src/internal/builtin-plugins/solidity-test/formatters.ts +1 -213
- package/src/internal/builtin-plugins/solidity-test/helpers.ts +8 -15
- package/src/internal/builtin-plugins/solidity-test/index.ts +0 -7
- package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +21 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +99 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/index.ts +272 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/parsing.ts +186 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/types.ts +9 -0
- package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +122 -0
- package/src/internal/builtin-plugins/solidity-test/reporter.ts +6 -6
- package/src/internal/builtin-plugins/solidity-test/runner.ts +64 -83
- package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +15 -2
- package/src/internal/builtin-plugins/solidity-test/task-action.ts +192 -57
- package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
- package/src/internal/builtin-plugins/test/index.ts +0 -7
- package/src/internal/builtin-plugins/test/task-action.ts +4 -10
- package/src/internal/cli/help/get-help-string.ts +2 -2
- package/src/internal/cli/init/init.ts +1 -1
- package/src/internal/cli/init/prompt.ts +1 -14
- package/src/internal/cli/main.ts +14 -0
- package/src/internal/core/hre.ts +33 -0
- package/src/internal/core/plugins/detect-plugin-npm-dependency-problems.ts +8 -1
- package/src/internal/core/user-interruptions.ts +3 -5
- package/src/internal/utils/colorizer.ts +9 -0
- package/src/internal/utils/package.ts +1 -2
- package/src/types/artifacts.ts +5 -4
- package/src/types/global-options.ts +1 -0
- package/src/types/hooks.ts +37 -0
- package/src/types/network.ts +48 -0
- package/src/types/solidity/build-system.ts +66 -3
- package/src/types/solidity/compilation-job.ts +12 -5
- package/src/types/solidity/solidity-artifacts.ts +32 -0
- package/templates/hardhat-2/04-mocha-viem-ts/package.json +1 -1
- package/templates/hardhat-3/01-node-test-runner-viem/gitignore +11 -0
- package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
- package/templates/hardhat-3/01-node-test-runner-viem/scripts/send-op-tx.ts +1 -1
- package/templates/hardhat-3/01-node-test-runner-viem/test/Counter.ts +1 -1
- package/templates/hardhat-3/02-mocha-ethers/gitignore +11 -0
- package/templates/hardhat-3/02-mocha-ethers/package.json +14 -14
- package/templates/hardhat-3/02-mocha-ethers/scripts/send-op-tx.ts +1 -1
- package/templates/hardhat-3/02-mocha-ethers/test/Counter.ts +1 -1
- package/templates/hardhat-3/03-minimal/gitignore +11 -0
- package/templates/hardhat-3/03-minimal/package.json +1 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +0 -19
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +0 -1
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +0 -46
- package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
- package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -86
|
@@ -5,6 +5,8 @@ import type {
|
|
|
5
5
|
} from "../../../../../../types/providers.js";
|
|
6
6
|
import type { RequestHandler } from "../../types.js";
|
|
7
7
|
import type { RpcTransactionRequest } from "@nomicfoundation/hardhat-zod-utils/rpc";
|
|
8
|
+
import type * as MicroEthSignerT from "micro-eth-signer";
|
|
9
|
+
import type * as MicroEthSignerTypedDataT from "micro-eth-signer/typed-data";
|
|
8
10
|
|
|
9
11
|
import {
|
|
10
12
|
assertHardhatInvariant,
|
|
@@ -27,27 +29,29 @@ import {
|
|
|
27
29
|
rpcTransactionRequest,
|
|
28
30
|
validateParams,
|
|
29
31
|
} from "@nomicfoundation/hardhat-zod-utils/rpc";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
// micro-eth-signer is known to be slow to load, so we lazy load it
|
|
34
|
+
let microEthSigner: typeof MicroEthSignerT | undefined;
|
|
35
|
+
let microEthSignerTypedData: typeof MicroEthSignerTypedDataT | undefined;
|
|
33
36
|
|
|
34
37
|
import { getRequestParams } from "../../../json-rpc.js";
|
|
35
38
|
import { ChainId } from "../chain-id/chain-id.js";
|
|
36
39
|
|
|
37
|
-
/**
|
|
38
|
-
* This handler takes a long time to load. Currently, it is only used in the handlers array,
|
|
39
|
-
* where it is imported dynamically, and in the HDWalletHandler, which itself is only loaded
|
|
40
|
-
* dynamically.
|
|
41
|
-
* If we ever need to import this handler elsewhere, we should either import it dynamically
|
|
42
|
-
* or import some of the dependencies of this handler dynamically.
|
|
43
|
-
* It has been identified that micro-eth-signer is one of the most expensive dependencies here.
|
|
44
|
-
* See https://github.com/NomicFoundation/hardhat/pull/6481 for more details.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
40
|
const EXTRA_ENTROPY = false;
|
|
48
41
|
export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
49
|
-
readonly #
|
|
50
|
-
|
|
42
|
+
readonly #methods: ReadonlySet<string> = new Set([
|
|
43
|
+
"eth_accounts",
|
|
44
|
+
"eth_requestAccounts",
|
|
45
|
+
"eth_sign",
|
|
46
|
+
"personal_sign",
|
|
47
|
+
"eth_signTypedData_v4",
|
|
48
|
+
"eth_sendTransaction",
|
|
49
|
+
]);
|
|
50
|
+
|
|
51
|
+
readonly #localAccountsHexPrivateKeys: string[];
|
|
52
|
+
|
|
53
|
+
#addressToPrivateKey: Map<string, Uint8Array> | undefined;
|
|
54
|
+
#addresses: string[] | undefined;
|
|
51
55
|
|
|
52
56
|
constructor(
|
|
53
57
|
provider: EthereumProvider,
|
|
@@ -55,12 +59,20 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
55
59
|
) {
|
|
56
60
|
super(provider);
|
|
57
61
|
|
|
58
|
-
this.#
|
|
62
|
+
this.#localAccountsHexPrivateKeys = localAccountsHexPrivateKeys;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
66
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
public async handle(
|
|
62
70
|
jsonRpcRequest: JsonRpcRequest,
|
|
63
71
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
72
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
73
|
+
return jsonRpcRequest;
|
|
74
|
+
}
|
|
75
|
+
|
|
64
76
|
const response = await this.#resolveRequest(jsonRpcRequest);
|
|
65
77
|
if (response !== null) {
|
|
66
78
|
return response;
|
|
@@ -71,6 +83,28 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
71
83
|
return jsonRpcRequest;
|
|
72
84
|
}
|
|
73
85
|
|
|
86
|
+
async #getAddressesAndPrivateKeysMap(): Promise<{
|
|
87
|
+
addresses: string[];
|
|
88
|
+
addressToPrivateKey: Map<string, Uint8Array>;
|
|
89
|
+
}> {
|
|
90
|
+
if (
|
|
91
|
+
this.#addresses === undefined ||
|
|
92
|
+
this.#addressToPrivateKey === undefined
|
|
93
|
+
) {
|
|
94
|
+
const { addresses, addressToPrivateKey } =
|
|
95
|
+
await this.#initializeAddressesFromPrivateKeys(
|
|
96
|
+
this.#localAccountsHexPrivateKeys,
|
|
97
|
+
);
|
|
98
|
+
this.#addresses = addresses;
|
|
99
|
+
this.#addressToPrivateKey = addressToPrivateKey;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return {
|
|
103
|
+
addresses: this.#addresses,
|
|
104
|
+
addressToPrivateKey: this.#addressToPrivateKey,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
74
108
|
async #resolveRequest(
|
|
75
109
|
jsonRpcRequest: JsonRpcRequest,
|
|
76
110
|
): Promise<JsonRpcResponse | null> {
|
|
@@ -78,9 +112,8 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
78
112
|
jsonRpcRequest.method === "eth_accounts" ||
|
|
79
113
|
jsonRpcRequest.method === "eth_requestAccounts"
|
|
80
114
|
) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
]);
|
|
115
|
+
const { addresses } = await this.#getAddressesAndPrivateKeysMap();
|
|
116
|
+
return this.#createJsonRpcResponse(jsonRpcRequest.id, [...addresses]);
|
|
84
117
|
}
|
|
85
118
|
|
|
86
119
|
const params = getRequestParams(jsonRpcRequest);
|
|
@@ -96,10 +129,20 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
96
129
|
);
|
|
97
130
|
}
|
|
98
131
|
|
|
99
|
-
|
|
132
|
+
if (microEthSignerTypedData === undefined) {
|
|
133
|
+
microEthSignerTypedData = await import(
|
|
134
|
+
"micro-eth-signer/typed-data"
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const privateKey = await this.#getPrivateKeyForAddress(address);
|
|
100
139
|
return this.#createJsonRpcResponse(
|
|
101
140
|
jsonRpcRequest.id,
|
|
102
|
-
|
|
141
|
+
microEthSignerTypedData.personal.sign(
|
|
142
|
+
data,
|
|
143
|
+
privateKey,
|
|
144
|
+
EXTRA_ENTROPY,
|
|
145
|
+
),
|
|
103
146
|
);
|
|
104
147
|
}
|
|
105
148
|
}
|
|
@@ -116,10 +159,20 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
116
159
|
);
|
|
117
160
|
}
|
|
118
161
|
|
|
119
|
-
|
|
162
|
+
if (microEthSignerTypedData === undefined) {
|
|
163
|
+
microEthSignerTypedData = await import(
|
|
164
|
+
"micro-eth-signer/typed-data"
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const privateKey = await this.#getPrivateKeyForAddress(address);
|
|
120
169
|
return this.#createJsonRpcResponse(
|
|
121
170
|
jsonRpcRequest.id,
|
|
122
|
-
|
|
171
|
+
microEthSignerTypedData.personal.sign(
|
|
172
|
+
data,
|
|
173
|
+
privateKey,
|
|
174
|
+
EXTRA_ENTROPY,
|
|
175
|
+
),
|
|
123
176
|
);
|
|
124
177
|
}
|
|
125
178
|
}
|
|
@@ -146,11 +199,19 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
146
199
|
}
|
|
147
200
|
|
|
148
201
|
// if we don't manage the address, the method is forwarded
|
|
149
|
-
const privateKey = this.#getPrivateKeyForAddressOrNull(address);
|
|
202
|
+
const privateKey = await this.#getPrivateKeyForAddressOrNull(address);
|
|
150
203
|
if (privateKey !== null) {
|
|
204
|
+
if (microEthSignerTypedData === undefined) {
|
|
205
|
+
microEthSignerTypedData = await import("micro-eth-signer/typed-data");
|
|
206
|
+
}
|
|
207
|
+
|
|
151
208
|
return this.#createJsonRpcResponse(
|
|
152
209
|
jsonRpcRequest.id,
|
|
153
|
-
signTyped(
|
|
210
|
+
microEthSignerTypedData.signTyped(
|
|
211
|
+
typedMessage,
|
|
212
|
+
privateKey,
|
|
213
|
+
EXTRA_ENTROPY,
|
|
214
|
+
),
|
|
154
215
|
);
|
|
155
216
|
}
|
|
156
217
|
}
|
|
@@ -220,7 +281,7 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
220
281
|
txRequest.nonce = await this.#getNonce(txRequest.from);
|
|
221
282
|
}
|
|
222
283
|
|
|
223
|
-
const privateKey = this.#getPrivateKeyForAddress(txRequest.from);
|
|
284
|
+
const privateKey = await this.#getPrivateKeyForAddress(txRequest.from);
|
|
224
285
|
|
|
225
286
|
const chainId = await this.getChainId();
|
|
226
287
|
|
|
@@ -235,20 +296,32 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
235
296
|
}
|
|
236
297
|
}
|
|
237
298
|
|
|
238
|
-
#
|
|
299
|
+
async #initializeAddressesFromPrivateKeys(
|
|
300
|
+
localAccountsHexPrivateKeys: string[],
|
|
301
|
+
) {
|
|
302
|
+
if (microEthSigner === undefined) {
|
|
303
|
+
microEthSigner = await import("micro-eth-signer");
|
|
304
|
+
}
|
|
305
|
+
|
|
239
306
|
const privateKeys: Uint8Array[] = localAccountsHexPrivateKeys.map((h) =>
|
|
240
307
|
hexStringToBytes(h),
|
|
241
308
|
);
|
|
242
309
|
|
|
310
|
+
const addresses = [];
|
|
311
|
+
const addressToPrivateKey = new Map<string, Uint8Array>();
|
|
243
312
|
for (const pk of privateKeys) {
|
|
244
|
-
const address = addr.fromPrivateKey(pk).toLowerCase();
|
|
245
|
-
|
|
246
|
-
|
|
313
|
+
const address = microEthSigner.addr.fromPrivateKey(pk).toLowerCase();
|
|
314
|
+
addressToPrivateKey.set(address, pk);
|
|
315
|
+
addresses.push(address);
|
|
247
316
|
}
|
|
317
|
+
|
|
318
|
+
return { addresses, addressToPrivateKey };
|
|
248
319
|
}
|
|
249
320
|
|
|
250
|
-
#getPrivateKeyForAddress(address: Uint8Array): Uint8Array {
|
|
251
|
-
const
|
|
321
|
+
async #getPrivateKeyForAddress(address: Uint8Array): Promise<Uint8Array> {
|
|
322
|
+
const { addressToPrivateKey } = await this.#getAddressesAndPrivateKeysMap();
|
|
323
|
+
|
|
324
|
+
const pk = addressToPrivateKey.get(bytesToHexString(address));
|
|
252
325
|
|
|
253
326
|
if (pk === undefined) {
|
|
254
327
|
throw new HardhatError(
|
|
@@ -262,9 +335,11 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
262
335
|
return pk;
|
|
263
336
|
}
|
|
264
337
|
|
|
265
|
-
#getPrivateKeyForAddressOrNull(
|
|
338
|
+
async #getPrivateKeyForAddressOrNull(
|
|
339
|
+
address: Uint8Array,
|
|
340
|
+
): Promise<Uint8Array | null> {
|
|
266
341
|
try {
|
|
267
|
-
return this.#getPrivateKeyForAddress(address);
|
|
342
|
+
return await this.#getPrivateKeyForAddress(address);
|
|
268
343
|
} catch {
|
|
269
344
|
return null;
|
|
270
345
|
}
|
|
@@ -289,6 +364,12 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
|
|
|
289
364
|
chainId: number,
|
|
290
365
|
privateKey: Uint8Array,
|
|
291
366
|
): Promise<Uint8Array> {
|
|
367
|
+
if (microEthSigner === undefined) {
|
|
368
|
+
microEthSigner = await import("micro-eth-signer");
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
const { addr, Transaction } = microEthSigner;
|
|
372
|
+
|
|
292
373
|
const txData = {
|
|
293
374
|
...transactionRequest,
|
|
294
375
|
gasLimit: transactionRequest.gas,
|
package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts
CHANGED
|
@@ -17,35 +17,43 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
17
17
|
* The class also provides a mechanism to retrieve the sender account, which must be implemented by subclasses.
|
|
18
18
|
*/
|
|
19
19
|
export abstract class SenderHandler implements RequestHandler {
|
|
20
|
+
readonly #methods: ReadonlySet<string> = new Set([
|
|
21
|
+
"eth_sendTransaction",
|
|
22
|
+
"eth_call",
|
|
23
|
+
"eth_estimateGas",
|
|
24
|
+
]);
|
|
25
|
+
|
|
20
26
|
protected readonly provider: EthereumProvider;
|
|
21
27
|
|
|
22
28
|
constructor(provider: EthereumProvider) {
|
|
23
29
|
this.provider = provider;
|
|
24
30
|
}
|
|
25
31
|
|
|
32
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
33
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
public async handle(
|
|
27
37
|
jsonRpcRequest: JsonRpcRequest,
|
|
28
38
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
39
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
40
|
+
return jsonRpcRequest;
|
|
41
|
+
}
|
|
42
|
+
|
|
29
43
|
const method = jsonRpcRequest.method;
|
|
30
44
|
const params = getRequestParams(jsonRpcRequest);
|
|
31
45
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
tx.from = senderAccount;
|
|
44
|
-
} else if (method === "eth_sendTransaction") {
|
|
45
|
-
throw new HardhatError(
|
|
46
|
-
HardhatError.ERRORS.CORE.NETWORK.NO_REMOTE_ACCOUNT_AVAILABLE,
|
|
47
|
-
);
|
|
48
|
-
}
|
|
46
|
+
const [tx] = params;
|
|
47
|
+
|
|
48
|
+
if (isObject(tx) && tx.from === undefined) {
|
|
49
|
+
const senderAccount = await this.getSender();
|
|
50
|
+
|
|
51
|
+
if (senderAccount !== undefined) {
|
|
52
|
+
tx.from = senderAccount;
|
|
53
|
+
} else if (method === "eth_sendTransaction") {
|
|
54
|
+
throw new HardhatError(
|
|
55
|
+
HardhatError.ERRORS.CORE.NETWORK.NO_REMOTE_ACCOUNT_AVAILABLE,
|
|
56
|
+
);
|
|
49
57
|
}
|
|
50
58
|
}
|
|
51
59
|
|
|
@@ -25,17 +25,25 @@ export class ChainIdValidatorHandler extends ChainId implements RequestHandler {
|
|
|
25
25
|
this.#expectedChainId = expectedChainId;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
public
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
29
|
+
if (this.#alreadyValidated) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
31
33
|
if (
|
|
32
34
|
jsonRpcRequest.method === "eth_chainId" ||
|
|
33
35
|
jsonRpcRequest.method === "net_version"
|
|
34
36
|
) {
|
|
35
|
-
return
|
|
37
|
+
return false;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public async handle(
|
|
44
|
+
jsonRpcRequest: JsonRpcRequest,
|
|
45
|
+
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
46
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
39
47
|
return jsonRpcRequest;
|
|
40
48
|
}
|
|
41
49
|
|
|
@@ -25,6 +25,8 @@ export class AutomaticGasHandler
|
|
|
25
25
|
extends MultipliedGasEstimation
|
|
26
26
|
implements RequestHandler
|
|
27
27
|
{
|
|
28
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
29
|
+
|
|
28
30
|
constructor(
|
|
29
31
|
provider: EthereumProvider,
|
|
30
32
|
gasMultiplier: number = DEFAULT_GAS_MULTIPLIER,
|
|
@@ -32,10 +34,14 @@ export class AutomaticGasHandler
|
|
|
32
34
|
super(provider, gasMultiplier);
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
38
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
39
|
+
}
|
|
40
|
+
|
|
35
41
|
public async handle(
|
|
36
42
|
jsonRpcRequest: JsonRpcRequest,
|
|
37
43
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
38
|
-
if (jsonRpcRequest
|
|
44
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
39
45
|
return jsonRpcRequest;
|
|
40
46
|
}
|
|
41
47
|
|
|
@@ -19,6 +19,8 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
19
19
|
* It ensures that gas prices are set correctly.
|
|
20
20
|
*/
|
|
21
21
|
export class AutomaticGasPriceHandler implements RequestHandler {
|
|
22
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
23
|
+
|
|
22
24
|
readonly #provider: EthereumProvider;
|
|
23
25
|
|
|
24
26
|
// We pay the max base fee that can be required if the next
|
|
@@ -36,10 +38,14 @@ export class AutomaticGasPriceHandler implements RequestHandler {
|
|
|
36
38
|
#nodeHasFeeHistory?: boolean;
|
|
37
39
|
#nodeSupportsEIP1559?: boolean;
|
|
38
40
|
|
|
41
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
42
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
public async handle(
|
|
40
46
|
jsonRpcRequest: JsonRpcRequest,
|
|
41
47
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
42
|
-
if (jsonRpcRequest
|
|
48
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
43
49
|
return jsonRpcRequest;
|
|
44
50
|
}
|
|
45
51
|
|
|
@@ -14,16 +14,22 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
14
14
|
* For `eth_sendTransaction` requests, it sets the gas field with the value provided via the class constructor, if it hasn't been specified already.
|
|
15
15
|
*/
|
|
16
16
|
export class FixedGasHandler implements RequestHandler {
|
|
17
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
18
|
+
|
|
17
19
|
readonly #gas: PrefixedHexString;
|
|
18
20
|
|
|
19
21
|
constructor(gas: PrefixedHexString) {
|
|
20
22
|
this.#gas = gas;
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
26
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
public async handle(
|
|
24
30
|
jsonRpcRequest: JsonRpcRequest,
|
|
25
31
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
26
|
-
if (jsonRpcRequest
|
|
32
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
27
33
|
return jsonRpcRequest;
|
|
28
34
|
}
|
|
29
35
|
|
|
@@ -14,16 +14,22 @@ import { getRequestParams } from "../../../json-rpc.js";
|
|
|
14
14
|
* For `eth_sendTransaction` requests, it sets the gasPrice field with the value provided via the class constructor, if it hasn't been specified already.
|
|
15
15
|
*/
|
|
16
16
|
export class FixedGasPriceHandler implements RequestHandler {
|
|
17
|
+
readonly #methods: ReadonlySet<string> = new Set(["eth_sendTransaction"]);
|
|
18
|
+
|
|
17
19
|
readonly #gasPrice: PrefixedHexString;
|
|
18
20
|
|
|
19
21
|
constructor(gasPrice: PrefixedHexString) {
|
|
20
22
|
this.#gasPrice = gasPrice;
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
public isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean {
|
|
26
|
+
return this.#methods.has(jsonRpcRequest.method);
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
public async handle(
|
|
24
30
|
jsonRpcRequest: JsonRpcRequest,
|
|
25
31
|
): Promise<JsonRpcRequest | JsonRpcResponse> {
|
|
26
|
-
if (jsonRpcRequest
|
|
32
|
+
if (!this.isSupportedMethod(jsonRpcRequest)) {
|
|
27
33
|
return jsonRpcRequest;
|
|
28
34
|
}
|
|
29
35
|
|
|
@@ -8,13 +8,20 @@ import { numberToHexString } from "@nomicfoundation/hardhat-utils/hex";
|
|
|
8
8
|
|
|
9
9
|
import { isHttpNetworkHdAccountsConfig } from "../type-validation.js";
|
|
10
10
|
|
|
11
|
+
import { AutomaticSenderHandler } from "./handlers/accounts/automatic-sender-handler.js";
|
|
12
|
+
import { FixedSenderHandler } from "./handlers/accounts/fixed-sender-handler.js";
|
|
13
|
+
import { HDWalletHandler } from "./handlers/accounts/hd-wallet-handler.js";
|
|
14
|
+
import { LocalAccountsHandler } from "./handlers/accounts/local-accounts.js";
|
|
15
|
+
import { ChainIdValidatorHandler } from "./handlers/chain-id/chain-id-handler.js";
|
|
16
|
+
import { AutomaticGasHandler } from "./handlers/gas/automatic-gas-handler.js";
|
|
17
|
+
import { AutomaticGasPriceHandler } from "./handlers/gas/automatic-gas-price-handler.js";
|
|
18
|
+
import { FixedGasHandler } from "./handlers/gas/fixed-gas-handler.js";
|
|
19
|
+
import { FixedGasPriceHandler } from "./handlers/gas/fixed-gas-price-handler.js";
|
|
20
|
+
|
|
11
21
|
/**
|
|
12
22
|
* This function returns an handlers array based on the values in the NetworkConnection and NetworkConfig.
|
|
13
23
|
* The order of the handlers, if all are present, is: chain handler, gas handlers (gasPrice first, then gas), sender handler and accounts handler.
|
|
14
24
|
* The order is important to get a correct result when the handlers are executed.
|
|
15
|
-
* The handlers are imported dynamically because some might take a long time to load.
|
|
16
|
-
* Out of the currently supported handlers, LocalAccountsHandler and, consequently, HDWalletHandler have been identified as the most expensive.
|
|
17
|
-
* See https://github.com/NomicFoundation/hardhat/pull/6481 for more details.
|
|
18
25
|
*/
|
|
19
26
|
export async function createHandlersArray<
|
|
20
27
|
ChainTypeT extends ChainType | string,
|
|
@@ -24,9 +31,6 @@ export async function createHandlersArray<
|
|
|
24
31
|
const networkConfig = networkConnection.networkConfig;
|
|
25
32
|
|
|
26
33
|
if (networkConfig.type === "http" && networkConfig.chainId !== undefined) {
|
|
27
|
-
const { ChainIdValidatorHandler } = await import(
|
|
28
|
-
"./handlers/chain-id/chain-id-handler.js"
|
|
29
|
-
);
|
|
30
34
|
requestHandlers.push(
|
|
31
35
|
new ChainIdValidatorHandler(
|
|
32
36
|
networkConnection.provider,
|
|
@@ -39,9 +43,6 @@ export async function createHandlersArray<
|
|
|
39
43
|
networkConfig.gasPrice === undefined ||
|
|
40
44
|
networkConfig.gasPrice === "auto"
|
|
41
45
|
) {
|
|
42
|
-
const { AutomaticGasPriceHandler } = await import(
|
|
43
|
-
"./handlers/gas/automatic-gas-price-handler.js"
|
|
44
|
-
);
|
|
45
46
|
// If you use a hook handler that signs locally, you are required to
|
|
46
47
|
// have all the transaction fields available, including the
|
|
47
48
|
// gasPrice / maxFeePerGas & maxPriorityFeePerGas.
|
|
@@ -56,18 +57,12 @@ export async function createHandlersArray<
|
|
|
56
57
|
new AutomaticGasPriceHandler(networkConnection.provider),
|
|
57
58
|
);
|
|
58
59
|
} else {
|
|
59
|
-
const { FixedGasPriceHandler } = await import(
|
|
60
|
-
"./handlers/gas/fixed-gas-price-handler.js"
|
|
61
|
-
);
|
|
62
60
|
requestHandlers.push(
|
|
63
61
|
new FixedGasPriceHandler(numberToHexString(networkConfig.gasPrice)),
|
|
64
62
|
);
|
|
65
63
|
}
|
|
66
64
|
|
|
67
65
|
if (networkConfig.gas === undefined || networkConfig.gas === "auto") {
|
|
68
|
-
const { AutomaticGasHandler } = await import(
|
|
69
|
-
"./handlers/gas/automatic-gas-handler.js"
|
|
70
|
-
);
|
|
71
66
|
requestHandlers.push(
|
|
72
67
|
new AutomaticGasHandler(
|
|
73
68
|
networkConnection.provider,
|
|
@@ -75,25 +70,16 @@ export async function createHandlersArray<
|
|
|
75
70
|
),
|
|
76
71
|
);
|
|
77
72
|
} else {
|
|
78
|
-
const { FixedGasHandler } = await import(
|
|
79
|
-
"./handlers/gas/fixed-gas-handler.js"
|
|
80
|
-
);
|
|
81
73
|
requestHandlers.push(
|
|
82
74
|
new FixedGasHandler(numberToHexString(networkConfig.gas)),
|
|
83
75
|
);
|
|
84
76
|
}
|
|
85
77
|
|
|
86
78
|
if (networkConfig.from === undefined) {
|
|
87
|
-
const { AutomaticSenderHandler } = await import(
|
|
88
|
-
"./handlers/accounts/automatic-sender-handler.js"
|
|
89
|
-
);
|
|
90
79
|
requestHandlers.push(
|
|
91
80
|
new AutomaticSenderHandler(networkConnection.provider),
|
|
92
81
|
);
|
|
93
82
|
} else {
|
|
94
|
-
const { FixedSenderHandler } = await import(
|
|
95
|
-
"./handlers/accounts/fixed-sender-handler.js"
|
|
96
|
-
);
|
|
97
83
|
requestHandlers.push(
|
|
98
84
|
new FixedSenderHandler(networkConnection.provider, networkConfig.from),
|
|
99
85
|
);
|
|
@@ -103,9 +89,6 @@ export async function createHandlersArray<
|
|
|
103
89
|
const accounts = networkConfig.accounts;
|
|
104
90
|
|
|
105
91
|
if (Array.isArray(accounts)) {
|
|
106
|
-
const { LocalAccountsHandler } = await import(
|
|
107
|
-
"./handlers/accounts/local-accounts.js"
|
|
108
|
-
);
|
|
109
92
|
const resolvedAccounts = await Promise.all(
|
|
110
93
|
accounts.map((acc) => acc.getHexString()),
|
|
111
94
|
);
|
|
@@ -114,9 +97,6 @@ export async function createHandlersArray<
|
|
|
114
97
|
new LocalAccountsHandler(networkConnection.provider, resolvedAccounts),
|
|
115
98
|
);
|
|
116
99
|
} else if (isHttpNetworkHdAccountsConfig(accounts)) {
|
|
117
|
-
const { HDWalletHandler } = await import(
|
|
118
|
-
"./handlers/accounts/hd-wallet-handler.js"
|
|
119
|
-
);
|
|
120
100
|
const hdWalletHandler = await HDWalletHandler.create(
|
|
121
101
|
networkConnection.provider,
|
|
122
102
|
await accounts.mnemonic.get(),
|
|
@@ -14,6 +14,16 @@ import type {
|
|
|
14
14
|
*
|
|
15
15
|
*/
|
|
16
16
|
export interface RequestHandler {
|
|
17
|
+
/**
|
|
18
|
+
* A guard to ensure the request is supported by the handler.
|
|
19
|
+
* If the handler does not support the request, then it can be safely
|
|
20
|
+
* skipped.
|
|
21
|
+
*
|
|
22
|
+
* @param jsonRpcRequest - The JSON-RPC request to check.
|
|
23
|
+
* @returns true if the method will be processed by the handler, false otherwise.
|
|
24
|
+
*/
|
|
25
|
+
isSupportedMethod(jsonRpcRequest: JsonRpcRequest): boolean;
|
|
26
|
+
|
|
17
27
|
handle(
|
|
18
28
|
jsonRpcRequest: JsonRpcRequest,
|
|
19
29
|
): Promise<JsonRpcRequest | JsonRpcResponse>;
|
|
@@ -147,7 +147,7 @@ declare module "../../../../types/config.js" {
|
|
|
147
147
|
export interface EdrNetworkForkingUserConfig {
|
|
148
148
|
enabled?: boolean;
|
|
149
149
|
url: SensitiveString;
|
|
150
|
-
blockNumber?: number;
|
|
150
|
+
blockNumber?: number | bigint;
|
|
151
151
|
httpHeaders?: Record<string, string>;
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -45,6 +45,10 @@ const nonnegativeIntSchema = z.number().int().nonnegative();
|
|
|
45
45
|
const nonnegativeBigIntSchema = z.bigint().nonnegative();
|
|
46
46
|
|
|
47
47
|
const blockNumberSchema = nonnegativeIntSchema;
|
|
48
|
+
const forkingBlockNumberSchema = unionType(
|
|
49
|
+
[z.number().int().nonnegative().safe(), z.bigint().nonnegative()],
|
|
50
|
+
"Expected a nonnegative safe int or a nonnegative bigint",
|
|
51
|
+
);
|
|
48
52
|
const chainIdSchema = nonnegativeIntSchema;
|
|
49
53
|
|
|
50
54
|
const chainTypeUserConfigSchema = unionType(
|
|
@@ -267,7 +271,7 @@ const edrNetworkAccountsUserConfigSchema = conditionalUnionType(
|
|
|
267
271
|
const edrNetworkForkingUserConfigSchema = z.object({
|
|
268
272
|
enabled: z.optional(z.boolean()),
|
|
269
273
|
url: sensitiveUrlSchema,
|
|
270
|
-
blockNumber: z.optional(
|
|
274
|
+
blockNumber: z.optional(forkingBlockNumberSchema),
|
|
271
275
|
httpHeaders: z.optional(z.record(z.string())),
|
|
272
276
|
});
|
|
273
277
|
|
|
@@ -2,6 +2,7 @@ import type { FSWatcher } from "chokidar";
|
|
|
2
2
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
|
+
import { watch } from "chokidar";
|
|
5
6
|
import debug from "debug";
|
|
6
7
|
|
|
7
8
|
export type BuildInfoWatcher = FSWatcher;
|
|
@@ -59,8 +60,6 @@ export async function watchBuildInfo(
|
|
|
59
60
|
buildInfoDirPath: string,
|
|
60
61
|
handler: BuildInfoHandler,
|
|
61
62
|
): Promise<BuildInfoWatcher> {
|
|
62
|
-
const { watch } = await import("chokidar");
|
|
63
|
-
|
|
64
63
|
// NOTE: Deleting the build info directory while it is being watched will
|
|
65
64
|
// effectively cause the watcher to stop working.
|
|
66
65
|
// NOTE: We use chokidar's `awaitWriteFinish` option because we are certain
|
|
@@ -2,6 +2,7 @@ import type { BuildInfo } from "../../../types/artifacts.js";
|
|
|
2
2
|
import type { EdrNetworkAccountsConfig } from "../../../types/config.js";
|
|
3
3
|
import type { SolidityBuildInfoOutput } from "../../../types/solidity.js";
|
|
4
4
|
import type { EdrProvider } from "../network-manager/edr/edr-provider.js";
|
|
5
|
+
import type * as MicroEthSignerT from "micro-eth-signer";
|
|
5
6
|
|
|
6
7
|
import path from "node:path";
|
|
7
8
|
|
|
@@ -11,7 +12,9 @@ import {
|
|
|
11
12
|
} from "@nomicfoundation/hardhat-utils/fs";
|
|
12
13
|
import { hexStringToBytes } from "@nomicfoundation/hardhat-utils/hex";
|
|
13
14
|
import chalk from "chalk";
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
// micro-eth-signer is known to be slow to load, so we lazy load it
|
|
17
|
+
let microEthSigner: typeof MicroEthSignerT | undefined;
|
|
15
18
|
|
|
16
19
|
import { sendErrorTelemetry } from "../../cli/telemetry/sentry/reporter.js";
|
|
17
20
|
import { isDefaultEdrNetworkHDAccountsConfig } from "../network-manager/edr/edr-provider.js";
|
|
@@ -48,8 +51,12 @@ export async function formatEdrNetworkConfigAccounts(
|
|
|
48
51
|
maxPrefixLength = privateKeyPrefix.length;
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
if (microEthSigner === undefined) {
|
|
55
|
+
microEthSigner = await import("micro-eth-signer");
|
|
56
|
+
}
|
|
57
|
+
|
|
51
58
|
for (const [index, account] of accounts.entries()) {
|
|
52
|
-
const address = addr
|
|
59
|
+
const address = microEthSigner.addr
|
|
53
60
|
.fromPrivateKey(hexStringToBytes(await account.privateKey.getHexString()))
|
|
54
61
|
.toLowerCase();
|
|
55
62
|
const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
|