Skip to content

Commit 2dd66e6

Browse files
authored
feat(api-sync): write validator fee attribute (#980)
* include fee in dirty validator check * write validatorFee attribute * style: resolve style guide violations
1 parent 76bea8a commit 2dd66e6

5 files changed

Lines changed: 16 additions & 7 deletions

File tree

packages/api-sync/source/restore.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface ValidatorAttributes {
4545
producedBlocks: number;
4646

4747
voteBalance: BigNumber;
48+
fee: BigNumber;
4849
votersCount: number;
4950
blsPublicKey: string;
5051
isResigned: boolean;
@@ -330,6 +331,7 @@ export class Restore {
330331
for (const validator of validators) {
331332
context.validatorAttributes[validator.address] = {
332333
blsPublicKey: validator.blsPublicKey,
334+
fee: validator.fee,
333335
isResigned: validator.isResigned,
334336
producedBlocks: 0,
335337
totalForgedFees: BigNumber.ZERO,
@@ -385,6 +387,7 @@ export class Restore {
385387
attributes: {
386388
...(validatorAttributes
387389
? {
390+
validatorFee: validatorAttributes.fee,
388391
validatorForgedFees: validatorAttributes.totalForgedFees.toFixed(),
389392
validatorForgedRewards: validatorAttributes.totalForgedRewards.toFixed(),
390393
validatorForgedTotal: validatorAttributes.totalForgedFees

packages/api-sync/source/service.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,12 @@ export class Sync implements Contracts.ApiSync.Service {
157157
}
158158
}
159159

160-
const dirtyValidators = this.validatorSet.getDirtyValidators().reduce((accumulator, current) => {
161-
accumulator[current.address] = current;
162-
return accumulator;
163-
}, {});
160+
const dirtyValidators: Record<string, Contracts.State.ValidatorWallet> = this.validatorSet
161+
.getDirtyValidators()
162+
.reduce((accumulator, current) => {
163+
accumulator[current.address] = current;
164+
return accumulator;
165+
}, {});
164166

165167
const accountUpdates: Record<string, Contracts.Evm.AccountUpdate> = unit
166168
.getAccountUpdates()
@@ -176,6 +178,7 @@ export class Sync implements Contracts.ApiSync.Service {
176178
return {
177179
...(dirtyValidator
178180
? {
181+
validatorFee: dirtyValidator.fee,
179182
validatorPublicKey: dirtyValidator.blsPublicKey,
180183
validatorResigned: dirtyValidator.isResigned,
181184
validatorVoteBalance: dirtyValidator.voteBalance,
@@ -486,6 +489,8 @@ export class Sync implements Contracts.ApiSync.Service {
486489
COALESCE((EXCLUDED.attributes->>'validatorVoteBalance')::text, ("Wallet".attributes->>'validatorVoteBalance')::text),
487490
'validatorVotersCount',
488491
COALESCE(EXCLUDED.attributes->'validatorVotersCount', "Wallet".attributes->'validatorVotersCount'),
492+
'validatorFee',
493+
COALESCE((EXCLUDED.attributes->>'validatorFee')::text, ("Wallet".attributes->>'validatorFee')::text),
489494
'validatorLastBlock',
490495
COALESCE((EXCLUDED.attributes->>'validatorLastBlock')::jsonb, ("Wallet".attributes->>'validatorLastBlock')::jsonb),
491496
'validatorForgedFees',

packages/contracts/source/contracts/state/wallets.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ export interface ValidatorWallet {
2424
blsPublicKey: string;
2525
voteBalance: BigNumber;
2626
votersCount: number;
27-
fee: number;
27+
fee: BigNumber;
2828
isResigned: boolean;
2929
}

packages/evm-consensus/source/services/consensus-contract-service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class ConsensusContractService implements Contracts.Evm.ConsensusContract
4848
const validatorWallet: Contracts.State.ValidatorWallet = {
4949
address,
5050
blsPublicKey: blsPublicKey.slice(2),
51-
fee: Number(fee),
51+
fee: BigNumber.make(fee),
5252
isResigned,
5353
voteBalance: BigNumber.make(voteBalance),
5454
votersCount: Number(votersCount),
@@ -88,7 +88,7 @@ export class ConsensusContractService implements Contracts.Evm.ConsensusContract
8888
const validatorWallet: Contracts.State.ValidatorWallet = {
8989
address,
9090
blsPublicKey: blsPublicKey.slice(2),
91-
fee: Number(fee),
91+
fee: BigNumber.make(fee),
9292
isResigned,
9393
voteBalance: BigNumber.make(voteBalance),
9494
votersCount: Number(votersCount),

packages/evm-consensus/source/validator-set.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export class ValidatorSet implements Contracts.ValidatorSet.Service {
8585
if (
8686
!currentValidator ||
8787
!currentValidator.voteBalance.isEqualTo(validator.voteBalance) ||
88+
!currentValidator.fee.isEqualTo(validator.fee) ||
8889
currentValidator.isResigned !== validator.isResigned ||
8990
currentValidator.votersCount !== validator.votersCount ||
9091
currentValidator.blsPublicKey !== validator.blsPublicKey

0 commit comments

Comments
 (0)