@prosopo/provider 0.2.13 → 0.2.15

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 (87) hide show
  1. package/dist/api/admin.js +0 -56
  2. package/dist/api/admin.js.map +1 -1
  3. package/dist/api/captcha.d.ts +0 -6
  4. package/dist/api/captcha.d.ts.map +1 -1
  5. package/dist/api/captcha.js +24 -83
  6. package/dist/api/captcha.js.map +1 -1
  7. package/dist/batch/commitments.d.ts +2 -2
  8. package/dist/batch/commitments.d.ts.map +1 -1
  9. package/dist/batch/commitments.js +2 -20
  10. package/dist/batch/commitments.js.map +1 -1
  11. package/dist/batch/index.js +0 -13
  12. package/dist/batch/index.js.map +1 -1
  13. package/dist/cjs/api/captcha.cjs +23 -31
  14. package/dist/cjs/batch/commitments.cjs +12 -12
  15. package/dist/cjs/tasks/tasks.cjs +22 -21
  16. package/dist/cjs/util.cjs +9 -8
  17. package/dist/index.js +0 -13
  18. package/dist/index.js.map +1 -1
  19. package/dist/scheduler.js +0 -15
  20. package/dist/scheduler.js.map +1 -1
  21. package/dist/tasks/calculateSolutions.d.ts +0 -3
  22. package/dist/tasks/calculateSolutions.d.ts.map +1 -1
  23. package/dist/tasks/calculateSolutions.js +0 -27
  24. package/dist/tasks/calculateSolutions.js.map +1 -1
  25. package/dist/tasks/index.js +0 -13
  26. package/dist/tasks/index.js.map +1 -1
  27. package/dist/tasks/tasks.d.ts +3 -66
  28. package/dist/tasks/tasks.d.ts.map +1 -1
  29. package/dist/tasks/tasks.js +6 -87
  30. package/dist/tasks/tasks.js.map +1 -1
  31. package/dist/tests/accounts.d.ts.map +1 -1
  32. package/dist/tests/accounts.js +2 -16
  33. package/dist/tests/accounts.js.map +1 -1
  34. package/dist/tests/batch/commitments.test.d.ts.map +1 -1
  35. package/dist/tests/batch/commitments.test.js +12 -77
  36. package/dist/tests/batch/commitments.test.js.map +1 -1
  37. package/dist/tests/contract/helpers.test.d.ts.map +1 -1
  38. package/dist/tests/contract/helpers.test.js +3 -3
  39. package/dist/tests/contract/helpers.test.js.map +1 -1
  40. package/dist/tests/dataUtils/DatabaseAccounts.js +0 -1
  41. package/dist/tests/dataUtils/DatabaseAccounts.js.map +1 -1
  42. package/dist/tests/dataUtils/DatabasePopulator.d.ts +1 -1
  43. package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +1 -1
  44. package/dist/tests/dataUtils/DatabasePopulator.js +10 -16
  45. package/dist/tests/dataUtils/DatabasePopulator.js.map +1 -1
  46. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +1 -1
  47. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +1 -1
  48. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +3 -17
  49. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +1 -1
  50. package/dist/tests/dataUtils/funds.d.ts +1 -16
  51. package/dist/tests/dataUtils/funds.d.ts.map +1 -1
  52. package/dist/tests/dataUtils/funds.js +2 -25
  53. package/dist/tests/dataUtils/funds.js.map +1 -1
  54. package/dist/tests/dataUtils/populateDatabase.d.ts +1 -1
  55. package/dist/tests/dataUtils/populateDatabase.d.ts.map +1 -1
  56. package/dist/tests/dataUtils/populateDatabase.js +0 -1
  57. package/dist/tests/dataUtils/populateDatabase.js.map +1 -1
  58. package/dist/tests/tasks/tasks.test.d.ts.map +1 -1
  59. package/dist/tests/tasks/tasks.test.js +15 -221
  60. package/dist/tests/tasks/tasks.test.js.map +1 -1
  61. package/dist/tests/util.test.js +0 -14
  62. package/dist/tests/util.test.js.map +1 -1
  63. package/dist/util.d.ts +0 -11
  64. package/dist/util.d.ts.map +1 -1
  65. package/dist/util.js +3 -33
  66. package/dist/util.js.map +1 -1
  67. package/package.json +10 -11
  68. package/dist/cjs/contracts/captcha/dist/build-extrinsic/captcha.cjs +0 -339
  69. package/dist/cjs/contracts/captcha/dist/contract-info/captcha.cjs +0 -6
  70. package/dist/cjs/contracts/captcha/dist/contracts/captcha.cjs +0 -79
  71. package/dist/cjs/contracts/captcha/dist/data/captcha.json.cjs +0 -3374
  72. package/dist/cjs/contracts/captcha/dist/event-data/captcha.json.cjs +0 -3
  73. package/dist/cjs/contracts/captcha/dist/events/captcha.cjs +0 -23
  74. package/dist/cjs/contracts/captcha/dist/index.cjs +0 -44
  75. package/dist/cjs/contracts/captcha/dist/mixed-methods/captcha.cjs +0 -470
  76. package/dist/cjs/contracts/captcha/dist/query/captcha.cjs +0 -468
  77. package/dist/cjs/contracts/captcha/dist/shared/utils.cjs +0 -31
  78. package/dist/cjs/contracts/captcha/dist/tx-sign-and-send/captcha.cjs +0 -426
  79. package/dist/cjs/contracts/captcha/dist/types-arguments/captcha.cjs +0 -62
  80. package/dist/tests/data/captchas.d.ts +0 -37
  81. package/dist/tests/data/captchas.d.ts.map +0 -1
  82. package/dist/tests/data/captchas.js +0 -902
  83. package/dist/tests/data/captchas.js.map +0 -1
  84. package/dist/tests/data/captchas1.json +0 -53
  85. package/dist/tests/data/captchas2.json +0 -69
  86. package/dist/tests/data/captchas3.json +0 -54
  87. package/dist/tests/data/captchas4.json +0 -53
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const datasets = require("@prosopo/datasets");
4
- require("../contracts/captcha/dist/index.cjs");
4
+ const typesReturns = require("@prosopo/captcha-contract/types-returns");
5
5
  const common = require("@prosopo/common");
