hardhat 2.17.1 → 2.17.3

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.
Files changed (91) hide show
  1. package/builtin-tasks/compile.js +28 -4
  2. package/builtin-tasks/compile.js.map +1 -1
  3. package/builtin-tasks/task-names.d.ts +1 -0
  4. package/builtin-tasks/task-names.d.ts.map +1 -1
  5. package/builtin-tasks/task-names.js +3 -2
  6. package/builtin-tasks/task-names.js.map +1 -1
  7. package/internal/artifacts.d.ts +28 -0
  8. package/internal/artifacts.d.ts.map +1 -1
  9. package/internal/artifacts.js +39 -1
  10. package/internal/artifacts.js.map +1 -1
  11. package/internal/cli/project-creation.js +1 -1
  12. package/internal/core/config/config-resolution.d.ts.map +1 -1
  13. package/internal/core/config/config-resolution.js +4 -0
  14. package/internal/core/config/config-resolution.js.map +1 -1
  15. package/internal/core/errors-list.d.ts +28 -0
  16. package/internal/core/errors-list.d.ts.map +1 -1
  17. package/internal/core/errors-list.js +34 -0
  18. package/internal/core/errors-list.js.map +1 -1
  19. package/internal/core/jsonrpc/types/base-types.d.ts +1 -0
  20. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -1
  21. package/internal/core/jsonrpc/types/base-types.js +8 -1
  22. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  23. package/internal/core/jsonrpc/types/input/callRequest.d.ts +60 -0
  24. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
  25. package/internal/core/jsonrpc/types/input/callRequest.js +13 -1
  26. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
  27. package/internal/core/providers/construction.d.ts.map +1 -1
  28. package/internal/core/providers/construction.js +1 -0
  29. package/internal/core/providers/construction.js.map +1 -1
  30. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  31. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +13 -1
  32. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  33. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  34. package/internal/hardhat-network/provider/modules/eth.js +3 -3
  35. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  36. package/internal/hardhat-network/provider/node-types.d.ts +1 -0
  37. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  38. package/internal/hardhat-network/provider/node.d.ts +8 -1
  39. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  40. package/internal/hardhat-network/provider/node.js +65 -6
  41. package/internal/hardhat-network/provider/node.js.map +1 -1
  42. package/internal/hardhat-network/provider/provider.d.ts +1 -0
  43. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  44. package/internal/hardhat-network/provider/provider.js +1 -0
  45. package/internal/hardhat-network/provider/provider.js.map +1 -1
  46. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
  47. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  48. package/internal/hardhat-network/provider/utils/makeCommon.js +3 -1
  49. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  50. package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
  51. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +8 -8
  52. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  53. package/internal/solidity/dependencyGraph.d.ts.map +1 -1
  54. package/internal/solidity/dependencyGraph.js +13 -3
  55. package/internal/solidity/dependencyGraph.js.map +1 -1
  56. package/internal/solidity/resolver.d.ts +2 -1
  57. package/internal/solidity/resolver.d.ts.map +1 -1
  58. package/internal/solidity/resolver.js +31 -17
  59. package/internal/solidity/resolver.js.map +1 -1
  60. package/package.json +12 -11
  61. package/src/builtin-tasks/compile.ts +33 -4
  62. package/src/builtin-tasks/task-names.ts +1 -0
  63. package/src/internal/artifacts.ts +40 -1
  64. package/src/internal/cli/project-creation.ts +1 -1
  65. package/src/internal/core/config/config-resolution.ts +5 -0
  66. package/src/internal/core/errors-list.ts +38 -0
  67. package/src/internal/core/jsonrpc/types/base-types.ts +15 -0
  68. package/src/internal/core/jsonrpc/types/input/callRequest.ts +35 -1
  69. package/src/internal/core/providers/construction.ts +2 -0
  70. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +24 -4
  71. package/src/internal/hardhat-network/provider/modules/eth.ts +18 -4
  72. package/src/internal/hardhat-network/provider/node-types.ts +1 -0
  73. package/src/internal/hardhat-network/provider/node.ts +110 -6
  74. package/src/internal/hardhat-network/provider/provider.ts +2 -0
  75. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +9 -1
  76. package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +12 -10
  77. package/src/internal/solidity/dependencyGraph.ts +15 -3
  78. package/src/internal/solidity/resolver.ts +58 -16
  79. package/src/types/config.ts +2 -0
  80. package/src/utils/contract-names.ts +1 -0
  81. package/src/utils/remappings.ts +17 -0
  82. package/types/config.d.ts +2 -0
  83. package/types/config.d.ts.map +1 -1
  84. package/utils/contract-names.d.ts +1 -0
  85. package/utils/contract-names.d.ts.map +1 -1
  86. package/utils/contract-names.js +1 -0
  87. package/utils/contract-names.js.map +1 -1
  88. package/utils/remappings.d.ts +2 -0
  89. package/utils/remappings.d.ts.map +1 -0
  90. package/utils/remappings.js +15 -0
  91. package/utils/remappings.js.map +1 -0
