slotdiff 0.2.0-alpha.1 → 0.3.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 (54) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +55 -38
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +59 -33
  5. package/dist/cli.js.map +1 -1
  6. package/dist/erc7201.d.ts +27 -11
  7. package/dist/erc7201.d.ts.map +1 -1
  8. package/dist/erc7201.js +182 -13
  9. package/dist/erc7201.js.map +1 -1
  10. package/dist/errors.d.ts +14 -0
  11. package/dist/errors.d.ts.map +1 -1
  12. package/dist/errors.js +20 -0
  13. package/dist/errors.js.map +1 -1
  14. package/dist/explorer.d.ts.map +1 -1
  15. package/dist/explorer.js +28 -9
  16. package/dist/explorer.js.map +1 -1
  17. package/dist/index.d.ts +4 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/reconstruct.d.ts +30 -15
  22. package/dist/reconstruct.d.ts.map +1 -1
  23. package/dist/reconstruct.js +140 -32
  24. package/dist/reconstruct.js.map +1 -1
  25. package/dist/record.d.ts +13 -0
  26. package/dist/record.d.ts.map +1 -1
  27. package/dist/record.js +8 -0
  28. package/dist/record.js.map +1 -1
  29. package/dist/report.d.ts +4 -1
  30. package/dist/report.d.ts.map +1 -1
  31. package/dist/report.js +37 -8
  32. package/dist/report.js.map +1 -1
  33. package/dist/resolve.d.ts +6 -1
  34. package/dist/resolve.d.ts.map +1 -1
  35. package/dist/resolve.js +6 -1
  36. package/dist/resolve.js.map +1 -1
  37. package/dist/solc.js +20 -4
  38. package/dist/solc.js.map +1 -1
  39. package/dist/upgrade.d.ts +48 -0
  40. package/dist/upgrade.d.ts.map +1 -0
  41. package/dist/upgrade.js +36 -0
  42. package/dist/upgrade.js.map +1 -0
  43. package/package.json +4 -4
  44. package/src/cli.ts +69 -33
  45. package/src/erc7201.ts +217 -26
  46. package/src/errors.ts +22 -0
  47. package/src/explorer.ts +39 -10
  48. package/src/index.ts +11 -3
  49. package/src/reconstruct.ts +206 -57
  50. package/src/record.ts +18 -0
  51. package/src/report.ts +44 -13
  52. package/src/resolve.ts +12 -2
  53. package/src/solc.ts +20 -4
  54. package/src/upgrade.ts +91 -0
package/dist/erc7201.js CHANGED
@@ -9,6 +9,9 @@
9
9
  * storage in place while the check reports a deleted namespace. Reading the
10
10
  * slot from the AST catches the first and fixes the second.
11
11
  */
12
+ import { styleText } from "node:util";
13
+ import { LayoutIntegrityError, LayoutUnavailableError } from "./errors.js";
14
+ import { namespaceLines, plain } from "./report.js";
12
15
  // Not exported from the package index; the package has no exports map, and
13
16
  // all exist since 1.46.0, the lowest version slotdiff accepts.
14
17
  import { getStorageLocationAnnotation } from "@openzeppelin/upgrades-core/dist/storage/namespace.js";
@@ -51,14 +54,25 @@ export function namespaceSlots(output, contract, namespaces) {
51
54
  }
52
55
  });
53
56
  }
57
+ // An overridden function can still run (through `super` or `Base.f()`), so
58
+ // its assembly is set aside: it never gives a slot, but it keeps a namespace
59
+ // it assigns from passing as unused.
54
60
  const assemblies = [];
