@prosopo/provider 0.3.40 → 0.3.42
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.
- package/dist/api/authMiddleware.js +8 -3
- package/dist/api/authMiddleware.js.map +1 -1
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +19 -11
- package/dist/api/captcha.js.map +1 -1
- package/dist/batch/commitments.d.ts.map +1 -1
- package/dist/batch/commitments.js +7 -6
- package/dist/batch/commitments.js.map +1 -1
- package/dist/cjs/api/authMiddleware.cjs +9 -4
- package/dist/cjs/api/captcha.cjs +25 -12
- package/dist/cjs/batch/commitments.cjs +7 -6
- package/dist/cjs/tasks/tasks.cjs +13 -14
- package/dist/tasks/tasks.d.ts +2 -2
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +14 -14
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/contract/helpers.test.d.ts.map +1 -1
- package/dist/tests/contract/helpers.test.js +1 -4
- package/dist/tests/contract/helpers.test.js.map +1 -1
- package/dist/tests/dataUtils/DatabasePopulator.d.ts +0 -1
- package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +1 -1
- package/dist/tests/dataUtils/DatabasePopulator.js +14 -36
- package/dist/tests/dataUtils/DatabasePopulator.js.map +1 -1
- package/dist/tests/dataUtils/funds.d.ts.map +1 -1
- package/dist/tests/dataUtils/funds.js +6 -4
- package/dist/tests/dataUtils/funds.js.map +1 -1
- package/dist/tests/tasks/tasks.test.d.ts.map +1 -1
- package/dist/tests/tasks/tasks.test.js +9 -9
- package/dist/tests/tasks/tasks.test.js.map +1 -1
- package/package.json +13 -13
|
@@ -24,11 +24,13 @@ const extractHeaders = (req) => {
|
|
|
24
24
|
const blocknumber = req.headers.blocknumber;
|
|
25
25
|
if (!signature || !blocknumber) {
|
|
26
26
|
throw new ProsopoApiError('CONTRACT.INVALID_DATA_FORMAT', {
|
|
27
|
-
context: { error: 'Missing signature or block number' },
|
|
27
|
+
context: { error: 'Missing signature or block number', code: 400 },
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
if (Array.isArray(signature) || Array.isArray(blocknumber) || !isHex(signature)) {
|
|
31
|
-
throw new ProsopoApiError('CONTRACT.INVALID_DATA_FORMAT', {
|
|
31
|
+
throw new ProsopoApiError('CONTRACT.INVALID_DATA_FORMAT', {
|
|
32
|
+
context: { error: 'Invalid header format', code: 400 },
|
|
33
|
+
});
|
|
32
34
|
}
|
|
33
35
|
return { signature, blocknumber };
|
|
34
36
|
};
|
|
@@ -46,6 +48,7 @@ const verifyBlockNumber = async (blockNumber, tasks) => {
|
|
|
46
48
|
throw new ProsopoApiError('API.BAD_REQUEST', {
|
|
47
49
|
context: {
|
|
48
50
|
error: `Invalid block number ${parsedBlockNumber}, current block number is ${currentBlockNumber}`,
|
|
51
|
+
code: 400,
|
|
49
52
|
},
|
|
50
53
|
});
|
|
51
54
|
}
|
|
@@ -53,7 +56,9 @@ const verifyBlockNumber = async (blockNumber, tasks) => {
|
|
|
53
56
|
const verifySignature = (signature, blockNumber, pair) => {
|
|
54
57
|
const u8Sig = hexToU8a(signature);
|
|
55
58
|
if (!pair.verify(blockNumber, u8Sig, pair.publicKey)) {
|
|
56
|
-
throw new ProsopoApiError('GENERAL.INVALID_SIGNATURE', {
|
|
59
|
+
throw new ProsopoApiError('GENERAL.INVALID_SIGNATURE', {
|
|
60
|
+
context: { error: 'Signature verification failed', code: 401 },
|
|
61
|
+
});
|
|
57
62
|
}
|
|
58
63
|
};
|
|
59
64
|
//# sourceMappingURL=authMiddleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../src/api/authMiddleware.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,GAAwB,EAAE,EAAE;IACrE,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC7D,IAAI;YACA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;YAEtD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACX,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAA;aAC5D;YAED,wBAAwB,CAAC,GAAG,CAAC,CAAA;YAC7B,MAAM,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAC3C,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAEjD,IAAI,EAAE,CAAA;SACT;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAA;YAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;SAChE;IACL,CAAC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE;IACpC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAmB,CAAA;IACjD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,WAAqB,CAAA;IAErD,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE;QAC5B,MAAM,IAAI,eAAe,CAAC,8BAA8B,EAAE;YACtD,OAAO,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE;
|
|
1
|
+
{"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../src/api/authMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAQxD,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAQzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAQxD,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAQzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAqR9D"}
|
package/dist/api/captcha.js
CHANGED
|
@@ -76,22 +76,30 @@ export function prosopoRouter(env) {
|
|
|
76
76
|
: tasks.getDappUserCommitmentByAccount(parsed.user));
|
|
77
77
|
if (!solution) {
|
|
78
78
|
tasks.logger.debug('Not verified - no solution found');
|
|
79
|
-
|
|
79
|
+
const noSolutionResponse = {
|
|
80
|
+
[ApiParams.status]: req.t('API.USER_NOT_VERIFIED_NO_SOLUTION'),
|
|
81
|
+
[ApiParams.verified]: false,
|
|
82
|
+
};
|
|
83
|
+
return res.json(noSolutionResponse);
|
|
84
|
+
}
|
|
85
|
+
if (solution.status === CaptchaStatus.disapproved) {
|
|
86
|
+
const disapprovedResponse = {
|
|
80
87
|
[ApiParams.status]: req.t('API.USER_NOT_VERIFIED'),
|
|
81
88
|
[ApiParams.verified]: false,
|
|
82
|
-
}
|
|
89
|
+
};
|
|
90
|
+
return res.json(disapprovedResponse);
|
|
83
91
|
}
|
|
84
92
|
if (parsed.maxVerifiedTime) {
|
|
85
93
|
const currentBlockNumber = await getCurrentBlockNumber(tasks.contract.api);
|
|
86
94
|
const blockTimeMs = getBlockTimeMs(tasks.contract.api);
|
|
87
95
|
const timeSinceCompletion = (currentBlockNumber - solution.completedAt) * blockTimeMs;
|
|
88
|
-
const verificationResponse = {
|
|
89
|
-
[ApiParams.status]: req.t('API.USER_NOT_VERIFIED'),
|
|
90
|
-
[ApiParams.verified]: false,
|
|
91
|
-
};
|
|
92
96
|
if (timeSinceCompletion > parsed.maxVerifiedTime) {
|
|
97
|
+
const expiredResponse = {
|
|
98
|
+
[ApiParams.status]: req.t('API.USER_NOT_VERIFIED_TIME_EXPIRED'),
|
|
99
|
+
[ApiParams.verified]: false,
|
|
100
|
+
};
|
|
93
101
|
tasks.logger.debug('Not verified - time run out');
|
|
94
|
-
return res.json(
|
|
102
|
+
return res.json(expiredResponse);
|
|
95
103
|
}
|
|
96
104
|
}
|
|
97
105
|
const isApproved = solution.status === CaptchaStatus.approved;
|
|
@@ -109,8 +117,8 @@ export function prosopoRouter(env) {
|
|
|
109
117
|
});
|
|
110
118
|
router.post(ApiPaths.ServerPowCaptchaVerify, async (req, res, next) => {
|
|
111
119
|
try {
|
|
112
|
-
const { challenge, dapp } = ServerPowCaptchaVerifyRequestBody.parse(req.body);
|
|
113
|
-
const approved = await tasks.serverVerifyPowCaptchaSolution(dapp, challenge);
|
|
120
|
+
const { challenge, dapp, verifiedTimeout } = ServerPowCaptchaVerifyRequestBody.parse(req.body);
|
|
121
|
+
const approved = await tasks.serverVerifyPowCaptchaSolution(dapp, challenge, verifiedTimeout);
|
|
114
122
|
const verificationResponse = {
|
|
115
123
|
status: req.t(approved ? 'API.USER_VERIFIED' : 'API.USER_NOT_VERIFIED'),
|
|
116
124
|
[ApiParams.verified]: approved,
|
|
@@ -141,8 +149,8 @@ export function prosopoRouter(env) {
|
|
|
141
149
|
});
|
|
142
150
|
router.post(ApiPaths.SubmitPowCaptchaSolution, async (req, res, next) => {
|
|
143
151
|
try {
|
|
144
|
-
const { blockNumber, challenge, difficulty, signature, nonce } = SubmitPowCaptchaSolutionBody.parse(req.body);
|
|
145
|
-
const verified = await tasks.verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce);
|
|
152
|
+
const { blockNumber, challenge, difficulty, signature, nonce, verifiedTimeout } = SubmitPowCaptchaSolutionBody.parse(req.body);
|
|
153
|
+
const verified = await tasks.verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce, verifiedTimeout);
|
|
146
154
|
const response = { verified };
|
|
147
155
|
return res.json(response);
|
|
148
156
|
}
|
package/dist/api/captcha.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitments.d.ts","sourceRoot":"","sources":["../../src/batch/commitments.ts"],"names":[],"mappings":";AAcA,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"commitments.d.ts","sourceRoot":"","sources":["../../src/batch/commitments.ts"],"names":[],"mappings":";AAcA,OAAO,EAAE,EAAE,EAAW,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAA2C,MAAM,gBAAgB,CAAA;AACjH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yCAAyC,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,MAAM,EAAwB,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAA2B,MAAM,mBAAmB,CAAA;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAQrD,qBAAa,oBAAoB;IAC7B,QAAQ,EAAE,sBAAsB,CAAA;IAChC,EAAE,EAAE,QAAQ,CAAA;IACZ,iBAAiB,EAAE,uBAAuB,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,KAAK,CAAQ;gBAEjB,iBAAiB,EAAE,uBAAuB,EAC1C,WAAW,EAAE,sBAAsB,EACnC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;IAQZ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAyDnB,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAkFpF,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,GAAG,OAAO;IAOnF,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAMzC,cAAc,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAKjD,sBAAsB,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM;CAW1D"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { BN } from '@polkadot/util/bn';
|
|
1
|
+
import { BN, BN_ZERO } from '@polkadot/util/bn';
|
|
2
2
|
import { ScheduledTaskNames, ScheduledTaskStatus } from '@prosopo/types';
|
|
3
3
|
import { ProsopoContractError } from '@prosopo/common';
|
|
4
|
-
import { batch, encodeStringArgs
|
|
4
|
+
import { batch, encodeStringArgs } from '@prosopo/contract';
|
|
5
5
|
import { checkIfTaskIsRunning } from '../util.js';
|
|
6
|
+
import { oneUnit } from '@prosopo/tx';
|
|
6
7
|
import { randomAsHex } from '@polkadot/util-crypto/random';
|
|
7
8
|
const BN_TEN_THOUSAND = new BN(10000);
|
|
8
9
|
const CONTRACT_METHOD_NAME = 'providerCommitMany';
|
|
@@ -53,9 +54,9 @@ export class BatchCommitmentsTask {
|
|
|
53
54
|
const txs = [];
|
|
54
55
|
const fragment = this.contract.abi.findMessage(CONTRACT_METHOD_NAME);
|
|
55
56
|
const batchedCommitmentIds = [];
|
|
56
|
-
let totalRefTime =
|
|
57
|
-
let totalProofSize =
|
|
58
|
-
let totalFee =
|
|
57
|
+
let totalRefTime = BN_ZERO;
|
|
58
|
+
let totalProofSize = BN_ZERO;
|
|
59
|
+
let totalFee = BN_ZERO;
|
|
59
60
|
const maxBlockWeight = this.contract.api.consts.system.blockWeights.maxBlock;
|
|
60
61
|
const commitmentArray = [];
|
|
61
62
|
let extrinsic;
|
|
@@ -72,7 +73,7 @@ export class BatchCommitmentsTask {
|
|
|
72
73
|
this.logger.debug(`${CONTRACT_METHOD_NAME} paymentInfo:`, paymentInfo.toNumber());
|
|
73
74
|
}
|
|
74
75
|
catch (e) {
|
|
75
|
-
paymentInfo =
|
|
76
|
+
paymentInfo = BN_ZERO;
|
|
76
77
|
}
|
|
77
78
|
totalRefTime = totalRefTime.add(this.contract.api.registry.createType('WeightV2', options.gasLimit).refTime.toBn());
|
|
78
79
|
totalProofSize = totalProofSize.add(this.contract.api.registry.createType('WeightV2', options.gasLimit).proofSize.toBn());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitments.js","sourceRoot":"","sources":["../../src/batch/commitments.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"commitments.js","sourceRoot":"","sources":["../../src/batch/commitments.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,11 +25,13 @@ const extractHeaders = (req) => {
|
|
|
25
25
|
const blocknumber = req.headers.blocknumber;
|
|
26
26
|
if (!signature || !blocknumber) {
|
|
27
27
|
throw new common.ProsopoApiError("CONTRACT.INVALID_DATA_FORMAT", {
|
|
28
|
-
context: { error: "Missing signature or block number" }
|
|
28
|
+
context: { error: "Missing signature or block number", code: 400 }
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
if (Array.isArray(signature) || Array.isArray(blocknumber) || !util.isHex(signature)) {
|
|
32
|
-
throw new common.ProsopoApiError("CONTRACT.INVALID_DATA_FORMAT", {
|
|
32
|
+
throw new common.ProsopoApiError("CONTRACT.INVALID_DATA_FORMAT", {
|
|
33
|
+
context: { error: "Invalid header format", code: 400 }
|
|
34
|
+
});
|
|
33
35
|
}
|
|
34
36
|
return { signature, blocknumber };
|
|
35
37
|
};
|
|
@@ -44,7 +46,8 @@ const verifyBlockNumber = async (blockNumber, tasks) => {
|
|
|
44
46
|
if (isNaN(parsedBlockNumber) || parsedBlockNumber < currentBlockNumber - 500 || parsedBlockNumber > currentBlockNumber) {
|
|
45
47
|
throw new common.ProsopoApiError("API.BAD_REQUEST", {
|
|
46
48
|
context: {
|
|
47
|
-
error: `Invalid block number ${parsedBlockNumber}, current block number is ${currentBlockNumber}
|
|
49
|
+
error: `Invalid block number ${parsedBlockNumber}, current block number is ${currentBlockNumber}`,
|
|
50
|
+
code: 400
|
|
48
51
|
}
|
|
49
52
|
});
|
|
50
53
|
}
|
|
@@ -52,7 +55,9 @@ const verifyBlockNumber = async (blockNumber, tasks) => {
|
|
|
52
55
|
const verifySignature = (signature, blockNumber, pair) => {
|
|
53
56
|
const u8Sig = util.hexToU8a(signature);
|
|
54
57
|
if (!pair.verify(blockNumber, u8Sig, pair.publicKey)) {
|
|
55
|
-
throw new common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", {
|
|
58
|
+
throw new common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", {
|
|
59
|
+
context: { error: "Signature verification failed", code: 401 }
|
|
60
|
+
});
|
|
56
61
|
}
|
|
57
62
|
};
|
|
58
63
|
exports.authMiddleware = authMiddleware;
|
package/dist/cjs/api/captcha.cjs
CHANGED
|
@@ -81,22 +81,30 @@ function prosopoRouter(env) {
|
|
|
81
81
|
const solution = await (parsed.commitmentId ? tasks$1.getDappUserCommitmentById(parsed.commitmentId) : tasks$1.getDappUserCommitmentByAccount(parsed.user));
|
|
82
82
|
if (!solution) {
|
|
83
83
|
tasks$1.logger.debug("Not verified - no solution found");
|
|
84
|
-
|
|
84
|
+
const noSolutionResponse = {
|
|
85
|
+
[types.ApiParams.status]: req.t("API.USER_NOT_VERIFIED_NO_SOLUTION"),
|
|
86
|
+
[types.ApiParams.verified]: false
|
|
87
|
+
};
|
|
88
|
+
return res.json(noSolutionResponse);
|
|
89
|
+
}
|
|
90
|
+
if (solution.status === typesReturns.CaptchaStatus.disapproved) {
|
|
91
|
+
const disapprovedResponse = {
|
|
85
92
|
[types.ApiParams.status]: req.t("API.USER_NOT_VERIFIED"),
|
|
86
93
|
[types.ApiParams.verified]: false
|
|
87
|
-
}
|
|
94
|
+
};
|
|
95
|
+
return res.json(disapprovedResponse);
|
|
88
96
|
}
|
|
89
97
|
if (parsed.maxVerifiedTime) {
|
|
90
98
|
const currentBlockNumber = await contract.getCurrentBlockNumber(tasks$1.contract.api);
|
|
91
99
|
const blockTimeMs = contract.getBlockTimeMs(tasks$1.contract.api);
|
|
92
100
|
const timeSinceCompletion = (currentBlockNumber - solution.completedAt) * blockTimeMs;
|
|
93
|
-
const verificationResponse = {
|
|
94
|
-
[types.ApiParams.status]: req.t("API.USER_NOT_VERIFIED"),
|
|
95
|
-
[types.ApiParams.verified]: false
|
|
96
|
-
};
|
|
97
101
|
if (timeSinceCompletion > parsed.maxVerifiedTime) {
|
|
102
|
+
const expiredResponse = {
|
|
103
|
+
[types.ApiParams.status]: req.t("API.USER_NOT_VERIFIED_TIME_EXPIRED"),
|
|
104
|
+
[types.ApiParams.verified]: false
|
|
105
|
+
};
|
|
98
106
|
tasks$1.logger.debug("Not verified - time run out");
|
|
99
|
-
return res.json(
|
|
107
|
+
return res.json(expiredResponse);
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
const isApproved = solution.status === typesReturns.CaptchaStatus.approved;
|
|
@@ -113,8 +121,8 @@ function prosopoRouter(env) {
|
|
|
113
121
|
});
|
|
114
122
|
router.post(types.ApiPaths.ServerPowCaptchaVerify, async (req, res, next) => {
|
|
115
123
|
try {
|
|
116
|
-
const { challenge, dapp } = types.ServerPowCaptchaVerifyRequestBody.parse(req.body);
|
|
117
|
-
const approved = await tasks$1.serverVerifyPowCaptchaSolution(dapp, challenge);
|
|
124
|
+
const { challenge, dapp, verifiedTimeout } = types.ServerPowCaptchaVerifyRequestBody.parse(req.body);
|
|
125
|
+
const approved = await tasks$1.serverVerifyPowCaptchaSolution(dapp, challenge, verifiedTimeout);
|
|
118
126
|
const verificationResponse = {
|
|
119
127
|
status: req.t(approved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED"),
|
|
120
128
|
[types.ApiParams.verified]: approved
|
|
@@ -143,10 +151,15 @@ function prosopoRouter(env) {
|
|
|
143
151
|
});
|
|
144
152
|
router.post(types.ApiPaths.SubmitPowCaptchaSolution, async (req, res, next) => {
|
|
145
153
|
try {
|
|
146
|
-
const { blockNumber, challenge, difficulty, signature, nonce } = types.SubmitPowCaptchaSolutionBody.parse(
|
|
147
|
-
|
|
154
|
+
const { blockNumber, challenge, difficulty, signature, nonce, verifiedTimeout } = types.SubmitPowCaptchaSolutionBody.parse(req.body);
|
|
155
|
+
const verified = await tasks$1.verifyPowCaptchaSolution(
|
|
156
|
+
blockNumber,
|
|
157
|
+
challenge,
|
|
158
|
+
difficulty,
|
|
159
|
+
signature,
|
|
160
|
+
nonce,
|
|
161
|
+
verifiedTimeout
|
|
148
162
|
);
|
|
149
|
-
const verified = await tasks$1.verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce);
|
|
150
163
|
const response = { verified };
|
|
151
164
|
return res.json(response);
|
|
152
165
|
} catch (err) {
|
|
@@ -5,6 +5,7 @@ const types = require("@prosopo/types");
|
|
|
5
5
|
const common = require("@prosopo/common");
|
|
6
6
|
const contract = require("@prosopo/contract");
|
|
7
7
|
const util = require("../util.cjs");
|
|
8
|
+
const tx = require("@prosopo/tx");
|
|
8
9
|
const random = require("@polkadot/util-crypto/random");
|
|
9
10
|
const BN_TEN_THOUSAND = new bn.BN(1e4);
|
|
10
11
|
const CONTRACT_METHOD_NAME = "providerCommitMany";
|
|
@@ -66,9 +67,9 @@ class BatchCommitmentsTask {
|
|
|
66
67
|
const txs = [];
|
|
67
68
|
const fragment = this.contract.abi.findMessage(CONTRACT_METHOD_NAME);
|
|
68
69
|
const batchedCommitmentIds = [];
|
|
69
|
-
let totalRefTime =
|
|
70
|
-
let totalProofSize =
|
|
71
|
-
let totalFee =
|
|
70
|
+
let totalRefTime = bn.BN_ZERO;
|
|
71
|
+
let totalProofSize = bn.BN_ZERO;
|
|
72
|
+
let totalFee = bn.BN_ZERO;
|
|
72
73
|
const maxBlockWeight = this.contract.api.consts.system.blockWeights.maxBlock;
|
|
73
74
|
const commitmentArray = [];
|
|
74
75
|
let extrinsic;
|
|
@@ -87,7 +88,7 @@ class BatchCommitmentsTask {
|
|
|
87
88
|
paymentInfo = (await extrinsic.paymentInfo(this.contract.pair)).partialFee.toBn();
|
|
88
89
|
this.logger.debug(`${CONTRACT_METHOD_NAME} paymentInfo:`, paymentInfo.toNumber());
|
|
89
90
|
} catch (e) {
|
|
90
|
-
paymentInfo =
|
|
91
|
+
paymentInfo = bn.BN_ZERO;
|
|
91
92
|
}
|
|
92
93
|
totalRefTime = totalRefTime.add(
|
|
93
94
|
this.contract.api.registry.createType("WeightV2", options.gasLimit).refTime.toBn()
|
|
@@ -100,13 +101,13 @@ class BatchCommitmentsTask {
|
|
|
100
101
|
this.logger.debug(
|
|
101
102
|
"Free balance",
|
|
102
103
|
"`",
|
|
103
|
-
(await this.contract.api.query.system.account(this.contract.pair.address)).data.free.toBn().div(
|
|
104
|
+
(await this.contract.api.query.system.account(this.contract.pair.address)).data.free.toBn().div(tx.oneUnit(this.contract.api)).toString(),
|
|
104
105
|
"`",
|
|
105
106
|
"UNIT"
|
|
106
107
|
);
|
|
107
108
|
this.logger.debug(
|
|
108
109
|
"Total Fee `",
|
|
109
|
-
totalFee.div(
|
|
110
|
+
totalFee.div(tx.oneUnit(this.contract.api)).toString(),
|
|
110
111
|
"`",
|
|
111
112
|
"UNIT"
|
|
112
113
|
);
|
package/dist/cjs/tasks/tasks.cjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
3
4
|
const datasets = require("@prosopo/datasets");
|
|
4
5
|
const typesReturns = require("@prosopo/captcha-contract/types-returns");
|
|
5
6
|
const common = require("@prosopo/common");
|
|
@@ -116,17 +117,16 @@ class Tasks {
|
|
|
116
117
|
* @param {string} difficulty - how many leading zeroes the solution must have
|
|
117
118
|
* @param {string} signature - proof that the Provider provided the challenge
|
|
118
119
|
* @param {string} nonce - the string that the user has found that satisfies the PoW challenge
|
|
120
|
+
* @param {number} timeout - the time in milliseconds since the Provider was selected to provide the PoW captcha
|
|
119
121
|
*/
|
|
120
|
-
async verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature$1, nonce) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
if (blockNumber < latestBlockNumber - 5) {
|
|
122
|
+
async verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature$1, nonce, timeout) {
|
|
123
|
+
const recent = contract.verifyRecency(this.contract.api, blockNumber, timeout);
|
|
124
|
+
if (!recent) {
|
|
124
125
|
throw new common.ProsopoContractError("CONTRACT.INVALID_BLOCKHASH", {
|
|
125
126
|
context: {
|
|
126
|
-
ERROR:
|
|
127
|
+
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1e3} seconds`,
|
|
127
128
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
128
|
-
blockNumber
|
|
129
|
-
latestBlockNumber
|
|
129
|
+
blockNumber
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
132
|
}
|
|
@@ -155,7 +155,7 @@ class Tasks {
|
|
|
155
155
|
await this.db.storePowCaptchaRecord(challenge, false);
|
|
156
156
|
return true;
|
|
157
157
|
}
|
|
158
|
-
async serverVerifyPowCaptchaSolution(dappAccount, challenge) {
|
|
158
|
+
async serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout) {
|
|
159
159
|
const challengeRecord = await this.db.getPowCaptchaRecordByChallenge(challenge);
|
|
160
160
|
if (!challengeRecord) {
|
|
161
161
|
throw new common.ProsopoEnvError("DATABASE.CAPTCHA_GET_FAILED", {
|
|
@@ -175,21 +175,20 @@ class Tasks {
|
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
}
|
|
178
|
-
const latestHeader = await this.contract.api.rpc.chain.getHeader();
|
|
179
|
-
const latestBlockNumber = latestHeader.number.toNumber();
|
|
180
178
|
if (!blocknumber) {
|
|
181
179
|
throw new common.ProsopoContractError("CONTRACT.INVALID_BLOCKHASH", {
|
|
182
180
|
context: {
|
|
183
|
-
ERROR: "
|
|
181
|
+
ERROR: "Block number not provided",
|
|
184
182
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
185
183
|
blocknumber
|
|
186
184
|
}
|
|
187
185
|
});
|
|
188
186
|
}
|
|
189
|
-
|
|
187
|
+
const recent = contract.verifyRecency(this.contract.api, parseInt(blocknumber), timeout);
|
|
188
|
+
if (!recent) {
|
|
190
189
|
throw new common.ProsopoContractError("CONTRACT.INVALID_BLOCKHASH", {
|
|
191
190
|
context: {
|
|
192
|
-
ERROR:
|
|
191
|
+
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1e3} seconds`,
|
|
193
192
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
194
193
|
blocknumber
|
|
195
194
|
}
|
|
@@ -387,7 +386,7 @@ class Tasks {
|
|
|
387
386
|
salt
|
|
388
387
|
);
|
|
389
388
|
const currentTime = Date.now();
|
|
390
|
-
const timeLimit = captchas.map((captcha) => captcha.captcha.timeLimitMs ||
|
|
389
|
+
const timeLimit = captchas.map((captcha) => captcha.captcha.timeLimitMs || types.DEFAULT_IMAGE_CAPTCHA_TIMEOUT).reduce((a, b) => a + b, 0);
|
|
391
390
|
const deadlineTs = timeLimit + currentTime;
|
|
392
391
|
const currentBlockNumber = await contract.getCurrentBlockNumber(this.contract.api);
|
|
393
392
|
await this.db.storeDappUserPending(userAccount, requestHash, salt, deadlineTs, currentBlockNumber);
|
package/dist/tasks/tasks.d.ts
CHANGED
|
@@ -19,8 +19,8 @@ export declare class Tasks {
|
|
|
19
19
|
providerSetDataset(datasetRaw: DatasetRaw): Promise<SubmittableResult | undefined>;
|
|
20
20
|
getCaptchaWithProof(datasetId: Hash, solved: boolean, size: number): Promise<CaptchaWithProof[]>;
|
|
21
21
|
getPowCaptchaChallenge(userAccount: string, dappAccount: string, origin: string): Promise<PoWCaptcha>;
|
|
22
|
-
verifyPowCaptchaSolution(blockNumber: number, challenge: string, difficulty: number, signature: string, nonce: number): Promise<boolean>;
|
|
23
|
-
serverVerifyPowCaptchaSolution(dappAccount: string, challenge: string): Promise<boolean>;
|
|
22
|
+
verifyPowCaptchaSolution(blockNumber: number, challenge: string, difficulty: number, signature: string, nonce: number, timeout: number): Promise<boolean>;
|
|
23
|
+
serverVerifyPowCaptchaSolution(dappAccount: string, challenge: string, timeout: number): Promise<boolean>;
|
|
24
24
|
dappUserSolution(userAccount: string, dappAccount: string, requestHash: string, captchas: CaptchaSolution[], signature: string): Promise<DappUserSolutionResult>;
|
|
25
25
|
dappIsActive(dappAccount: string): Promise<boolean>;
|
|
26
26
|
providerStatus(): Promise<ProviderRegistered>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"AAaA,OAAO,EAAa,MAAM,EAAsC,MAAM,4BAA4B,CAAA;AAClG,OAAO,EACH,OAAO,EACP,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks/tasks.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { DEFAULT_IMAGE_CAPTCHA_TIMEOUT, } from '@prosopo/types';
|
|
1
2
|
import { CaptchaMerkleTree, buildDataset, compareCaptchaSolutions, computeCaptchaSolutionHash, computePendingRequestHash, parseAndSortCaptchaSolutions, parseCaptchaDataset, } from '@prosopo/datasets';
|
|
2
3
|
import { CaptchaStatus } from '@prosopo/captcha-contract/types-returns';
|
|
3
4
|
import { ProsopoContractError, ProsopoEnvError, getLogger } from '@prosopo/common';
|
|
4
|
-
import { getCurrentBlockNumber, wrapQuery } from '@prosopo/contract';
|
|
5
|
+
import { getCurrentBlockNumber, verifyRecency, wrapQuery } from '@prosopo/contract';
|
|
5
6
|
import { at } from '@prosopo/util';
|
|
6
7
|
import { hexToU8a } from '@polkadot/util/hex';
|
|
7
8
|
import { randomAsHex } from '@polkadot/util-crypto/random';
|
|
@@ -92,16 +93,14 @@ export class Tasks {
|
|
|
92
93
|
const signature = u8aToHex(this.contract.pair.sign(stringToHex(challenge)));
|
|
93
94
|
return { challenge, difficulty, signature };
|
|
94
95
|
}
|
|
95
|
-
async verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce) {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
if (blockNumber < latestBlockNumber - 5) {
|
|
96
|
+
async verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce, timeout) {
|
|
97
|
+
const recent = verifyRecency(this.contract.api, blockNumber, timeout);
|
|
98
|
+
if (!recent) {
|
|
99
99
|
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
100
100
|
context: {
|
|
101
|
-
ERROR:
|
|
101
|
+
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1000} seconds`,
|
|
102
102
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
103
103
|
blockNumber,
|
|
104
|
-
latestBlockNumber,
|
|
105
104
|
},
|
|
106
105
|
});
|
|
107
106
|
}
|
|
@@ -133,7 +132,7 @@ export class Tasks {
|
|
|
133
132
|
await this.db.storePowCaptchaRecord(challenge, false);
|
|
134
133
|
return true;
|
|
135
134
|
}
|
|
136
|
-
async serverVerifyPowCaptchaSolution(dappAccount, challenge) {
|
|
135
|
+
async serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout) {
|
|
137
136
|
const challengeRecord = await this.db.getPowCaptchaRecordByChallenge(challenge);
|
|
138
137
|
if (!challengeRecord) {
|
|
139
138
|
throw new ProsopoEnvError('DATABASE.CAPTCHA_GET_FAILED', {
|
|
@@ -153,21 +152,20 @@ export class Tasks {
|
|
|
153
152
|
},
|
|
154
153
|
});
|
|
155
154
|
}
|
|
156
|
-
const latestHeader = await this.contract.api.rpc.chain.getHeader();
|
|
157
|
-
const latestBlockNumber = latestHeader.number.toNumber();
|
|
158
155
|
if (!blocknumber) {
|
|
159
156
|
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
160
157
|
context: {
|
|
161
|
-
ERROR: '
|
|
158
|
+
ERROR: 'Block number not provided',
|
|
162
159
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
163
160
|
blocknumber,
|
|
164
161
|
},
|
|
165
162
|
});
|
|
166
163
|
}
|
|
167
|
-
|
|
164
|
+
const recent = verifyRecency(this.contract.api, parseInt(blocknumber), timeout);
|
|
165
|
+
if (!recent) {
|
|
168
166
|
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
169
167
|
context: {
|
|
170
|
-
ERROR:
|
|
168
|
+
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1000} seconds`,
|
|
171
169
|
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
172
170
|
blocknumber,
|
|
173
171
|
},
|
|
@@ -320,7 +318,9 @@ export class Tasks {
|
|
|
320
318
|
const salt = randomAsHex();
|
|
321
319
|
const requestHash = computePendingRequestHash(captchas.map((c) => c.captcha.captchaId), userAccount, salt);
|
|
322
320
|
const currentTime = Date.now();
|
|
323
|
-
const timeLimit = captchas
|
|
321
|
+
const timeLimit = captchas
|
|
322
|
+
.map((captcha) => captcha.captcha.timeLimitMs || DEFAULT_IMAGE_CAPTCHA_TIMEOUT)
|
|
323
|
+
.reduce((a, b) => a + b, 0);
|
|
324
324
|
const deadlineTs = timeLimit + currentTime;
|
|
325
325
|
const currentBlockNumber = await getCurrentBlockNumber(this.contract.api);
|
|
326
326
|
await this.db.storeDappUserPending(userAccount, requestHash, salt, deadlineTs, currentBlockNumber);
|