@@ -12,6 +12,7 @@ const errors_1 = require("../core/errors");
12
12
  const errors_list_1 = require("../core/errors-list");
13
13
  const hash_1 = require("../util/hash");
14
14
  const fs_utils_1 = require("../util/fs-utils");
15
+ const remappings_1 = require("../../utils/remappings");
15
16
  const NODE_MODULES = "node_modules";
16
17
  class ResolvedFile {
17
18
  constructor(sourceName, absolutePath, content, contentHash, lastModificationDate, libraryName, libraryVersion) {
@@ -36,9 +37,10 @@ class ResolvedFile {
36
37
  }
37
38
  exports.ResolvedFile = ResolvedFile;
38
39
  class Resolver {
39
- constructor(_projectRoot, _parser, _readFile, _transformImportName) {
40
+ constructor(_projectRoot, _parser, _remappings, _readFile, _transformImportName) {
40
41
  this._projectRoot = _projectRoot;
41
42
  this._parser = _parser;
43
+ this._remappings = _remappings;
42
44
  this._readFile = _readFile;
43
45
  this._transformImportName = _transformImportName;
44
46
  this._cache = new Map();
@@ -53,13 +55,14 @@ class Resolver {
53
55
  if (cached !== undefined) {
54
56
  return cached;
55
57
  }
56
- (0, source_names_1.validateSourceNameFormat)(sourceName);
58
+ const remappedSourceName = (0, remappings_1.applyRemappings)(this._remappings, sourceName);
59
+ (0, source_names_1.validateSourceNameFormat)(remappedSourceName);
57
60
  let resolvedFile;
58
- if (await (0, source_names_1.isLocalSourceName)(this._projectRoot, sourceName)) {
59
- resolvedFile = await this._resolveLocalSourceName(sourceName);
61
+ if (await (0, source_names_1.isLocalSourceName)(this._projectRoot, remappedSourceName)) {
62
+ resolvedFile = await this._resolveLocalSourceName(sourceName, remappedSourceName);
60
63
  }
61
64
  else {
62
- resolvedFile = await this._resolveLibrarySourceName(sourceName);
65
+ resolvedFile = await this._resolveLibrarySourceName(sourceName, remappedSourceName);
63
66
  }
64
67
  this._cache.set(sourceName, resolvedFile);
65
68
  return resolvedFile;
@@ -70,7 +73,11 @@ class Resolver {
70
73
  * @param importName The path in the import statement.
71
74
  */
72
75
  async resolveImport(from, importName) {
73
- const imported = await this._transformImportName(importName);
76
+ // sanity check for deprecated task
77
+ if (importName !== (await this._transformImportName(importName))) {
78
+ throw new errors_1.HardhatError(errors_list_1.ERRORS.TASK_DEFINITIONS.DEPRECATED_TRANSFORM_IMPORT_TASK);
79
+ }
80
+ const imported = (0, remappings_1.applyRemappings)(this._remappings, importName);
74
81
  const scheme = this._getUriScheme(imported);
75
82
  if (scheme !== undefined) {
76
83
  throw new errors_1.HardhatError(errors_list_1.ERRORS.RESOLVER.INVALID_IMPORT_PROTOCOL, {
@@ -106,7 +113,7 @@ class Resolver {
106
113
  sourceName = await this._relativeImportToSourceName(from, imported);
107
114
  }
108
115
  else {
109
- sourceName = (0, source_names_1.normalizeSourceName)(imported);
116
+ sourceName = (0, source_names_1.normalizeSourceName)(importName); // The sourceName of the imported file is not transformed
110
117
  }
111
118
  const cached = this._cache.get(sourceName);
112
119
  if (cached !== undefined) {
@@ -119,7 +126,7 @@ class Resolver {
119
126
  if (from.library === undefined &&
120
127
  isRelativeImport &&
121
128
  !this._isRelativeImportToLibrary(from, imported)) {
122
- resolvedFile = await this._resolveLocalSourceName(sourceName);
129
+ resolvedFile = await this._resolveLocalSourceName(sourceName, (0, remappings_1.applyRemappings)(this._remappings, sourceName));
123
130
  }
124
131
  else {
125
132
  resolvedFile = await this.resolveSourceName(sourceName);
@@ -156,17 +163,24 @@ class Resolver {
156
163
  from: from.sourceName,
157
164
  }, error);
158
165
  }
166
+ if (errors_1.HardhatError.isHardhatErrorType(error, errors_list_1.ERRORS.GENERAL.INVALID_READ_OF_DIRECTORY)) {
167
+ throw new errors_1.HardhatError(errors_list_1.ERRORS.RESOLVER.INVALID_IMPORT_OF_DIRECTORY, {
168
+ imported,
169
+ from: from.sourceName,
170
+ }, error);
171
+ }
159
172
  // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
160
173
  throw error;
161
174
  }
162
175
  }
163
- async _resolveLocalSourceName(sourceName) {
164
- await this._validateSourceNameExistenceAndCasing(this._projectRoot, sourceName, false);
165
- const absolutePath = path_1.default.join(this._projectRoot, sourceName);
176
+ async _resolveLocalSourceName(sourceName, remappedSourceName) {
177
+ await this._validateSourceNameExistenceAndCasing(this._projectRoot, remappedSourceName, false);
178
+ const absolutePath = path_1.default.join(this._projectRoot, remappedSourceName);
166
179
  return this._resolveFile(sourceName, absolutePath);
167
180
  }
168
- async _resolveLibrarySourceName(sourceName) {
169
- const libraryName = this._getLibraryName(sourceName);
181
+ async _resolveLibrarySourceName(sourceName, remappedSourceName) {
182
+ const normalizedSourceName = remappedSourceName.replace(/^node_modules\//, "");
183
+ const libraryName = this._getLibraryName(normalizedSourceName);
170
184
  let packageJsonPath;
171
185
  try {
172
186
  packageJsonPath = this._resolveNodeModulesFileFromProjectRoot(path_1.default.join(libraryName, "package.json"));
@@ -186,7 +200,7 @@ class Resolver {
186
200
  }
187
201
  }
188
202
  let nodeModulesPath = path_1.default.dirname(path_1.default.dirname(packageJsonPath));
189
- if (this._isScopedPackage(sourceName)) {
203
+ if (this._isScopedPackage(normalizedSourceName)) {
190
204
  nodeModulesPath = path_1.default.dirname(nodeModulesPath);
191
205
  }
192
206
  let absolutePath;
@@ -195,7 +209,7 @@ class Resolver {
195
209
  // cases we handle resolution differently
196
210
  const packageRoot = path_1.default.dirname(packageJsonPath);
197
211
  const pattern = new RegExp(`^${libraryName}/?`);
198
- const fileName = sourceName.replace(pattern, "");
212
+ const fileName = normalizedSourceName.replace(pattern, "");
199
213
  await this._validateSourceNameExistenceAndCasing(packageRoot,
200
214
  // TODO: this is _not_ a source name; we should handle this scenario in
201
215
  // a better way
@@ -203,8 +217,8 @@ class Resolver {
203
217
  absolutePath = path_1.default.join(packageRoot, fileName);
204
218
  }
205
219
  else {
206
- await this._validateSourceNameExistenceAndCasing(nodeModulesPath, sourceName, true);
207
- absolutePath = path_1.default.join(nodeModulesPath, sourceName);
220
+ await this._validateSourceNameExistenceAndCasing(nodeModulesPath, normalizedSourceName, true);
221
+ absolutePath = path_1.default.join(nodeModulesPath, normalizedSourceName);
208
222
  }
209
223
  const packageInfo = await fs_extra_1.default.readJson(packageJsonPath);
210
224
  const libraryVersion = packageInfo.version;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/internal/solidity/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/internal/solidity/resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "2.17.1",
3
+ "version": "2.17.3",
4
4
  "author": "Nomic Labs LLC",
5
5
  "license": "MIT",
6
6
  "homepage": "https://hardhat.org",
@@ -27,6 +27,7 @@
27
27
  "lint:fix": "yarn prettier --write && yarn eslint --fix",
28
28
  "eslint": "eslint 'src/**/*.ts' 'test/**/*.ts'",
29
29
  "prettier": "prettier \"**/*.{js,md,json}\"",
30
+ "pretest": "cd ../.. && yarn build",
30
31
  "test": "mocha --recursive \"test/**/*.ts\"",
31
32
  "test:except-tracing": "mocha --recursive \"test/**/*.ts\" --invert --grep \"Stack traces\"",
32
33
  "test:tracing": "mocha --recursive \"test/internal/hardhat-network/{helpers,stack-traces}/**/*.ts\"",
@@ -97,16 +98,16 @@
97
98
  "dependencies": {
98
99
  "@ethersproject/abi": "^5.1.2",
99
100
  "@metamask/eth-sig-util": "^4.0.0",
100
- "@nomicfoundation/ethereumjs-block": "5.0.1",
101
- "@nomicfoundation/ethereumjs-blockchain": "7.0.1",
102
- "@nomicfoundation/ethereumjs-common": "4.0.1",
103
- "@nomicfoundation/ethereumjs-evm": "2.0.1",
104
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
105
- "@nomicfoundation/ethereumjs-statemanager": "2.0.1",
106
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
107
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
108
- "@nomicfoundation/ethereumjs-util": "9.0.1",
109
- "@nomicfoundation/ethereumjs-vm": "7.0.1",
101
+ "@nomicfoundation/ethereumjs-block": "5.0.2",
102
+ "@nomicfoundation/ethereumjs-blockchain": "7.0.2",
103
+ "@nomicfoundation/ethereumjs-common": "4.0.2",
104
+ "@nomicfoundation/ethereumjs-evm": "2.0.2",
105
+ "@nomicfoundation/ethereumjs-rlp": "5.0.2",
106
+ "@nomicfoundation/ethereumjs-statemanager": "2.0.2",
107
+ "@nomicfoundation/ethereumjs-trie": "6.0.2",
108
+ "@nomicfoundation/ethereumjs-tx": "5.0.2",
109
+ "@nomicfoundation/ethereumjs-util": "9.0.2",
110
+ "@nomicfoundation/ethereumjs-vm": "7.0.2",
110
111
  "@nomicfoundation/solidity-analyzer": "^0.1.0",
111
112
  "@sentry/node": "^5.18.1",
112
113
  "@types/bn.js": "^5.1.0",
@@ -74,6 +74,7 @@ import {
74
74
  TASK_COMPILE_SOLIDITY_RUN_SOLC,
75
75
  TASK_COMPILE_SOLIDITY_RUN_SOLCJS,
76
76
  TASK_COMPILE_TRANSFORM_IMPORT_NAME,
77
+ TASK_COMPILE_GET_REMAPPINGS,
77
78
  } from "./task-names";
78
79
  import {
79
80
  getSolidityFilesCachePath,
@@ -161,13 +162,26 @@ subtask(TASK_COMPILE_SOLIDITY_READ_FILE)
161
162
  .addParam("absolutePath", undefined, undefined, types.string)
162
163
  .setAction(
163
164
  async ({ absolutePath }: { absolutePath: string }): Promise<string> => {
164
- return fsExtra.readFile(absolutePath, {
165
- encoding: "utf8",
166
- });
165
+ try {
166
+ return await fsExtra.readFile(absolutePath, {
167
+ encoding: "utf8",
168
+ });
169
+ } catch (e) {
170
+ if (fsExtra.lstatSync(absolutePath).isDirectory()) {
171
+ throw new HardhatError(ERRORS.GENERAL.INVALID_READ_OF_DIRECTORY, {
172
+ absolutePath,
173
+ });
174
+ }
175
+
176
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
177
+ throw e;
178
+ }
167
179
  }
168
180
  );
169
181
 
170
182
  /**
183
+ * DEPRECATED: This subtask is deprecated and will be removed in the future.
184
+ *
171
185
  * This task transform the string literal in an import directive.
172
186
  * By default it does nothing, but it can be overriden by plugins.
173
187
  */
@@ -179,6 +193,16 @@ subtask(TASK_COMPILE_TRANSFORM_IMPORT_NAME)
179
193
  }
180
194
  );
181
195
 
196
+ /**
197
+ * This task returns a Record<string, string> representing remappings to be used
198
+ * by the resolver.
199
+ */
200
+ subtask(TASK_COMPILE_GET_REMAPPINGS).setAction(
201
+ async (): Promise<Record<string, string>> => {
202
+ return {};
203
+ }
204
+ );
205
+
182
206
  /**
183
207
  * Receives a list of source names and returns a dependency graph. This task
184
208
  * is responsible for both resolving dependencies (like getting files from
@@ -202,13 +226,18 @@ subtask(TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH)
202
226
  { config, run }
203
227
  ): Promise<taskTypes.DependencyGraph> => {
204
228
  const parser = new Parser(solidityFilesCache);
229
+ const remappings = await run(TASK_COMPILE_GET_REMAPPINGS);
205
230
  const resolver = new Resolver(
206
231
  rootPath ?? config.paths.root,
207
232
  parser,
233
+ remappings,
208
234
  (absolutePath: string) =>
209
235
  run(TASK_COMPILE_SOLIDITY_READ_FILE, { absolutePath }),
210
236
  (importName: string) =>
211
- run(TASK_COMPILE_TRANSFORM_IMPORT_NAME, { importName })
237
+ run(TASK_COMPILE_TRANSFORM_IMPORT_NAME, {
238
+ importName,
239
+ deprecationCheck: true,
240
+ })
212
241
  );
213
242
 
214
243
  const resolvedFiles = await Promise.all(
@@ -14,6 +14,7 @@ export const TASK_COMPILE_SOLIDITY_GET_SOURCE_NAMES =
14
14
  export const TASK_COMPILE_SOLIDITY_READ_FILE = "compile:solidity:read-file";
15
15
  export const TASK_COMPILE_TRANSFORM_IMPORT_NAME =
16
16
  "compile:solidity:transform-import-name";
17
+ export const TASK_COMPILE_GET_REMAPPINGS = "compile:solidity:get-remappings";
17
18
  export const TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH =
18
19
  "compile:solidity:get-dependency-graph";
19
20
  export const TASK_COMPILE_SOLIDITY_GET_COMPILATION_JOBS =
@@ -78,7 +78,18 @@ export class Artifacts implements IArtifacts {
78
78
  }
79
79
 
80
80
  public async artifactExists(name: string): Promise<boolean> {
81
- const artifactPath = await this._getArtifactPath(name);
81
+ let artifactPath;
82
+ try {
83
+ artifactPath = await this._getArtifactPath(name);
84
+ } catch (e) {
85
+ if (HardhatError.isHardhatError(e)) {
86
+ return false;
87
+ }
88
+
89
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
90
+ throw e;
91
+ }
92
+
82
93
  return fsExtra.pathExists(artifactPath);
83
94
  }
84
95
 
@@ -407,6 +418,7 @@ export class Artifacts implements IArtifacts {
407
418
 
408
419
  /**
409
420
  * Returns the absolute path to the given artifact
421
+ * @throws {HardhatError} If the name is not fully qualified.
410
422
  */
411
423
  public formArtifactPathFromFullyQualifiedName(
412
424
  fullyQualifiedName: string
@@ -490,6 +502,11 @@ export class Artifacts implements IArtifacts {
490
502
  * If the name is fully qualified, the path is computed from it. If not, an
491
503
  * artifact that matches the given name is searched in the existing artifacts.
492
504
  * If there is an ambiguity, an error is thrown.
505
+ *
506
+ * @throws {HardhatError} with descriptor:
507
+ * - {@link ERRORS.ARTIFACTS.WRONG_CASING} if the path case doesn't match the one in the filesystem.
508
+ * - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
509
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} if the artifact is not found.
493
510
  */
494
511
  private async _getArtifactPath(name: string): Promise<string> {
495
512
  const cached = this._cache?.artifactNameToArtifactPathCache.get(name);
@@ -603,6 +620,16 @@ export class Artifacts implements IArtifacts {
603
620
  return path.join(this._artifactsPath, sourceName, `${contractName}.json`);
604
621
  }
605
622
 
623
+ /**
624
+ * Returns the absolute path to the artifact that corresponds to the given
625
+ * fully qualified name.
626
+ * @param fullyQualifiedName The fully qualified name of the contract.
627
+ * @returns The absolute path to the artifact.
628
+ * @throws {HardhatError} with descriptor:
629
+ * - {@link ERRORS.CONTRACT_NAMES.INVALID_FULLY_QUALIFIED_NAME} If the name is not fully qualified.
630
+ * - {@link ERRORS.ARTIFACTS.WRONG_CASING} If the path case doesn't match the one in the filesystem.
631
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} If the artifact is not found.
632
+ */
606
633
  private async _getValidArtifactPathFromFullyQualifiedName(
607
634
  fullyQualifiedName: string
608
635
  ): Promise<string> {
@@ -666,6 +693,9 @@ Please replace "${contractName}" for the correct contract name wherever you are
666
693
  }
667
694
  }
668
695
 
696
+ /**
697
+ * @throws {HardhatError} with a list of similar contract names.
698
+ */
669
699
  private _handleWrongArtifactForFullyQualifiedName(
670
700
  fullyQualifiedName: string
671
701
  ): never {
@@ -682,6 +712,9 @@ Please replace "${contractName}" for the correct contract name wherever you are
682
712
  });
683
713
  }
684
714
 
715
+ /**
716
+ * @throws {HardhatError} with a list of similar contract names.
717
+ */
685
718
  private _handleWrongArtifactForContractName(
686
719
  contractName: string,
687
720
  files: string[]
@@ -813,6 +846,12 @@ Please replace "${contractName}" for the correct contract name wherever you are
813
846
  return artifactPath.replace(/\.json$/, ".dbg.json");
814
847
  }
815
848
 
849
+ /**
850
+ * Gets the path to the artifact file for the given contract name.
851
+ * @throws {HardhatError} with descriptor:
852
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} if there are no artifacts matching the given contract name.
853
+ * - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
854
+ */
816
855
  private _getArtifactPathFromFiles(
817
856
  contractName: string,
818
857
  files: string[]
@@ -315,7 +315,7 @@ async function createPackageJson() {
315
315
  function showStarOnGitHubMessage() {
316
316
  console.log(
317
317
  chalk.cyan("Give Hardhat a star on Github if you're enjoying it!") +
318
- emoji(" 💞✨")
318
+ emoji(" ⭐️✨")
319
319
  );
320
320
  console.log();
321
321
  console.log(chalk.cyan(" https://github.com/NomicFoundation/hardhat"));
@@ -1,5 +1,6 @@
1
1
  import cloneDeep from "lodash/cloneDeep";
2
2
  import path from "path";
3
+ import semver from "semver";
3
4
 
4
5
  import {
5
6
  HardhatConfig,
@@ -385,6 +386,10 @@ function resolveCompiler(compiler: SolcUserConfig): SolcConfig {
385
386
  settings: compiler.settings ?? {},
386
387
  };
387
388
 
389
+ if (semver.gte(resolved.version, "0.8.20")) {
390
+ resolved.settings.evmVersion = compiler.settings?.evmVersion ?? "paris";
391
+ }
392
+
388
393
  resolved.settings.optimizer = {
389
394
  enabled: false,
390
395
  runs: 200,
@@ -278,6 +278,16 @@ Rename the file to use the .cjs to fix this problem.`,
278
278
  To initialize the provider, make sure you first call \`.init()\` or any method that hits a node like request, send or sendAsync.`,
279
279
  shouldBeReported: true,
280
280
  },
281
+ INVALID_READ_OF_DIRECTORY: {
282
+ number: 22,
283
+ message:
284
+ "Invalid file path %absolutePath%. Attempting to read a directory instead of a file.",
285
+ title: "Invalid read: a directory cannot be read",
286
+ description: `An attempt was made to read a file, but a path to a directory was provided.
287
+
288
+ Please double check the file path.`,
289
+ shouldBeReported: false,
290
+ },
281
291
  },
282
292
  NETWORK: {
283
293
  CONFIG_NOT_FOUND: {
@@ -585,6 +595,14 @@ Please double check your task definitions.`,
585
595
  What makes these types special is that they can be represented as strings, so you can write them down in the terminal.`,
586
596
  shouldBeReported: false,
587
597
  },
598
+ DEPRECATED_TRANSFORM_IMPORT_TASK: {
599
+ number: 213,
600
+ title: "Use of deprecated remapping task",
601
+ message:
602
+ "Task TASK_COMPILE_TRANSFORM_IMPORT_NAME is deprecated. Please update your @nomicfoundation/hardhat-foundry plugin version.",
603
+ description: `This task has been deprecated in favor of a new approach.`,
604
+ shouldBeReported: true,
605
+ },
588
606
  },
589
607
  ARGUMENTS: {
590
608
  INVALID_ENV_VAR_VALUE: {
@@ -855,6 +873,26 @@ Use a relative import instead of referencing the package's name.`,
855
873
  Please double check your imports and installed libraries.`,
856
874
  shouldBeReported: false,
857
875
  },
876
+ INVALID_IMPORT_OF_DIRECTORY: {
877
+ number: 414,
878
+ message:
879
+ "Invalid import %imported% from %from%. Attempting to import a directory. Directories cannot be imported.",
880
+ title: "Invalid import: a directory cannot be imported",
881
+ description: `A Solidity file is attempting to import a directory, which is not possible.
882
+
883
+ Please double check your imports.`,
884
+ shouldBeReported: false,
885
+ },
886
+ AMBIGUOUS_SOURCE_NAMES: {
887
+ number: 415,
888
+ message:
889
+ "Two different source names (%sourcenames%) resolve to the same file (%file%).",
890
+ title: "Ambiguous source names",
891
+ description: `Two different source names map to the same file.
892
+
893
+ This is probably caused by multiple remappings pointing to the same source file.`,
894
+ shouldBeReported: false,
895
+ },
858
896
  },
859
897
  SOLC: {
860
898
  INVALID_VERSION: {
@@ -40,6 +40,17 @@ export const rpcStorageSlot = new t.Type<bigint>(
40
40
  t.identity
41
41
  );
42
42
 
43
+ // This type is necessary because objects' keys need to be either strings or numbers to be properly handled by the 'io-ts' module.
44
+ // If they are not defined as strings or numbers, the type definition will result in an empty object without the required properties.
45
+ // For example, instead of displaying { ke1: value1 }, it will display {}
46
+ export const rpcStorageSlotHexString = new t.Type<string>(
47
+ "Storage slot hex string",
48
+ (x): x is string => typeof x === "string",
49
+ (u, c) =>
50
+ validateRpcStorageSlotHexString(u) ? t.success(u) : t.failure(u, c),
51
+ t.identity
52
+ );
53
+
43
54
  function validateStorageSlot(u: unknown, c: t.Context): t.Validation<bigint> {
44
55
  if (typeof u !== "string") {
45
56
  return t.failure(
@@ -185,6 +196,10 @@ export function rpcDataToBuffer(data: string): Buffer {
185
196
 
186
197
  // Type guards
187
198
 
199
+ function validateRpcStorageSlotHexString(u: unknown): u is string {
200
+ return typeof u === "string" && /^0x([0-9a-fA-F]){64}$/.test(u);
201
+ }
202
+
188
203
  function isRpcQuantityString(u: unknown): u is string {
189
204
  return (
190
205
  typeof u === "string" &&
@@ -2,7 +2,14 @@ import * as t from "io-ts";
2
2
 
3
3
  import { optionalOrNullable } from "../../../../util/io-ts";
4
4
  import { rpcAccessList } from "../access-list";
5
- import { rpcAddress, rpcData, rpcQuantity } from "../base-types";
5
+ import {
6
+ rpcAddress,
7
+ rpcData,
8
+ rpcQuantity,
9
+ rpcStorageSlot,
10
+ rpcStorageSlotHexString,
11
+ } from "../base-types";
12
+ import { address } from "../../../config/config-validation";
6
13
 
7
14
  // Type used by eth_call and eth_estimateGas
8
15
  export const rpcCallRequest = t.type(
@@ -21,3 +28,30 @@ export const rpcCallRequest = t.type(
21
28
  );
22
29
 
23
30
  export type RpcCallRequest = t.TypeOf<typeof rpcCallRequest>;
31
+
32
+ // Types used by eth_call to configure the state override set
33
+ export const stateProperties = t.record(
34
+ rpcStorageSlotHexString,
35
+ rpcStorageSlot
36
+ );
37
+
38
+ export const stateOverrideOptions = t.type(
39
+ {
40
+ balance: optionalOrNullable(rpcQuantity),
41
+ nonce: optionalOrNullable(rpcQuantity),
42
+ code: optionalOrNullable(rpcData),
43
+ state: optionalOrNullable(stateProperties),
44
+ stateDiff: optionalOrNullable(stateProperties),
45
+ },
46
+ "stateOverrideOptions"
47
+ );
48
+
49
+ export const stateOverrideSet = t.record(address, stateOverrideOptions);
50
+ export const optionalStateOverrideSet = optionalOrNullable(stateOverrideSet);
51
+
52
+ export type StateProperties = t.TypeOf<typeof stateProperties>;
53
+ export type StateOverrideOptions = t.TypeOf<typeof stateOverrideOptions>;
54
+ export type StateOverrideSet = t.TypeOf<typeof stateOverrideSet>;
55
+ export type OptionalStateOverrideSet = t.TypeOf<
56
+ typeof optionalStateOverrideSet
57
+ >;
@@ -116,6 +116,8 @@ export async function createProvider(
116
116
  forkConfig,
117
117
  forkCachePath:
118
118
  paths !== undefined ? getForkCacheDirPath(paths) : undefined,
119
+ enableTransientStorage:
120
+ hardhatNetConfig.enableTransientStorage ?? false,
119
121
  },
120
122
  new ModulesLogger(hardhatNetConfig.loggingEnabled),
121
123
  artifacts
@@ -348,10 +348,30 @@ export class ForkBlockchain
348
348
  return undefined;
349
349
  }
350
350
 
351
- const transaction = new ReadOnlyValidTransaction(
352
- new Address(rpcTransaction.from),
353
- rpcToTxData(rpcTransaction)
354
- );
351
+ let transaction: TypedTransaction;
352
+
353
+ if (rpcTransaction.type === undefined || rpcTransaction.type === 0n) {
354
+ transaction = new ReadOnlyValidTransaction(
355
+ new Address(rpcTransaction.from),
356
+ rpcToTxData(rpcTransaction)
357
+ );
358
+ } else if (rpcTransaction.type === 1n) {
359
+ transaction = new ReadOnlyValidEIP2930Transaction(
360
+ new Address(rpcTransaction.from),
361
+ rpcToTxData(rpcTransaction)
362
+ );
363
+ } else if (rpcTransaction.type === 2n) {
364
+ transaction = new ReadOnlyValidEIP1559Transaction(
365
+ new Address(rpcTransaction.from),
366
+ rpcToTxData(rpcTransaction) as FeeMarketEIP1559TxData
367
+ );
368
+ } else {
369
+ transaction = new ReadOnlyValidUnknownTypeTransaction(
370
+ new Address(rpcTransaction.from),
371
+ Number(rpcTransaction.type),
372
+ rpcToTxData(rpcTransaction)
373
+ );
374
+ }
355
375
 
356
376
  this._data.addTransaction(transaction);
357
377
 
@@ -37,6 +37,8 @@ import {
37
37
  RpcOldBlockTag,
38
38
  } from "../../../core/jsonrpc/types/input/blockTag";
39
39
  import {
40
+ optionalStateOverrideSet,
41
+ OptionalStateOverrideSet,
40
42
  rpcCallRequest,
41
43
  RpcCallRequest,
42
44
  } from "../../../core/jsonrpc/types/input/callRequest";
@@ -334,13 +336,21 @@ export class EthModule {
334
336
 
335
337
  // eth_call
336
338
 
337
- private _callParams(params: any[]): [RpcCallRequest, OptionalRpcNewBlockTag] {
338
- return validateParams(params, rpcCallRequest, optionalRpcNewBlockTag);
339
+ private _callParams(
340
+ params: any[]
341
+ ): [RpcCallRequest, OptionalRpcNewBlockTag, OptionalStateOverrideSet] {
342
+ return validateParams(
343
+ params,
344
+ rpcCallRequest,
345
+ optionalRpcNewBlockTag,
346
+ optionalStateOverrideSet
347
+ );
339
348
  }
340
349
 
341
350
  private async _callAction(
342
351
  rpcCall: RpcCallRequest,
343
- blockTag: OptionalRpcNewBlockTag
352
+ blockTag: OptionalRpcNewBlockTag,
353
+ stateOverrideSet: OptionalStateOverrideSet
344
354
  ): Promise<string> {
345
355
  this._validateTransactionAndCallRequest(rpcCall);
346
356
 
@@ -353,7 +363,11 @@ export class EthModule {
353
363
  trace,
354
364
  error,
355
365
  consoleLogMessages,
356
- } = await this._node.runCall(callParams, blockNumberOrPending);
366
+ } = await this._node.runCall(
367
+ callParams,
368
+ blockNumberOrPending,
369
+ stateOverrideSet
370
+ );
357
371
 
358
372
  const code = await this._node.getCodeFromTrace(trace, blockNumberOrPending);
359
373
 
@@ -32,6 +32,7 @@ interface CommonConfig {
32
32
  coinbase: string;
33
33
  chains: HardhatNetworkChainsConfig;
34
34
  allowBlocksWithSameTimestamp: boolean;
35
+ enableTransientStorage: boolean;
35
36
  }
36
37
 
37
38
  export type LocalNodeConfig = CommonConfig;