61
+ const setAside = [];
55
62
  for (const source of Object.values(output.sources ?? {})) {
56
63
  walk(source.ast, (node) => {
57
64
  const sibling = node.nodeType === "ContractDefinition" &&
58
65
  node.contractKind !== "library" &&
59
66
  !bases.has(node.id);
60
- if (sibling || overridden.has(node.id))
67
+ if (sibling)
61
68
  return false;
69
+ if (overridden.has(node.id)) {
70
+ walk(node, (inner) => {
71
+ if (inner.nodeType === "InlineAssembly")
72
+ setAside.push(inner);
73
+ });
74
+ return false;
75
+ }
62
76
  if (node.nodeType === "InlineAssembly")
63
77
  assemblies.push(node);
64
78
  });
@@ -66,6 +80,22 @@ export function namespaceSlots(output, contract, namespaces) {
66
80
  const ctx = { byId, linearized, bases, touched };
67
81
  // Struct id → every slot value assigned to a pointer of that struct (undefined: unreadable).
68
82
  const assigned = new Map();
83
+ // Structs assigned a slot only in set-aside code, and whether any pointer
84
+ // that is not a struct (a mapping or an array) is assigned one.
85
+ const hidden = new Set();
86
+ let untyped = false;
87
+ const unannotated = (struct) => {
88
+ const node = byId.get(struct);
89
+ return node === undefined || getStorageLocationAnnotation(node) === undefined;
90
+ };
91
+ for (const assembly of setAside) {
92
+ forEachSlotAssignment(assembly, byId, (struct) => {
93
+ if (struct === undefined)
94
+ untyped = true;
95
+ else
96
+ hidden.add(struct);
97
+ });
98
+ }
69
99
  for (const assembly of assemblies) {
70
100
  const refs = (assembly.externalReferences ?? []);
71
101
  const declarationAt = (src) => refs.find((r) => r.src === src)?.declaration ?? -1;
@@ -81,8 +111,10 @@ export function namespaceSlots(output, contract, namespaces) {
81
111
  }
82
112
  const pointer = byId.get(declarationAt(target.src));
83
113
  const struct = pointer?.typeName?.referencedDeclaration;
84
- if (typeof struct !== "number")
114
+ if (typeof struct !== "number") {
115
+ untyped = true;
85
116
  continue;
117
+ }
86
118
  const value = node.value;
87
119
  const slot = value.nodeType === "YulLiteral"
88
120
  ? value.kind === "number"
@@ -93,17 +125,41 @@ export function namespaceSlots(output, contract, namespaces) {
93
125
  }
94
126
  });
95
127
  }
