@prosopo/server 0.3.5 → 0.3.36
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/cjs/server.cjs +77 -49
- package/dist/server.d.ts +6 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +46 -48
- package/dist/server.js.map +1 -1
- package/package.json +6 -5
package/dist/cjs/server.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const Api = require("@polkadot/api/promise/Api");
|
|
4
|
-
const util$1 = require("@polkadot/util");
|
|
5
4
|
const types = require("@prosopo/types");
|
|
6
5
|
const keyring = require("@polkadot/keyring");
|
|
7
6
|
const common = require("@prosopo/common");
|
|
@@ -10,6 +9,8 @@ const api = require("@prosopo/api");
|
|
|
10
9
|
const ws = require("@polkadot/rpc-provider/ws");
|
|
11
10
|
const contractInfo = require("@prosopo/captcha-contract/contract-info");
|
|
12
11
|
const util = require("@prosopo/util");
|
|
12
|
+
const DEFAULT_MAX_VERIFIED_TIME_CACHED = 60 * 1e3;
|
|
13
|
+
const DEFAULT_MAX_VERIFIED_TIME_CONTRACT = 5 * 60 * 1e3;
|
|
13
14
|
class ProsopoServer {
|
|
14
15
|
constructor(config, pair) {
|
|
15
16
|
this.config = config;
|
|
@@ -73,10 +74,6 @@ class ProsopoServer {
|
|
|
73
74
|
}
|
|
74
75
|
return this.contract;
|
|
75
76
|
}
|
|
76
|
-
async getViableHistoricBlockCount(maxVerifiedTime) {
|
|
77
|
-
const expectedBlockTime = contract.getExpectedBlockTime(this.getApi());
|
|
78
|
-
return new util$1.BN(maxVerifiedTime || 6e4).div(expectedBlockTime).toNumber();
|
|
79
|
-
}
|
|
80
77
|
/**
|
|
81
78
|
* Check if the provider was actually chosen at blockNumber.
|
|
82
79
|
* - If no blockNumber is provided, check the last `n` blocks where `n` is the number of blocks that fit in
|
|
@@ -86,34 +83,69 @@ class ProsopoServer {
|
|
|
86
83
|
* @param dapp
|
|
87
84
|
* @param providerUrl
|
|
88
85
|
* @param blockNumber
|
|
89
|
-
* @param maxVerifiedTime
|
|
90
86
|
* @returns
|
|
91
87
|
*/
|
|
92
|
-
async checkRandomProvider(user, dapp, providerUrl, blockNumber
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
(_, index) => currentBlockNumber - index
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
while (blocksToCheck.length > 0) {
|
|
105
|
-
const block = await this.getApi().rpc.chain.getBlockHash(blocksToCheck.pop());
|
|
106
|
-
const getRandomProviderResponse = await this.getContract().queryAtBlock(
|
|
107
|
-
block,
|
|
108
|
-
"getRandomActiveProvider",
|
|
109
|
-
[user, dapp]
|
|
110
|
-
);
|
|
111
|
-
if (common.trimProviderUrl(getRandomProviderResponse.provider.url.toString()) === providerUrl) {
|
|
112
|
-
return getRandomProviderResponse.provider;
|
|
113
|
-
}
|
|
88
|
+
async checkRandomProvider(user, dapp, providerUrl, blockNumber) {
|
|
89
|
+
const block = await this.getApi().rpc.chain.getBlockHash(blockNumber);
|
|
90
|
+
const getRandomProviderResponse = await this.getContract().queryAtBlock(
|
|
91
|
+
block,
|
|
92
|
+
"getRandomActiveProvider",
|
|
93
|
+
[user, dapp]
|
|
94
|
+
);
|
|
95
|
+
if (common.trimProviderUrl(getRandomProviderResponse.provider.url.toString()) === providerUrl) {
|
|
96
|
+
return getRandomProviderResponse.provider;
|
|
114
97
|
}
|
|
115
98
|
return void 0;
|
|
116
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Verify the time since the blockNumber is equal to or less than the maxVerifiedTime.
|
|
102
|
+
* @param maxVerifiedTime
|
|
103
|
+
* @param blockNumber
|
|
104
|
+
*/
|
|
105
|
+
async verifyRecency(blockNumber, maxVerifiedTime) {
|
|
106
|
+
const contractApi = await this.getContractApi();
|
|
107
|
+
const currentBlock = await contract.getCurrentBlockNumber(contractApi.api);
|
|
108
|
+
const blocksPassed = currentBlock - blockNumber;
|
|
109
|
+
const blockTime = contract.getBlockTimeMs(contractApi.api);
|
|
110
|
+
return blockTime * blocksPassed <= maxVerifiedTime;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Verify the user with the contract. We check the contract to see if the user has completed a captcha in the
|
|
114
|
+
* past. If they have, we check the time since the last correct captcha is within the maxVerifiedTime and we check
|
|
115
|
+
* whether the user is marked as human within the contract.
|
|
116
|
+
* @param user
|
|
117
|
+
* @param maxVerifiedTime
|
|
118
|
+
*/
|
|
119
|
+
async verifyContract(user, maxVerifiedTime = DEFAULT_MAX_VERIFIED_TIME_CONTRACT) {
|
|
120
|
+
const contractApi = await this.getContractApi();
|
|
121
|
+
this.logger.info("Provider URL not provided. Verifying with contract.");
|
|
122
|
+
const correctCaptchaBlockNumber = (await contractApi.query.dappOperatorLastCorrectCaptcha(user)).value.unwrap().unwrap().before.valueOf();
|
|
123
|
+
const verifyRecency = await this.verifyRecency(correctCaptchaBlockNumber, maxVerifiedTime);
|
|
124
|
+
const isHuman = (await contractApi.query.dappOperatorIsHumanUser(user, this.config.solutionThreshold)).value.unwrap().unwrap();
|
|
125
|
+
return isHuman && verifyRecency;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Verify the user with the provider URL passed in. If a challenge is provided, we use the challenge to verify the
|
|
129
|
+
* user. If not, we use the user, dapp, and optionally the commitmentID, to verify the user.
|
|
130
|
+
* @param providerUrl
|
|
131
|
+
* @param dapp
|
|
132
|
+
* @param user
|
|
133
|
+
* @param blockNumber
|
|
134
|
+
* @param challenge
|
|
135
|
+
* @param commitmentId
|
|
136
|
+
* @param maxVerifiedTime
|
|
137
|
+
*/
|
|
138
|
+
async verifyProvider(providerUrl, dapp, user, blockNumber, challenge, commitmentId, maxVerifiedTime = DEFAULT_MAX_VERIFIED_TIME_CACHED) {
|
|
139
|
+
this.logger.info("Verifying with provider.");
|
|
140
|
+
const providerApi = await this.getProviderApi(providerUrl);
|
|
141
|
+
if (challenge) {
|
|
142
|
+
const result2 = await providerApi.submitPowCaptchaVerify(challenge, dapp);
|
|
143
|
+
return result2.verified;
|
|
144
|
+
}
|
|
145
|
+
const result = await providerApi.verifyDappUser(dapp, user, blockNumber, commitmentId, maxVerifiedTime);
|
|
146
|
+
const verifyRecency = await this.verifyRecency(result.blockNumber, maxVerifiedTime);
|
|
147
|
+
return result.verified && verifyRecency;
|
|
148
|
+
}
|
|
117
149
|
/**
|
|
118
150
|
*
|
|
119
151
|
* @param payload Info output by procaptcha on completion of the captcha process
|
|
@@ -122,29 +154,23 @@ class ProsopoServer {
|
|
|
122
154
|
*/
|
|
123
155
|
async isVerified(payload, maxVerifiedTime) {
|
|
124
156
|
const { user, dapp, providerUrl, commitmentId, blockNumber, challenge } = payload;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
if (providerUrl) {
|
|
132
|
-
this.logger.info("Random provider is valid. Verifying with provider.");
|
|
133
|
-
const providerApi = await this.getProviderApi(providerUrl);
|
|
134
|
-
if (challenge) {
|
|
135
|
-
const result2 = await providerApi.submitPowCaptchaVerify(challenge, dapp);
|
|
136
|
-
return result2.verified;
|
|
137
|
-
}
|
|
138
|
-
const result = await providerApi.verifyDappUser(dapp, user, commitmentId, maxVerifiedTime);
|
|
139
|
-
return result.verified;
|
|
140
|
-
} else {
|
|
141
|
-
this.logger.info("Provider URL not provided. Verifying with contract.");
|
|
142
|
-
const blockTime = contractApi.api.consts.babe.expectedBlockTime.toNumber();
|
|
143
|
-
const blocksSinceLastCorrectCaptcha = (await contractApi.query.dappOperatorLastCorrectCaptcha(user)).value.unwrap().unwrap().before.valueOf();
|
|
144
|
-
if (maxVerifiedTime && blockTime * blocksSinceLastCorrectCaptcha > maxVerifiedTime) {
|
|
157
|
+
if (providerUrl && blockNumber) {
|
|
158
|
+
const randomProvider = await this.checkRandomProvider(user, dapp, providerUrl, blockNumber);
|
|
159
|
+
if (!randomProvider) {
|
|
160
|
+
this.logger.info("Random provider selection failed");
|
|
145
161
|
return false;
|
|
146
162
|
}
|
|
147
|
-
return
|
|
163
|
+
return await this.verifyProvider(
|
|
164
|
+
providerUrl,
|
|
165
|
+
dapp,
|
|
166
|
+
user,
|
|
167
|
+
blockNumber,
|
|
168
|
+
challenge,
|
|
169
|
+
commitmentId,
|
|
170
|
+
maxVerifiedTime
|
|
171
|
+
);
|
|
172
|
+
} else {
|
|
173
|
+
return await this.verifyContract(user, maxVerifiedTime);
|
|
148
174
|
}
|
|
149
175
|
}
|
|
150
176
|
async getContractApi() {
|
|
@@ -159,4 +185,6 @@ class ProsopoServer {
|
|
|
159
185
|
return this.contract;
|
|
160
186
|
}
|
|
161
187
|
}
|
|
188
|
+
exports.DEFAULT_MAX_VERIFIED_TIME_CACHED = DEFAULT_MAX_VERIFIED_TIME_CACHED;
|
|
189
|
+
exports.DEFAULT_MAX_VERIFIED_TIME_CONTRACT = DEFAULT_MAX_VERIFIED_TIME_CONTRACT;
|
|
162
190
|
exports.ProsopoServer = ProsopoServer;
|
package/dist/server.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { Logger } from '@prosopo/common';
|
|
|
6
6
|
import { ProsopoCaptchaContract } from '@prosopo/contract';
|
|
7
7
|
import { ProviderApi } from '@prosopo/api';
|
|
8
8
|
import { WsProvider } from '@polkadot/rpc-provider/ws';
|
|
9
|
+
export declare const DEFAULT_MAX_VERIFIED_TIME_CACHED: number;
|
|
10
|
+
export declare const DEFAULT_MAX_VERIFIED_TIME_CONTRACT: number;
|
|
9
11
|
export declare class ProsopoServer {
|
|
10
12
|
config: ProsopoServerConfigOutput;
|
|
11
13
|
contract: ProsopoCaptchaContract | undefined;
|
|
@@ -27,8 +29,10 @@ export declare class ProsopoServer {
|
|
|
27
29
|
getSigner(): Promise<void>;
|
|
28
30
|
getApi(): ApiPromise;
|
|
29
31
|
getContract(): ProsopoCaptchaContract;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
checkRandomProvider(user: string, dapp: string, providerUrl: string, blockNumber: number): Promise<import("@prosopo/captcha-contract/types-returns").Provider | undefined>;
|
|
33
|
+
verifyRecency(blockNumber: number, maxVerifiedTime: number): Promise<boolean>;
|
|
34
|
+
verifyContract(user: string, maxVerifiedTime?: number): Promise<boolean>;
|
|
35
|
+
verifyProvider(providerUrl: string, dapp: string, user: string, blockNumber: number, challenge?: string, commitmentId?: string, maxVerifiedTime?: number): Promise<boolean>;
|
|
32
36
|
isVerified(payload: ProcaptchaOutput, maxVerifiedTime?: number): Promise<boolean>;
|
|
33
37
|
getContractApi(): Promise<ProsopoCaptchaContract>;
|
|
34
38
|
}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EACH,WAAW,EACX,aAAa,EAEb,gBAAgB,EAChB,yBAAyB,EAC5B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAY,MAAM,EAA+C,MAAM,iBAAiB,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAyD,MAAM,mBAAmB,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAItD,eAAO,MAAM,gCAAgC,QAAY,CAAA;AACzD,eAAO,MAAM,kCAAkC,QAAgB,CAAA;AAE/D,qBAAa,aAAa;IACtB,MAAM,EAAE,yBAAyB,CAAA;IACjC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAA;IAC5C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7B,GAAG,EAAE,UAAU,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,aAAa,CAAA;gBAEV,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,EAAE,WAAW;IAiBpD,cAAc,CAAC,WAAW,EAAE,MAAM;IAIxC,sBAAsB,IAAI,MAAM;IAOjC,OAAO;IAUP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBhC,MAAM,IAAI,UAAU;IAOpB,WAAW,IAAI,sBAAsB;IAkB/B,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAoBjF,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IAmB1D,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,SAAqC;IAyBjF,cAAc,CACvB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,SAAmC;IAoBzC,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BjF,cAAc,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAWjE"}
|
package/dist/server.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { ApiPromise } from '@polkadot/api/promise/Api';
|
|
2
|
-
import { BN } from '@polkadot/util';
|
|
3
2
|
import { NetworkNamesSchema, } from '@prosopo/types';
|
|
4
3
|
import { Keyring } from '@polkadot/keyring';
|
|
5
4
|
import { ProsopoEnvError, getLogger, trimProviderUrl } from '@prosopo/common';
|
|
6
|
-
import { ProsopoCaptchaContract,
|
|
5
|
+
import { ProsopoCaptchaContract, getBlockTimeMs, getCurrentBlockNumber, getZeroAddress } from '@prosopo/contract';
|
|
7
6
|
import { ProviderApi } from '@prosopo/api';
|
|
8
7
|
import { WsProvider } from '@polkadot/rpc-provider/ws';
|
|
9
8
|
import { ContractAbi as abiJson } from '@prosopo/captcha-contract/contract-info';
|
|
10
9
|
import { get } from '@prosopo/util';
|
|
10
|
+
export const DEFAULT_MAX_VERIFIED_TIME_CACHED = 60 * 1000;
|
|
11
|
+
export const DEFAULT_MAX_VERIFIED_TIME_CONTRACT = 5 * 60 * 1000;
|
|
11
12
|
export class ProsopoServer {
|
|
12
13
|
constructor(config, pair) {
|
|
13
14
|
this.config = config;
|
|
@@ -72,60 +73,57 @@ export class ProsopoServer {
|
|
|
72
73
|
}
|
|
73
74
|
return this.contract;
|
|
74
75
|
}
|
|
75
|
-
async
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let blocksToCheck = [];
|
|
81
|
-
if (blockNumber) {
|
|
82
|
-
blocksToCheck = [blockNumber];
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
const numberOfHistoricBlocksToCheck = await this.getViableHistoricBlockCount(maxVerifiedTime);
|
|
86
|
-
const currentBlockNumber = (await this.getApi().rpc.chain.getBlock()).block.header.number.toNumber();
|
|
87
|
-
blocksToCheck = Array.from({ length: numberOfHistoricBlocksToCheck }, (_, index) => currentBlockNumber - index);
|
|
88
|
-
}
|
|
89
|
-
while (blocksToCheck.length > 0) {
|
|
90
|
-
const block = await this.getApi().rpc.chain.getBlockHash(blocksToCheck.pop());
|
|
91
|
-
const getRandomProviderResponse = await this.getContract().queryAtBlock(block, 'getRandomActiveProvider', [user, dapp]);
|
|
92
|
-
if (trimProviderUrl(getRandomProviderResponse.provider.url.toString()) === providerUrl) {
|
|
93
|
-
return getRandomProviderResponse.provider;
|
|
94
|
-
}
|
|
76
|
+
async checkRandomProvider(user, dapp, providerUrl, blockNumber) {
|
|
77
|
+
const block = await this.getApi().rpc.chain.getBlockHash(blockNumber);
|
|
78
|
+
const getRandomProviderResponse = await this.getContract().queryAtBlock(block, 'getRandomActiveProvider', [user, dapp]);
|
|
79
|
+
if (trimProviderUrl(getRandomProviderResponse.provider.url.toString()) === providerUrl) {
|
|
80
|
+
return getRandomProviderResponse.provider;
|
|
95
81
|
}
|
|
96
82
|
return undefined;
|
|
97
83
|
}
|
|
98
|
-
async
|
|
99
|
-
const { user, dapp, providerUrl, commitmentId, blockNumber, challenge } = payload;
|
|
84
|
+
async verifyRecency(blockNumber, maxVerifiedTime) {
|
|
100
85
|
const contractApi = await this.getContractApi();
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
86
|
+
const currentBlock = await getCurrentBlockNumber(contractApi.api);
|
|
87
|
+
const blocksPassed = currentBlock - blockNumber;
|
|
88
|
+
const blockTime = getBlockTimeMs(contractApi.api);
|
|
89
|
+
return blockTime * blocksPassed <= maxVerifiedTime;
|
|
90
|
+
}
|
|
91
|
+
async verifyContract(user, maxVerifiedTime = DEFAULT_MAX_VERIFIED_TIME_CONTRACT) {
|
|
92
|
+
const contractApi = await this.getContractApi();
|
|
93
|
+
this.logger.info('Provider URL not provided. Verifying with contract.');
|
|
94
|
+
const correctCaptchaBlockNumber = (await contractApi.query.dappOperatorLastCorrectCaptcha(user)).value
|
|
95
|
+
.unwrap()
|
|
96
|
+
.unwrap()
|
|
97
|
+
.before.valueOf();
|
|
98
|
+
const verifyRecency = await this.verifyRecency(correctCaptchaBlockNumber, maxVerifiedTime);
|
|
99
|
+
const isHuman = (await contractApi.query.dappOperatorIsHumanUser(user, this.config.solutionThreshold)).value
|
|
100
|
+
.unwrap()
|
|
101
|
+
.unwrap();
|
|
102
|
+
return isHuman && verifyRecency;
|
|
103
|
+
}
|
|
104
|
+
async verifyProvider(providerUrl, dapp, user, blockNumber, challenge, commitmentId, maxVerifiedTime = DEFAULT_MAX_VERIFIED_TIME_CACHED) {
|
|
105
|
+
this.logger.info('Verifying with provider.');
|
|
106
|
+
const providerApi = await this.getProviderApi(providerUrl);
|
|
107
|
+
if (challenge) {
|
|
108
|
+
const result = await providerApi.submitPowCaptchaVerify(challenge, dapp);
|
|
114
109
|
return result.verified;
|
|
115
110
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
111
|
+
const result = await providerApi.verifyDappUser(dapp, user, blockNumber, commitmentId, maxVerifiedTime);
|
|
112
|
+
const verifyRecency = await this.verifyRecency(result.blockNumber, maxVerifiedTime);
|
|
113
|
+
return result.verified && verifyRecency;
|
|
114
|
+
}
|
|
115
|
+
async isVerified(payload, maxVerifiedTime) {
|
|
116
|
+
const { user, dapp, providerUrl, commitmentId, blockNumber, challenge } = payload;
|
|
117
|
+
if (providerUrl && blockNumber) {
|
|
118
|
+
const randomProvider = await this.checkRandomProvider(user, dapp, providerUrl, blockNumber);
|
|
119
|
+
if (!randomProvider) {
|
|
120
|
+
this.logger.info('Random provider selection failed');
|
|
124
121
|
return false;
|
|
125
122
|
}
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
|
|
123
|
+
return await this.verifyProvider(providerUrl, dapp, user, blockNumber, challenge, commitmentId, maxVerifiedTime);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return await this.verifyContract(user, maxVerifiedTime);
|
|
129
127
|
}
|
|
130
128
|
}
|
|
131
129
|
async getContractApi() {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.36",
|
|
4
4
|
"description": "NodeJS package for server side communication with the prosopo captcha client",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
|
+
"test": "echo \"No test specified\"",
|
|
18
19
|
"clean": "tsc --build --clean",
|
|
19
20
|
"build": "tsc --build --verbose tsconfig.json",
|
|
20
21
|
"build:cjs": "npx vite --config vite.cjs.config.ts build",
|
|
@@ -41,10 +42,10 @@
|
|
|
41
42
|
"@polkadot/keyring": "12.6.2",
|
|
42
43
|
"@polkadot/rpc-provider": "10.11.2",
|
|
43
44
|
"@polkadot/types": "10.11.2",
|
|
44
|
-
"@prosopo/api": "0.3.
|
|
45
|
-
"@prosopo/contract": "0.3.
|
|
46
|
-
"@prosopo/captcha-contract": "0.3.
|
|
47
|
-
"@prosopo/types": "0.3.
|
|
45
|
+
"@prosopo/api": "0.3.36",
|
|
46
|
+
"@prosopo/contract": "0.3.36",
|
|
47
|
+
"@prosopo/captcha-contract": "0.3.36",
|
|
48
|
+
"@prosopo/types": "0.3.36"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"tslib": "2.6.2",
|