@openzeppelin/upgrades-core 1.42.2 → 1.44.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.
Files changed (88) hide show
  1. package/artifacts/@openzeppelin/contracts-v5/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +3 -3
  2. package/artifacts/@openzeppelin/contracts-v5/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +3 -3
  3. package/artifacts/@openzeppelin/contracts-v5/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  4. package/artifacts/@openzeppelin/contracts-v5/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  5. package/artifacts/@openzeppelin/contracts-v5/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +2 -2
  6. package/artifacts/@openzeppelin/contracts-v5/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
  7. package/artifacts/build-info-v5.json +5159 -2886
  8. package/dist/provider.d.ts.map +1 -1
  9. package/dist/provider.js +1 -0
  10. package/dist/provider.js.map +1 -1
  11. package/dist/solidity-version.json +1 -1
  12. package/dist/storage/extract.d.ts.map +1 -1
  13. package/dist/storage/extract.js +14 -0
  14. package/dist/storage/extract.js.map +1 -1
  15. package/dist/storage/index.d.ts.map +1 -1
  16. package/dist/storage/index.js +23 -0
  17. package/dist/storage/index.js.map +1 -1
  18. package/dist/storage/layout.d.ts +1 -0
  19. package/dist/storage/layout.d.ts.map +1 -1
  20. package/dist/storage/layout.js.map +1 -1
  21. package/dist/storage/namespace.d.ts.map +1 -1
  22. package/dist/storage/namespace.js +47 -1
  23. package/dist/storage/namespace.js.map +1 -1
  24. package/dist/storage-custom-layout.test.d.ts +2 -0
  25. package/dist/storage-custom-layout.test.d.ts.map +1 -0
  26. package/dist/storage-custom-layout.test.js +314 -0
  27. package/dist/storage-custom-layout.test.js.map +1 -0
  28. package/dist/utils/erc7201.d.ts +10 -0
  29. package/dist/utils/erc7201.d.ts.map +1 -0
  30. package/dist/utils/erc7201.js +24 -0
  31. package/dist/utils/erc7201.js.map +1 -0
  32. package/dist/utils/erc7201.test.d.ts +2 -0
  33. package/dist/utils/erc7201.test.d.ts.map +1 -0
  34. package/dist/utils/erc7201.test.js +11 -0
  35. package/dist/utils/erc7201.test.js.map +1 -0
  36. package/dist/utils/integer-literals.d.ts +15 -0
  37. package/dist/utils/integer-literals.d.ts.map +1 -0
  38. package/dist/utils/integer-literals.js +34 -0
  39. package/dist/utils/integer-literals.js.map +1 -0
  40. package/dist/utils/integer-literals.test.d.ts +2 -0
  41. package/dist/utils/integer-literals.test.d.ts.map +1 -0
  42. package/dist/utils/integer-literals.test.js +57 -0
  43. package/dist/utils/integer-literals.test.js.map +1 -0
  44. package/dist/utils/make-namespaced.d.ts.map +1 -1
  45. package/dist/utils/make-namespaced.js +4 -0
  46. package/dist/utils/make-namespaced.js.map +1 -1
  47. package/dist/utils/make-namespaced.test.js +4 -0
  48. package/dist/utils/make-namespaced.test.js.map +1 -1
  49. package/dist/utils/stabilize-layout.d.ts +1 -0
  50. package/dist/utils/stabilize-layout.d.ts.map +1 -1
  51. package/dist/utils/stabilize-layout.js +1 -0
  52. package/dist/utils/stabilize-layout.js.map +1 -1
  53. package/dist/validate/run/initializer.d.ts.map +1 -1
  54. package/dist/validate/run/initializer.js +42 -10
  55. package/dist/validate/run/initializer.js.map +1 -1
  56. package/dist/validate-initializers.test.js +23 -5
  57. package/dist/validate-initializers.test.js.map +1 -1
  58. package/package.json +7 -4
  59. package/src/provider.ts +1 -0
  60. package/src/solidity-version.json +1 -1
  61. package/src/storage/extract.ts +21 -0
  62. package/src/storage/index.ts +29 -0
  63. package/src/storage/layout.ts +1 -0
  64. package/src/storage/namespace.ts +67 -1
  65. package/src/storage-0.8.test.ts.md +4 -0
  66. package/src/storage-0.8.test.ts.snap +0 -0
  67. package/src/storage-custom-layout.test.ts +358 -0
  68. package/src/storage-custom-layout.test.ts.md +353 -0
  69. package/src/storage-custom-layout.test.ts.snap +0 -0
  70. package/src/storage-memory-0.5.test.ts.md +2 -0
  71. package/src/storage-memory-0.5.test.ts.snap +0 -0
  72. package/src/storage-namespaced-layout.test.ts.md +1 -0
  73. package/src/storage-namespaced-layout.test.ts.snap +0 -0
  74. package/src/storage-namespaced.test.ts.md +2 -0
  75. package/src/storage-namespaced.test.ts.snap +0 -0
  76. package/src/storage.test.ts.md +2 -0
  77. package/src/storage.test.ts.snap +0 -0
  78. package/src/utils/erc7201.test.ts +10 -0
  79. package/src/utils/erc7201.ts +25 -0
  80. package/src/utils/integer-literals.test.ts +73 -0
  81. package/src/utils/integer-literals.ts +29 -0
  82. package/src/utils/make-namespaced.test.ts +7 -0
  83. package/src/utils/make-namespaced.test.ts.md +50 -0
  84. package/src/utils/make-namespaced.test.ts.snap +0 -0
  85. package/src/utils/make-namespaced.ts +5 -0
  86. package/src/utils/stabilize-layout.ts +1 -0
  87. package/src/validate/run/initializer.ts +65 -19
  88. package/src/validate-initializers.test.ts +28 -6
