@dcl/content-validator 2.1.1-20220621133633.commit-24da31f → 2.1.1-20220623134639.commit-ca80e03

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 (90) hide show
  1. package/dist/content-validator.api.json +104 -217
  2. package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
  3. package/dist/the-graph-client/the-graph-client.js +7 -13
  4. package/dist/the-graph-client/the-graph-client.js.map +1 -1
  5. package/dist/types.d.ts +11 -24
  6. package/dist/types.d.ts.map +1 -1
  7. package/dist/types.js +1 -16
  8. package/dist/types.js.map +1 -1
  9. package/dist/validations/ADR51.d.ts +3 -5
  10. package/dist/validations/ADR51.d.ts.map +1 -1
  11. package/dist/validations/ADR51.js +4 -0
  12. package/dist/validations/ADR51.js.map +1 -1
  13. package/dist/validations/access-checker/access.d.ts.map +1 -1
  14. package/dist/validations/access-checker/access.js +5 -3
  15. package/dist/validations/access-checker/access.js.map +1 -1
  16. package/dist/validations/access-checker/emotes.d.ts +3 -0
  17. package/dist/validations/access-checker/emotes.d.ts.map +1 -0
  18. package/dist/validations/access-checker/emotes.js +13 -0
  19. package/dist/validations/access-checker/emotes.js.map +1 -0
  20. package/dist/validations/access-checker/items/collection-asset.d.ts +15 -0
  21. package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -0
  22. package/dist/validations/access-checker/items/collection-asset.js +133 -0
  23. package/dist/validations/access-checker/items/collection-asset.js.map +1 -0
  24. package/dist/validations/access-checker/items/items.d.ts +13 -0
  25. package/dist/validations/access-checker/items/items.d.ts.map +1 -0
  26. package/dist/validations/access-checker/items/items.js +68 -0
  27. package/dist/validations/access-checker/items/items.js.map +1 -0
  28. package/dist/validations/access-checker/items/off-chain-asset.d.ts +3 -0
  29. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +1 -0
  30. package/dist/validations/access-checker/items/off-chain-asset.js +17 -0
  31. package/dist/validations/access-checker/items/off-chain-asset.js.map +1 -0
  32. package/dist/validations/access-checker/items/third-party-asset.d.ts +3 -0
  33. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -0
  34. package/dist/validations/access-checker/items/third-party-asset.js +107 -0
  35. package/dist/validations/access-checker/items/third-party-asset.js.map +1 -0
  36. package/dist/validations/access-checker/profiles.d.ts.map +1 -1
  37. package/dist/validations/access-checker/profiles.js +3 -3
  38. package/dist/validations/access-checker/profiles.js.map +1 -1
  39. package/dist/validations/access-checker/scenes.d.ts.map +1 -1
  40. package/dist/validations/access-checker/scenes.js +3 -3
  41. package/dist/validations/access-checker/scenes.js.map +1 -1
  42. package/dist/validations/access-checker/wearables.d.ts +0 -18
  43. package/dist/validations/access-checker/wearables.d.ts.map +1 -1
  44. package/dist/validations/access-checker/wearables.js +9 -308
  45. package/dist/validations/access-checker/wearables.js.map +1 -1
  46. package/dist/validations/content.d.ts +3 -0
  47. package/dist/validations/content.d.ts.map +1 -1
  48. package/dist/validations/content.js +30 -17
  49. package/dist/validations/content.js.map +1 -1
  50. package/dist/validations/index.d.ts +4 -23
  51. package/dist/validations/index.d.ts.map +1 -1
  52. package/dist/validations/index.js +4 -31
  53. package/dist/validations/index.js.map +1 -1
  54. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  55. package/dist/validations/ipfs-hashing.js +3 -6
  56. package/dist/validations/ipfs-hashing.js.map +1 -1
  57. package/dist/validations/items/emotes.d.ts +5 -0
  58. package/dist/validations/items/emotes.d.ts.map +1 -0
  59. package/dist/validations/items/emotes.js +35 -0
  60. package/dist/validations/items/emotes.js.map +1 -0
  61. package/dist/validations/items/items.d.ts +10 -0
  62. package/dist/validations/items/items.d.ts.map +1 -0
  63. package/dist/validations/items/items.js +79 -0
  64. package/dist/validations/items/items.js.map +1 -0
  65. package/dist/validations/{wearable.d.ts → items/wearables.d.ts} +2 -5
  66. package/dist/validations/items/wearables.d.ts.map +1 -0
  67. package/dist/validations/items/wearables.js +32 -0
  68. package/dist/validations/items/wearables.js.map +1 -0
  69. package/dist/validations/metadata-schema.d.ts +2 -5
  70. package/dist/validations/metadata-schema.d.ts.map +1 -1
  71. package/dist/validations/metadata-schema.js +37 -7
  72. package/dist/validations/metadata-schema.js.map +1 -1
  73. package/dist/validations/profile.d.ts.map +1 -1
  74. package/dist/validations/profile.js +8 -18
  75. package/dist/validations/profile.js.map +1 -1
  76. package/dist/validations/size.d.ts.map +1 -1
  77. package/dist/validations/size.js +4 -3
  78. package/dist/validations/size.js.map +1 -1
  79. package/dist/validations/timestamps.d.ts +21 -0
  80. package/dist/validations/timestamps.d.ts.map +1 -0
  81. package/dist/validations/timestamps.js +24 -0
  82. package/dist/validations/timestamps.js.map +1 -0
  83. package/dist/validations/validations.d.ts +9 -0
  84. package/dist/validations/validations.d.ts.map +1 -0
  85. package/dist/validations/validations.js +47 -0
  86. package/dist/validations/validations.js.map +1 -0
  87. package/package.json +4 -3
  88. package/dist/validations/wearable.d.ts.map +0 -1
  89. package/dist/validations/wearable.js +0 -110
  90. package/dist/validations/wearable.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.thirdPartyAssetValidation = void 0;
