From ff29f81e4882ed029382461218f8f57c50e8c301 Mon Sep 17 00:00:00 2001 From: will pankiewicz Date: Fri, 16 Feb 2024 11:36:10 +0100 Subject: [PATCH 1/4] handle null bond --- packages/common/src/db/queries/Nominator.ts | 42 +++++++-------------- packages/common/src/types.ts | 11 ++++++ packages/core/src/nominator.ts | 2 +- packages/core/src/scorekeeper.ts | 2 +- 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/packages/common/src/db/queries/Nominator.ts b/packages/common/src/db/queries/Nominator.ts index be9a01223..e11aa24f3 100644 --- a/packages/common/src/db/queries/Nominator.ts +++ b/packages/common/src/db/queries/Nominator.ts @@ -1,6 +1,7 @@ import { CandidateModel, NominatorModel } from "../models"; import logger from "../../logger"; import { getCandidate } from "./Candidate"; +import { Types } from "../../index"; /** * Removes any stale nominator data from the database. @@ -25,25 +26,20 @@ export const removeStaleNominators = async ( /** Nominator accessor functions */ export const addNominator = async ( - nominator: any, - // address: string, - // stash: string, - // proxy: string, - // bonded: number, - // now: number, - // proxyDelay: number, - // rewardDestination: string - - // avgStake: number, - // nominateAmount: number, - // newBondedAmount: number + nominator: Types.Nominator, ): Promise => { - const { address, stash, proxy, bonded, now, proxyDelay, rewardDestination } = - nominator; - - logger.info(`(Db::addNominator) Adding ${address} at ${now}.`); - try { + const { + address, + stash, + proxy, + bonded, + now, + proxyDelay, + rewardDestination, + } = nominator; + + logger.info(`(Db::addNominator) Adding ${address} at ${now}.`); const data = await NominatorModel.findOne({ address }).lean(); if (!data) { const nominator = new NominatorModel({ @@ -53,9 +49,6 @@ export const addNominator = async ( bonded, proxyDelay, rewardDestination, - // avgStake, - // nominateAmount, - // newBondedAmount, current: [], lastNomination: 0, createdAt: now, @@ -75,19 +68,10 @@ export const addNominator = async ( bonded, proxyDelay, rewardDestination, - // avgStake, - // nominateAmount, - // newBondedAmount, }, ); } catch (e) { logger.info(JSON.stringify(e)); - logger.info(address); - logger.info(stash); - logger.info(proxy); - logger.info(bonded); - logger.info(proxyDelay); - logger.info(rewardDestination); } }; diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index 8387d9c54..ad2f499b1 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -8,6 +8,17 @@ export type NominatorConfig = { proxyDelay?: number; }; +// Interface for when adding a nominator entry to the DB +export interface Nominator { + address: string; + stash: string; + proxy: string; + bonded: number; + now: number; + proxyDelay: number; + rewardDestination: string; +} + export type ClaimerConfig = { seed: string; }; diff --git a/packages/core/src/nominator.ts b/packages/core/src/nominator.ts index 7c3c52edd..cc7a7e65d 100644 --- a/packages/core/src/nominator.ts +++ b/packages/core/src/nominator.ts @@ -100,7 +100,7 @@ export default class Nominator { const ledger = await api.query.staking.ledger(this.controller); if (!ledger.isSome) { logger.warn(`Account ${this.controller} is not bonded!`); - return "0x"; + return this.controller; } const { stash } = ledger.unwrap(); diff --git a/packages/core/src/scorekeeper.ts b/packages/core/src/scorekeeper.ts index a90aacb4f..1f86f8d97 100644 --- a/packages/core/src/scorekeeper.ts +++ b/packages/core/src/scorekeeper.ts @@ -356,7 +356,7 @@ export default class ScoreKeeper { // const { nominationNum, newBondedAmount, targetValStake } = // await autoNumNominations(api, nom); - const nominator = { + const nominator: Types.Nominator = { address: nom.controller, stash: stash, proxy: proxy, From 4792c1492c6c5811a9f13098eaf715eee8689139 Mon Sep 17 00:00:00 2001 From: will pankiewicz Date: Fri, 16 Feb 2024 11:48:02 +0100 Subject: [PATCH 2/4] add types to nominator db queries --- .../templates/kusama-otv-backend.yaml | 2 +- .../templates/polkadot-otv-backend.yaml | 2 +- .../templates/kusama-otv-backend.yaml | 2 +- .../templates/polkadot-otv-backend.yaml | 2 +- charts/otv-backend/Chart.yaml | 4 ++-- packages/common/package.json | 2 +- packages/common/src/db/models.ts | 15 +++++++++++++++ packages/common/src/db/queries/Nominator.ts | 18 ++++++++++-------- packages/core/package.json | 2 +- packages/gateway/package.json | 2 +- packages/telemetry/package.json | 2 +- packages/worker/package.json | 2 +- 12 files changed, 36 insertions(+), 19 deletions(-) diff --git a/apps/1kv-backend-staging/templates/kusama-otv-backend.yaml b/apps/1kv-backend-staging/templates/kusama-otv-backend.yaml index 061d12ca0..418038f61 100644 --- a/apps/1kv-backend-staging/templates/kusama-otv-backend.yaml +++ b/apps/1kv-backend-staging/templates/kusama-otv-backend.yaml @@ -17,7 +17,7 @@ spec: source: repoURL: https://w3f.github.io/helm-charts/ chart: otv-backend - targetRevision: v3.0.17 + targetRevision: v3.0.18 plugin: env: - name: HELM_VALUES diff --git a/apps/1kv-backend-staging/templates/polkadot-otv-backend.yaml b/apps/1kv-backend-staging/templates/polkadot-otv-backend.yaml index 464dee06a..862d4ee1f 100644 --- a/apps/1kv-backend-staging/templates/polkadot-otv-backend.yaml +++ b/apps/1kv-backend-staging/templates/polkadot-otv-backend.yaml @@ -17,7 +17,7 @@ spec: source: repoURL: https://w3f.github.io/helm-charts/ chart: otv-backend - targetRevision: v3.0.17 + targetRevision: v3.0.18 plugin: env: - name: HELM_VALUES diff --git a/apps/1kv-backend/templates/kusama-otv-backend.yaml b/apps/1kv-backend/templates/kusama-otv-backend.yaml index 88af8384a..691ebd230 100644 --- a/apps/1kv-backend/templates/kusama-otv-backend.yaml +++ b/apps/1kv-backend/templates/kusama-otv-backend.yaml @@ -17,7 +17,7 @@ spec: source: repoURL: https://w3f.github.io/helm-charts/ chart: otv-backend - targetRevision: v3.0.17 + targetRevision: v3.0.18 plugin: env: - name: HELM_VALUES diff --git a/apps/1kv-backend/templates/polkadot-otv-backend.yaml b/apps/1kv-backend/templates/polkadot-otv-backend.yaml index 4d110ffca..b8f734647 100644 --- a/apps/1kv-backend/templates/polkadot-otv-backend.yaml +++ b/apps/1kv-backend/templates/polkadot-otv-backend.yaml @@ -17,7 +17,7 @@ spec: source: repoURL: https://w3f.github.io/helm-charts/ chart: otv-backend - targetRevision: v3.0.17 + targetRevision: v3.0.18 plugin: env: - name: HELM_VALUES diff --git a/charts/otv-backend/Chart.yaml b/charts/otv-backend/Chart.yaml index 90f1deabc..76486f549 100644 --- a/charts/otv-backend/Chart.yaml +++ b/charts/otv-backend/Chart.yaml @@ -1,5 +1,5 @@ description: 1K Validators Backend name: otv-backend -version: v3.0.17 -appVersion: v3.0.17 +version: v3.0.18 +appVersion: v3.0.18 apiVersion: v2 diff --git a/packages/common/package.json b/packages/common/package.json index 37ca7fe5b..d337a558d 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@1kv/common", - "version": "3.0.17", + "version": "3.0.18", "description": "Services for running the Thousand Validator Program.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/common/src/db/models.ts b/packages/common/src/db/models.ts index 6f9e47f63..1b79d092c 100644 --- a/packages/common/src/db/models.ts +++ b/packages/common/src/db/models.ts @@ -321,6 +321,21 @@ export const EraSchema = new Schema({ export const EraModel = mongoose.model("Era", EraSchema); +export interface Nominator { + address: string; + stash?: string; + proxy?: string; + bonded?: number; + avgStake?: number; + nominateAmount?: number; + proxyDelay?: number; + rewardDestination?: string; + newBondedAmount?: number; + current: string[]; + lastNomination?: number; + createdAt?: number; +} + export const NominatorSchema = new Schema({ // The controller address address: String, diff --git a/packages/common/src/db/queries/Nominator.ts b/packages/common/src/db/queries/Nominator.ts index 74fa5ca75..4ae78b0ad 100644 --- a/packages/common/src/db/queries/Nominator.ts +++ b/packages/common/src/db/queries/Nominator.ts @@ -1,4 +1,4 @@ -import { CandidateModel, NominatorModel } from "../models"; +import { CandidateModel, Nominator, NominatorModel } from "../models"; import logger from "../../logger"; import { getCandidate } from "./Candidate"; import { Types } from "../../index"; @@ -166,11 +166,13 @@ export const setLastNomination = async ( return true; }; -export const getCurrentTargets = async (address: string): Promise => { +export const getCurrentTargets = async (address: string): Promise => { try { - const nominator = await NominatorModel.findOne({ address }).lean(); + const nominator = await NominatorModel.findOne({ + address, + }).lean(); if (nominator) { - return nominator?.current; + return nominator?.current || []; } else { return []; } @@ -179,10 +181,10 @@ export const getCurrentTargets = async (address: string): Promise => { } }; -export const allNominators = async (): Promise => { - return NominatorModel.find({ address: /.*/ }).lean().exec(); +export const allNominators = async (): Promise => { + return NominatorModel.find({ address: /.*/ }).lean(); }; -export const getNominator = async (stash: string): Promise => { - return NominatorModel.findOne({ stash: stash }).lean().exec(); +export const getNominator = async (stash: string): Promise => { + return NominatorModel.findOne({ stash: stash }).lean(); }; diff --git a/packages/core/package.json b/packages/core/package.json index 6707669a4..a7fc00e0f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@1kv/core", - "version": "3.0.17", + "version": "3.0.18", "description": "Services for running the Thousand Validator Program.", "main": "index.js", "scripts": { diff --git a/packages/gateway/package.json b/packages/gateway/package.json index c1d710e1e..b6eafd695 100644 --- a/packages/gateway/package.json +++ b/packages/gateway/package.json @@ -1,6 +1,6 @@ { "name": "@1kv/gateway", - "version": "3.0.17", + "version": "3.0.18", "description": "Services for running the Thousand Validator Program.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 8fbb0e440..4efcac2cf 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@1kv/telemetry", - "version": "3.0.17", + "version": "3.0.18", "description": "Services for running the Thousand Validator Program.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index acb1371cb..0df668b7e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,6 +1,6 @@ { "name": "@1kv/worker", - "version": "3.0.17", + "version": "3.0.18", "description": "Services for running the Thousand Validator Program.", "main": "build/index.js", "types": "build/index.d.ts", From 4b6b13641987aa6d8889a82eda957dfb1a992c82 Mon Sep 17 00:00:00 2001 From: will pankiewicz Date: Fri, 16 Feb 2024 11:53:55 +0100 Subject: [PATCH 3/4] add types to nominator db queries --- packages/common/src/db/index.ts | 2 ++ packages/common/src/db/models.ts | 3 ++- packages/common/src/db/queries/Nominator.ts | 5 +---- packages/common/src/index.ts | 2 ++ packages/common/src/types.ts | 11 ----------- packages/core/src/scorekeeper.ts | 3 ++- 6 files changed, 9 insertions(+), 17 deletions(-) diff --git a/packages/common/src/db/index.ts b/packages/common/src/db/index.ts index 523d1e214..743b65ca2 100644 --- a/packages/common/src/db/index.ts +++ b/packages/common/src/db/index.ts @@ -18,6 +18,8 @@ export type NodeDetails = [ export * from "./queries"; +export * from "./models"; + export const dbLabel = { label: "DB" }; export class Db { diff --git a/packages/common/src/db/models.ts b/packages/common/src/db/models.ts index 1b79d092c..02b36a317 100644 --- a/packages/common/src/db/models.ts +++ b/packages/common/src/db/models.ts @@ -331,9 +331,10 @@ export interface Nominator { proxyDelay?: number; rewardDestination?: string; newBondedAmount?: number; - current: string[]; + current?: string[]; lastNomination?: number; createdAt?: number; + now?: number; } export const NominatorSchema = new Schema({ diff --git a/packages/common/src/db/queries/Nominator.ts b/packages/common/src/db/queries/Nominator.ts index 4ae78b0ad..eca979f9b 100644 --- a/packages/common/src/db/queries/Nominator.ts +++ b/packages/common/src/db/queries/Nominator.ts @@ -1,7 +1,6 @@ import { CandidateModel, Nominator, NominatorModel } from "../models"; import logger from "../../logger"; import { getCandidate } from "./Candidate"; -import { Types } from "../../index"; /** * Removes any stale nominator data from the database. @@ -25,9 +24,7 @@ export const removeStaleNominators = async ( }; /** Nominator accessor functions */ -export const addNominator = async ( - nominator: Types.Nominator, -): Promise => { +export const addNominator = async (nominator: Nominator): Promise => { try { const { address, diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index ccc19ff62..b0d1082f9 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,6 +1,7 @@ import "@polkadot/api-augment"; import { Db } from "./db"; import * as queries from "./db/queries"; +import * as Models from "./db/models"; import * as Config from "./config"; import logger from "./logger"; import { ChainData } from "./chaindata"; @@ -23,4 +24,5 @@ export { Util, Constraints, Score, + Models, }; diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index ad2f499b1..8387d9c54 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -8,17 +8,6 @@ export type NominatorConfig = { proxyDelay?: number; }; -// Interface for when adding a nominator entry to the DB -export interface Nominator { - address: string; - stash: string; - proxy: string; - bonded: number; - now: number; - proxyDelay: number; - rewardDestination: string; -} - export type ClaimerConfig = { seed: string; }; diff --git a/packages/core/src/scorekeeper.ts b/packages/core/src/scorekeeper.ts index 56cc91558..2f4878b75 100644 --- a/packages/core/src/scorekeeper.ts +++ b/packages/core/src/scorekeeper.ts @@ -9,6 +9,7 @@ import { Constants, Constraints, logger, + Models, queries, Types, Util, @@ -356,7 +357,7 @@ export default class ScoreKeeper { // const { nominationNum, newBondedAmount, targetValStake } = // await autoNumNominations(api, nom); - const nominator: Types.Nominator = { + const nominator: Models.Nominator = { address: nom.controller, stash: stash, proxy: proxy, From 12fc985b436f865c3359daa753b844998d9b61a5 Mon Sep 17 00:00:00 2001 From: will pankiewicz Date: Fri, 16 Feb 2024 12:01:42 +0100 Subject: [PATCH 4/4] add types to nominator db queries --- packages/common/src/db/models.ts | 2 +- packages/common/src/db/queries/Nominator.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/common/src/db/models.ts b/packages/common/src/db/models.ts index 02b36a317..19f9bf851 100644 --- a/packages/common/src/db/models.ts +++ b/packages/common/src/db/models.ts @@ -331,7 +331,7 @@ export interface Nominator { proxyDelay?: number; rewardDestination?: string; newBondedAmount?: number; - current?: string[]; + current?: [{ name?: string; stash?: string; identity?: any }]; lastNomination?: number; createdAt?: number; now?: number; diff --git a/packages/common/src/db/queries/Nominator.ts b/packages/common/src/db/queries/Nominator.ts index eca979f9b..2695a1577 100644 --- a/packages/common/src/db/queries/Nominator.ts +++ b/packages/common/src/db/queries/Nominator.ts @@ -163,7 +163,9 @@ export const setLastNomination = async ( return true; }; -export const getCurrentTargets = async (address: string): Promise => { +export const getCurrentTargets = async ( + address: string, +): Promise<{ name?: string; stash?: string; identity?: any }[]> => { try { const nominator = await NominatorModel.findOne({ address,