6
6
  const contract = require("@prosopo/contract");
7
- const util$2 = require("@prosopo/util");
8
- const util$1 = require("@polkadot/util");
9
- const utilCrypto = require("@polkadot/util-crypto");
7
+ const util$1 = require("@prosopo/util");
8
+ const hex = require("@polkadot/util/hex");
9
+ const random = require("@polkadot/util-crypto/random");
10
10
  const util = require("../util.cjs");
11
- const captcha = require("../contracts/captcha/dist/types-arguments/captcha.cjs");
11
+ const signature = require("@polkadot/util-crypto/signature");
12
+ const string = require("@polkadot/util/string");
12
13
  class Tasks {
13
14
  constructor(env) {
14
15
  if (!env.contractInterface) {
@@ -36,7 +37,7 @@ class Tasks {
36
37
  if (datasetRaw.captchas.length < this.config.captchas.solved.count + this.config.captchas.unsolved.count) {
37
38
  throw new common.ProsopoEnvError("DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED", this.providerSetDataset.name);
38
39
  }
39
- const solutions = datasetRaw.captchas.map((captcha2) => captcha2.solution ? 1 : 0).reduce((partialSum, b) => partialSum + b, 0);
40
+ const solutions = datasetRaw.captchas.map((captcha) => captcha.solution ? 1 : 0).reduce((partialSum, b) => partialSum + b, 0);
40
41
  if (solutions < this.config.captchas.solved.count) {
41
42
  throw new common.ProsopoEnvError("DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED", this.providerSetDataset.name);
42
43
  }
@@ -68,15 +69,15 @@ class Tasks {
68
69
  const captchaDocs = await this.db.getRandomCaptcha(solved, datasetId, size);
69
70
  if (captchaDocs) {
70
71
  const captchas = [];
71
- for (const captcha2 of captchaDocs) {
72
+ for (const captcha of captchaDocs) {
72
73
  const datasetDetails = await this.db.getDatasetDetails(datasetId);
73
74
  const tree = new datasets.CaptchaMerkleTree();
74
75
  if (datasetDetails.contentTree) {
75
76
  tree.layers = datasetDetails.contentTree;
76
- const proof = tree.proof(captcha2.captchaContentId);
77
- delete captcha2.solution;
78
- captcha2.items = util.shuffleArray(captcha2.items);
79
- captchas.push({ captcha: captcha2, proof });
77
+ const proof = tree.proof(captcha.captchaContentId);
78
+ delete captcha.solution;
79
+ captcha.items = util.shuffleArray(captcha.items);
80
+ captchas.push({ captcha, proof });
80
81
  }
81
82
  }
82
83
  return captchas;
@@ -97,11 +98,11 @@ class Tasks {
97
98
  * @param {string} signature
98
99
  * @return {Promise<DappUserSolutionResult>} result containing the contract event
99
100
  */
100
- async dappUserSolution(userAccount, dappAccount, requestHash, captchas, signature) {
101
+ async dappUserSolution(userAccount, dappAccount, requestHash, captchas, signature$1) {
101
102
  if (!await this.dappIsActive(dappAccount)) {
102
103
  throw new common.ProsopoEnvError("CONTRACT.DAPP_NOT_ACTIVE", this.getPaymentInfo.name, {}, { dappAccount });
103
104
  }
104
- const verification = utilCrypto.signatureVerify(util$1.stringToHex(requestHash), signature, userAccount);
105
+ const verification = signature.signatureVerify(string.stringToHex(requestHash), signature$1, userAccount);
105
106
  if (!verification.isValid) {
106
107
  throw new common.ProsopoEnvError("GENERAL.INVALID_SIGNATURE", this.dappUserSolution.name, {}, { userAccount });
107
108
  }
@@ -119,7 +120,7 @@ class Tasks {
119
120
  userAccount,
120
121
  captchaIds
121
122
  );
122
- const userSignature = util$1.hexToU8a(signature);
123
+ const userSignature = hex.hexToU8a(signature$1);
123
124
  const blockNumber = (await contract.getBlockNumber(this.contract.api)).toNumber();
124
125
  if (pendingRequest) {
125
126
  const commit = {
@@ -128,7 +129,7 @@ class Tasks {
128
129
  dappContract: dappAccount,
129
130
  providerAccount: this.contract.pair.address,
130
131
  datasetId: provider.datasetId.toString(),
131
- status: captcha.CaptchaStatus.pending,
132
+ status: typesReturns.CaptchaStatus.pending,
132
133
  userSignature: Array.from(userSignature),
133
134
  requestedAt: pendingRecord.requestedAtBlock,
134
135
  // TODO is this correct or should it be block number?
@@ -185,7 +186,7 @@ class Tasks {
185
186
  */
186
187
  async validateReceivedCaptchasAgainstStoredCaptchas(captchas) {
187
188
  const receivedCaptchas = datasets.parseAndSortCaptchaSolutions(captchas);
188
- const captchaIds = receivedCaptchas.map((captcha2) => captcha2.captchaId);
189
+ const captchaIds = receivedCaptchas.map((captcha) => captcha.captchaId);
189
190
  const storedCaptchas = await this.db.getCaptchaById(captchaIds);
190
191
  if (!storedCaptchas || receivedCaptchas.length !== storedCaptchas.length) {
191
192
  throw new common.ProsopoEnvError(
@@ -195,7 +196,7 @@ class Tasks {
195
196
  captchas
196
197
  );
197
198
  }
198
- if (!storedCaptchas.every((captcha2) => captcha2.datasetId === util$2.at(storedCaptchas, 0).datasetId)) {
199
+ if (!storedCaptchas.every((captcha) => captcha.datasetId === util$1.at(storedCaptchas, 0).datasetId)) {
199
200
  throw new common.ProsopoEnvError(
200
201
  "CAPTCHA.DIFFERENT_DATASET_IDS",
201
202
  this.validateReceivedCaptchasAgainstStoredCaptchas.name,
@@ -213,7 +214,7 @@ class Tasks {
213
214
  async buildTreeAndGetCommitmentId(captchaSolutions) {
214
215
  var _a;
215
216
  const tree = new datasets.CaptchaMerkleTree();
216
- const solutionsHashed = captchaSolutions.map((captcha2) => datasets.computeCaptchaSolutionHash(captcha2));
217
+ const solutionsHashed = captchaSolutions.map((captcha) => datasets.computeCaptchaSolutionHash(captcha));
217
218
  tree.build(solutionsHashed);
218
219
  const commitmentId = (_a = tree.root) == null ? void 0 : _a.hash;
219
220
  if (!commitmentId) {
@@ -266,14 +267,14 @@ class Tasks {
266
267
  unsolved = await this.getCaptchaWithProof(datasetId, false, unsolvedCount);
267
268
  }
268
269
  const captchas = util.shuffleArray([...solved, ...unsolved]);
269
- const salt = utilCrypto.randomAsHex();
270
+ const salt = random.randomAsHex();
270
271
  const requestHash = datasets.computePendingRequestHash(
271
272
  captchas.map((c) => c.captcha.captchaId),
272
273
  userAccount,
273
274
  salt
274
275
  );
275
276
  const currentTime = Date.now();
276
- const timeLimit = captchas.map((captcha2) => captcha2.captcha.timeLimitMs || 3e4).reduce((a, b) => a + b, 0);
277
+ const timeLimit = captchas.map((captcha) => captcha.captcha.timeLimitMs || 3e4).reduce((a, b) => a + b, 0);
277
278
  const deadlineTs = timeLimit + currentTime;
278
279
  const currentBlockNumber = await contract.getBlockNumber(this.contract.api);
279
280
  await this.db.storeDappUserPending(userAccount, requestHash, salt, deadlineTs, currentBlockNumber.toNumber());
@@ -381,7 +382,7 @@ class Tasks {
381
382
  const dappUserSolutions = await this.db.getDappUserCommitmentByAccount(userAccount);
382
383
  if (dappUserSolutions.length > 0) {
383
384
  for (const dappUserSolution of dappUserSolutions) {
384
- if (dappUserSolution.status === captcha.CaptchaStatus.approved) {
385
+ if (dappUserSolution.status === typesReturns.CaptchaStatus.approved) {
385
386
  return dappUserSolution;
386
387
  }
387
388
  }
package/dist/cjs/util.cjs CHANGED
@@ -2,22 +2,23 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const types = require("@prosopo/types");
4
4
  const common = require("@prosopo/common");
5
- const util$1 = require("@prosopo/util");
6
- const keyring = require("@polkadot/keyring");
7
- const util = require("@polkadot/util");
5
+ const util = require("@prosopo/util");
6
+ const address = require("@polkadot/util-crypto/address");
7
+ const hex = require("@polkadot/util/hex");
8
+ const is = require("@polkadot/util/is");
8
9
  const pl = require("nodejs-polars");
9
- function encodeStringAddress(address) {
10
+ function encodeStringAddress(address$1) {
10
11
  try {
11
- return keyring.encodeAddress(util.isHex(address) ? util.hexToU8a(address) : keyring.decodeAddress(address));
12
+ return address.encodeAddress(is.isHex(address$1) ? hex.hexToU8a(address$1) : address.decodeAddress(address$1));
12
13
  } catch (error) {
13
- throw new common.ProsopoEnvError(error, "CONTRACT.INVALID_ADDRESS", {}, address);
14
+ throw new common.ProsopoEnvError(error, "CONTRACT.INVALID_ADDRESS", {}, address$1);
14
15
  }
15
16
  }
16
17
  function shuffleArray(array) {
17
18
  for (let arrayIndex = array.length - 1; arrayIndex > 0; arrayIndex--) {
18
19
  const randIndex = Math.floor(Math.random() * (arrayIndex + 1));
19
- const tmp = util$1.at(array, randIndex, { optional: true });
20
- array[randIndex] = util$1.at(array, arrayIndex, { optional: true });
20
+ const tmp = util.at(array, randIndex, { optional: true });
21
+ array[randIndex] = util.at(array, arrayIndex, { optional: true });
21
22
  array[arrayIndex] = tmp;
22
23
  }
23
24
  return array;
package/dist/index.js CHANGED
@@ -1,16 +1,3 @@
1
- // Copyright 2021-2023 Prosopo (UK) Ltd.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
1
  export * from './tasks/index.js';
15
2
  export * from './util.js';
16
3
  export * from './batch/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
package/dist/scheduler.js CHANGED
@@ -1,18 +1,3 @@
1
- // Copyright 2021-2022 Prosopo (UK) Ltd.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- // [object Object]
15
- // SPDX-License-Identifier: Apache-2.0
16
1
  import { BatchCommitmentsTask } from './batch/commitments.js';
17
2
  import { CalculateSolutionsTask } from './tasks/calculateSolutions.js';
18
3
  import { CronJob } from 'cron';
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,kBAAkB;AAClB,sCAAsC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAAiB,EAAE,MAA2B;IAC5F,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAiB,EAAE,MAA2B;IACrF,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IACnB,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE;QACtB,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAA;KAC3D;IAED,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9G,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC5C,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAAiB,EAAE,MAA2B;IAC5F,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC9C,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAiB,EAAE,MAA2B;IACrF,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IACnB,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE;QACtB,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAA;KAC3D;IAED,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9G,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC5C,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,CAAA;AACf,CAAC"}
@@ -2,9 +2,6 @@ import { ProviderEnvironment } from '@prosopo/types-env';
2
2
  import { Tasks } from './tasks.js';
3
3
  export declare class CalculateSolutionsTask extends Tasks {
4
4
  constructor(env: ProviderEnvironment);
5
- /**
6
- * Apply new captcha solutions to captcha dataset and recalculate merkle tree
7
- */
8
5
  run(): Promise<number>;
9
6
  }
10
7
  //# sourceMappingURL=calculateSolutions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculateSolutions.d.ts","sourceRoot":"","sources":["../../src/tasks/calculateSolutions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,qBAAa,sBAAuB,SAAQ,KAAK;gBACjC,GAAG,EAAE,mBAAmB;IAKpC;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;CAqE/B"}
1
+ {"version":3,"file":"calculateSolutions.d.ts","sourceRoot":"","sources":["../../src/tasks/calculateSolutions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,qBAAa,sBAAuB,SAAQ,KAAK;gBACjC,GAAG,EAAE,mBAAmB;IAQ9B,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;CAqE/B"}
@@ -1,16 +1,3 @@
1
- // Copyright 2021-2023 Prosopo (UK) Ltd.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
1
  import { CaptchaStates } from '@prosopo/types';
15
2
  import { ProsopoEnvError, getLogger } from '@prosopo/common';
16
3
  import { ScheduledTaskNames } from '@prosopo/types';
@@ -22,27 +9,19 @@ export class CalculateSolutionsTask extends Tasks {
22
9
  super(env);
23
10
  this.logger = getLogger(env.config.logLevel, 'CalculateSolutionsTask');
24
11
  }
25
- /**
26
- * Apply new captcha solutions to captcha dataset and recalculate merkle tree
27
- */
28
12
  async run() {
29
13
  try {
30
14
  const taskRunning = await checkIfTaskIsRunning(ScheduledTaskNames.CalculateSolution, this.db);
31
15
  if (!taskRunning) {
32
- // Get the current datasetId from the contract
33
16
  const provider = (await this.contract.methods.getProvider(this.contract.pair.address, {})).value
34
17
  .unwrap()
35
18
  .unwrap();
36
- // Get any unsolved CAPTCHA challenges from the database for this datasetId
37
19
  const unsolvedCaptchas = await this.db.getAllCaptchasByDatasetId(provider.datasetId.toString(), CaptchaStates.Unsolved);
38
- // edge case when a captcha dataset contains no unsolved CAPTCHA challenges
39
20
  if (!unsolvedCaptchas) {
40
21
  return 0;
41
22
  }
42
- // Sort the unsolved CAPTCHA challenges by their captchaId
43
23
  const unsolvedSorted = unsolvedCaptchas.sort(captchaSort);
44
24
  this.logger.info(`There are ${unsolvedSorted.length} unsolved CAPTCHA challenges`);
45
- // Get the solution configuration from the config file
46
25
  const requiredNumberOfSolutions = this.captchaSolutionConfig.requiredNumberOfSolutions;
47
26
  const winningPercentage = this.captchaSolutionConfig.solutionWinningPercentage;
48
27
  const winningNumberOfSolutions = Math.round(requiredNumberOfSolutions * (winningPercentage / 100));
@@ -53,20 +32,15 @@ export class CalculateSolutionsTask extends Tasks {
53
32
  if (solutionsToUpdate.rows().length > 0) {
54
33
  this.logger.info(`There are ${solutionsToUpdate.rows().length} CAPTCHA challenges to update with solutions`);
55
34
  try {
56
- // TODO polars doesn't have the captchaId field in the type
57
35
  const captchaIdsToUpdate = [...solutionsToUpdate['captchaId'].values()];
58
36
  const commitmentIds = solutions
59
37
  .filter((s) => captchaIdsToUpdate.indexOf(s.captchaId) > -1)
60
38
  .map((s) => s.commitmentId);
61
39
  const dataset = await this.db.getDataset(provider.datasetId.toString());
62
40
  dataset.captchas = updateSolutions(solutionsToUpdate, dataset.captchas, this.logger);
63
- // store new solutions in database
64
41
  await this.providerSetDataset(dataset);
65
- // mark user solutions as used to calculate new solutions
66
42
  await this.db.flagProcessedDappUserSolutions(captchaIdsToUpdate);
67
- // mark user commitments as used to calculate new solutions
68
43
  await this.db.flagProcessedDappUserCommitments(commitmentIds);
69
- // remove old captcha challenges from database
70
44
  await this.db.removeCaptchas(captchaIdsToUpdate);
71
45
  return solutionsToUpdate.rows().length;
72
46
  }
@@ -84,7 +58,6 @@ export class CalculateSolutionsTask extends Tasks {
84
58
  return 0;
85
59
  }
86
60
  catch (error) {
87
- // TODO fix error handling
88
61
  throw new ProsopoEnvError(error, 'GENERAL.CALCULATE_CAPTCHA_SOLUTION');
89
62
  }
90
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calculateSolutions.js","sourceRoot":"","sources":["../../src/tasks/calculateSolutions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculateSolutions.js","sourceRoot":"","sources":["../../src/tasks/calculateSolutions.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,3 @@
1
- // Copyright 2021-2023 Prosopo (UK) Ltd.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
1
  export * from './tasks.js';
15
2
  export * from './calculateSolutions.js';
16
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAaA,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA"}
@@ -1,16 +1,13 @@
1
1
  import { Header } from '@polkadot/types/interfaces';
2
2
  import { Captcha, CaptchaConfig, CaptchaSolution, CaptchaSolutionConfig, CaptchaWithProof, DappUserSolutionResult, DatasetRaw, DatasetWithIds, Hash, PendingCaptchaRequest, ProsopoConfigOutput, ProviderRegistered } from '@prosopo/types';
3
3
  import { CaptchaMerkleTree } from '@prosopo/datasets';
4
- import { Provider } from '@prosopo/captcha-contract';
5
- import { ContractPromise } from '@polkadot/api-contract';
4
+ import { Provider } from '@prosopo/captcha-contract/types-returns';
5
+ import { ContractPromise } from '@polkadot/api-contract/promise';
6
6
  import { Database, UserCommitmentRecord } from '@prosopo/types-database';
7
7
  import { Logger } from '@prosopo/common';
8
8
  import { ProsopoCaptchaContract } from '@prosopo/contract';
9
9
  import { ProviderEnvironment } from '@prosopo/types-env';
10
- import { SubmittableResult } from '@polkadot/api';
11
- /**
12
- * @description Tasks that are shared by the API and CLI
13
- */
10
+ import { SubmittableResult } from '@polkadot/api/submittable';
14
11
  export declare class Tasks {
15
12
  contract: ProsopoCaptchaContract;
16
13
  db: Database;
@@ -21,90 +18,30 @@ export declare class Tasks {
21
18
  constructor(env: ProviderEnvironment);
22
19
  providerSetDatasetFromFile(file: JSON): Promise<SubmittableResult | undefined>;
23
20
  providerSetDataset(datasetRaw: DatasetRaw): Promise<SubmittableResult | undefined>;
24
- /**
25
- * @description Get random captchas that are solved or not solved, along with the merkle proof for each
26
- * @param {string} datasetId the id of the data set
27
- * @param {boolean} solved `true` when captcha is solved
28
- * @param {number} size the number of records to be returned
29
- */
30
21
  getCaptchaWithProof(datasetId: Hash, solved: boolean, size: number): Promise<CaptchaWithProof[]>;
31
- /**
32
- * Validate and store the text captcha solution(s) from the Dapp User in a web2 environment
33
- * @param {string} userAccount
34
- * @param {string} dappAccount
35
- * @param {string} requestHash
36
- * @param {JSON} captchas
37
- * @param {string} signature
38
- * @return {Promise<DappUserSolutionResult>} result containing the contract event
39
- */
40
22
  dappUserSolution(userAccount: string, dappAccount: string, requestHash: string, captchas: CaptchaSolution[], signature: string): Promise<DappUserSolutionResult>;
41
- /**
42
- * Validate that the dapp is active in the contract
43
- */
44
23
  dappIsActive(dappAccount: string): Promise<boolean>;
45
- /**
46
- * Gets provider status in contract
47
- */
48
24
  providerStatus(): Promise<ProviderRegistered>;
49
- /**
50
- * Validate length of received captchas array matches length of captchas found in database
51
- * Validate that the datasetId is the same for all captchas and is equal to the datasetId on the stored captchas
52
- */
53
25
  validateReceivedCaptchasAgainstStoredCaptchas(captchas: CaptchaSolution[]): Promise<{
54
26
  storedCaptchas: Captcha[];
55
27
  receivedCaptchas: CaptchaSolution[];
56
28
  captchaIds: string[];
57
29
  }>;
58
- /**
59
- * Build merkle tree and get commitment from contract, returning the tree, commitment, and commitmentId
60
- * @param {CaptchaSolution[]} captchaSolutions
61
- * @returns {Promise<{ tree: CaptchaMerkleTree, commitment: CaptchaSolutionCommitment, commitmentId: string }>}
62
- */
63
30
  buildTreeAndGetCommitmentId(captchaSolutions: CaptchaSolution[]): Promise<{
64
31
  tree: CaptchaMerkleTree;
65
32
  commitmentId: string;
66
33
  }>;
67
- /**
68
- * Validate that a Dapp User is responding to their own pending captcha request
69
- * @param {string} requestHash
70
- * @param {PendingCaptchaRequest} pendingRecord
71
- * @param {string} userAccount
72
- * @param {string[]} captchaIds
73
- */
74
34
  validateDappUserSolutionRequestIsPending(requestHash: string, pendingRecord: PendingCaptchaRequest, userAccount: string, captchaIds: string[]): Promise<boolean>;
75
- /**
76
- * Get two random captchas from specified dataset, create the response and store a hash of it, marked as pending
77
- * @param {string} datasetId
78
- * @param {string} userAccount
79
- */
80
35
  getRandomCaptchasAndRequestHash(datasetId: string, userAccount: string): Promise<{
81
36
  captchas: CaptchaWithProof[];
82
37
  requestHash: string;
83
38
  }>;
84
- /**
85
- * Block by block search for blockNo
86
- */
87
39
  isRecentBlock(contract: ContractPromise, header: Header, blockNo: number, depth?: number): Promise<boolean>;
88
- /**
89
- * Validate that provided `datasetId` was a result of calling `get_random_provider` method
90
- * @param {string} userAccount - Same user that called `get_random_provider`
91
- * @param {string} dappContractAccount - account of dapp that is requesting captcha
92
- * @param {string} datasetId - `captcha_dataset_id` from the result of `get_random_provider`
93
- * @param {string} blockNumber - Block on which `get_random_provider` was called
94
- */
95
40
  validateProviderWasRandomlyChosen(userAccount: string, dappContractAccount: string, datasetId: string | Hash, blockNumber: number): Promise<void>;
96
- /**
97
- * Get payment info for a transaction
98
- * @param {string} userAccount
99
- * @param {string} blockHash
100
- * @param {string} txHash
101
- * @returns {Promise<RuntimeDispatchInfo|null>}
102
- */
103
41
  private getPaymentInfo;
104
42
  getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord>;
105
43
  getDappUserCommitmentByAccount(userAccount: string): Promise<UserCommitmentRecord | undefined>;
106
44
  getProviderDetails(): Promise<Provider>;
107
- /** Get the dataset from the databse */
108
45
  getProviderDataset(datasetId: string): Promise<DatasetWithIds>;
109
46
  }
110
47
  //# sourceMappingURL=tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"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"}