4
+ const content_hash_tree_1 = require("@dcl/content-hash-tree");
5
+ const hashing_1 = require("@dcl/hashing");
6
+ const schemas_1 = require("@dcl/schemas");
7
+ const types_1 = require("../../../types");
8
+ function toHexBuffer(value) {
9
+ if (value.startsWith('0x')) {
10
+ return Buffer.from(value.substring(2), 'hex'); // removing first 2 characters (0x)
11
+ }
12
+ return Buffer.from(value, 'hex');
13
+ }
14
+ function getThirdPartyId(urn) {
15
+ return `urn:decentraland:${urn.network}:collections-thirdparty:${urn.thirdPartyName}`;
16
+ }
17
+ async function verifyHash(metadata, merkleRoot, logger) {
18
+ if (!schemas_1.MerkleProof.validate(metadata.merkleProof)) {
19
+ logger.debug('Merkle proof is not valid', {
20
+ merkleProof: metadata.merkleProof
21
+ });
22
+ return false;
23
+ }
24
+ const merkleProof = metadata.merkleProof;
25
+ const generatedCrcHash = (0, hashing_1.keccak256Hash)(metadata, metadata.merkleProof.hashingKeys);
26
+ // The hash provided in the merkleProof for the entity MUST match the hash generated by the validator.
27
+ if (metadata.merkleProof.entityHash !== generatedCrcHash) {
28
+ logger.debug(`The hash provided in the merkleProof doesn't match the one generated by the validator`, {
29
+ generatedCrcHash,
30
+ entityHash: metadata.merkleProof.entityHash
31
+ });
32
+ return false;
33
+ }
34
+ // Verify if the entity belongs to the Merkle Tree.
35
+ const bufferedProofs = merkleProof.proof.map((value) => toHexBuffer(value));
36
+ const bufferedMerkleRoot = toHexBuffer(merkleRoot);
37
+ return (0, content_hash_tree_1.verifyProof)(merkleProof.index, merkleProof.entityHash, bufferedProofs, bufferedMerkleRoot);
38
+ }
39
+ async function getMerkleRoot(components, block, thirdPartyId) {
40
+ const query = `
41
+ query MerkleRoot($id: String!, $block: Int!) {
42
+ thirdParties(where: { id: $id, isApproved: true }, block: { number: $block }, first: 1) {
43
+ root
44
+ }
45
+ }`;
46
+ const result = await components.externalCalls.subgraphs.L2.thirdPartyRegistry.query(query, {
47
+ id: thirdPartyId,
48
+ block
49
+ });
50
+ if (!result.thirdParties || result.thirdParties.length < 1)
51
+ return;
52
+ return result.thirdParties[0]?.root;
53
+ }
54
+ async function verifyMerkleProofedEntity(components, urn, deployment, logger) {
55
+ // do merkle proofed entity validation, required keys are defined by the Catalyst and must be a subset of the hashingKeys from the MerkleProof to succeed
56
+ const metadata = deployment.entity.metadata;
57
+ if (!(0, schemas_1.isThirdParty)(deployment.entity.metadata)) {
58
+ // This should never happen as the metadata validation ran before
59
+ return false;
60
+ }
61
+ const thirdPartyId = getThirdPartyId(urn);
62
+ const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(components.externalCalls.subgraphs.L2.blocks, deployment.entity.timestamp);
63
+ const merkleRoots = [];
64
+ const hasPermissionOnBlock = async (blockNumber) => {
65
+ try {
66
+ if (!blockNumber)
67
+ return false;
68
+ const merkleRoot = await getMerkleRoot(components, blockNumber, thirdPartyId);
69
+ if (!merkleRoot) {
70
+ logger.debug(`Merkle proof not found for given block and third party ID`, { blockNumber, thirdPartyId });
71
+ return false;
72
+ }
73
+ merkleRoots.push(merkleRoot);
74
+ return await verifyHash(metadata, merkleRoot, logger);
75
+ }
76
+ catch (e) {
77
+ const error = e?.message;
78
+ logger.debug(error);
79
+ return false;
80
+ }
81
+ };
82
+ const validMerkleProofedEntity = (await hasPermissionOnBlock(blockNumberAtDeployment)) ||
83
+ (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment));
84
+ if (!validMerkleProofedEntity) {
85
+ logger.debug(`Merkle Tree based verifications failed:`, {
86
+ merkleProof: JSON.stringify(metadata.merkleProof),
87
+ merkleRoots: JSON.stringify(merkleRoots),
88
+ blocks: JSON.stringify([blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment])
89
+ });
90
+ }
91
+ return validMerkleProofedEntity;
92
+ }
93
+ exports.thirdPartyAssetValidation = {
94
+ async validateAsset(components, asset, deployment) {
95
+ const logger = components.logs.getLogger('collection asset access validation');
96
+ // Third Party wearables are validated doing merkle tree based verification proof
97
+ const verified = await verifyMerkleProofedEntity(components, asset, deployment, logger);
98
+ if (!verified) {
99
+ return (0, types_1.validationFailed)(`Couldn't verify merkle proofed entity`);
100
+ }
101
+ return types_1.OK;
102
+ },
103
+ canValidate(asset) {
104
+ return asset.type === 'blockchain-collection-third-party';
105
+ }
106
+ };
107
+ //# sourceMappingURL=third-party-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/profiles.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAoB,MAAM,aAAa,CAAA;AAM9D;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAoDtB,CAAA"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAAoB,MAAM,aAAa,CAAA;AAI9D;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAoDtB,CAAA"}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.profiles = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
- const types_1 = require("../../types");
6
5
  const urn_resolver_1 = require("@dcl/urn-resolver");