128
+ const structsOf = (namespace) => [...byId.values()].filter((n) => n.nodeType === "StructDefinition" &&
129
+ bases.has(n.scope) &&
130
+ getStorageLocationAnnotation(n) === namespace);
131
+ // Storage placed through any other struct (a library's Layout, annotated or
132
+ // not, or a struct with no annotation) is in no layout OpenZeppelin builds,
133
+ // so a change to it would pass unseen. A slot passed in (StorageSlot) is not known.
134
+ const namespaced = new Set(namespaces.flatMap((n) => structsOf(n).map((s) => s.id)));
135
+ for (const [id, slots] of assigned) {
136
+ if (namespaced.has(id) || slots.every((s) => s === undefined))
137
+ continue;
138
+ const struct = byId.get(id);
139
+ const scope = byId.get(struct?.scope)?.name;
140
+ throw new LayoutUnavailableError(`${contract} keeps storage at a fixed slot through ${[scope, struct?.name].filter(Boolean).join(".")}, ` +
141
+ "which is not an ERC-7201 namespace of the contract or its bases (a @custom:storage-location " +
142
+ "struct declared there): its fields are in no layout slotdiff compares, so it cannot check them.");
143
+ }
96
144
  return namespaces.map((namespace) => {
97
145
  const expected = calculateERC7201StorageLocation(namespace.slice("erc7201:".length));
98
- const slots = [...byId.values()]
99
- .filter((n) => n.nodeType === "StructDefinition" &&
100
- bases.has(n.scope) &&
101
- getStorageLocationAnnotation(n) === namespace)
102
- .flatMap((n) => assigned.get(n.id) ?? []);
146
+ const structs = structsOf(namespace);
147
+ const slots = structs.flatMap((n) => assigned.get(n.id) ?? []);
103
148
  const known = [...new Set(slots.filter((s) => s !== undefined))];
149
+ if (slots.length === 0) {
150
+ // Unused only when nothing could be placing it: no assignment in
151
+ // set-aside code, none to a struct nested in it, none to an untyped pointer.
152
+ const nested = new Set(structs.flatMap((n) => [...nestedStructs(n, byId)]));
153
+ const own = new Set(structs.map((n) => n.id));
154
+ const placed = untyped ||
155
+ [...hidden].some(unannotated) ||
156
+ [...own, ...nested].some((id) => hidden.has(id)) ||
157
+ [...nested].some((id) => !own.has(id) && assigned.has(id));
158
+ return { namespace, expected, status: placed ? "unread" : "unused" };
159
+ }
104
160
  if (known.length > 1)
105
161
  return { namespace, expected, status: "conflict" };
106
- if (known.length === 0 || slots.includes(undefined)) {
162
+ if (slots.includes(undefined)) {
107
163
  return { namespace, expected, status: "unread" };
108
164
  }
109
165
  const actual = known[0];
@@ -117,12 +173,13 @@ export function namespaceSlots(output, contract, namespaces) {
117
173
  * OpenZeppelin goes by. An old and a new namespace are the same storage when
118
174
  * the code uses the same slot (under the same annotation first), failing that
119
175
  * when they share an annotation, and failing that when the new annotation
120
- * names the slot where the old data is.
176
+ * names the slot where the old data is. A namespace of either layout missing
177
+ * from that side's `namespaces` (or all of them, when it is absent) is unread.
121
178
  * Pass `layout` to `diffLayouts` in place of `old.layout`.
122
179
  */
123
180
  export function checkNamespaces(old, next) {
124
- const unpaired = new Set(old.namespaces);
125
- const pairs = next.namespaces.map((n) => ({ next: n }));
181
+ const unpaired = new Set(slotsOf(old, "old"));
182
+ const pairs = slotsOf(next, "new").map((n) => ({ next: n }));
126
183
  const sameSlot = (o, n) => o.actual !== undefined && n.actual !== undefined && same(o.actual, n.actual);
127
184
  const rules = [
128
185
  (o, n) => sameSlot(o, n) && o.namespace === n.namespace,
@@ -161,10 +218,85 @@ export function checkNamespaces(old, next) {
161
218
  result: problems.some((p) => p !== undefined && p !== "unread")
162
219
  ? "fail"
163
220
  : problems.includes("unread")
164
- ? "unread"
221
+ ? "unchecked"
165
222
  : "pass",
223
+ // Colored by default, as OpenZeppelin's reports are.
224
+ explain: (color = true) => namespaceLines(pairs, color ? (format, text) => styleText(format, text, { validateStream: false }) : plain).join("\n"),
166
225
  };
167
226
  }
227
+ /**
228
+ * One slot per namespace of `side.layout`. A namespace with no slot (a record
229
+ * from before slots were recorded) is unread, never left to OpenZeppelin's
230
+ * annotation-only match.
231
+ */
232
+ function slotsOf(side, which) {
233
+ const misfit = slotsMisfit(side.layout, side.namespaces);
234
+ if (misfit !== undefined) {
235
+ throw new LayoutIntegrityError(`The ${which} namespace slots do not fit its layout: ${misfit}.`);
236
+ }
237
+ const given = side.namespaces ?? [];
238
+ const seen = new Set(given.map((n) => n.namespace));
239
+ return [
240
+ ...given,
241
+ ...Object.keys(side.layout.namespaces ?? {})
242
+ .filter((namespace) => !seen.has(namespace))
243
+ .map((namespace) => ({
244
+ namespace,
245
+ expected: calculateERC7201StorageLocation(namespace.slice("erc7201:".length)),
246
+ status: "unread",
247
+ })),
248
+ ];
249
+ }
250
+ // `<formula>:<id>`, as OpenZeppelin keys namespaces. Never a name like
251
+ // `__proto__`, which a plain object lookup would resolve on its prototype.
252
+ const NAMESPACE_KEY = /^[\w.-]+:\S/;
253
+ const SLOT = /^0x[0-9a-f]{64}$/i;
254
+ /**
255
+ * Why `namespaces` cannot be the slots of `layout`'s namespaces, or undefined
256
+ * when they can (or are absent). A slot for a namespace the layout lacks, or a
257
+ * second one for the same namespace, could take another's place when
258
+ * namespaces are paired, so either is refused. Internal, shared with records.
259
+ */
260
+ export function slotsMisfit(layout, namespaces) {
261
+ const names = Object.keys(layout.namespaces ?? {});
262
+ const odd = names.find((name) => !NAMESPACE_KEY.test(name));
263
+ if (odd !== undefined)
264
+ return `${JSON.stringify(odd)} is not a storage location`;
265
+ if (namespaces === undefined)
266
+ return undefined;
267
+ if (!Array.isArray(namespaces))
268
+ return "they are not a list";
269
+ const seen = new Set();
270
+ for (const slot of namespaces) {
271
+ if (!isSlot(slot))
272
+ return "a slot is malformed";
273
+ if (!names.includes(slot.namespace))
274
+ return `${slot.namespace} is not in the layout`;
275
+ if (seen.has(slot.namespace))
276
+ return `${slot.namespace} appears twice`;
277
+ seen.add(slot.namespace);
278
+ }
279
+ return undefined;
280
+ }
281
+ // Well formed, and consistent with its status.
282
+ function isSlot(value) {
283
+ const n = value;
284
+ if (typeof n !== "object" ||
285
+ n === null ||
286
+ typeof n.namespace !== "string" ||
287
+ typeof n.expected !== "string" ||
288
+ !SLOT.test(n.expected) ||
289
+ (n.actual !== undefined && (typeof n.actual !== "string" || !SLOT.test(n.actual)))) {
290
+ return false;
291
+ }
292
+ const read = n.actual !== undefined;
293
+ const same = read && BigInt(n.actual) === BigInt(n.expected);
294
+ return n.status === "match"
295
+ ? same
296
+ : n.status === "mismatch"
297
+ ? read && !same
298
+ : (n.status === "unread" || n.status === "conflict" || n.status === "unused") && !read;
299
+ }
168
300
  function problemOf({ old, next }) {
169
301
  if (next?.status === "conflict")
170
302
  return "conflict";
@@ -173,11 +305,48 @@ function problemOf({ old, next }) {
173
305
  }
174
306
  if (next?.status === "mismatch")
175
307
  return "mismatch";
176
- if ((old !== undefined && old.actual === undefined) || next?.status === "unread") {
308
+ // Only the deployed code knows where the data really is; once no code assigns
309
+ // the namespace, a later version that follows the wrong annotation would pass.
310
+ if (old?.status === "mismatch" && next?.status === "unused")
311
+ return "dropped";
312
+ // An unused namespace has no data of that version to move: compared by annotation, as OpenZeppelin does.
313
+ const unknown = (s) => s !== undefined && s.actual === undefined && s.status !== "unused";
314
+ if (unknown(old) || next?.status === "unread") {
177
315
  return "unread";
178
316
  }
179
317
  return undefined;
180
318
  }
319
+ // Calls `found` with the struct id of each pointer assigned a `.slot` in
320
+ // `assembly`, or undefined for a pointer that is not a struct.
321
+ function forEachSlotAssignment(assembly, byId, found) {
322
+ const refs = (assembly.externalReferences ?? []);
323
+ walk(assembly.AST, (node) => {
324
+ if (node.nodeType !== "YulAssignment")
325
+ return;
326
+ for (const target of node.variableNames) {
327
+ if (typeof target.name !== "string" || !target.name.endsWith(".slot"))
328
+ continue;
329
+ const pointer = byId.get(refs.find((r) => r.src === target.src)?.declaration ?? -1);
330
+ const struct = pointer?.typeName?.referencedDeclaration;
331
+ found(typeof struct === "number" ? struct : undefined);
332
+ }
333
+ });
334
+ }
335
+ // Every struct that `struct` holds, at any depth (in members, mappings and arrays).
336
+ function nestedStructs(struct, byId) {
337
+ const found = new Set();
338
+ const visit = (node) => walk(node, (n) => {
339
+ if (n.nodeType !== "UserDefinedTypeName")
340
+ return;
341
+ const target = byId.get(n.referencedDeclaration);
342
+ if (target?.nodeType === "StructDefinition" && !found.has(target.id)) {
343
+ found.add(target.id);
344
+ visit(target);
345
+ }
346
+ });
347
+ visit(struct);
348
+ return found;
349
+ }
181
350
  function same(a, b) {
182
351
  return BigInt(a) === BigInt(b);
183
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"erc7201.js","sourceRoot":"","sources":["../src/erc7201.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"erc7201.js","sourceRoot":"","sources":["../src/erc7201.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -15,6 +15,20 @@ export declare class LayoutUnavailableError extends Error {
15
15
  export declare class LayoutIntegrityError extends Error {
16
16
  constructor(message: string);
17
17
  }
18
+ /**
19
+ * A build is missing output the analysis needs (an AST, metadata, a storage
20
+ * layout or bytecode). Yours to fix, by compiling again with them selected
21
+ * (`hardhat compile --force` once the outputs are configured, say).
22
+ */
23
+ export declare class IncompleteBuildError extends Error {
24
+ constructor(message: string);
25
+ }
26
+ /**
27
+ * Text from outside (an explorer, an RPC endpoint, solc quoting verified
28
+ * source) without control characters, so it cannot move the cursor or recolor
29
+ * a terminal. Tabs and line breaks stay.
30
+ */
31
+ export declare function printable(text: string): string;
18
32
  /**
19
33
  * A network error's code (ECONNREFUSED, ENOTFOUND), never its message: fetch
20
34
  * quotes the URL in some messages, and URLs carry API keys.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAG5C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAG5C"}
package/dist/errors.js CHANGED
@@ -21,6 +21,26 @@ export class LayoutIntegrityError extends Error {
21
21
  this.name = "LayoutIntegrityError";
22
22
  }
23
23
  }
24
+ /**
25
+ * A build is missing output the analysis needs (an AST, metadata, a storage
26
+ * layout or bytecode). Yours to fix, by compiling again with them selected
27
+ * (`hardhat compile --force` once the outputs are configured, say).
28
+ */
29
+ export class IncompleteBuildError extends Error {
30
+ constructor(message) {
31
+ super(message);
32
+ this.name = "IncompleteBuildError";
33
+ }
34
+ }
35
+ /**
36
+ * Text from outside (an explorer, an RPC endpoint, solc quoting verified
37
+ * source) without control characters, so it cannot move the cursor or recolor
38
+ * a terminal. Tabs and line breaks stay.
39
+ */
40
+ export function printable(text) {
41
+ // eslint-disable-next-line no-control-regex
42
+ return text.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g, " ");
43
+ }
24
44
  /**
25
45
  * A network error's code (ECONNREFUSED, ENOTFOUND), never its message: fetch
26
46
  * quotes the URL in some messages, and URLs carry API keys.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,MAAM,IAAI,GAAI,CAAoC,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,4CAA4C;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,MAAM,IAAI,GAAI,CAAoC,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"explorer.d.ts","sourceRoot":"","sources":["../src/explorer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,oCAAoC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,SAAS,GAAG,CACf,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAQxE,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAEhE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAyDD,0BAA0B;AAC1B,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAoC5F"}
1
+ {"version":3,"file":"explorer.d.ts","sourceRoot":"","sources":["../src/explorer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,oCAAoC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,SAAS,GAAG,CACf,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAQxE,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAEhE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAiED,0BAA0B;AAC1B,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAyD5F"}
package/dist/explorer.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * rebuilding from them means guessing; the bytecode proof would reject a wrong
7
7
  * guess, but refusing up front gives a clearer error.
8
8
  */
9
- import { errorCode, LayoutUnavailableError } from "./errors.js";
9
+ import { errorCode, LayoutUnavailableError, printable } from "./errors.js";
10
10
  export const ETHERSCAN_V2_API_URL = "https://api.etherscan.io/v2/api";
11
11
  const RATE_LIMIT = /rate limit/i;
12
12
  // Key problems are the user's to fix and must surface; anything else the
@@ -69,7 +69,10 @@ async function requestWithRetry(url, fetchImpl) {
69
69
  }
70
70
  return entry;
71
71
  }
72
- const detail = typeof body.result === "string" ? body.result : (body.message ?? "unknown error");
72
+ // One line: a line break could draw a verdict of its own under the error.
73
+ const detail = printable(String(typeof body.result === "string" ? body.result : (body.message ?? "unknown error")))
74
+ .replace(/\s+/g, " ")
75
+ .slice(0, 300);
73
76
  // Before the key check: Etherscan's rate-limit message mentions the API key.
74
77
  if (RATE_LIMIT.test(detail)) {
75
78
  if (retry) {
@@ -86,6 +89,9 @@ async function requestWithRetry(url, fetchImpl) {
86
89
  function backoff(attempt) {
87
90
  return new Promise((r) => setTimeout(r, 1000 * attempt));
88
91
  }
92
+ // Control characters other than tabs and line breaks (\v, \f and \r included).
93
+ // eslint-disable-next-line no-control-regex
94
+ const CONTROL = /[\u0000-\u0008\u000e-\u001f\u007f-\u009f]/;
89
95
  /** Exported for tests. */
90
96
  export function parseSourceCodeEntry(entry, address) {
91
97
  const raw = entry.SourceCode ?? "";
@@ -94,21 +100,34 @@ export function parseSourceCodeEntry(entry, address) {
94
100
  }
95
101
  const compilerVersion = entry.CompilerVersion ?? "";
96
102
  if (!compilerVersion.startsWith("v0.")) {
97
- throw new LayoutUnavailableError(`Contract ${address} was verified with "${compilerVersion}"; only Solidity is supported.`);
103
+ throw new LayoutUnavailableError(`Contract ${address} was verified with "${printable(compilerVersion).slice(0, 80)}"; ` +
104
+ "only Solidity is supported.");
98
105
  }
99
106
  if (!/^v\d+\.\d+\.\d+(?:-nightly\.\d+\.\d+\.\d+|-pre\.\d+)?\+commit\.[0-9a-f]+$/.test(compilerVersion)) {
100
- throw new LayoutUnavailableError(`Contract ${address} reports an unrecognized compiler version "${compilerVersion}".`);
107
+ throw new LayoutUnavailableError(`Contract ${address} reports an unrecognized compiler version ` +
108
+ `"${printable(compilerVersion).slice(0, 80)}".`);
101
109
  }
102
110
  const input = parseStandardJson(raw);
103
111
  if (input === undefined) {
104
112
  throw new LayoutUnavailableError(`Contract ${address} is verified as flattened or multi-file source, not standard-json. ` +
105
113
  `Its compiler settings cannot be reconstructed exactly.`);
106
114
  }
107
- return {
108
- input,
109
- solcLongVersion: compilerVersion.slice(1),
110
- contractName: entry.ContractName ?? "",
111
- };
115
+ // Names, paths and source text (annotations, quoted by solc) reach the
116
+ // screen; real source holds no control characters but tabs and line breaks.
117
+ const contractName = entry.ContractName ?? "";
118
+ const sources = Object.values(input.sources);
119
+ // Every source inline: solc would fetch `urls` itself.
120
+ if (sources.some((s) => typeof s?.content !== "string")) {
121
+ throw new LayoutUnavailableError(`Contract ${address} is verified with sources that are not inline (urls); only content is read.`);
122
+ }
123
+ const contents = sources.map((s) => s.content);
124
+ if (
125
+ // Names and paths are printed on one line: no whitespace but a space.
126
+ [contractName, ...Object.keys(input.sources)].some((s) => printable(s) !== s || /[^\S ]/.test(s)) ||
127
+ contents.some((s) => CONTROL.test(s))) {
128
+ throw new LayoutUnavailableError(`Contract ${address} is verified with control characters in its name, paths or source.`);
129
+ }
130
+ return { input, solcLongVersion: compilerVersion.slice(1), contractName };
112
131
  }
113
132
  // Etherscan wraps standard-json in an extra pair of braces (`{{...}}`); some
114
133
  // compatible explorers return it unwrapped.
@@ -1 +1 @@
1
- {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../src/explorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../src/explorer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,9 @@ export { fetchVerifiedSource, ETHERSCAN_V2_API_URL, type ExplorerConfig, type Ve
6
6
  export { getSolc, type SolcOptions, type SolcRunner } from "./solc.js";
7
7
  export { findBuildInfo, type BuildInfoOptions, type BuildInfoContract } from "./build-info.js";
8
8
  export { checkNamespaces, type NamespaceCheck, type NamespacePair, type NamespaceSlot, } from "./erc7201.js";
9
- export { layoutFromSource, analyzeSource, SAFETY_ERROR_KINDS, type SourceAnalysis, type SafetyOptions, type SafetyReport, type SafetyError, type SafetyErrorKind, type ProxyKind, } from "./reconstruct.js";
9
+ export { checkUpgrade, type UpgradeCheck, type UpgradeOptions, type UpgradeSide, } from "./upgrade.js";
10
+ export { analyzeSource, analyzeBuild, type BuildAnalysis, type BuildCompiler, SAFETY_ERROR_KINDS, type SourceAnalysis, type SafetyOptions, type SafetyReport, type SafetyError, type SafetyErrorKind, type ProxyKind, } from "./reconstruct.js";
10
11
  export { compareDeployedBytecode, isProvingMatch, type DeployedBytecodeMatch, type ProvingMatch, type ImmutableReferences, } from "./bytecode.js";
11
- export { LayoutIntegrityError, LayoutUnavailableError } from "./errors.js";
12
- export type { SolcInput, StorageLayout } from "@openzeppelin/upgrades-core";
12
+ export { IncompleteBuildError, LayoutIntegrityError, LayoutUnavailableError } from "./errors.js";
13
+ export type { SolcInput, SolcOutput, StorageLayout } from "@openzeppelin/upgrades-core";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EACL,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EACL,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -6,7 +6,8 @@ export { fetchVerifiedSource, ETHERSCAN_V2_API_URL, } from "./explorer.js";
6
6
  export { getSolc } from "./solc.js";
7
7
  export { findBuildInfo } from "./build-info.js";
8
8
  export { checkNamespaces, } from "./erc7201.js";
9
- export { layoutFromSource, analyzeSource, SAFETY_ERROR_KINDS, } from "./reconstruct.js";
9
+ export { checkUpgrade, } from "./upgrade.js";
10
+ export { analyzeSource, analyzeBuild, SAFETY_ERROR_KINDS, } from "./reconstruct.js";
10
11
  export { compareDeployedBytecode, isProvingMatch, } from "./bytecode.js";
11
- export { LayoutIntegrityError, LayoutUnavailableError } from "./errors.js";
12
+ export { IncompleteBuildError, LayoutIntegrityError, LayoutUnavailableError } from "./errors.js";
12
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuC,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,GAKhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAqB,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,WAAW,GAGZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAqC,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,aAAa,EAAiD,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,GAOnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,cAAc,GAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuC,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,GAKhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAqB,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,WAAW,GAGZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAqC,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,aAAa,EAAiD,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,GAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,YAAY,EAGZ,kBAAkB,GAOnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,cAAc,GAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}