@prosopo/procaptcha-pow 0.3.40 → 0.3.41
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../../src/Services/Manager.ts"],"names":[],"mappings":"AAaA,OAAO,EAGH,mBAAmB,EACnB,2BAA2B,EAG3B,eAAe,EACf,uBAAuB,EAC1B,MAAM,gBAAgB,CAAA;AAcvB,eAAO,MAAM,OAAO,gBACH,2BAA2B,SACjC,eAAe,iBACP,uBAAuB,aAC3B,mBAAmB;;
|
|
1
|
+
{"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../../src/Services/Manager.ts"],"names":[],"mappings":"AAaA,OAAO,EAGH,mBAAmB,EACnB,2BAA2B,EAG3B,eAAe,EACf,uBAAuB,EAC1B,MAAM,gBAAgB,CAAA;AAcvB,eAAO,MAAM,OAAO,gBACH,2BAA2B,SACjC,eAAe,iBACP,uBAAuB,aAC3B,mBAAmB;;CA8LjC,CAAA"}
|
package/dist/Services/Manager.js
CHANGED
|
@@ -3,7 +3,7 @@ import { ApiPromise } from '@polkadot/api/promise/Api';
|
|
|
3
3
|
import { ExtensionWeb2 } from '@prosopo/account';
|
|
4
4
|
import { Keyring } from '@polkadot/keyring';
|
|
5
5
|
import { ProsopoCaptchaContract, wrapQuery } from '@prosopo/contract';
|
|
6
|
-
import {
|
|
6
|
+
import { ProsopoEnvError, trimProviderUrl } from '@prosopo/common';
|
|
7
7
|
import { ProviderApi } from '@prosopo/api';
|
|
8
8
|
import { WsProvider } from '@polkadot/rpc-provider/ws';
|
|
9
9
|
import { ContractAbi as abiJson } from '@prosopo/captcha-contract/contract-info';
|
|
@@ -11,6 +11,7 @@ import { buildUpdateState, getDefaultEvents } from '@prosopo/procaptcha-common';
|
|
|
11
11
|
import { sleep } from '@prosopo/procaptcha';
|
|
12
12
|
import { solvePoW } from '@prosopo/util';
|
|
13
13
|
export const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
14
|
+
const events = getDefaultEvents(onStateUpdate, state, callbacks);
|
|
14
15
|
const defaultState = () => {
|
|
15
16
|
return {
|
|
16
17
|
showModal: false,
|
|
@@ -68,18 +69,19 @@ export const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
68
69
|
const dappAccount = state.dappAccount;
|
|
69
70
|
return dappAccount;
|
|
70
71
|
};
|
|
71
|
-
const getBlockNumber = () => {
|
|
72
|
-
if (!state.blockNumber) {
|
|
73
|
-
throw new ProsopoContractError('CAPTCHA.INVALID_BLOCK_NO', { context: { error: 'Block number not found' } });
|
|
74
|
-
}
|
|
75
|
-
const blockNumber = state.blockNumber;
|
|
76
|
-
return blockNumber;
|
|
77
|
-
};
|
|
78
72
|
const updateState = buildUpdateState(state, onStateUpdate);
|
|
79
73
|
const resetState = () => {
|
|
80
74
|
clearTimeout();
|
|
81
75
|
updateState(defaultState());
|
|
82
76
|
};
|
|
77
|
+
const setValidChallengeTimeout = () => {
|
|
78
|
+
const timeMillis = getConfig().captchas.pow.solutionTimeout;
|
|
79
|
+
const successfullChallengeTimeout = setTimeout(() => {
|
|
80
|
+
updateState({ isHuman: false });
|
|
81
|
+
events.onExpired();
|
|
82
|
+
}, timeMillis);
|
|
83
|
+
updateState({ successfullChallengeTimeout });
|
|
84
|
+
};
|
|
83
85
|
const start = async () => {
|
|
84
86
|
if (state.loading) {
|
|
85
87
|
return;
|
|
@@ -111,7 +113,7 @@ export const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
111
113
|
const providerApi = new ProviderApi(getNetwork(getConfig()), providerUrl, getDappAccount());
|
|
112
114
|
const challenge = await providerApi.getPowCaptchaChallenge(userAccount, getDappAccount());
|
|
113
115
|
const solution = solvePoW(challenge.challenge, challenge.difficulty);
|
|
114
|
-
const verifiedSolution = await providerApi.submitPowCaptchaSolution(challenge, getAccount().account.address, getDappAccount(), getRandomProviderResponse, solution);
|
|
116
|
+
const verifiedSolution = await providerApi.submitPowCaptchaSolution(challenge, getAccount().account.address, getDappAccount(), getRandomProviderResponse, solution, config.captchas.pow.verifiedTimeout);
|
|
115
117
|
if (verifiedSolution[ApiParams.verified]) {
|
|
116
118
|
updateState({
|
|
117
119
|
isHuman: true,
|
|
@@ -124,6 +126,7 @@ export const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
124
126
|
[ApiParams.challenge]: challenge.challenge,
|
|
125
127
|
[ApiParams.blockNumber]: getRandomProviderResponse.blockNumber,
|
|
126
128
|
});
|
|
129
|
+
setValidChallengeTimeout();
|
|
127
130
|
}
|
|
128
131
|
};
|
|
129
132
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../src/Services/Manager.ts"],"names":[],"mappings":"AAaA,OAAO,EAEH,SAAS,EAIT,sBAAsB,GAGzB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../src/Services/Manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ const procaptchaCommon = require("@prosopo/procaptcha-common");
|
|
|
13
13
|
const procaptcha = require("@prosopo/procaptcha");
|
|
14
14
|
const util = require("@prosopo/util");
|
|
15
15
|
const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
16
|
+
const events = procaptchaCommon.getDefaultEvents(onStateUpdate, state, callbacks);
|
|
16
17
|
const defaultState = () => {
|
|
17
18
|
return {
|
|
18
19
|
// note order matters! see buildUpdateState. These fields are set in order, so disable modal first, then set loading to false, etc.
|
|
@@ -79,18 +80,19 @@ const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
79
80
|
const dappAccount = state.dappAccount;
|
|
80
81
|
return dappAccount;
|
|
81
82
|
};
|
|
82
|
-
const getBlockNumber = () => {
|
|
83
|
-
if (!state.blockNumber) {
|
|
84
|
-
throw new common.ProsopoContractError("CAPTCHA.INVALID_BLOCK_NO", { context: { error: "Block number not found" } });
|
|
85
|
-
}
|
|
86
|
-
const blockNumber = state.blockNumber;
|
|
87
|
-
return blockNumber;
|
|
88
|
-
};
|
|
89
83
|
const updateState = procaptchaCommon.buildUpdateState(state, onStateUpdate);
|
|
90
84
|
const resetState = () => {
|
|
91
85
|
clearTimeout();
|
|
92
86
|
updateState(defaultState());
|
|
93
87
|
};
|
|
88
|
+
const setValidChallengeTimeout = () => {
|
|
89
|
+
const timeMillis = getConfig().captchas.pow.solutionTimeout;
|
|
90
|
+
const successfullChallengeTimeout = setTimeout(() => {
|
|
91
|
+
updateState({ isHuman: false });
|
|
92
|
+
events.onExpired();
|
|
93
|
+
}, timeMillis);
|
|
94
|
+
updateState({ successfullChallengeTimeout });
|
|
95
|
+
};
|
|
94
96
|
const start = async () => {
|
|
95
97
|
if (state.loading) {
|
|
96
98
|
return;
|
|
@@ -116,7 +118,7 @@ const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
116
118
|
});
|
|
117
119
|
}
|
|
118
120
|
const contract$1 = await loadContract();
|
|
119
|
-
const
|
|
121
|
+
const events2 = procaptchaCommon.getDefaultEvents(onStateUpdate, state, callbacks);
|
|
120
122
|
const getRandomProviderResponse = await contract.wrapQuery(
|
|
121
123
|
contract$1.query.getRandomActiveProvider,
|
|
122
124
|
contract$1.query
|
|
@@ -130,20 +132,22 @@ const Manager = (configInput, state, onStateUpdate, callbacks) => {
|
|
|
130
132
|
getAccount().account.address,
|
|
131
133
|
getDappAccount(),
|
|
132
134
|
getRandomProviderResponse,
|
|
133
|
-
solution
|
|
135
|
+
solution,
|
|
136
|
+
config.captchas.pow.verifiedTimeout
|
|
134
137
|
);
|
|
135
138
|
if (verifiedSolution[types.ApiParams.verified]) {
|
|
136
139
|
updateState({
|
|
137
140
|
isHuman: true,
|
|
138
141
|
loading: false
|
|
139
142
|
});
|
|
140
|
-
|
|
143
|
+
events2.onHuman({
|
|
141
144
|
providerUrl,
|
|
142
145
|
[types.ApiParams.user]: getAccount().account.address,
|
|
143
146
|
[types.ApiParams.dapp]: getDappAccount(),
|
|
144
147
|
[types.ApiParams.challenge]: challenge.challenge,
|
|
145
148
|
[types.ApiParams.blockNumber]: getRandomProviderResponse.blockNumber
|
|
146
149
|
});
|
|
150
|
+
setValidChallengeTimeout();
|
|
147
151
|
}
|
|
148
152
|
};
|
|
149
153
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/procaptcha-pow",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.41",
|
|
4
4
|
"author": "PROSOPO LIMITED <info@prosopo.io>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -35,19 +35,19 @@
|
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@emotion/react": "^11.11.1",
|
|
38
|
-
"@prosopo/account": "0.3.
|
|
38
|
+
"@prosopo/account": "0.3.41",
|
|
39
39
|
"@polkadot/api": "10.13.1",
|
|
40
40
|
"@polkadot/keyring": "12.6.2",
|
|
41
41
|
"@polkadot/rpc-provider": "10.13.1",
|
|
42
|
-
"@prosopo/api": "0.3.
|
|
43
|
-
"@prosopo/captcha-contract": "0.3.
|
|
44
|
-
"@prosopo/common": "0.3.
|
|
45
|
-
"@prosopo/contract": "0.3.
|
|
46
|
-
"@prosopo/procaptcha": "0.3.
|
|
47
|
-
"@prosopo/procaptcha-common": "0.3.
|
|
48
|
-
"@prosopo/types": "0.3.
|
|
49
|
-
"@prosopo/util": "0.3.
|
|
50
|
-
"@prosopo/web-components": "0.3.
|
|
42
|
+
"@prosopo/api": "0.3.41",
|
|
43
|
+
"@prosopo/captcha-contract": "0.3.41",
|
|
44
|
+
"@prosopo/common": "0.3.41",
|
|
45
|
+
"@prosopo/contract": "0.3.41",
|
|
46
|
+
"@prosopo/procaptcha": "0.3.41",
|
|
47
|
+
"@prosopo/procaptcha-common": "0.3.41",
|
|
48
|
+
"@prosopo/types": "0.3.41",
|
|
49
|
+
"@prosopo/util": "0.3.41",
|
|
50
|
+
"@prosopo/web-components": "0.3.41",
|
|
51
51
|
"react": "^18.3.1"
|
|
52
52
|
},
|
|
53
53
|
"overrides": {
|