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
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
EdrNetworkAccountsConfig,
|
|
3
|
+
EdrNetworkForkingConfig,
|
|
4
|
+
} from "../../../../types/config.js";
|
|
5
|
+
import type { ChainType } from "../../../../types/network.js";
|
|
6
|
+
import type * as MicroEthSignerAddressT from "micro-eth-signer/address";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
l1GenesisState,
|
|
10
|
+
l1HardforkFromString,
|
|
11
|
+
opGenesisState,
|
|
12
|
+
opHardforkFromString,
|
|
13
|
+
type AccountOverride,
|
|
14
|
+
} from "@nomicfoundation/edr";
|
|
15
|
+
import { AsyncMutex } from "@nomicfoundation/hardhat-utils/synchronization";
|
|
16
|
+
import { hexToBytes } from "ethereum-cryptography/utils";
|
|
17
|
+
|
|
18
|
+
import { OPTIMISM_CHAIN_TYPE } from "../../../constants.js";
|
|
19
|
+
|
|
20
|
+
import { hardhatAccountsToEdrOwnedAccounts } from "./utils/convert-to-edr.js";
|
|
21
|
+
|
|
22
|
+
// micro-eth-signer is known to be slow to load, so we lazy load it
|
|
23
|
+
let microEthSignerAddress: typeof MicroEthSignerAddressT | undefined;
|
|
24
|
+
|
|
25
|
+
const noForkingConfigCacheMarkerObject = {};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* We cache the genesis state and owned accounts because computing them can be
|
|
29
|
+
* expensive, especially when run multiple times for the same configuration
|
|
30
|
+
* (e.g. when creating many EDR connections to the same network config).
|
|
31
|
+
*
|
|
32
|
+
* We use mostly references as cache keys, which means that we can miss some
|
|
33
|
+
* cache hits if an equivalent config is used with a different reference, but
|
|
34
|
+
* in practice this should rarely happen, except when using network config
|
|
35
|
+
* overrides that generate the same config. These cases should be the minority
|
|
36
|
+
* within a test suite.
|
|
37
|
+
*
|
|
38
|
+
* Note: the main reason that we don't use the entire NetworkConfig as cache
|
|
39
|
+
* key is that EDR initialization path recreates the NetworkConfig object to
|
|
40
|
+
* override some properties like `allowUnlimitedContractSize`, leading to a
|
|
41
|
+
* different NetworkConfig reference, despite keeping the references of most
|
|
42
|
+
* of its properties (including the accounts and forking config) the same.
|
|
43
|
+
*/
|
|
44
|
+
const genesisStateAndAccountsCache: WeakMap<
|
|
45
|
+
EdrNetworkAccountsConfig,
|
|
46
|
+
WeakMap<
|
|
47
|
+
EdrNetworkForkingConfig | typeof noForkingConfigCacheMarkerObject,
|
|
48
|
+
Map<
|
|
49
|
+
ChainType,
|
|
50
|
+
Map<
|
|
51
|
+
string,
|
|
52
|
+
{
|
|
53
|
+
genesisState: Map<Uint8Array, AccountOverride>;
|
|
54
|
+
ownedAccounts: Array<{ secretKey: string; balance: bigint }>;
|
|
55
|
+
}
|
|
56
|
+
>
|
|
57
|
+
>
|
|
58
|
+
>
|
|
59
|
+
> = new WeakMap();
|
|
60
|
+
|
|
61
|
+
const genesisStateAndAccountsCacheMutex = new AsyncMutex();
|
|
62
|
+
|
|
63
|
+
export async function getGenesisStateAndOwnedAccounts(
|
|
64
|
+
accountsConfig: EdrNetworkAccountsConfig,
|
|
65
|
+
forkingConfig: EdrNetworkForkingConfig | undefined,
|
|
66
|
+
chainType: ChainType,
|
|
67
|
+
specId: string,
|
|
68
|
+
): Promise<{
|
|
69
|
+
genesisState: Map<Uint8Array, AccountOverride>;
|
|
70
|
+
ownedAccounts: Array<{ secretKey: string; balance: bigint }>;
|
|
71
|
+
}> {
|
|
72
|
+
const cached = genesisStateAndAccountsCache
|
|
73
|
+
.get(accountsConfig)
|
|
74
|
+
?.get(forkingConfig ?? noForkingConfigCacheMarkerObject)
|
|
75
|
+
?.get(chainType)
|
|
76
|
+
?.get(specId);
|
|
77
|
+
|
|
78
|
+
if (cached !== undefined) {
|
|
79
|
+
return cached;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return genesisStateAndAccountsCacheMutex.exclusiveRun(async () => {
|
|
83
|
+
// We need to check again inside the mutex callback in case another async
|
|
84
|
+
// operation initialized it while we were waiting to acquire the mutex
|
|
85
|
+
const cachedAfterWaiting = genesisStateAndAccountsCache
|
|
86
|
+
.get(accountsConfig)
|
|
87
|
+
?.get(forkingConfig ?? noForkingConfigCacheMarkerObject)
|
|
88
|
+
?.get(chainType)
|
|
89
|
+
?.get(specId);
|
|
90
|
+
|
|
91
|
+
if (cachedAfterWaiting !== undefined) {
|
|
92
|
+
return cachedAfterWaiting;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const result = await createGenesisStateAndOwnedAccounts(
|
|
96
|
+
accountsConfig,
|
|
97
|
+
forkingConfig,
|
|
98
|
+
chainType,
|
|
99
|
+
specId,
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
let secondLevelCacheMap = genesisStateAndAccountsCache.get(accountsConfig);
|
|
103
|
+
if (secondLevelCacheMap === undefined) {
|
|
104
|
+
secondLevelCacheMap = new WeakMap();
|
|
105
|
+
genesisStateAndAccountsCache.set(accountsConfig, secondLevelCacheMap);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const forkingConfigCacheKey =
|
|
109
|
+
forkingConfig ?? noForkingConfigCacheMarkerObject;
|
|
110
|
+
let thirdLevelCacheMap = secondLevelCacheMap.get(forkingConfigCacheKey);
|
|
111
|
+
if (thirdLevelCacheMap === undefined) {
|
|
112
|
+
thirdLevelCacheMap = new Map();
|
|
113
|
+
secondLevelCacheMap.set(forkingConfigCacheKey, thirdLevelCacheMap);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
let fourthLevelCacheMap = thirdLevelCacheMap.get(chainType);
|
|
117
|
+
if (fourthLevelCacheMap === undefined) {
|
|
118
|
+
fourthLevelCacheMap = new Map();
|
|
119
|
+
thirdLevelCacheMap.set(chainType, fourthLevelCacheMap);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
fourthLevelCacheMap.set(specId, result);
|
|
123
|
+
|
|
124
|
+
return result;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async function createGenesisStateAndOwnedAccounts(
|
|
129
|
+
accountsConfig: EdrNetworkAccountsConfig,
|
|
130
|
+
forkingConfig: EdrNetworkForkingConfig | undefined,
|
|
131
|
+
chainType: ChainType,
|
|
132
|
+
specId: string,
|
|
133
|
+
): Promise<{
|
|
134
|
+
genesisState: Map<Uint8Array, AccountOverride>;
|
|
135
|
+
ownedAccounts: Array<{ secretKey: string; balance: bigint }>;
|
|
136
|
+
}> {
|
|
137
|
+
if (microEthSignerAddress === undefined) {
|
|
138
|
+
microEthSignerAddress = await import("micro-eth-signer/address");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const { addr } = microEthSignerAddress;
|
|
142
|
+
|
|
143
|
+
const ownedAccounts = await hardhatAccountsToEdrOwnedAccounts(accountsConfig);
|
|
144
|
+
|
|
145
|
+
const genesisState: Map<Uint8Array, AccountOverride> = new Map(
|
|
146
|
+
ownedAccounts.map(({ secretKey, balance }) => {
|
|
147
|
+
const address = hexToBytes(addr.fromPrivateKey(secretKey));
|
|
148
|
+
const accountOverride: AccountOverride = {
|
|
149
|
+
address,
|
|
150
|
+
balance: BigInt(balance),
|
|
151
|
+
code: new Uint8Array(), // Empty account code, removing potential delegation code when forking
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
return [address, accountOverride];
|
|
155
|
+
}),
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
const chainGenesisState =
|
|
159
|
+
forkingConfig !== undefined
|
|
160
|
+
? [] // TODO: Add support for overriding remote fork state when the local fork is different
|
|
161
|
+
: chainType === OPTIMISM_CHAIN_TYPE
|
|
162
|
+
? opGenesisState(opHardforkFromString(specId))
|
|
163
|
+
: l1GenesisState(l1HardforkFromString(specId));
|
|
164
|
+
|
|
165
|
+
for (const account of chainGenesisState) {
|
|
166
|
+
const existingOverride = genesisState.get(account.address);
|
|
167
|
+
if (existingOverride !== undefined) {
|
|
168
|
+
// Favor the genesis state specified by the user
|
|
169
|
+
account.balance = account.balance ?? existingOverride.balance;
|
|
170
|
+
account.nonce = account.nonce ?? existingOverride.nonce;
|
|
171
|
+
account.code = account.code ?? existingOverride.code;
|
|
172
|
+
account.storage = account.storage ?? existingOverride.storage;
|
|
173
|
+
} else {
|
|
174
|
+
genesisState.set(account.address, account);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return { genesisState, ownedAccounts };
|
|
179
|
+
}
|
package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts
CHANGED
|
@@ -25,10 +25,12 @@ import type {
|
|
|
25
25
|
InternalFunctionCallStackEntry,
|
|
26
26
|
ContractCallRunOutOfGasError,
|
|
27
27
|
CheatcodeErrorStackTraceEntry,
|
|
28
|
+
CheatcodeErrorDetails,
|
|
28
29
|
} from "@nomicfoundation/edr";
|
|
29
30
|
|
|
30
31
|
import {
|
|
31
32
|
StackTraceEntryType,
|
|
33
|
+
CheatcodeErrorCode,
|
|
32
34
|
stackTraceEntryTypeToString,
|
|
33
35
|
FALLBACK_FUNCTION_NAME,
|
|
34
36
|
RECEIVE_FUNCTION_NAME,
|
|
@@ -42,6 +44,7 @@ import {
|
|
|
42
44
|
export {
|
|
43
45
|
SourceReference,
|
|
44
46
|
StackTraceEntryType,
|
|
47
|
+
CheatcodeErrorCode,
|
|
45
48
|
stackTraceEntryTypeToString,
|
|
46
49
|
FALLBACK_FUNCTION_NAME,
|
|
47
50
|
RECEIVE_FUNCTION_NAME,
|
|
@@ -77,6 +80,7 @@ export type {
|
|
|
77
80
|
ContractTooLargeErrorStackTraceEntry,
|
|
78
81
|
InternalFunctionCallStackEntry,
|
|
79
82
|
ContractCallRunOutOfGasError,
|
|
83
|
+
CheatcodeErrorDetails,
|
|
80
84
|
};
|
|
81
85
|
|
|
82
86
|
export type SolidityStackTraceEntry =
|
package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts
CHANGED
|
@@ -9,8 +9,11 @@ import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
|
|
|
9
9
|
import { bytesToHexString } from "@nomicfoundation/hardhat-utils/bytes";
|
|
10
10
|
import { panicErrorCodeToMessage } from "@nomicfoundation/hardhat-utils/panic-errors";
|
|
11
11
|
|
|
12
|
+
import { REVERT_ERROR_CODE } from "../../revert-error-code.js";
|
|
13
|
+
|
|
12
14
|
import {
|
|
13
15
|
StackTraceEntryType,
|
|
16
|
+
CheatcodeErrorCode,
|
|
14
17
|
CONSTRUCTOR_FUNCTION_NAME,
|
|
15
18
|
PRECOMPILE_FUNCTION_NAME,
|
|
16
19
|
UNKNOWN_FUNCTION_NAME,
|
|
@@ -266,9 +269,25 @@ function getMessageFromLastStackTraceEntry(
|
|
|
266
269
|
return `VM Exception while processing transaction: ${panicMessage}`;
|
|
267
270
|
|
|
268
271
|
case StackTraceEntryType.CUSTOM_ERROR:
|
|
269
|
-
case StackTraceEntryType.CHEATCODE_ERROR:
|
|
270
272
|
return `VM Exception while processing transaction: ${stackTraceEntry.message}`;
|
|
271
273
|
|
|
274
|
+
case StackTraceEntryType.CHEATCODE_ERROR: {
|
|
275
|
+
let message = stackTraceEntry.message;
|
|
276
|
+
|
|
277
|
+
if (stackTraceEntry.details !== undefined) {
|
|
278
|
+
switch (stackTraceEntry.details.code) {
|
|
279
|
+
case CheatcodeErrorCode.UnsupportedCheatcode:
|
|
280
|
+
message = `Cheatcode '${stackTraceEntry.details.cheatcode}' is not supported by Hardhat.`;
|
|
281
|
+
break;
|
|
282
|
+
case CheatcodeErrorCode.MissingCheatcode:
|
|
283
|
+
message = `Cheatcode '${stackTraceEntry.details.cheatcode}' is not yet available in this version of Hardhat.`;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return `VM Exception while processing transaction: ${message}`;
|
|
289
|
+
}
|
|
290
|
+
|
|
272
291
|
case StackTraceEntryType.OTHER_EXECUTION_ERROR:
|
|
273
292
|
// TODO: What if there was returnData?
|
|
274
293
|
return `Transaction reverted and Hardhat couldn't infer the reason.`;
|
|
@@ -293,11 +312,15 @@ function getMessageFromLastStackTraceEntry(
|
|
|
293
312
|
}
|
|
294
313
|
|
|
295
314
|
/**
|
|
296
|
-
* Note: This error class
|
|
297
|
-
*
|
|
298
|
-
*
|
|
315
|
+
* Note: This error class does not extend ProviderError because it carries
|
|
316
|
+
* Solidity-specific data (stackTrace) that ProviderError does not model.
|
|
317
|
+
* It does carry `code = 3` to match the de facto standard used by geth and
|
|
318
|
+
* anvil for execution revert errors, allowing libraries like viem to
|
|
319
|
+
* properly detect and handle revert errors via the error cause chain.
|
|
299
320
|
**/
|
|
300
321
|
export class SolidityError extends Error {
|
|
322
|
+
public readonly code: number = REVERT_ERROR_CODE;
|
|
323
|
+
|
|
301
324
|
constructor(
|
|
302
325
|
message: string,
|
|
303
326
|
public readonly stackTrace: SolidityStackTrace,
|
|
@@ -305,6 +328,7 @@ export class SolidityError extends Error {
|
|
|
305
328
|
public readonly transactionHash?: string,
|
|
306
329
|
) {
|
|
307
330
|
super(message);
|
|
331
|
+
this.name = "SolidityError";
|
|
308
332
|
|
|
309
333
|
Object.defineProperty(this, Symbol.for("nodejs.util.inspect.custom"), {
|
|
310
334
|
value: () =>
|
|
@@ -404,7 +404,7 @@ export function edrGasReportToHardhatGasMeasurements(
|
|
|
404
404
|
contractFqn,
|
|
405
405
|
type: "deployment",
|
|
406
406
|
gas: Number(deployment.gas),
|
|
407
|
-
|
|
407
|
+
runtimeSize: Number(deployment.runtimeSize),
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
}
|
|
@@ -418,6 +418,7 @@ export function edrGasReportToHardhatGasMeasurements(
|
|
|
418
418
|
type: "function",
|
|
419
419
|
functionSig,
|
|
420
420
|
gas: Number(call.gas),
|
|
421
|
+
proxyChain: call.proxyChain,
|
|
421
422
|
});
|
|
422
423
|
}
|
|
423
424
|
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import type { Colorizer } from "../../../../utils/colorizer.js";
|
|
2
|
+
import type {
|
|
3
|
+
LogTrace,
|
|
4
|
+
CallTrace,
|
|
5
|
+
DecodedTraceParameters,
|
|
6
|
+
} from "@nomicfoundation/edr";
|
|
7
|
+
|
|
8
|
+
import { LogKind, CallKind, IncludeTraces } from "@nomicfoundation/edr";
|
|
9
|
+
import { bytesToHexString } from "@nomicfoundation/hardhat-utils/hex";
|
|
10
|
+
|
|
11
|
+
type NestedArray<T> = Array<T | NestedArray<T>>;
|
|
12
|
+
|
|
13
|
+
export function verbosityToIncludeTraces(verbosity: number): IncludeTraces {
|
|
14
|
+
if (verbosity >= 4) {
|
|
15
|
+
return IncludeTraces.All;
|
|
16
|
+
} else if (verbosity >= 3) {
|
|
17
|
+
return IncludeTraces.Failing;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return IncludeTraces.None;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function formatTraces(
|
|
24
|
+
traces: CallTrace[],
|
|
25
|
+
prefix: string,
|
|
26
|
+
colorizer: Colorizer,
|
|
27
|
+
): string {
|
|
28
|
+
const lines = traces.map((trace) => formatTrace(trace, colorizer));
|
|
29
|
+
const formattedTraces = formatNestedArray(lines, prefix);
|
|
30
|
+
// Remove the trailing newline
|
|
31
|
+
return formattedTraces.slice(0, -1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function formatInputs(
|
|
35
|
+
inputs: DecodedTraceParameters | Uint8Array,
|
|
36
|
+
color?: (text: string) => string,
|
|
37
|
+
): string | undefined {
|
|
38
|
+
if (inputs instanceof Uint8Array) {
|
|
39
|
+
return inputs.length > 0 ? bytesToHexString(inputs) : undefined;
|
|
40
|
+
} else {
|
|
41
|
+
const formattedName =
|
|
42
|
+
color !== undefined ? color(inputs.name) : inputs.name;
|
|
43
|
+
return `${formattedName}(${inputs.arguments.join(", ")})`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function formatOutputs(outputs: string | Uint8Array): string | undefined {
|
|
48
|
+
if (outputs instanceof Uint8Array) {
|
|
49
|
+
return outputs.length > 0 ? bytesToHexString(outputs) : undefined;
|
|
50
|
+
} else {
|
|
51
|
+
return outputs;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function formatLog(log: LogTrace, colorizer: Colorizer): string[] {
|
|
56
|
+
const { parameters } = log;
|
|
57
|
+
const tag = colorizer.yellow("[event]");
|
|
58
|
+
const lines = [];
|
|
59
|
+
|
|
60
|
+
if (Array.isArray(parameters)) {
|
|
61
|
+
const hexValues = parameters.map((bytes) => bytesToHexString(bytes));
|
|
62
|
+
const topicCount = hexValues.length - 1;
|
|
63
|
+
|
|
64
|
+
for (let i = 0; i < topicCount; i++) {
|
|
65
|
+
const prefix = i === 0 ? `${tag} topic 0` : ` topic ${i}`;
|
|
66
|
+
lines.push(`${prefix}: ${colorizer.cyan(hexValues[i])}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (hexValues.length > 0) {
|
|
70
|
+
const dataPrefix = topicCount > 0 ? " data" : `${tag} data`;
|
|
71
|
+
lines.push(
|
|
72
|
+
`${dataPrefix}: ${colorizer.cyan(hexValues[hexValues.length - 1])}`,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
lines.push(
|
|
77
|
+
`${tag} ${parameters.name}(${colorizer.cyan(parameters.arguments.join(", "))})`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
return lines;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function formatTrace(
|
|
84
|
+
trace: CallTrace,
|
|
85
|
+
colorizer: Colorizer,
|
|
86
|
+
): NestedArray<string> {
|
|
87
|
+
const {
|
|
88
|
+
success,
|
|
89
|
+
address,
|
|
90
|
+
contract,
|
|
91
|
+
inputs,
|
|
92
|
+
gasUsed,
|
|
93
|
+
value,
|
|
94
|
+
kind,
|
|
95
|
+
isCheatcode,
|
|
96
|
+
outputs,
|
|
97
|
+
} = trace;
|
|
98
|
+
let color;
|
|
99
|
+
if (isCheatcode) {
|
|
100
|
+
color = colorizer.blue;
|
|
101
|
+
} else if (success) {
|
|
102
|
+
color = colorizer.green;
|
|
103
|
+
} else {
|
|
104
|
+
color = colorizer.red;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const formattedInputs = formatInputs(inputs, color);
|
|
108
|
+
const formattedOutputs = formatOutputs(outputs);
|
|
109
|
+
|
|
110
|
+
let openingLine: string;
|
|
111
|
+
let closingLine: string | undefined;
|
|
112
|
+
if (kind === CallKind.Create) {
|
|
113
|
+
openingLine = `[${gasUsed}] ${colorizer.yellow("→ new")} ${contract ?? "<unknown>"}@${address}`;
|
|
114
|
+
// TODO: Uncomment this when the formattedInputs starts containing
|
|
115
|
+
// the address of where the contract was deployed instead of the code.
|
|
116
|
+
// if (formattedInputs !== undefined) {
|
|
117
|
+
// openingLine = `${openingLine}@${formattedInputs}`;
|
|
118
|
+
// }
|
|
119
|
+
} else {
|
|
120
|
+
openingLine = `[${gasUsed}] ${color(contract ?? address)}`;
|
|
121
|
+
if (formattedInputs !== undefined) {
|
|
122
|
+
openingLine = `${openingLine}::${formattedInputs}`;
|
|
123
|
+
}
|
|
124
|
+
if (value !== 0n) {
|
|
125
|
+
openingLine = `${openingLine} {value: ${value}}`;
|
|
126
|
+
}
|
|
127
|
+
if (kind === CallKind.StaticCall) {
|
|
128
|
+
openingLine = `${openingLine} ${colorizer.yellow("[staticcall]")}`;
|
|
129
|
+
} else if (kind === CallKind.DelegateCall) {
|
|
130
|
+
openingLine = `${openingLine} ${colorizer.yellow("[delegatecall]")}`;
|
|
131
|
+
} else if (kind === CallKind.CallCode) {
|
|
132
|
+
openingLine = `${openingLine} ${colorizer.yellow("[callcode]")}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (formattedOutputs !== undefined) {
|
|
136
|
+
if (
|
|
137
|
+
formattedOutputs === "EvmError: Revert" ||
|
|
138
|
+
formattedOutputs.startsWith("revert:")
|
|
139
|
+
) {
|
|
140
|
+
closingLine = `${color("←")} ${color("[Revert]")} ${formattedOutputs}`;
|
|
141
|
+
} else {
|
|
142
|
+
closingLine = `${color("←")} ${formattedOutputs}`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const lines = [];
|
|
147
|
+
lines.push(openingLine);
|
|
148
|
+
for (const child of trace.children) {
|
|
149
|
+
if (child.kind === LogKind.Log) {
|
|
150
|
+
lines.push(formatLog(child, colorizer));
|
|
151
|
+
} else {
|
|
152
|
+
lines.push(formatTrace(child, colorizer));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (closingLine !== undefined) {
|
|
156
|
+
lines.push([closingLine]);
|
|
157
|
+
}
|
|
158
|
+
return lines;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function formatNestedArray(
|
|
162
|
+
data: NestedArray<string>,
|
|
163
|
+
prefix = "",
|
|
164
|
+
isTopLevel = true,
|
|
165
|
+
): string {
|
|
166
|
+
let output = "";
|
|
167
|
+
|
|
168
|
+
for (let i = 0; i < data.length; i++) {
|
|
169
|
+
const item = data[i];
|
|
170
|
+
|
|
171
|
+
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
172
|
+
const [label, ...children] = item;
|
|
173
|
+
|
|
174
|
+
if (isTopLevel) {
|
|
175
|
+
// Blank line between top-level traces
|
|
176
|
+
if (i > 0) {
|
|
177
|
+
output += "\n";
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
output += `${prefix}${label}\n`;
|
|
181
|
+
output += formatNestedArray(children, prefix, false);
|
|
182
|
+
} else {
|
|
183
|
+
const isLast = i === data.length - 1;
|
|
184
|
+
const connector = isLast ? " └─ " : " ├─ ";
|
|
185
|
+
const childPrefix = isLast ? " " : " │ ";
|
|
186
|
+
output += `${prefix}${connector}${label}\n`;
|
|
187
|
+
output += formatNestedArray(children, prefix + childPrefix, false);
|
|
188
|
+
}
|
|
189
|
+
} else if (typeof item === "string") {
|
|
190
|
+
const isLast = i === data.length - 1;
|
|
191
|
+
const connector = isLast ? " └─ " : " ├─ ";
|
|
192
|
+
output += `${prefix}${connector}${item}\n`;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return output;
|
|
197
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { Response } from "@nomicfoundation/edr";
|
|
2
|
+
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import debug from "debug";
|
|
5
|
+
|
|
6
|
+
import { formatTraces } from "./trace-formatters.js";
|
|
7
|
+
|
|
8
|
+
const log = debug("hardhat:core:hardhat-network:provider");
|
|
9
|
+
|
|
10
|
+
// Rotating palette for per-connection coloring of trace headers.
|
|
11
|
+
const LABEL_COLORS: Array<(text: string) => string> = [
|
|
12
|
+
chalk.cyan,
|
|
13
|
+
chalk.magenta,
|
|
14
|
+
chalk.blueBright,
|
|
15
|
+
chalk.yellowBright,
|
|
16
|
+
chalk.cyanBright,
|
|
17
|
+
chalk.magentaBright,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
// Keyed by `network name` (not connection label) so the map stays bounded
|
|
21
|
+
// by the number of distinct networks, not the number of connections.
|
|
22
|
+
const networkColorMap = new Map<string, (text: string) => string>();
|
|
23
|
+
|
|
24
|
+
// These methods run a simulation before the actual transaction. We skip
|
|
25
|
+
// their traces on success to avoid duplicates, but still show them on
|
|
26
|
+
// failure since the real transaction won't be sent.
|
|
27
|
+
const TRACE_SUPPRESSED_METHODS = new Set(["eth_estimateGas"]);
|
|
28
|
+
|
|
29
|
+
// Bounded set: receipt-polling deduplication only needs a small window.
|
|
30
|
+
// Once the cap is reached the set is cleared so memory stays bounded
|
|
31
|
+
// in long-running nodes.
|
|
32
|
+
const TRACED_TX_HASHES_CAP = 1024;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Manages trace output formatting, deduplication, and coloring for a single
|
|
36
|
+
* provider connection.
|
|
37
|
+
*/
|
|
38
|
+
export class TraceOutputManager {
|
|
39
|
+
readonly #printLineFn: (line: string) => void;
|
|
40
|
+
readonly #connectionLabel: string;
|
|
41
|
+
readonly #labelColor: (text: string) => string;
|
|
42
|
+
readonly #verbosity: number;
|
|
43
|
+
readonly #tracedTxHashes = new Set<string>();
|
|
44
|
+
|
|
45
|
+
constructor(
|
|
46
|
+
printLineFn: (line: string) => void,
|
|
47
|
+
connectionId: number,
|
|
48
|
+
networkName: string,
|
|
49
|
+
verbosity: number,
|
|
50
|
+
) {
|
|
51
|
+
this.#printLineFn = printLineFn;
|
|
52
|
+
this.#connectionLabel = `connection #${connectionId} (${networkName})`;
|
|
53
|
+
this.#labelColor = this.#colorForNetwork(networkName);
|
|
54
|
+
this.#verbosity = verbosity;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Output call traces from an EDR response, applying deduplication and
|
|
59
|
+
* suppression rules based on the verbosity level.
|
|
60
|
+
*/
|
|
61
|
+
public outputCallTraces(
|
|
62
|
+
edrResponse: Response,
|
|
63
|
+
method: string,
|
|
64
|
+
txHash: string | undefined,
|
|
65
|
+
failed: boolean,
|
|
66
|
+
): void {
|
|
67
|
+
try {
|
|
68
|
+
// At verbosity < 5, suppress simulation-only methods on success and
|
|
69
|
+
// deduplicate traces for the same transaction. At verbosity >= 5
|
|
70
|
+
// (#showAllTraces), every RPC call with traces is shown.
|
|
71
|
+
|
|
72
|
+
if (this.#verbosity < 5) {
|
|
73
|
+
// Skip successful simulation-only methods, their trace will appear
|
|
74
|
+
// again in the subsequent eth_sendTransaction. Failed simulations
|
|
75
|
+
// are shown because the sendTransaction may never happen.
|
|
76
|
+
if (!failed && TRACE_SUPPRESSED_METHODS.has(method)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Dedup: skip if we already traced this transaction.
|
|
81
|
+
// Prevents the same tx appearing multiple times from receipt polling.
|
|
82
|
+
if (txHash !== undefined && this.#tracedTxHashes.has(txHash)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const rawTraces = edrResponse.callTraces();
|
|
88
|
+
|
|
89
|
+
// EDR returns duplicate traces for eth_estimateGas, take only the first.
|
|
90
|
+
const callTraces =
|
|
91
|
+
TRACE_SUPPRESSED_METHODS.has(method) && rawTraces.length > 1
|
|
92
|
+
? [rawTraces[0]]
|
|
93
|
+
: rawTraces;
|
|
94
|
+
|
|
95
|
+
if (callTraces.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (txHash !== undefined) {
|
|
100
|
+
if (this.#tracedTxHashes.size >= TRACED_TX_HASHES_CAP) {
|
|
101
|
+
this.#tracedTxHashes.clear();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this.#tracedTxHashes.add(txHash);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const coloredLabel = this.#labelColor(this.#connectionLabel);
|
|
108
|
+
const prefix = callTraces.length > 1 ? "Traces from" : "Trace from";
|
|
109
|
+
const coloredPrefix = this.#labelColor(prefix);
|
|
110
|
+
const styledMethod = failed ? chalk.red(method) : chalk.dim(method);
|
|
111
|
+
const header = `${coloredPrefix} ${coloredLabel}: ${styledMethod}`;
|
|
112
|
+
|
|
113
|
+
this.#printLineFn(`${header}\n${formatTraces(callTraces, " ", chalk)}`);
|
|
114
|
+
} catch (e) {
|
|
115
|
+
log("Failed to get call traces: %O", e);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Clear the dedup set (e.g. on snapshot revert so replayed txs are traced again).
|
|
121
|
+
*/
|
|
122
|
+
public clearTracedHashes(): void {
|
|
123
|
+
this.#tracedTxHashes.clear();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
#colorForNetwork(networkName: string): (text: string) => string {
|
|
127
|
+
let color = networkColorMap.get(networkName);
|
|
128
|
+
|
|
129
|
+
if (color === undefined) {
|
|
130
|
+
const index = networkColorMap.size % LABEL_COLORS.length;
|
|
131
|
+
color = LABEL_COLORS[index];
|
|
132
|
+
networkColorMap.set(networkName, color);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return color;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -12,6 +12,14 @@ export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
|
12
12
|
let networkManager: NetworkManager | undefined;
|
|
13
13
|
|
|
14
14
|
hre.network = {
|
|
15
|
+
async create(networkConnectionParams) {
|
|
16
|
+
if (networkManager === undefined) {
|
|
17
|
+
networkManager = await createNetworkManager(hre, context);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return networkManager.create(networkConnectionParams);
|
|
21
|
+
},
|
|
22
|
+
|
|
15
23
|
async connect(networkConnectionParams) {
|
|
16
24
|
if (networkManager === undefined) {
|
|
17
25
|
networkManager = await createNetworkManager(hre, context);
|
|
@@ -19,6 +27,15 @@ export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
|
19
27
|
|
|
20
28
|
return networkManager.connect(networkConnectionParams);
|
|
21
29
|
},
|
|
30
|
+
|
|
31
|
+
async getOrCreate(networkOrParams) {
|
|
32
|
+
if (networkManager === undefined) {
|
|
33
|
+
networkManager = await createNetworkManager(hre, context);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return networkManager.getOrCreate(networkOrParams);
|
|
37
|
+
},
|
|
38
|
+
|
|
22
39
|
async createServer(...params) {
|
|
23
40
|
if (networkManager === undefined) {
|
|
24
41
|
networkManager = await createNetworkManager(hre, context);
|
|
@@ -27,6 +44,18 @@ export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
|
27
44
|
return networkManager.createServer(...params);
|
|
28
45
|
},
|
|
29
46
|
};
|
|
47
|
+
|
|
48
|
+
// To avoid adding `wasConnectCalled` to the public interface of
|
|
49
|
+
// `NetworkManager`, we add this pass through method that is only
|
|
50
|
+
// called from the `main` function.
|
|
51
|
+
Object.defineProperty(hre.network, "wasConnectCalled", {
|
|
52
|
+
value: () =>
|
|
53
|
+
networkManager !== undefined &&
|
|
54
|
+
"wasConnectCalled" in networkManager &&
|
|
55
|
+
typeof networkManager.wasConnectCalled === "function" &&
|
|
56
|
+
networkManager.wasConnectCalled(),
|
|
57
|
+
enumerable: false,
|
|
58
|
+
});
|
|
30
59
|
},
|
|
31
60
|
});
|
|
32
61
|
|
|
@@ -50,5 +79,6 @@ async function createNetworkManager(
|
|
|
50
79
|
hre.config.chainDescriptors,
|
|
51
80
|
hre.globalOptions.config,
|
|
52
81
|
hre.config.paths.root,
|
|
82
|
+
hre.globalOptions.verbosity,
|
|
53
83
|
);
|
|
54
84
|
}
|