Skip to content
This repository was archived by the owner on Mar 18, 2025. It is now read-only.

Commit 944206a

Browse files
committed
refactor config shape
1 parent 896c83b commit 944206a

18 files changed

+121
-67
lines changed

apps/1kv-backend-staging/templates/kusama-otv-backend.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,12 @@ spec:
6060
"skipUnclaimed": true,
6161
"minSelfStake": 10000000000000,
6262
"commission": 150000000,
63-
"unclaimedEraThreshold": 4
63+
"unclaimedEraThreshold": 4,
64+
"sanctionedGeoArea": {
65+
"skip": false,
66+
"sanctionedCountries": ["RU", "IR", "CU", "KP", "SY"],
67+
"sanctionedRegions": ["Crimea", "Autonomous Republic of Crimea", "Republic of Crimea", "Luhansk", "Luhanska Oblast", "Luhanska", "Luganskaya Oblast’", "Luganskaya", "Donetsk", "Donetska Oblast", "Donetskaya Oblast’", "Donetska", "Donetskaya", "Sevastopol City", "Sevastopol", "Gorod Sevastopol" ]
68+
}
6469
},
6570
"cron": {
6671
"monitor": "0 */15 * * * *",

apps/1kv-backend-staging/templates/polkadot-otv-backend.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ spec:
5959
"skipUnclaimed": true,
6060
"minSelfStake": 50000000000000,
6161
"commission": 50000000,
62-
"unclaimedEraThreshold": 1
62+
"unclaimedEraThreshold": 1,
63+
"sanctionedGeoArea": {
64+
"skip": false,
65+
"sanctionedCountries": ["RU", "IR", "CU", "KP", "SY"],
66+
"sanctionedRegions": ["Crimea", "Autonomous Republic of Crimea", "Republic of Crimea", "Luhansk", "Luhanska Oblast", "Luhanska", "Luganskaya Oblast’", "Luganskaya", "Donetsk", "Donetska Oblast", "Donetskaya Oblast’", "Donetska", "Donetskaya", "Sevastopol City", "Sevastopol", "Gorod Sevastopol" ]
67+
}
6368
},
6469
"cron": {
6570
"monitor": "0 */15 * * * *",

apps/1kv-backend/templates/kusama-otv-backend.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ spec:
5858
"skipUnclaimed": true,
5959
"minSelfStake": 10000000000000,
6060
"commission": 150000000,
61-
"unclaimedEraThreshold": 4
61+
"unclaimedEraThreshold": 4,
62+
"sanctionedGeoArea": {
63+
"skip": false,
64+
"sanctionedCountries": ["RU", "IR", "CU", "KP", "SY"],
65+
"sanctionedRegions": ["Crimea", "Autonomous Republic of Crimea", "Republic of Crimea", "Luhansk", "Luhanska Oblast", "Luhanska", "Luganskaya Oblast’", "Luganskaya", "Donetsk", "Donetska Oblast", "Donetskaya Oblast’", "Donetska", "Donetskaya", "Sevastopol City", "Sevastopol", "Gorod Sevastopol" ]
66+
}
6267
},
6368
"cron": {
6469
"monitor": "0 */15 * * * *",

apps/1kv-backend/templates/polkadot-otv-backend.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ spec:
5757
"skipUnclaimed": true,
5858
"minSelfStake": 50000000000000,
5959
"commission": 50000000,
60-
"unclaimedEraThreshold": 1
60+
"unclaimedEraThreshold": 1,
61+
"sanctionedGeoArea": {
62+
"skip": false,
63+
"sanctionedCountries": ["RU", "IR", "CU", "KP", "SY"],
64+
"sanctionedRegions": ["Crimea", "Autonomous Republic of Crimea", "Republic of Crimea", "Luhansk", "Luhanska Oblast", "Luhanska", "Luganskaya Oblast’", "Luganskaya", "Donetsk", "Donetska Oblast", "Donetskaya Oblast’", "Donetska", "Donetskaya", "Sevastopol City", "Sevastopol", "Gorod Sevastopol" ]
65+
}
6166
},
6267
"cron": {
6368
"monitor": "0 */15 * * * *",

charts/otv-backend/values.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ config: |
4949
"constraints": {
5050
"skipConnectionTime": false,
5151
"skipIdentity": false,
52-
"skipSanctionedGeoArea": false
52+
"sanctionedGeoArea": {
53+
"skip": false,
54+
"sanctionedCountries": ["XXX"],
55+
"sanctionedRegions": ["XXX" ]
56+
}
5357
},
5458
"db": {
5559
"mongo": {

packages/common/src/config.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ export type ConfigSchema = {
2727
skipClientUpgrade: boolean;
2828
skipUnclaimed: boolean;
2929
skipClaiming: boolean;
30-
skipSanctionedGeoArea: boolean;
3130
forceClientVersion: string;
3231
minSelfStake: number;
3332
commission: number;
3433
unclaimedEraThreshold: number;
35-
sanctionedCountries: string[];
36-
sanctionedRegions: string[];
34+
sanctionedGeoArea?: {
35+
skip: boolean;
36+
sanctionedCountries: string[];
37+
sanctionedRegions: string[];
38+
};
3739
};
3840
cron: {
3941
monitor: string;

packages/common/src/constraints/CheckCandidates.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export const checkCandidate = async (
131131
}
132132

133133
const sanctionedGeoAreaValid =
134-
constraints.config?.constraints?.skipSanctionedGeoArea == true
134+
constraints.config?.constraints?.sanctionedGeoArea?.skip == true
135135
? true
136136
: (await checkSanctionedGeoArea(constraints.config, candidate)) ||
137137
false;

packages/common/src/constraints/ValidityChecks.ts

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -442,38 +442,49 @@ export const checkSanctionedGeoArea = async (
442442
candidate: Candidate,
443443
): Promise<boolean> => {
444444
try {
445-
const location = await queries.getCandidateLocation(
446-
candidate.slotId,
447-
candidate.name,
448-
);
449-
if (location && location.region && location.country) {
450-
const sanctionedCountries = config.constraints?.sanctionedCountries.map(
451-
(x) => x.trim().toLowerCase(),
452-
);
453-
const sanctionedRegions = config.constraints?.sanctionedRegions.map((x) =>
454-
x.trim().toLowerCase(),
455-
);
445+
if (
446+
!config.constraints?.sanctionedGeoArea?.sanctionedCountries?.length &&
447+
!config.constraints?.sanctionedGeoArea?.sanctionedRegions?.length
448+
) {
449+
setSanctionedGeoAreaValidity(candidate, true);
450+
return true;
451+
}
456452

457-
if (
458-
sanctionedCountries.includes(location.country.trim().toLowerCase()) ||
459-
sanctionedRegions.includes(location.region.trim().toLowerCase())
460-
) {
461-
logger.info(
462-
`${candidate.name} is in a sanctioned location: Country: ${location.country}, Region: ${location.region}`,
463-
{
464-
label: "Constraints",
465-
},
466-
);
467-
await setSanctionedGeoAreaValidity(candidate.slotId, false);
468-
return false;
469-
} else {
470-
await setSanctionedGeoAreaValidity(candidate.slotId, true);
471-
return true;
472-
}
473-
} else {
474-
await setSanctionedGeoAreaValidity(candidate.slotId, true);
453+
const location = await queries.getCandidateLocation(candidate.slotId);
454+
if (!location?.region || !location?.country) {
455+
setSanctionedGeoAreaValidity(candidate, true);
475456
return true;
476457
}
458+
459+
const sanctionedCountries = config.constraints?.sanctionedGeoArea
460+
?.sanctionedCountries
461+
? config.constraints.sanctionedGeoArea.sanctionedCountries.map((x) =>
462+
x.trim().toLowerCase(),
463+
)
464+
: [];
465+
const sanctionedRegions = config.constraints?.sanctionedGeoArea
466+
?.sanctionedRegions
467+
? config.constraints.sanctionedGeoArea.sanctionedRegions.map((x) =>
468+
x.trim().toLowerCase(),
469+
)
470+
: [];
471+
472+
if (
473+
sanctionedCountries.includes(location.country.trim().toLowerCase()) ||
474+
sanctionedRegions.includes(location.region.trim().toLowerCase())
475+
) {
476+
logger.info(
477+
`${candidate.name} is in a sanctioned location: Country: ${location.country}, Region: ${location.region}`,
478+
{
479+
label: "Constraints",
480+
},
481+
);
482+
await setSanctionedGeoAreaValidity(candidate, false);
483+
return false;
484+
}
485+
486+
await setSanctionedGeoAreaValidity(candidate, true);
487+
return true;
477488
} catch (e) {
478489
logger.error(
479490
`Error checking location for sanctions: ${e}`,

packages/common/src/db/queries/Candidate.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,10 +1055,9 @@ export const setBeefyKeysInvalidity = async (
10551055

10561056
// Set Sanctions Validity Status
10571057
export const setSanctionedGeoAreaValidity = async (
1058-
slotId: number,
1058+
candidate: Candidate,
10591059
isValid: boolean,
10601060
): Promise<void> => {
1061-
const candidate = await getCandidateBySlotId(slotId);
10621061
const invalidityMessage = `${candidate.name} in sanctioned area.`;
10631062
setCandidateInvalidity(
10641063
candidate,

packages/core/config/kusama.current.dev.sample.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@
1818
"skipIdentity": false,
1919
"skipClientUpgrade": false,
2020
"skipUnclaimed": false,
21-
"skipSanctionedGeoArea": false,
2221
"forceClientVersion": "v0.9.30",
2322
"minSelfStake": 10000000000000,
2423
"commission": 150000000,
2524
"unclaimedEraThreshold": 4,
26-
"sanctionedCountries": ["RU", "IR", "CU", "KP", "SY"],
27-
"sanctionedRegions": ["Crimea", "Autonomous Republic of Crimea", "Republic of Crimea", "Luhansk", "Luhanska Oblast", "Luhanska", "Luganskaya Oblast’", "Luganskaya", "Donetsk", "Donetska Oblast", "Donetskaya Oblast’", "Donetska", "Donetskaya", "Sevastopol City", "Sevastopol", "Gorod Sevastopol" ]
25+
"sanctionedGeoArea": {
26+
"skip": false,
27+
"sanctionedCountries": ["XXX"],
28+
"sanctionedRegions": ["XXX"]
29+
}
2830
},
2931
"cron": {
3032
"monitor": "0 */15 * * * *",

0 commit comments

Comments
 (0)