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,31 @@
|
|
|
1
|
+
import type { HookContext } from "../../../../types/hooks.js";
|
|
2
|
+
import type { HardhatRuntimeEnvironment } from "../../../../types/hre.js";
|
|
3
|
+
import type { GasAnalyticsManager } from "../types.js";
|
|
4
|
+
|
|
5
|
+
import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
|
|
6
|
+
|
|
7
|
+
import { HardhatRuntimeEnvironmentImplementation } from "../../../core/hre.js";
|
|
8
|
+
import { GasAnalyticsManagerImplementation } from "../gas-analytics-manager.js";
|
|
9
|
+
|
|
10
|
+
export function getGasAnalyticsManager(
|
|
11
|
+
hookContextOrHre: HookContext | HardhatRuntimeEnvironment,
|
|
12
|
+
): GasAnalyticsManager {
|
|
13
|
+
assertHardhatInvariant(
|
|
14
|
+
"_gasAnalytics" in hookContextOrHre &&
|
|
15
|
+
hookContextOrHre._gasAnalytics instanceof
|
|
16
|
+
GasAnalyticsManagerImplementation,
|
|
17
|
+
"Expected _gasAnalytics to be an instance of GasAnalyticsManagerImplementation",
|
|
18
|
+
);
|
|
19
|
+
return hookContextOrHre._gasAnalytics;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function setGasAnalyticsManager(
|
|
23
|
+
hre: HardhatRuntimeEnvironment,
|
|
24
|
+
gasAnalyticsManager: GasAnalyticsManager,
|
|
25
|
+
): void {
|
|
26
|
+
assertHardhatInvariant(
|
|
27
|
+
hre instanceof HardhatRuntimeEnvironmentImplementation,
|
|
28
|
+
"Expected HRE to be an instance of HardhatRuntimeEnvironmentImplementation",
|
|
29
|
+
);
|
|
30
|
+
hre._gasAnalytics = gasAnalyticsManager;
|
|
31
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { HardhatRuntimeEnvironment } from "../../../../types/hre.js";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
testRunDone,
|
|
5
|
+
testRunStart,
|
|
6
|
+
testWorkerDone,
|
|
7
|
+
} from "../hook-handlers/test.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The following helpers are kept for backward compatibility with older versions
|
|
11
|
+
* of test runner plugins (hardhat-mocha, hardhat-node-test-runner) that import
|
|
12
|
+
* from "hardhat/internal/gas-analytics".
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
let cachedHre: HardhatRuntimeEnvironment | undefined;
|
|
16
|
+
async function getHre(): Promise<HardhatRuntimeEnvironment> {
|
|
17
|
+
if (cachedHre === undefined) {
|
|
18
|
+
const { default: hre } = await import("../../../../index.js");
|
|
19
|
+
cachedHre = hre;
|
|
20
|
+
}
|
|
21
|
+
return cachedHre;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function markTestRunStart(id: string): Promise<void> {
|
|
25
|
+
const hre = await getHre();
|
|
26
|
+
await testRunStart(hre, id);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function markTestWorkerDone(id: string): Promise<void> {
|
|
30
|
+
const hre = await getHre();
|
|
31
|
+
await testWorkerDone(hre, id);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function markTestRunDone(id: string): Promise<void> {
|
|
35
|
+
const hre = await getHre();
|
|
36
|
+
await testRunDone(hre, id);
|
|
37
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Converts an internal FQN (e.g. `"project/contracts/Foo.sol:Foo"` or
|
|
5
|
+
* `"npm/@oz/contracts@5.0.0/token/ERC20.sol:ERC20"`) to its user-friendly
|
|
6
|
+
* form by stripping the `project/` prefix or npm version segment.
|
|
7
|
+
*/
|
|
8
|
+
export function getUserFqn(inputFqn: string): string {
|
|
9
|
+
if (inputFqn.startsWith("project/")) {
|
|
10
|
+
return inputFqn.slice("project/".length);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (inputFqn.startsWith("npm/")) {
|
|
14
|
+
const withoutPrefix = inputFqn.slice("npm/".length);
|
|
15
|
+
// Match "<pkg>@<version>/<rest>", where <pkg> may be scoped (@scope/pkg)
|
|
16
|
+
const match = withoutPrefix.match(/^(@?[^@/]+(?:\/[^@/]+)*)@[^/]+\/(.*)$/);
|
|
17
|
+
if (match !== null) {
|
|
18
|
+
return `${match[1]}/${match[2]}`;
|
|
19
|
+
}
|
|
20
|
+
return withoutPrefix;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return inputFqn;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Extracts the function name from a Solidity function signature
|
|
28
|
+
* (e.g. `"transfer(address,uint256)"` → `"transfer"`).
|
|
29
|
+
*/
|
|
30
|
+
export function getFunctionName(signature: string): string {
|
|
31
|
+
return signature.split("(")[0];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Builds a deterministic string key for grouping gas measurements by
|
|
36
|
+
* (contractFqn, proxyChain). Uses null-byte separators to avoid collisions.
|
|
37
|
+
*/
|
|
38
|
+
export function makeGroupKey(
|
|
39
|
+
contractFqn: string,
|
|
40
|
+
proxyChain: string[],
|
|
41
|
+
): string {
|
|
42
|
+
if (proxyChain.length === 0) {
|
|
43
|
+
return contractFqn;
|
|
44
|
+
}
|
|
45
|
+
return contractFqn + "\0" + proxyChain.join("\0");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns a human-readable proxy label like `"(via Proxy2 → Proxy)"`,
|
|
50
|
+
* or `undefined` for direct calls. Strips the last element (the
|
|
51
|
+
* implementation) and converts internal FQNs to user-friendly format.
|
|
52
|
+
*/
|
|
53
|
+
export function getProxyLabel(proxyChain: string[]): string | undefined {
|
|
54
|
+
const proxies = proxyChain.slice(0, -1).map(getUserFqn);
|
|
55
|
+
if (proxies.length === 0) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return `(via ${proxies.join(" → ")})`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Returns a display key for a contract entry, appending the proxy label
|
|
63
|
+
* when the call went through a proxy chain. Used for table headers and
|
|
64
|
+
* JSON object keys.
|
|
65
|
+
*/
|
|
66
|
+
export function getDisplayKey(userFqn: string, proxyChain: string[]): string {
|
|
67
|
+
const label = getProxyLabel(proxyChain);
|
|
68
|
+
if (label === undefined) {
|
|
69
|
+
return userFqn;
|
|
70
|
+
}
|
|
71
|
+
return `${userFqn} ${label}`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function avg(values: number[]): number {
|
|
75
|
+
return values.reduce((a, c) => a + c, 0) / values.length;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function median(values: number[]): number {
|
|
79
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
80
|
+
const mid = Math.floor(sorted.length / 2);
|
|
81
|
+
|
|
82
|
+
return sorted.length % 2 === 1
|
|
83
|
+
? sorted[mid]
|
|
84
|
+
: (sorted[mid - 1] + sorted[mid]) / 2;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function formatSectionHeader(
|
|
88
|
+
sectionName: string,
|
|
89
|
+
{
|
|
90
|
+
changedLength,
|
|
91
|
+
addedLength,
|
|
92
|
+
removedLength,
|
|
93
|
+
}: {
|
|
94
|
+
changedLength: number;
|
|
95
|
+
addedLength: number;
|
|
96
|
+
removedLength: number;
|
|
97
|
+
},
|
|
98
|
+
): string {
|
|
99
|
+
const parts: string[] = [];
|
|
100
|
+
|
|
101
|
+
if (changedLength > 0) {
|
|
102
|
+
parts.push(`${changedLength} changed`);
|
|
103
|
+
}
|
|
104
|
+
if (addedLength > 0) {
|
|
105
|
+
parts.push(`${addedLength} added`);
|
|
106
|
+
}
|
|
107
|
+
if (removedLength > 0) {
|
|
108
|
+
parts.push(`${removedLength} removed`);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return `${sectionName}: ${chalk.gray(parts.join(", "))}`;
|
|
112
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js";
|
|
2
2
|
|
|
3
3
|
import { GasAnalyticsManagerImplementation } from "../gas-analytics-manager.js";
|
|
4
|
-
import { setGasAnalyticsManager } from "../helpers.js";
|
|
4
|
+
import { setGasAnalyticsManager } from "../helpers/accessors.js";
|
|
5
5
|
|
|
6
6
|
export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
|
|
7
7
|
created: async (context, hre) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HookContext, TestHooks } from "../../../../types/hooks.js";
|
|
2
2
|
|
|
3
|
-
import { getGasAnalyticsManager } from "../helpers.js";
|
|
3
|
+
import { getGasAnalyticsManager } from "../helpers/accessors.js";
|
|
4
4
|
|
|
5
5
|
export default async (): Promise<Partial<TestHooks>> => ({
|
|
6
6
|
onTestRunStart: async (context, id, next) => {
|
|
@@ -18,8 +18,7 @@ import {
|
|
|
18
18
|
parseFullyQualifiedName,
|
|
19
19
|
} from "../../../utils/contract-names.js";
|
|
20
20
|
|
|
21
|
-
import { getUserFqn } from "./
|
|
22
|
-
import { formatSectionHeader } from "./helpers.js";
|
|
21
|
+
import { formatSectionHeader, getUserFqn } from "./helpers/utils.js";
|
|
23
22
|
|
|
24
23
|
export const SNAPSHOT_CHEATCODES_DIR = "snapshots";
|
|
25
24
|
|
|
@@ -9,6 +9,13 @@ export interface GasStatsJsonEntry {
|
|
|
9
9
|
count: number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Gas statistics for a deployment, including bytecode size.
|
|
14
|
+
*/
|
|
15
|
+
export interface DeploymentGasStatsJsonEntry extends GasStatsJsonEntry {
|
|
16
|
+
runtimeSize: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
12
19
|
/**
|
|
13
20
|
* Gas statistics for a single contract in the JSON output.
|
|
14
21
|
* `deployment` is null when the contract was never deployed during the test run
|
|
@@ -18,7 +25,8 @@ export interface GasStatsJsonEntry {
|
|
|
18
25
|
export interface ContractGasStatsJson {
|
|
19
26
|
sourceName: string;
|
|
20
27
|
contractName: string;
|
|
21
|
-
|
|
28
|
+
proxyChain: string[];
|
|
29
|
+
deployment: DeploymentGasStatsJsonEntry | null;
|
|
22
30
|
functions: Record<string, GasStatsJsonEntry> | null;
|
|
23
31
|
}
|
|
24
32
|
|
|
@@ -39,11 +47,12 @@ interface BaseGasMeasurement {
|
|
|
39
47
|
interface FunctionGasMeasurement extends BaseGasMeasurement {
|
|
40
48
|
type: "function";
|
|
41
49
|
functionSig: string;
|
|
50
|
+
proxyChain: string[];
|
|
42
51
|
}
|
|
43
52
|
|
|
44
53
|
interface DeploymentGasMeasurement extends BaseGasMeasurement {
|
|
45
54
|
type: "deployment";
|
|
46
|
-
|
|
55
|
+
runtimeSize: number;
|
|
47
56
|
}
|
|
48
57
|
|
|
49
58
|
export type GasMeasurement = FunctionGasMeasurement | DeploymentGasMeasurement;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import type * as Bip39T from "ethereum-cryptography/bip39";
|
|
2
|
+
import type { HDKey as HDKeyT } from "ethereum-cryptography/hdkey";
|
|
3
|
+
|
|
1
4
|
import { HardhatError } from "@nomicfoundation/hardhat-errors";
|
|
2
5
|
import { bytesToHexString } from "@nomicfoundation/hardhat-utils/bytes";
|
|
3
6
|
|
|
7
|
+
// ethereum-cryptography/bip39 is known to be slow to load, so we lazy load it
|
|
8
|
+
let mnemonicToSeedSync: typeof Bip39T.mnemonicToSeedSync | undefined;
|
|
9
|
+
|
|
10
|
+
// ethereum-cryptography/hdkey is known to be slow to load, so we lazy load it
|
|
11
|
+
let HDKey: typeof HDKeyT | undefined;
|
|
12
|
+
|
|
4
13
|
const HD_PATH_REGEX = /^m(:?\/\d+'?)+\/?$/;
|
|
5
14
|
|
|
6
15
|
export async function derivePrivateKeys(
|
|
@@ -47,13 +56,26 @@ async function deriveKeyFromMnemonicAndPath(
|
|
|
47
56
|
hdPath: string,
|
|
48
57
|
passphrase: string,
|
|
49
58
|
): Promise<string | undefined> {
|
|
50
|
-
const { mnemonicToSeedSync } = await import("ethereum-cryptography/bip39");
|
|
51
|
-
const { HDKey } = await import("ethereum-cryptography/hdkey");
|
|
52
|
-
|
|
53
59
|
// NOTE: If mnemonic has space or newline at the beginning or end, it will be trimmed.
|
|
54
60
|
// This is because mnemonic containing them may generate different private keys.
|
|
55
61
|
const trimmedMnemonic = mnemonic.trim();
|
|
56
62
|
|
|
63
|
+
if (mnemonicToSeedSync === undefined) {
|
|
64
|
+
const { mnemonicToSeedSync: importedMnemonicToSeedSync } = await import(
|
|
65
|
+
"ethereum-cryptography/bip39"
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
mnemonicToSeedSync = importedMnemonicToSeedSync;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (HDKey === undefined) {
|
|
72
|
+
const { HDKey: ImportedHDKey } = await import(
|
|
73
|
+
"ethereum-cryptography/hdkey"
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
HDKey = ImportedHDKey;
|
|
77
|
+
}
|
|
78
|
+
|
|
57
79
|
const seed = mnemonicToSeedSync(trimmedMnemonic, passphrase);
|
|
58
80
|
|
|
59
81
|
const masterKey = HDKey.fromMasterSeed(seed);
|
|
@@ -15,23 +15,17 @@ import type {
|
|
|
15
15
|
import type { RequireField } from "../../../../types/utils.js";
|
|
16
16
|
import type { DefaultHDAccountsConfigParams } from "../accounts/constants.js";
|
|
17
17
|
import type { JsonRpcRequestWrapperFunction } from "../network-manager.js";
|
|
18
|
+
import type { TraceOutputManager } from "./utils/trace-output.js";
|
|
18
19
|
import type {
|
|
19
20
|
SubscriptionEvent,
|
|
20
21
|
Response,
|
|
21
22
|
Provider,
|
|
22
23
|
ProviderConfig,
|
|
23
24
|
TracingConfigWithBuffers,
|
|
24
|
-
AccountOverride,
|
|
25
25
|
GasReportConfig,
|
|
26
26
|
} from "@nomicfoundation/edr";
|
|
27
27
|
|
|
28
|
-
import {
|
|
29
|
-
opGenesisState,
|
|
30
|
-
opHardforkFromString,
|
|
31
|
-
l1GenesisState,
|
|
32
|
-
l1HardforkFromString,
|
|
33
|
-
ContractDecoder,
|
|
34
|
-
} from "@nomicfoundation/edr";
|
|
28
|
+
import { ContractDecoder, IncludeTraces } from "@nomicfoundation/edr";
|
|
35
29
|
import {
|
|
36
30
|
assertHardhatInvariant,
|
|
37
31
|
HardhatError,
|
|
@@ -41,14 +35,9 @@ import { ensureError } from "@nomicfoundation/hardhat-utils/error";
|
|
|
41
35
|
import { numberToHexString } from "@nomicfoundation/hardhat-utils/hex";
|
|
42
36
|
import { deepEqual } from "@nomicfoundation/hardhat-utils/lang";
|
|
43
37
|
import debug from "debug";
|
|
44
|
-
import { hexToBytes } from "ethereum-cryptography/utils";
|
|
45
|
-
import { addr } from "micro-eth-signer";
|
|
46
38
|
|
|
47
39
|
import { sendErrorTelemetry } from "../../../cli/telemetry/sentry/reporter.js";
|
|
48
|
-
import {
|
|
49
|
-
EDR_NETWORK_REVERT_SNAPSHOT_EVENT,
|
|
50
|
-
OPTIMISM_CHAIN_TYPE,
|
|
51
|
-
} from "../../../constants.js";
|
|
40
|
+
import { EDR_NETWORK_REVERT_SNAPSHOT_EVENT } from "../../../constants.js";
|
|
52
41
|
import { hardhatChainTypeToEdrChainType } from "../../../edr/chain-type.js";
|
|
53
42
|
import { getGlobalEdrContext } from "../../../edr/context.js";
|
|
54
43
|
import { DEFAULT_HD_ACCOUNTS_CONFIG_PARAMS } from "../accounts/constants.js";
|
|
@@ -60,6 +49,7 @@ import {
|
|
|
60
49
|
UnknownError,
|
|
61
50
|
} from "../provider-errors.js";
|
|
62
51
|
|
|
52
|
+
import { getGenesisStateAndOwnedAccounts } from "./genesis-state.js";
|
|
63
53
|
import { EdrProviderStackTraceGenerationError } from "./stack-traces/stack-trace-generation-errors.js";
|
|
64
54
|
import { createSolidityErrorWithStackTrace } from "./stack-traces/stack-trace-solidity-errors.js";
|
|
65
55
|
import { isEdrProviderErrorData } from "./type-validation.js";
|
|
@@ -69,7 +59,6 @@ import {
|
|
|
69
59
|
hardhatMiningIntervalToEdrMiningInterval,
|
|
70
60
|
hardhatMempoolOrderToEdrMineOrdering,
|
|
71
61
|
hardhatHardforkToEdrSpecId,
|
|
72
|
-
hardhatAccountsToEdrOwnedAccounts,
|
|
73
62
|
hardhatForkingConfigToEdrForkConfig,
|
|
74
63
|
} from "./utils/convert-to-edr.js";
|
|
75
64
|
import { printLine, replaceLastLine } from "./utils/logger.js";
|
|
@@ -135,10 +124,14 @@ interface EdrProviderConfig {
|
|
|
135
124
|
chainDescriptors: ChainDescriptorsConfig;
|
|
136
125
|
networkConfig: RequireField<EdrNetworkConfig, "chainType">;
|
|
137
126
|
loggerConfig?: LoggerConfig;
|
|
138
|
-
|
|
127
|
+
contractDecoder: ContractDecoder;
|
|
139
128
|
jsonRpcRequestWrapper?: JsonRpcRequestWrapperFunction;
|
|
140
129
|
coverageConfig?: CoverageConfig;
|
|
141
130
|
gasReportConfig?: GasReportConfig;
|
|
131
|
+
includeCallTraces?: IncludeTraces;
|
|
132
|
+
connectionId: number;
|
|
133
|
+
networkName: string;
|
|
134
|
+
verbosity: number;
|
|
142
135
|
}
|
|
143
136
|
|
|
144
137
|
export class EdrProvider extends BaseProvider {
|
|
@@ -146,6 +139,13 @@ export class EdrProvider extends BaseProvider {
|
|
|
146
139
|
|
|
147
140
|
#provider: Provider | undefined;
|
|
148
141
|
#nextRequestId = 1;
|
|
142
|
+
readonly #traceOutput: TraceOutputManager | undefined;
|
|
143
|
+
|
|
144
|
+
public static async createContractDecoder(
|
|
145
|
+
tracingConfig: TracingConfigWithBuffers,
|
|
146
|
+
): Promise<ContractDecoder> {
|
|
147
|
+
return ContractDecoder.withContracts(tracingConfig);
|
|
148
|
+
}
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
151
|
* Creates a new instance of `EdrProvider`.
|
|
@@ -154,10 +154,14 @@ export class EdrProvider extends BaseProvider {
|
|
|
154
154
|
chainDescriptors,
|
|
155
155
|
networkConfig,
|
|
156
156
|
loggerConfig = { enabled: false },
|
|
157
|
-
|
|
157
|
+
contractDecoder,
|
|
158
158
|
jsonRpcRequestWrapper,
|
|
159
159
|
coverageConfig,
|
|
160
160
|
gasReportConfig,
|
|
161
|
+
includeCallTraces,
|
|
162
|
+
verbosity,
|
|
163
|
+
connectionId,
|
|
164
|
+
networkName,
|
|
161
165
|
}: EdrProviderConfig): Promise<EdrProvider> {
|
|
162
166
|
const printLineFn = loggerConfig.printLineFn ?? printLine;
|
|
163
167
|
const replaceLastLineFn = loggerConfig.replaceLastLineFn ?? replaceLastLine;
|
|
@@ -167,15 +171,18 @@ export class EdrProvider extends BaseProvider {
|
|
|
167
171
|
coverageConfig,
|
|
168
172
|
gasReportConfig,
|
|
169
173
|
chainDescriptors,
|
|
174
|
+
includeCallTraces,
|
|
170
175
|
);
|
|
171
176
|
|
|
172
177
|
let edrProvider: EdrProvider;
|
|
173
178
|
|
|
179
|
+
// We use a WeakRef to the provider to prevent the subscriptionCallback
|
|
180
|
+
// below from creating a cycle and leaking the provider.
|
|
181
|
+
let edrProviderWeakRef: WeakRef<EdrProvider> | undefined;
|
|
182
|
+
|
|
174
183
|
// We need to catch errors here, as the provider creation can panic unexpectedly,
|
|
175
184
|
// and we want to make sure such a crash is propagated as a ProviderError.
|
|
176
185
|
try {
|
|
177
|
-
const contractDecoder = ContractDecoder.withContracts(tracingConfig);
|
|
178
|
-
|
|
179
186
|
const context = await getGlobalEdrContext();
|
|
180
187
|
const provider = await context.createProvider(
|
|
181
188
|
hardhatChainTypeToEdrChainType(networkConfig.chainType),
|
|
@@ -199,13 +206,38 @@ export class EdrProvider extends BaseProvider {
|
|
|
199
206
|
},
|
|
200
207
|
{
|
|
201
208
|
subscriptionCallback: (event: SubscriptionEvent) => {
|
|
202
|
-
|
|
209
|
+
const deferredProvider = edrProviderWeakRef?.deref();
|
|
210
|
+
if (deferredProvider !== undefined) {
|
|
211
|
+
deferredProvider.onSubscriptionEvent(event);
|
|
212
|
+
}
|
|
203
213
|
},
|
|
204
214
|
},
|
|
205
215
|
contractDecoder,
|
|
206
216
|
);
|
|
207
217
|
|
|
208
|
-
|
|
218
|
+
const tracesEnabled =
|
|
219
|
+
includeCallTraces !== undefined &&
|
|
220
|
+
includeCallTraces !== IncludeTraces.None;
|
|
221
|
+
|
|
222
|
+
let traceOutput: TraceOutputManager | undefined;
|
|
223
|
+
if (tracesEnabled) {
|
|
224
|
+
const { TraceOutputManager: TraceOutputManagerImpl } = await import(
|
|
225
|
+
"./utils/trace-output.js"
|
|
226
|
+
);
|
|
227
|
+
traceOutput = new TraceOutputManagerImpl(
|
|
228
|
+
printLineFn,
|
|
229
|
+
connectionId,
|
|
230
|
+
networkName,
|
|
231
|
+
verbosity,
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
edrProvider = new EdrProvider(
|
|
236
|
+
provider,
|
|
237
|
+
traceOutput,
|
|
238
|
+
jsonRpcRequestWrapper,
|
|
239
|
+
);
|
|
240
|
+
edrProviderWeakRef = new WeakRef(edrProvider);
|
|
209
241
|
} catch (error) {
|
|
210
242
|
ensureError(error);
|
|
211
243
|
|
|
@@ -225,12 +257,22 @@ export class EdrProvider extends BaseProvider {
|
|
|
225
257
|
*/
|
|
226
258
|
private constructor(
|
|
227
259
|
provider: Provider,
|
|
260
|
+
traceOutput: TraceOutputManager | undefined,
|
|
228
261
|
jsonRpcRequestWrapper?: JsonRpcRequestWrapperFunction,
|
|
229
262
|
) {
|
|
230
263
|
super();
|
|
231
264
|
|
|
232
265
|
this.#provider = provider;
|
|
266
|
+
this.#traceOutput = traceOutput;
|
|
233
267
|
this.#jsonRpcRequestWrapper = jsonRpcRequestWrapper;
|
|
268
|
+
|
|
269
|
+
// After a snapshot revert, the same transactions may run again.
|
|
270
|
+
// Reset traced hashes so their traces are printed a second time.
|
|
271
|
+
if (this.#traceOutput !== undefined) {
|
|
272
|
+
this.on(EDR_NETWORK_REVERT_SNAPSHOT_EVENT, () => {
|
|
273
|
+
this.#traceOutput?.clearTracedHashes();
|
|
274
|
+
});
|
|
275
|
+
}
|
|
234
276
|
}
|
|
235
277
|
|
|
236
278
|
public async request(
|
|
@@ -290,8 +332,10 @@ export class EdrProvider extends BaseProvider {
|
|
|
290
332
|
}
|
|
291
333
|
|
|
292
334
|
public async close(): Promise<void> {
|
|
335
|
+
this.removeAllListeners();
|
|
293
336
|
// Clear the provider reference to help with garbage collection
|
|
294
337
|
this.#provider = undefined;
|
|
338
|
+
this.#traceOutput?.clearTracedHashes();
|
|
295
339
|
}
|
|
296
340
|
|
|
297
341
|
public async addCompilationResult(
|
|
@@ -312,8 +356,11 @@ export class EdrProvider extends BaseProvider {
|
|
|
312
356
|
|
|
313
357
|
async #handleEdrResponse(
|
|
314
358
|
edrResponse: Response,
|
|
359
|
+
method: string,
|
|
360
|
+
params?: unknown[],
|
|
315
361
|
): Promise<SuccessfulJsonRpcResponse> {
|
|
316
362
|
let jsonRpcResponse: JsonRpcResponse;
|
|
363
|
+
let txHash: string | undefined;
|
|
317
364
|
|
|
318
365
|
if (typeof edrResponse.data === "string") {
|
|
319
366
|
jsonRpcResponse = JSON.parse(edrResponse.data);
|
|
@@ -325,6 +372,12 @@ export class EdrProvider extends BaseProvider {
|
|
|
325
372
|
const responseError = jsonRpcResponse.error;
|
|
326
373
|
let error;
|
|
327
374
|
|
|
375
|
+
// Grab the tx hash so trace deduplication can recognize this transaction later
|
|
376
|
+
const errorData = responseError.data;
|
|
377
|
+
if (isEdrProviderErrorData(errorData)) {
|
|
378
|
+
txHash = errorData.transactionHash;
|
|
379
|
+
}
|
|
380
|
+
|
|
328
381
|
const stackTrace = edrResponse.stackTrace();
|
|
329
382
|
|
|
330
383
|
if (stackTrace?.kind === "StackTrace") {
|
|
@@ -365,11 +418,33 @@ export class EdrProvider extends BaseProvider {
|
|
|
365
418
|
error.data = responseError.data;
|
|
366
419
|
}
|
|
367
420
|
|
|
421
|
+
this.#traceOutput?.outputCallTraces(edrResponse, method, txHash, true);
|
|
422
|
+
|
|
368
423
|
/* eslint-disable-next-line no-restricted-syntax -- we may throw
|
|
369
424
|
non-Hardhat errors inside of an EthereumProvider */
|
|
370
425
|
throw error;
|
|
371
426
|
}
|
|
372
427
|
|
|
428
|
+
if (this.#traceOutput !== undefined) {
|
|
429
|
+
// Output call traces for successful responses. The tx hash is resolved
|
|
430
|
+
// from the response/params so the trace manager can deduplicate.
|
|
431
|
+
|
|
432
|
+
if (
|
|
433
|
+
method === "eth_sendTransaction" ||
|
|
434
|
+
method === "eth_sendRawTransaction"
|
|
435
|
+
) {
|
|
436
|
+
txHash =
|
|
437
|
+
typeof jsonRpcResponse.result === "string"
|
|
438
|
+
? jsonRpcResponse.result
|
|
439
|
+
: undefined;
|
|
440
|
+
} else if (method === "eth_getTransactionReceipt") {
|
|
441
|
+
// params[0] is the tx hash being queried — used to dedup receipt polling
|
|
442
|
+
txHash = typeof params?.[0] === "string" ? params[0] : undefined;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
this.#traceOutput.outputCallTraces(edrResponse, method, txHash, false);
|
|
446
|
+
}
|
|
447
|
+
|
|
373
448
|
return jsonRpcResponse;
|
|
374
449
|
}
|
|
375
450
|
|
|
@@ -421,7 +496,11 @@ export class EdrProvider extends BaseProvider {
|
|
|
421
496
|
throw new UnknownError(error.message, error);
|
|
422
497
|
}
|
|
423
498
|
|
|
424
|
-
return this.#handleEdrResponse(
|
|
499
|
+
return this.#handleEdrResponse(
|
|
500
|
+
edrResponse,
|
|
501
|
+
request.method,
|
|
502
|
+
Array.isArray(request.params) ? request.params : undefined,
|
|
503
|
+
);
|
|
425
504
|
}
|
|
426
505
|
}
|
|
427
506
|
|
|
@@ -430,49 +509,20 @@ export async function getProviderConfig(
|
|
|
430
509
|
coverageConfig: CoverageConfig | undefined,
|
|
431
510
|
gasReportConfig: GasReportConfig | undefined,
|
|
432
511
|
chainDescriptors: ChainDescriptorsConfig,
|
|
512
|
+
includeCallTraces?: IncludeTraces,
|
|
433
513
|
): Promise<ProviderConfig> {
|
|
434
514
|
const specId = hardhatHardforkToEdrSpecId(
|
|
435
515
|
networkConfig.hardfork,
|
|
436
516
|
networkConfig.chainType,
|
|
437
517
|
);
|
|
438
518
|
|
|
439
|
-
const ownedAccounts = await
|
|
519
|
+
const { genesisState, ownedAccounts } = await getGenesisStateAndOwnedAccounts(
|
|
440
520
|
networkConfig.accounts,
|
|
521
|
+
networkConfig.forking,
|
|
522
|
+
networkConfig.chainType,
|
|
523
|
+
specId,
|
|
441
524
|
);
|
|
442
525
|
|
|
443
|
-
const genesisState: Map<Uint8Array, AccountOverride> = new Map(
|
|
444
|
-
ownedAccounts.map(({ secretKey, balance }) => {
|
|
445
|
-
const address = hexToBytes(addr.fromPrivateKey(secretKey));
|
|
446
|
-
const accountOverride: AccountOverride = {
|
|
447
|
-
address,
|
|
448
|
-
balance: BigInt(balance),
|
|
449
|
-
code: new Uint8Array(), // Empty account code, removing potential delegation code when forking
|
|
450
|
-
};
|
|
451
|
-
|
|
452
|
-
return [address, accountOverride];
|
|
453
|
-
}),
|
|
454
|
-
);
|
|
455
|
-
|
|
456
|
-
const chainGenesisState =
|
|
457
|
-
networkConfig.forking !== undefined
|
|
458
|
-
? [] // TODO: Add support for overriding remote fork state when the local fork is different
|
|
459
|
-
: networkConfig.chainType === OPTIMISM_CHAIN_TYPE
|
|
460
|
-
? opGenesisState(opHardforkFromString(specId))
|
|
461
|
-
: l1GenesisState(l1HardforkFromString(specId));
|
|
462
|
-
|
|
463
|
-
for (const account of chainGenesisState) {
|
|
464
|
-
const existingOverride = genesisState.get(account.address);
|
|
465
|
-
if (existingOverride !== undefined) {
|
|
466
|
-
// Favor the genesis state specified by the user
|
|
467
|
-
account.balance = account.balance ?? existingOverride.balance;
|
|
468
|
-
account.nonce = account.nonce ?? existingOverride.nonce;
|
|
469
|
-
account.code = account.code ?? existingOverride.code;
|
|
470
|
-
account.storage = account.storage ?? existingOverride.storage;
|
|
471
|
-
} else {
|
|
472
|
-
genesisState.set(account.address, account);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
|
|
476
526
|
return {
|
|
477
527
|
allowBlocksWithSameTimestamp: networkConfig.allowBlocksWithSameTimestamp,
|
|
478
528
|
allowUnlimitedContractSize: networkConfig.allowUnlimitedContractSize,
|
|
@@ -506,6 +556,7 @@ export async function getProviderConfig(
|
|
|
506
556
|
observability: {
|
|
507
557
|
codeCoverage: coverageConfig,
|
|
508
558
|
gasReport: gasReportConfig,
|
|
559
|
+
includeCallTraces,
|
|
509
560
|
},
|
|
510
561
|
ownedAccounts: ownedAccounts.map((account) => account.secretKey),
|
|
511
562
|
precompileOverrides: [],
|