7
- const index_1 = require("../index");
6
+ const types_1 = require("../../types");
8
7
  const profile_1 = require("../profile");
8
+ const timestamps_1 = require("../timestamps");
9
9
  /**
10
10
  * Validate that the pointers are valid, and that the Ethereum address has write access to them
11
11
  * @public
@@ -27,7 +27,7 @@ exports.profiles = {
27
27
  else if (pointer !== ethAddress.toLowerCase()) {
28
28
  return (0, types_1.validationFailed)(`You can only alter your own profile. The pointer address and the signer address are different (pointer:${pointer} signer: ${ethAddress.toLowerCase()}).`);
29
29
  }
30
- if (deployment.entity.timestamp < index_1.ADR_75_TIMESTAMP)
30
+ if (deployment.entity.timestamp < timestamps_1.ADR_75_TIMESTAMP)
31
31
  return types_1.OK;
32
32
  const names = allClaimedNames(deployment.entity);
33
33
  const namesCheckResult = await theGraphClient.checkForNamesOwnershipWithTimestamp(ethAddress, names, deployment.entity.timestamp);
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/validations/access-checker/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/validations/access-checker/profiles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAA;AAgCnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UA4SpB,CAAA"}
1
+ {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAA;AAgCnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAsSpB,CAAA"}
@@ -35,7 +35,7 @@ exports.scenes = {
35
35
  timestamp: Math.floor(timestamp / 1000) // js(ms) -> UNIX(s)
36
36
  };
37
37
  try {
38
- return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).authorizations;
38
+ return (await externalCalls.subgraphs.L1.landManager.query(query, variables)).authorizations;
39
39
  }
40
40
  catch (error) {
41
41
  logger.error(`Error fetching authorizations for ${owner}`);
@@ -83,7 +83,7 @@ exports.scenes = {
83
83
  timestamp: Math.floor(timestamp / 1000) // UNIX
84
84
  };
85
85
  try {
86
- return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).estates[0];
86
+ return (await externalCalls.subgraphs.L1.landManager.query(query, variables)).estates[0];
87
87
  }
88
88
  catch (error) {
89
89
  logger.error(`Error fetching estate (${estateId})`);
@@ -139,7 +139,7 @@ exports.scenes = {
139
139
  timestamp: Math.floor(timestamp / 1000) // UNIX
140
140
  };
141
141
  try {
142
- const r = await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables);
142
+ const r = await externalCalls.subgraphs.L1.landManager.query(query, variables);
143
143
  if (r.parcels && r.parcels.length)
144
144
  return r.parcels[0];
145
145
  logger.error(`Error fetching parcel (${x}, ${y}, ${timestamp}): ${JSON.stringify(r)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":";;;;;;AACA,4CAAmB;AACnB,uCAAmE;AAgCnE;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAA;QACxD,MAAM,iBAAiB,GAAG,KAAK,EAC7B,KAAiB,EACjB,QAAoB,EACpB,SAAoB,EACM,EAAE;YAC5B,MAAM,KAAK,GAAG;;;;;;;;;;;;;;cAcN,CAAA;YAER,MAAM,SAAS,GAAG;gBAChB,KAAK;gBACL,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,oBAAoB;aAC7D,CAAA;YAED,IAAI;gBACF,OAAO,CACL,MAAM,aAAa,CAAC,UAAU,CAC5B,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EACtC,KAAK,EACL,SAAS,CACV,CACF,CAAC,cAAc,CAAA;aACjB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAA;gBAC1D,MAAM,KAAK,CAAA;aACZ;QACH,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,SAAoB,EAA+B,EAAE;YAC9F;;;;eAIG;YAEH,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6BN,CAAA;YAER,MAAM,SAAS,GAAG;gBAChB,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO;aAChD,CAAA;YAED,IAAI;gBACF,OAAO,CACL,MAAM,aAAa,CAAC,UAAU,CAC5B,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EACtC,KAAK,EACL,SAAS,CACV,CACF,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,0BAA0B,QAAQ,GAAG,CAAC,CAAA;gBACnD,MAAM,KAAK,CAAA;aACZ;QACH,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,KAAK,EAAE,CAAS,EAAE,CAAS,EAAE,SAAoB,EAA+B,EAAE;YAClG;;;;eAIG;YAEH,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCN,CAAA;YAER,MAAM,SAAS,GAAG;gBAChB,CAAC;gBACD,CAAC;gBACD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO;aAChD,CAAA;YAED,IAAI;gBACF,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,UAAU,CACtC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EACtC,KAAK,EACL,SAAS,CACV,CAAA;gBAED,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAEtD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACtF,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,MAAM,SAAS,EAAE,CAAC,CAAA;aACpE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,SAAS,GAAG,CAAC,CAAA;gBAChE,MAAM,KAAK,CAAA;aACZ;QACH,CAAC,CAAA;QAED,MAAM,8BAA8B,GAAG,KAAK,EAC1C,KAAiB,EACjB,UAAsB,EACtB,SAAoB,EACF,EAAE;YACpB;;;eAGG;YACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAA;YAExG,MAAM,0BAA0B,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YAC5G,MAAM,gCAAgC,GAAG,cAAc,CAAC,IAAI,CAC1D,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,gBAAgB,CAC3D,CAAA;YACD,MAAM,+BAA+B,GAAG,cAAc,CAAC,IAAI,CACzD,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,eAAe,CAC1D,CAAA;YAED,IACE,0BAA0B,EAAE,UAAU;gBACtC,gCAAgC,EAAE,UAAU;gBAC5C,+BAA+B,EAAE,UAAU,EAC3C;gBACA,OAAO,IAAI,CAAA;aACZ;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,MAAM,qCAAqC,GAAG,KAAK,EACjD,MAA4B,EAC5B,UAAsB,EACJ,EAAE;YACpB,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC;iBAC7F,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;iBACpD,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;YAClE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;QACjE,CAAC,CAAA;QAED,MAAM,wBAAwB,GAAG,KAAK,EACpC,QAAgB,EAChB,SAAoB,EACpB,UAAsB,EACJ,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAA;YAC9D,IAAI,MAAM,EAAE;gBACV,OAAO,CACL,CAAC,MAAM,qCAAqC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBACjE,CAAC,MAAM,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CACxF,CAAA;aACF;YACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAA;QACzD,CAAC,CAAA;QAED,MAAM,wBAAwB,GAAG,KAAK,EACpC,CAAS,EACT,CAAS,EACT,SAAoB,EACpB,UAAsB,EACtB,cAA6B,EACX,EAAE;YACpB;;;;;eAKG;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;YAC/C,IAAI,MAAM,EAAE;gBACV,MAAM,eAAe,GACnB,MAAM,CAAC,OAAO,IAAI,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAA;gBAErG,OAAO,CACL,CAAC,MAAM,qCAAqC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBACjE,CAAC,MAAM,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBACvF,CAAC,eAAe,IAAI,CAAC,MAAM,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CACzG,CAAA;aACF;YACD,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,aAAa,CAAC,CAAA;QAC7D,CAAC,CAAA;QAED,MAAM,iBAAiB,GAAG,KAAK,EAC7B,CAAS,EACT,CAAS,EACT,SAAoB,EACpB,UAAsB,EACtB,aAA4B,EACV,EAAE;YACpB,IAAI;gBACF,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;aAC1G;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,UAAU,IAAI,CAAC,CAAA;gBACvF,MAAM,KAAK,CAAA;aACZ;QACH,CAAC,CAAA;QAED,MAAM,mBAAmB,GAAG,IAAA,YAAE,EAAC,IAAI,CAAC,CAAA;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;QACtC,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEnE,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAE1E,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;YACvC,MAAM,YAAY,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,MAAM,CAAC,GAAW,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC/C,MAAM,CAAC,GAAW,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC/C,IAAI;oBACF,8IAA8I;oBAC9I,MAAM,SAAS,GACb,CAAC,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;wBACrE,CAAC,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,mBAAmB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;oBAC7F,IAAI,CAAC,SAAS,EAAE;wBACd,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;qBAClG;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;iBACxG;aACF;iBAAM;gBACL,MAAM,CAAC,IAAI,CACT,4HAA4H,OAAO,EAAE,CACtI,CAAA;aACF;SACF;QAED,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA;AAED,gBAAgB;AAChB,KAAK,UAAU,KAAK,CAClB,SAA2B,EAC3B,QAAgB,EAChB,WAAmB,IAAI,EACvB,qBAAsD;IAEtD,OAAO,QAAQ,GAAG,CAAC,EAAE;QACnB,IAAI;YACF,OAAO,MAAM,SAAS,EAAE,CAAA;YACxB,6EAA6E;YAC7E,wDAAwD;SACzD;QAAC,OAAO,KAAK,EAAE;YACd,QAAQ,EAAE,CAAA;YACV,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,IAAI,qBAAqB,EAAE;oBACzB,qBAAqB,CAAC,QAAQ,CAAC,CAAA;iBAChC;gBACD,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAA,YAAE,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;aAChE;iBAAM;gBACL,MAAM,KAAK,CAAA;aACZ;SACF;KACF;IACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;AAChF,CAAC"}
1
+ {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,3 @@
1
1
  import { Validation } from '../../types';
2
- export declare const MERKLE_PROOF_REQUIRED_KEYS: readonly ["id", "name", "description", "i18n", "image", "thumbnail", "data", "content"];
3
- export declare type WearableCollection = {
4
- creator: string;
5
- managers: string[];
6
- isApproved: boolean;
7
- isCompleted: boolean;
8
- items: WearableCollectionItem[];
9
- };
10
- declare type WearableCollectionItem = {
11
- managers: string[];
12
- contentHash: string;
13
- };
14
- /**
15
- * Given the pointers (URNs), determine which layer should be used to check the access.
16
- * Checks if the ethereum address has access to the collection.
17
- * @public
18
- */
19
2
  export declare const wearables: Validation;