@@ -1 +1 @@
1
- {"version":3,"file":"make-namespaced.test.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make-namespaced.test.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.test.ts"],"names":[],"mappings":"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"}
@@ -35,5 +35,6 @@ export declare function stabilizeStorageLayout(layout: StorageLayout): {
35
35
  retypedFrom?: string;
36
36
  renamedFrom?: string;
37
37
  }[])[][] | undefined;
38
+ baseSlot: string | undefined;
38
39
  };
39
40
  //# sourceMappingURL=stabilize-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stabilize-layout.d.ts","sourceRoot":"","sources":["../../src/utils/stabilize-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB3D"}
1
+ {"version":3,"file":"stabilize-layout.d.ts","sourceRoot":"","sources":["../../src/utils/stabilize-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB3D"}
@@ -18,6 +18,7 @@ function stabilizeStorageLayout(layout) {
18
18
  return [ns, items.map(item => ({ ...item, type: (0, type_id_1.stabilizeTypeIdentifier)(item.type) }))];
19
19
  })
20
20
  : undefined,
21
+ baseSlot: layout.baseSlot,
21
22
  };
22
23
  }
23
24
  //# sourceMappingURL=stabilize-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stabilize-layout.js","sourceRoot":"","sources":["../../src/utils/stabilize-layout.ts"],"names":[],"mappings":";;AAIA,wDAiBC;AApBD,8CAAkD;AAClD,uCAAoD;AAEpD,SAAgB,sBAAsB,CAAC,MAAqB;IAC1D,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACvD,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;gBACZ,CAAC,IAAA,sBAAa,EAAC,IAAI,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,OAAO;oBACd,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAA,iCAAuB,EAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,UAAU;YAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"stabilize-layout.js","sourceRoot":"","sources":["../../src/utils/stabilize-layout.ts"],"names":[],"mappings":";;AAIA,wDAkBC;AArBD,8CAAkD;AAClD,uCAAoD;AAEpD,SAAgB,sBAAsB,CAAC,MAAqB;IAC1D,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACvD,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;gBACZ,CAAC,IAAA,sBAAa,EAAC,IAAI,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,OAAO;oBACd,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAA,iCAAuB,EAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,UAAU;YAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS;QACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../../src/validate/run/initializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAW,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAA+B,MAAM,QAAQ,CAAC;AAErF;;;;;;GAMG;AACH,wBAAiB,wBAAwB,CACvC,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,UAAU,GACpB,SAAS,CAAC,8BAA8B,CAAC,CA4C3C"}
1
+ {"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../../src/validate/run/initializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAW,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAA+B,MAAM,QAAQ,CAAC;AAIrF;;;;;;GAMG;AACH,wBAAiB,wBAAwB,CACvC,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,UAAU,GACpB,SAAS,CAAC,8BAA8B,CAAC,CA4C3C"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInitializerExceptions = getInitializerExceptions;
4
4
  const utils_1 = require("solidity-ast/utils");
5
5
  const run_1 = require("../run");
6
+ const annotations_1 = require("../../utils/annotations");
7
+ const log_1 = require("../../utils/log");
6
8
  /**
7
9
  * Reports if this contract is non-abstract and any of the following are true:
8
10
  * - 1. Missing initializer: This contract does not appear to have an initializer, but parent contracts require initialization.
@@ -15,10 +17,10 @@ function* getInitializerExceptions(contractDef, deref, decodeSrc) {
15
17
  return;
16
18
  }
17
19
  const linearizedParentContracts = getLinearizedParentContracts(contractDef, deref);
18
- const parentNameToInitializersMap = getParentNameToInitializersMap(linearizedParentContracts);
20
+ const parentNameToInitializersMap = getParentNameToInitializersMap(linearizedParentContracts, decodeSrc);
19
21
  const remainingParents = getParentsNotInitializedByOtherParents(parentNameToInitializersMap);
20
22
  if (remainingParents.length > 0) {
21
- const contractInitializers = getPossibleInitializers(contractDef, false);
23
+ const contractInitializers = getPossibleInitializers(contractDef, false, decodeSrc);
22
24
  // Report if there is no initializer but parents need initialization
23
25
  if (checkNeedsInitialization(remainingParents, parentNameToInitializersMap) &&
24
26
  contractInitializers.length === 0 &&
@@ -48,10 +50,10 @@ function getLinearizedParentContracts(contractDef, deref) {
48
50
  * Gets a map of parent contract names to their possible initializers.
49
51
  * If a parent contract has no initializers, it is not included in the map.
50
52
  */
51
- function getParentNameToInitializersMap(linearizedParentContracts) {
53
+ function getParentNameToInitializersMap(linearizedParentContracts, decodeSrc) {
52
54
  const map = new Map();
53
55
  for (const parent of linearizedParentContracts) {
54
- const initializers = getPossibleInitializers(parent, true);
56
+ const initializers = getPossibleInitializers(parent, true, decodeSrc);
55
57
  if (initializers.length > 0) {
56
58
  map.set(parent.name, initializers);
57
59
  }
@@ -240,20 +242,50 @@ function getRecursiveFunctionIds(deref, functionDef, visited) {
240
242
  return result;
241
243
  }
242
244
  /**
243
- * Get all functions that could be initializers. Does not include private functions.
244
- * For parent contracts, only internal and public functions which contain statements are included.
245
+ * Get all functions that are annotated as initializers or are inferred to be initializers.
246
+ * Logs a note if any reinitializer is found.
245
247
  */
246
- function getPossibleInitializers(contractDef, isParentContract) {
248
+ function getPossibleInitializers(contractDef, isParentContract, decodeSrc) {
247
249
  const fns = [...(0, utils_1.findAll)('FunctionDefinition', contractDef)];
248
- return fns.filter(fnDef => (fnDef.modifiers.some(modifier => ['initializer', 'onlyInitializing'].includes(modifier.modifierName.name)) ||
249
- ['initialize', 'initializer'].includes(fnDef.name)) &&
250
+ return fns.filter((fnDef) => {
251
+ const validateAsInitializer = hasValidateAsInitializerAnnotation(fnDef, decodeSrc);
252
+ if (!validateAsInitializer && fnDef.modifiers.some(modifier => 'reinitializer' === modifier.modifierName.name)) {
253
+ (0, log_1.logNote)(`Reinitializers are not included in validations by default`, [
254
+ `${decodeSrc(fnDef)}: If you want to validate this function as an initializer, annotate it with '@custom:oz-upgrades-validate-as-initializer'`,
255
+ ]);
256
+ }
257
+ return inferPossibleInitializer(fnDef, validateAsInitializer, isParentContract);
258
+ });
259
+ }
260
+ function hasValidateAsInitializerAnnotation(node, decodeSrc) {
261
+ const doc = (0, annotations_1.getDocumentation)(node);
262
+ const tag = 'oz-upgrades-validate-as-initializer';
263
+ const validateAsInitializer = (0, annotations_1.hasAnnotationTag)(doc, tag);
264
+ if (validateAsInitializer) {
265
+ const annotationArgs = (0, annotations_1.getAnnotationArgs)(doc, tag);
266
+ if (annotationArgs.length !== 0) {
267
+ throw new Error(`${decodeSrc(node)}: @custom:${tag} annotation must not have any arguments`);
268
+ }
269
+ }
270
+ return validateAsInitializer;
271
+ }
272
+ function hasInitializerNameOrModifier(fnDef) {
273
+ return (fnDef.modifiers.some(modifier => ['initializer', 'onlyInitializing'].includes(modifier.modifierName.name)) ||
274
+ ['initialize', 'initializer'].includes(fnDef.name));
275
+ }
276
+ /**
277
+ * Infers whether a function could be an initializer. Does not include private functions.
278
+ * For parent contracts, only internal and public functions which contain statements are included.
279
+ */
280
+ function inferPossibleInitializer(fnDef, validateAsInitializer, isParentContract) {
281
+ return ((validateAsInitializer || hasInitializerNameOrModifier(fnDef)) &&
250
282
  // Skip virtual functions without a body, since that indicates an abstract function and is not itself an initializer
251
283
  !(fnDef.virtual && !fnDef.body) &&
252
284
  // Ignore private functions, since they cannot be called outside the contract
253
285
  fnDef.visibility !== 'private' &&
254
286
  // For parent contracts, only internal and public functions which contain statements need to be called
255
287
  (isParentContract
256
- ? fnDef.body?.statements?.length && (fnDef.visibility === 'internal' || fnDef.visibility === 'public')
288
+ ? Boolean(fnDef.body?.statements?.length) && (fnDef.visibility === 'internal' || fnDef.visibility === 'public')
257
289
  : true));
258
290
  }
259
291
  //# sourceMappingURL=initializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initializer.js","sourceRoot":"","sources":["../../../src/validate/run/initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initializer.js","sourceRoot":"","sources":["../../../src/validate/run/initializer.ts"],"names":[],"mappings":"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"}
@@ -64,9 +64,15 @@ testRejects('MissingInitializer_Bad', 'transparent', {
64
64
  });
65
65
  testAccepts('MissingInitializer_UnsafeAllow_Contract', 'transparent');
66
66
  testOverride('MissingInitializer_Bad', 'transparent', { unsafeAllow: ['missing-initializer'] });
67
+ testAccepts('ValidateAsInitializer_Ok', 'transparent');
68
+ testRejects('Reinitializer_NotDetected', 'transparent', {
69
+ contains: ['Missing initializer'],
70
+ count: 1,
71
+ });
72
+ testAccepts('Reinitializer_ValidateAsInitializer_Ok', 'transparent');
67
73
  testAccepts('InitializationOrder_Ok', 'transparent');
68
74
  testAccepts('InitializationOrder_Ok_2', 'transparent');
69
- testAccepts('InitializationOrder_WrongOrder_Bad', 'transparent'); // warn 'Expected initializers to be called for parent contracts in the following order: A, B, C'
75
+ testAccepts('InitializationOrder_WrongOrder_Bad', 'transparent'); // warn 'Expected: A, B, C'
70
76
  testAccepts('InitializationOrder_WrongOrder_UnsafeAllow_Contract', 'transparent');
71
77
  testAccepts('InitializationOrder_WrongOrder_UnsafeAllow_Function', 'transparent');
72
78
  testOverride('InitializationOrder_WrongOrder_Bad', 'transparent', { unsafeAllow: ['incorrect-initializer-order'] }); // skips the warning
@@ -85,7 +91,19 @@ testAccepts('InitializationOrder_Duplicate_UnsafeAllow_Contract', 'transparent')
85
91
  testAccepts('InitializationOrder_Duplicate_UnsafeAllow_Function', 'transparent');
86
92
  testAccepts('InitializationOrder_Duplicate_UnsafeAllow_Call', 'transparent');
87
93
  testOverride('InitializationOrder_Duplicate_Bad', 'transparent', { unsafeAllow: ['duplicate-initializer-call'] });
88
- testAccepts('InitializationOrder_UnsafeAllowDuplicate_But_WrongOrder', 'transparent'); // warn 'Expected initializers to be called for parent contracts in the following order: A, B, C'
94
+ testAccepts('InitializationOrder_UnsafeAllowDuplicate_But_WrongOrder', 'transparent'); // warn 'Expected: A, B, C'
95
+ testAccepts('InitializationOrder_ValidateAsInitializer_Ok', 'transparent');
96
+ testAccepts('InitializationOrder_ValidateAsInitializer_WrongOrder', 'transparent'); // warn 'Expected: A, B, C, Parent_ValidateAsInitializer'
97
+ testRejects('InitializationOrder_ValidateAsInitializer_MissingCall', 'transparent', {
98
+ contains: ['Missing initializer calls for one or more parent contracts: `Parent_ValidateAsInitializer`'],
99
+ count: 1,
100
+ });
101
+ testRejects('InitializationOrder_ValidateAsInitializer_DuplicateCall', 'transparent', {
102
+ contains: ['Duplicate calls found to initializer `parentAssumeInit` for contract `Parent_ValidateAsInitializer`'],
103
+ count: 1,
104
+ });
105
+ testAccepts('Parent_ValidateAsInitializer_External_Ok', 'transparent');
106
+ testAccepts('Child_Of_ValidateAsInitializer_External_Ok', 'transparent');
89
107
  testAccepts('WithRequire_Ok', 'transparent');
90
108
  testRejects('WithRequire_Bad', 'transparent', {
91
109
  contains: ['Missing initializer calls for one or more parent contracts: `Parent__OnlyInitializingModifier`'],
@@ -137,11 +155,11 @@ testRejects('TransitiveChild_Bad_Parent', 'transparent', {
137
155
  'Missing initializer calls for one or more parent contracts: `TransitiveGrandparent2`', // occurs twice: missing initializer for child, missing initializer for parent
138
156
  ],
139
157
  count: 2,
140
- }); // warn 'Expected initializers to be called for parent contracts in the following order: TransitiveGrandparent2, TransitiveParent_Bad'
158
+ }); // warn 'Expected: TransitiveGrandparent2, TransitiveParent_Bad'
141
159
  testRejects('TransitiveChild_Bad_Order', 'transparent', {
142
160
  contains: ['Missing initializer calls for one or more parent contracts: `TransitiveGrandparent2`'],
143
161
  count: 1,
144
- }); // warn 'Expected initializers to be called for parent contracts in the following order: TransitiveGrandparent2, TransitiveParent_Bad'
162
+ }); // warn 'Expected: TransitiveGrandparent2, TransitiveParent_Bad'
145
163
  testRejects('TransitiveChild_Good_Order_Bad_Parent', 'transparent', {
146
164
  contains: ['Missing initializer calls for one or more parent contracts: `TransitiveGrandparent2`'],
147
165
  count: 1,
@@ -174,7 +192,7 @@ testAccepts('Recursive_Ok', 'transparent');
174
192
  testAccepts('ERC20_Ok', 'uups');
175
193
  testRejects('ERC20_Bad', 'uups', {
176
194
  contains: [
177
- 'Missing initializer calls for one or more parent contracts: `ERC20Upgradeable, ERC20PausableUpgradeable, OwnableUpgradeable, ERC20PermitUpgradeable`',
195
+ 'Missing initializer calls for one or more parent contracts: `ERC20Upgradeable, OwnableUpgradeable, ERC20PermitUpgradeable`',
178
196
  ],
179
197
  count: 1,
180
198
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validate-initializers.test.js","sourceRoot":"","sources":["../src/validate-initializers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-initializers.test.js","sourceRoot":"","sources":["../src/validate-initializers.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/upgrades-core",
3
- "version": "1.42.2",
3
+ "version": "1.44.0",
4
4
  "description": "",
5
5
  "repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
6
6
  "license": "MIT",
@@ -34,7 +34,9 @@
34
34
  "compile:contracts": "hardhat compile",
35
35
  "copyfiles": "node scripts/copy-build-info-v5.js && bash scripts/copy-legacy-artifacts.sh",
36
36
  "prepare": "yarn clean && yarn compile && yarn copyfiles",
37
- "test": "tsc -b && hardhat compile --force && yarn copyfiles && ava",
37
+ "pretest": "tsc -b && hardhat compile --force && yarn copyfiles",
38
+ "test": "ava",
39
+ "test:update-snapshots": "yarn test --update-snapshots",
38
40
  "test:watch": "hardhat compile --force && yarn copyfiles && fgbg 'ava --watch' 'tsc -b --watch' --",
39
41
  "version": "node ../../scripts/bump-changelog.js",
40
42
  "cli": "node ./dist/cli/cli.js"
@@ -45,7 +47,7 @@
45
47
  "devDependencies": {
46
48
  "@ava/typescript": "^5.0.0",
47
49
  "@nomicfoundation/hardhat-ethers": "^3.0.5",
48
- "@openzeppelin/contracts": "5.0.2",
50
+ "@openzeppelin/contracts": "5.3.0",
49
51
  "@openzeppelin/upgrades-core-legacy": "npm:@openzeppelin/upgrades-core@1.31.3",
50
52
  "@types/debug": "^4.1.5",
51
53
  "@types/minimist": "^1.2.5",
@@ -65,11 +67,12 @@
65
67
  "cbor": "^10.0.0",
66
68
  "chalk": "^4.1.0",
67
69
  "compare-versions": "^6.0.0",
70
+ "bignumber.js": "^9.1.2",
68
71
  "debug": "^4.1.1",
69
72
  "ethereumjs-util": "^7.0.3",
70
73
  "minimist": "^1.2.7",
71
74
  "proper-lockfile": "^4.1.1",
72
- "solidity-ast": "^0.4.51",
75
+ "solidity-ast": "^0.4.60",
73
76
  "minimatch": "^9.0.5"
74
77
  }
75
78
  }
package/src/provider.ts CHANGED
@@ -134,6 +134,7 @@ export const networkNames: { [chainId in number]?: string } = Object.freeze({
134
134
  56: 'bsc',
135
135
  97: 'bsc-testnet',
136
136
  137: 'polygon',
137
+ 146: 'sonic',
137
138
  420: 'optimism-goerli',
138
139
  8453: 'base',
139
140
  17000: 'holesky',
@@ -1 +1 @@
1
- "0.8.20"
1
+ "0.8.29"
@@ -15,6 +15,7 @@ import { mapValues } from '../utils/map-values';
15
15
  import { pick } from '../utils/pick';
16
16
  import { execall } from '../utils/execall';
17
17
  import { loadNamespaces } from './namespace';
18
+ import { UpgradesError } from '../error';
18
19
 
19
20
  const currentLayoutVersion = '1.2';
20
21
 
@@ -37,6 +38,8 @@ export function extractStorageLayout(
37
38
  ): StorageLayout {
38
39
  const layout: StorageLayout = { storage: [], types: {}, layoutVersion: currentLayoutVersion, flat: false };
39
40
 
41
+ loadBaseSlot(contractDef, decodeSrc, layout);
42
+
40
43
  // The namespaced context will contain the types of namespaces that may not be included
41
44
  // in the original storage layout.
42
45
  // Some types will be present in both and they must be exactly equivalent.
@@ -101,6 +104,24 @@ export function extractStorageLayout(
101
104
  return layout;
102
105
  }
103
106
 
107
+ function loadBaseSlot(contractDef: ContractDefinition, decodeSrc: SrcDecoder, layout: StorageLayout) {
108
+ if (contractDef.storageLayout !== undefined) {
109
+ if (contractDef.storageLayout.baseSlotExpression.nodeType !== 'Literal') {
110
+ const src = decodeSrc(contractDef.storageLayout.baseSlotExpression);
111
+
112
+ // TODO when Slang supports Solidity 0.8.29, use it to parse the expression (of any node type) into a string, then just save it to `layout.baseSlot`.
113
+ // Then when comparing layouts in `storage/index.ts`, it will only be used when detailed storage layout is not available, and the comparison
114
+ // can be changed to a string comparison when `layout.baseSlot` not an integer literal.
115
+ throw new UpgradesError(
116
+ `${src}: Custom storage layout expression with node type ${contractDef.storageLayout.baseSlotExpression.nodeType} is not currently supported`,
117
+ () =>
118
+ 'Please report this at https://zpl.in/upgrades/report and include the `layout at` expression from your contract.',
119
+ );
120
+ }
121
+ layout.baseSlot = contractDef.storageLayout.baseSlotExpression.value ?? undefined;
122
+ }
123
+ }
124
+
104
125
  const findTypeNames = findAll([
105
126
  'ArrayTypeName',
106
127
  'ElementaryTypeName',
@@ -6,6 +6,7 @@ import { StorageOperation, StorageItem, StorageLayoutComparator } from './compar
6
6
  import { LayoutCompatibilityReport } from './report';
7
7
  import { ValidationOptions, withValidationDefaults } from '../validate/overrides';
8
8
  import { logNote, logWarning } from '../utils/log';
9
+ import { normalizeUint256Literal } from '../utils/integer-literals';
9
10
 
10
11
  export function assertStorageUpgradeSafe(
11
12
  original: StorageLayout,
@@ -36,11 +37,39 @@ export function assertStorageUpgradeSafe(
36
37
  }
37
38
  }
38
39
 
40
+ function validateBaseSlotUnchanged(original: StorageLayout, updated: StorageLayout) {
41
+ const origNormalized = normalizeUint256Literal(original.baseSlot);
42
+ const updatedNormalized = normalizeUint256Literal(updated.baseSlot);
43
+
44
+ if (origNormalized !== updatedNormalized) {
45
+ throw new UpgradesError(
46
+ `Base slot for custom storage layout changed from ${origNormalized} to ${updatedNormalized}`,
47
+ () => `\
48
+ Do not change the base slot during upgrades when using custom storage layout.
49
+
50
+ If you need to change the base slot, ensure you also do the following:
51
+ 1. Adjust all storage variables to continue using their original slots.
52
+ 2. Configure your Solidity compiler options to include storage layouts according to https://docs.openzeppelin.com/upgrades-plugins/api-core#compile_contracts_with_storage_layouts
53
+ 3. Recompile both the original and updated contracts.
54
+ 4. Run the storage layout check again.`,
55
+ );
56
+ }
57
+ }
58
+
39
59
  export function getStorageUpgradeReport(
40
60
  original: StorageLayout,
41
61
  updated: StorageLayout,
42
62
  opts: Required<ValidationOptions>,
43
63
  ): LayoutCompatibilityReport {
64
+ if (opts.unsafeSkipStorageCheck) {
65
+ return new LayoutCompatibilityReport([]);
66
+ }
67
+
68
+ if (original.storage.some(item => item.slot === undefined) || updated.storage.some(item => item.slot === undefined)) {
69
+ // Compiler was not configured to output detailed storage layout with slot information
70
+ validateBaseSlotUnchanged(original, updated);
71
+ }
72
+
44
73
  const originalDetailed = getDetailedLayout(original);
45
74
  const updatedDetailed = getDetailedLayout(updated);
46
75
  const originalDetailedNamespaces = getDetailedNamespacedLayout(original);
@@ -12,6 +12,7 @@ export interface StorageLayout {
12
12
  types: Record<string, TypeItem>;
13
13
  flat?: boolean;
14
14
  namespaces?: Record<string, StorageItem[]>;
15
+ baseSlot?: string;
15
16
  }
16
17
 
17
18
  export type StorageField<Type = string> = StorageItem<Type> | StructMember<Type>;
@@ -8,6 +8,9 @@ import { Node } from 'solidity-ast/node';
8
8
  import { CompilationContext, getTypeMembers, loadLayoutType } from './extract';
9
9
  import { UpgradesError } from '../error';
10
10
  import * as versions from 'compare-versions';
11
+ import { normalizeUint256Literal } from '../utils/integer-literals';
12
+ import { calculateERC7201StorageLocation, ERC7201_FORMULA_PREFIX } from '../utils/erc7201';
13
+ import { logWarning } from '../utils/log';
11
14
 
12
15
  /**
13
16
  * Loads a contract's namespaces and namespaced type information into the storage layout.
@@ -57,8 +60,10 @@ export function loadNamespaces(
57
60
  );
58
61
  }
59
62
 
63
+ warnIfCustomLayoutAndNamespacesFound(namespacesWithSrc, decodeSrc, origContext.contractDef);
64
+
60
65
  // Add to layout without the namespaced structs' src locations, since those are no longer needed
61
- // as they were only used to give duplicate namespace errors above.
66
+ // as they were only used to give duplicate namespace errors in `addContractNamespacesWithSrc` above.
62
67
  layout.namespaces = Object.fromEntries(
63
68
  Object.entries(namespacesWithSrc).map(([id, namespaceWithSrc]) => [id, namespaceWithSrc.namespace]),
64
69
  );
@@ -78,6 +83,19 @@ Use a unique namespace id for each struct annotated with '@custom:storage-locati
78
83
  }
79
84
  }
80
85
 
86
+ class CustomLayoutClashWithNamespaceError extends UpgradesError {
87
+ constructor(id: string, contractName: string, src: string) {
88
+ super(
89
+ `Custom layout for contract ${contractName} clashes with the storage location for namespace ${id}`,
90
+ () => `\
91
+ The namespace ${id} is defined in a struct at the following location:
92
+ - ${src}
93
+
94
+ Specify a different custom layout for the contract or use a different namespace for the struct.`,
95
+ );
96
+ }
97
+ }
98
+
81
99
  /**
82
100
  * Namespaced storage items, along with the original source location of the namespace struct.
83
101
  */
@@ -130,6 +148,8 @@ function addContractNamespacesWithSrc(
130
148
  origSrc,
131
149
  );
132
150
  } else {
151
+ checkCustomLayoutClashWithNamespace(origContractDef, storageLocation, leastDerivedContractName, origSrc);
152
+
133
153
  namespacesWithSrc[storageLocation] = {
134
154
  namespace: getNamespacedStorageItems(node, decodeSrc, layout, contractContext, origContractDef),
135
155
  src: origSrc,
@@ -140,6 +160,52 @@ function addContractNamespacesWithSrc(
140
160
  }
141
161
  }
142
162
 
163
+ /**
164
+ * Checks if a custom layout's base slot clashes with a namespace's base slot, and throws an error if it does.
165
+ *
166
+ * @param contractDef The contract definition to check.
167
+ * @param storageLocation The namespace storage location string, e.g. `erc7201:<NAMESPACE_ID>`.
168
+ * @param contractName The name of the contract.
169
+ * @param src The original source location of the struct with the namespace.
170
+ * @throws CustomLayoutClashWithNamespaceError if the custom layout clashes with the namespace.
171
+ */
172
+ function checkCustomLayoutClashWithNamespace(
173
+ contractDef: ContractDefinition,
174
+ storageLocation: string,
175
+ contractName: string,
176
+ src: string,
177
+ ) {
178
+ if (contractDef.storageLayout !== undefined && storageLocation.startsWith(ERC7201_FORMULA_PREFIX)) {
179
+ const namespaceId = storageLocation.substring(ERC7201_FORMULA_PREFIX.length);
180
+ const calculatedStorageLocation = calculateERC7201StorageLocation(namespaceId);
181
+ if (contractDef.storageLayout.baseSlotExpression.nodeType === 'Literal') {
182
+ const baseSlotNormalized = normalizeUint256Literal(contractDef.storageLayout.baseSlotExpression.value); // TODO: when Solidity supports an erc7201 helper function, also check that for clash
183
+ if (baseSlotNormalized === calculatedStorageLocation) {
184
+ throw new CustomLayoutClashWithNamespaceError(storageLocation, contractName, src);
185
+ }
186
+ }
187
+ }
188
+ }
189
+
190
+ function warnIfCustomLayoutAndNamespacesFound(
191
+ namespacesWithSrc: Record<string, NamespaceWithSrc>,
192
+ decodeSrc: SrcDecoder,
193
+ origContractDef: ContractDefinition,
194
+ ) {
195
+ // TODO: when Solidity supports an erc7201 helper function, only give this warning if the custom storage layout is not using the erc7201 helper function
196
+ if (Object.entries(namespacesWithSrc).length > 0 && origContractDef.storageLayout !== undefined) {
197
+ const contractName = origContractDef.canonicalName ?? origContractDef.name;
198
+ logWarning(
199
+ `${decodeSrc(origContractDef.storageLayout)}: Ensure custom storage layout does not overlap with namespaced storage layout.`,
200
+ [
201
+ `Contract \`${contractName}\` has both custom storage layout and namespaces.`,
202
+ 'The Upgrades Plugin validates that they do not use the same base slot, but does not check for overlaps.',
203
+ "Ensure the base slot for the contract's `layout at` specifier is chosen such that its storage variables do not overlap with any namespaces.",
204
+ ],
205
+ );
206
+ }
207
+ }
208
+
143
209
  /**
144
210
  * Gets the storage location string from the `@custom:storage-location` annotation.
145
211
  *
@@ -9,6 +9,7 @@ Generated by [AVA](https://avajs.dev).
9
9
  > Snapshot 1
10
10
 
11
11
  {
12
+ baseSlot: undefined,
12
13
  namespaces: [],
13
14
  storage: [
14
15
  {
@@ -47,6 +48,7 @@ Generated by [AVA](https://avajs.dev).
47
48
  > Snapshot 1
48
49
 
49
50
  {
51
+ baseSlot: undefined,
50
52
  namespaces: [],
51
53
  storage: [
52
54
  {
@@ -85,6 +87,7 @@ Generated by [AVA](https://avajs.dev).
85
87
  > Snapshot 1
86
88
 
87
89
  {
90
+ baseSlot: undefined,
88
91
  namespaces: [],
89
92
  storage: [
90
93
  {
@@ -120,6 +123,7 @@ Generated by [AVA](https://avajs.dev).
120
123
  > Snapshot 1
121
124
 
122
125
  {
126
+ baseSlot: undefined,
123
127
  namespaces: [],
124
128
  storage: [
125
129
  {
Binary file