20
- export {};
21
3
  //# sourceMappingURL=wearables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"AAUA,OAAO,EAA8C,UAAU,EAAQ,MAAM,aAAa,CAAA;AAQ1F,eAAO,MAAM,0BAA0B,yFAS7B,CAAA;AA8BV,oBAAY,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,sBAAsB,EAAE,CAAA;CAChC,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AA2CD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,UAmTvB,CAAA"}
1
+ {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,UAAU,EAAE,MAAM,aAAa,CAAA;AAGpE,eAAO,MAAM,SAAS,EAAE,UAYvB,CAAA"}
@@ -1,314 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wearables = exports.MERKLE_PROOF_REQUIRED_KEYS = void 0;
4
- const content_hash_tree_1 = require("@dcl/content-hash-tree");
5
- const hashing_1 = require("@dcl/hashing");
6
- const schemas_1 = require("@dcl/schemas");
7
- const urn_resolver_1 = require("@dcl/urn-resolver");
8
- const types_1 = require("../../types");
9
- const L1_NETWORKS = ['mainnet', 'ropsten', 'kovan', 'rinkeby', 'goerli'];
10
- const L2_NETWORKS = ['matic', 'mumbai'];
11
- // These keys are required by the protocol to be a subset and present in the merkle proof hashing keys.
12
- // Note: deletions would not be a problem, but in case of adding a key here,
13
- // you MUST review the validation in order to not break the sync between catalysts (aka failed deployments)
14
- exports.MERKLE_PROOF_REQUIRED_KEYS = [
15
- 'id',
16
- 'name',
17
- 'description',
18
- 'i18n',
19
- 'image',
20
- 'thumbnail',
21
- 'data',
22
- 'content'
23
- ];
24
- const validUrnTypes = [
25
- 'off-chain',
26
- 'blockchain-collection-v1-asset',
27
- 'blockchain-collection-v2-asset',
28
- 'blockchain-collection-third-party'
29
- ];
30
- const alreadySeen = (resolvedPointers, parsed) => {
31
- return resolvedPointers.some((alreadyResolved) => resolveSameUrn(alreadyResolved, parsed));
32
- };
33
- const resolveSameUrn = (alreadyParsed, parsed) => {
34
- const alreadyParsedCopy = Object.assign({}, alreadyParsed);
35
- const parsedCopy = Object.assign({}, parsed);
36
- alreadyParsedCopy.uri = new URL('urn:same');
37
- parsedCopy.uri = new URL('urn:same');
38
- return JSON.stringify(alreadyParsedCopy) == JSON.stringify(parsedCopy);
39
- };
40
- const parseUrnNoFail = async (urn) => {
41
- try {
42
- const parsed = await (0, urn_resolver_1.parseUrn)(urn);
43
- if (parsed?.type === 'blockchain-collection-v1-asset') {
44
- return parsed;
45
- }
46
- if (parsed?.type === 'blockchain-collection-v2-asset') {
47
- return parsed;
48
- }
49
- if (parsed?.type === 'off-chain') {
50
- return parsed;
51
- }
52
- if (parsed?.type === 'blockchain-collection-third-party') {
53
- return parsed;
54
- }
55
- }
56
- catch { }
57
- return null;
58
- };
59
- const toHexBuffer = (value) => {
60
- if (value.startsWith('0x')) {
61
- return Buffer.from(value.substring(2), 'hex'); // removing first 2 characters (0x)
62
- }
63
- return Buffer.from(value, 'hex');
64
- };
65
- const getThirdPartyId = (urn) => `urn:decentraland:${urn.network}:collections-thirdparty:${urn.thirdPartyName}`;
66
- /**
67
- * Given the pointers (URNs), determine which layer should be used to check the access.
68
- * Checks if the ethereum address has access to the collection.
69
- * @public
70
- */
3
+ exports.wearables = void 0;
4
+ const items_1 = require("./items/items");
71
5
  exports.wearables = {
72
- validate: async ({ externalCalls, theGraphClient, logs }, deployment) => {
73
- const logger = logs.getLogger('wearables access validator');
74
- const hasPermission = async (subgraphUrl, collection, itemId, block, entity) => {
75
- try {
76
- const { content, metadata } = entity;
77
- const permissions = await getCollectionItems(subgraphUrl, collection, itemId, block);
78
- const ethAddressLowercase = entity.ethAddress.toLowerCase();
79
- if (!!permissions.contentHash) {
80
- const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
81
- const calculateHashes = () => {
82
- // Compare both by key and hash
83
- const compare = (a, b) => {
84
- if (a.hash > b.hash)
85
- return 1;
86
- else if (a.hash < b.hash)
87
- return -1;
88
- else
89
- return a.key > b.key ? 1 : -1;
90
- };
91
- const contentAsJson = (content ?? []).map(({ file, hash }) => ({ key: file, hash })).sort(compare);
92
- const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
93
- return Promise.all([(0, hashing_1.hashV0)(buffer), (0, hashing_1.hashV1)(buffer)]);
94
- };
95
- return deployedByCommittee && (await calculateHashes()).includes(permissions.contentHash);
96
- }
97
- else {
98
- const addressHasAccess = (permissions.collectionCreator && permissions.collectionCreator === ethAddressLowercase) ||
99
- (permissions.collectionManagers && permissions.collectionManagers.includes(ethAddressLowercase)) ||
100
- (permissions.itemManagers && permissions.itemManagers.includes(ethAddressLowercase));
101
- // Deployments to the content server are made after the collection is completed, so that the committee can then approve it.
102
- // That's why isCompleted must be true, but isApproved must be false. After the committee approves the wearable, there can't be any more changes
103
- const isCollectionValid = !permissions.isApproved && permissions.isCompleted;
104
- return addressHasAccess && isCollectionValid;
105
- }
106
- }
107
- catch (error) {
108
- logger.error(`Error checking permission for (${collection}-${itemId}) at block ${block}`);
109
- return false;
110
- }
111
- };
112
- const getCollectionItems = async (subgraphUrl, collection, itemId, block) => {
113
- const query = `
114
- query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
115
- collections(where:{ id: $collection }, block: { number: $block }) {
116
- creator
117
- managers
118
- isApproved
119
- isCompleted
120
- items(where:{ id: $itemId }) {
121
- managers
122
- contentHash
123
- }
124
- }
125
-
126
- accounts(where:{ isCommitteeMember: true }, block: { number: $block }) {
127
- id
128
- }
129
- }`;
130
- const result = await externalCalls.queryGraph(subgraphUrl, query, {
131
- collection,
132
- itemId: `${collection}-${itemId}`,
133
- block
134
- });
135
- const collectionResult = result.collections[0];
136
- const itemResult = collectionResult?.items[0];
137
- return {
138
- collectionCreator: collectionResult?.creator,
139
- collectionManagers: collectionResult?.managers,
140
- isApproved: collectionResult?.isApproved,
141
- isCompleted: collectionResult?.isCompleted,
142
- itemManagers: itemResult?.managers,
143
- contentHash: itemResult?.contentHash,
144
- committee: result.accounts.map(({ id }) => id.toLowerCase())
145
- };
146
- };
147
- const checkCollectionAccess = async (blocksSubgraphUrl, collectionsSubgraphUrl, collection, itemId, entity) => {
148
- const { timestamp } = entity;
149
- try {
150
- const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await theGraphClient.findBlocksForTimestamp(blocksSubgraphUrl, timestamp);
151
- // It could happen that the subgraph hasn't synced yet, so someone who just lost access still managed to make a deployment. The problem would be that when other catalysts perform
152
- // the same check, the subgraph might have synced and the deployment is no longer valid. So, in order to prevent inconsistencies between catalysts, we will allow all deployments that
153
- // have access now, or had access 5 minutes ago.
154
- const hasPermissionOnBlock = async (blockNumber) => !!blockNumber && (await hasPermission(collectionsSubgraphUrl, collection, itemId, blockNumber, entity));
155
- return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
156
- (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
157
- }
158
- catch (error) {
159
- logger.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}, ${blocksSubgraphUrl}).`);
160
- return false;
161
- }
162
- };
163
- const getMerkleRoot = async ({ block, thirdPartyId }) => {
164
- const query = `
165
- query MerkleRoot($id: String!, $block: Int!) {
166
- thirdParties(where: { id: $id, isApproved: true }, block: { number: $block }, first: 1) {
167
- root
168
- }
169
- }`;
170
- const result = await externalCalls.queryGraph(externalCalls.subgraphs.L2.thirdPartyRegistry, query, {
171
- id: thirdPartyId,
172
- block
173
- });
174
- if (!result.thirdParties || result.thirdParties.length < 1)
175
- return;
176
- return result.thirdParties[0]?.root;
177
- };
178
- const verifyHash = async (metadata, merkleRoot) => {
179
- // Validate merkle proof data is valid
180
- if (!schemas_1.MerkleProof.validate(metadata.merkleProof)) {
181
- logger.debug('Merkle proof is not valid', {
182
- merkleProof: metadata.merkleProof
183
- });
184
- return false;
185
- }
186
- const merkleProof = metadata.merkleProof;
187
- // The keys used to create the hash MUST be present if they're required.
188
- if (!exports.MERKLE_PROOF_REQUIRED_KEYS.every((key) => merkleProof.hashingKeys.includes(key))) {
189
- logger.debug(`Merkle proof hashing keys don't satisfy the required keys`, {
190
- requiredKeys: JSON.stringify(exports.MERKLE_PROOF_REQUIRED_KEYS),
191
- hashingKeys: JSON.stringify(merkleProof.hashingKeys)
192
- });
193
- return false;
194
- }
195
- const generatedCrcHash = (0, hashing_1.keccak256Hash)(metadata, metadata.merkleProof.hashingKeys);
196
- // The hash provided in the merkleProof for the entity MUST match the hash generated by the validator.
197
- if (metadata.merkleProof.entityHash !== generatedCrcHash) {
198
- logger.debug(`The hash provided in the merkleProof doesn't match with the generated by the validator`, {
199
- generatedCrcHash,
200
- entityHash: metadata.merkleProof.entityHash
201
- });
202
- return false;
203
- }
204
- // Verify if the entity belongs to the Merkle Tree.
205
- const bufferedProofs = merkleProof.proof.map((value) => toHexBuffer(value));
206
- const bufferedMerkleRoot = toHexBuffer(merkleRoot);
207
- return (0, content_hash_tree_1.verifyProof)(merkleProof.index, merkleProof.entityHash, bufferedProofs, bufferedMerkleRoot);
208
- };
209
- /**
210
- * Verifies Third Party Wearable access by doing a Merkle Tree based verification, where the merkle root is stored in the blockchain
211
- * and the proofs come in the wearable metadata.
212
- * It also does a CRC using the metadata and some hashing keys:
213
- * - Hashing keys must contain all required keys defined in MERKLE_PROOF_REQUIRED_KEYS
214
- *
215
- * This checks are verified using blocks in a 5 minutes window from the deployment timestamp
216
- */
217
- const verifyMerkleProofedEntity = async (urn) => {
218
- // do merkle proofed entity validation, required keys are defined by the Catalyst and must be a subset of the hashingKeys from the MerkleProof to succeed
219
- const metadata = deployment.entity.metadata;
220
- const thirdPartyId = getThirdPartyId(urn);
221
- const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await theGraphClient.findBlocksForTimestamp('maticBlocksSubgraph', deployment.entity.timestamp);
222
- const merkleRoots = [];
223
- const hasPermissionOnBlock = async (blockNumber) => {
224
- try {
225
- if (!blockNumber)
226
- return false;
227
- const merkleRoot = await getMerkleRoot({
228
- block: blockNumber,
229
- thirdPartyId
230
- });
231
- if (!merkleRoot) {
232
- logger.debug(`Merkle proof not found for given block and third party ID`, { blockNumber, thirdPartyId });
233
- return false;
234
- }
235
- merkleRoots.push(merkleRoot);
236
- return await verifyHash(metadata, merkleRoot);
237
- }
238
- catch (e) {
239
- const error = e?.message;
240
- logger.debug(error);
241
- return false;
242
- }
243
- };
244
- const validMerkleProofedEntity = (await hasPermissionOnBlock(blockNumberAtDeployment)) ||
245
- (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment));
246
- if (!validMerkleProofedEntity) {
247
- logger.debug(`Merkle Tree based verifications failed:`, {
248
- merkleProof: JSON.stringify(metadata.merkleProof),
249
- merkleRoots: JSON.stringify(merkleRoots),
250
- blocks: JSON.stringify([blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment])
251
- });
252
- }
253
- return validMerkleProofedEntity;
254
- };
255
- const { pointers } = deployment.entity;
256
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
257
- const resolvedPointers = [];
258
- // deduplicate pointer resolution
259
- for (const pointer of pointers) {
260
- const parsed = await parseUrnNoFail(pointer);
261
- if (!parsed)
262
- return (0, types_1.validationFailed)(`Wearable pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
263
- if (!alreadySeen(resolvedPointers, parsed))
264
- resolvedPointers.push(parsed);
265
- }
266
- if (resolvedPointers.length > 1)
267
- return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Wearable. Received: ${pointers}`);
268
- const parsed = resolvedPointers[0];
269
- if (!validUrnTypes.includes(parsed.type)) {
270
- return (0, types_1.validationFailed)(`Could not resolve the contractAddress of the urn ${parsed}`);
271
- }
272
- if (parsed.type === 'off-chain') {
273
- // Validate Off Chain Asset
274
- if (!externalCalls.isAddressOwnedByDecentraland(ethAddress))
275
- return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
276
- }
277
- else if (parsed?.type === 'blockchain-collection-v1-asset' || parsed?.type === 'blockchain-collection-v2-asset') {
278
- // L1 or L2 so contractAddress is present
279
- const collection = parsed.contractAddress;
280
- const network = parsed.network;
281
- const isL1 = L1_NETWORKS.includes(network);
282
- const isL2 = L2_NETWORKS.includes(network);
283
- if (!isL1 && !isL2)
284
- return (0, types_1.validationFailed)(`Found an unknown network on the urn '${network}'`);
285
- const blocksSubgraphUrl = isL1 ? 'blocksSubgraph' : 'maticBlocksSubgraph';
286
- const collectionsSubgraphUrl = isL1
287
- ? externalCalls.subgraphs.L1.collections
288
- : externalCalls.subgraphs.L2.collections;
289
- const hasAccess = await checkCollectionAccess(blocksSubgraphUrl, collectionsSubgraphUrl, collection, parsed.id, {
290
- ...deployment.entity,
291
- ethAddress
292
- });
293
- if (!hasAccess) {
294
- if (isL2)
295
- return (0, types_1.validationFailed)(`The provided Eth Address does not have access to the following wearable: (${parsed.contractAddress}, ${parsed.id})`);
296
- // Some L1 collections are deployed by Decentraland Address
297
- // Maybe this is not necessary as we already know that it's a 'blockchain-collection-v1-asset'
298
- const isAllowlistedCollection = parsed.uri.toString().startsWith('urn:decentraland:ethereum:collections-v1');
299
- if (!externalCalls.isAddressOwnedByDecentraland(ethAddress) || !isAllowlistedCollection) {
300
- return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
301
- }
302
- }
303
- }
304
- else if (parsed?.type === 'blockchain-collection-third-party') {
305
- // Third Party wearables are validated doing merkle tree based verification proof
306
- const verified = await verifyMerkleProofedEntity(parsed);
307
- if (!verified) {
308
- return (0, types_1.validationFailed)(`Couldn't verify merkle proofed entity`);
309
- }
310
- }
311
- return types_1.OK;
6
+ validate: async (components, deployment) => {
7
+ return items_1.itemsValidation.validate(components, deployment, [
8
+ 'off-chain',
9
+ 'blockchain-collection-v1-asset',
10
+ 'blockchain-collection-v2-asset',
11
+ 'blockchain-collection-third-party'
12
+ ]);
312
13
  }
313
14
  };
314
15
  //# sourceMappingURL=wearables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":";;;AACA,yCAA+C;AAElC,QAAA,SAAS,GAAe;IACnC,QAAQ,EAAE,KAAK,EACb,UAAyF,EACzF,UAAU,EACV,EAAE;QACF,OAAO,uBAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE;YACtD,WAAW;YACX,gCAAgC;YAChC,gCAAgC;YAChC,mCAAmC;SACpC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -1,4 +1,7 @@
1
1
  import { Validation } from '../types';
2
+ export declare const allHashesWereUploadedOrStored: Validation;
3
+ export declare const allHashesInUploadedFilesAreReportedInTheEntity: Validation;
4
+ export declare const allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45: Validation;
2
5
  /**
3
6
  * Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
4
7
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAWjD;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAuCrB,CAAA"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAYjD,eAAO,MAAM,6BAA6B,EAAE,UAkB3C,CAAA;AAED,eAAO,MAAM,8CAA8C,EAAE,UAa5D,CAAA;AAED,eAAO,MAAM,6DAA6D,EAAE,UAgB1E,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAIrB,CAAA"}