Skip to content

Commit c878f0d

Browse files
committed
feat: updated validators info endpoint
1 parent e6734f1 commit c878f0d

File tree

7 files changed

+23
-11
lines changed

7 files changed

+23
-11
lines changed

src/http/http.constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export const HTTP_PATHS = {
22
1: {
33
nft: 'nft',
4-
validators: 'validators',
4+
'validators-info': 'validators-info',
55
'request-time': 'request-time',
66
'estimate-gas': 'estimate-gas',
77
},

src/http/validators/dto/validators.dto.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,10 @@ export class ValidatorsDto {
2424
description: 'total number of validators in network',
2525
})
2626
totalValidators: number;
27+
28+
@ApiProperty({
29+
example: 100000,
30+
description: 'current frame',
31+
})
32+
currentFrame: number;
2733
}

src/http/validators/validators.controller.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ import { HTTP_PATHS } from 'http/http.constants';
1212
import { ValidatorsService } from './validators.service';
1313
import { ValidatorsDto } from './dto';
1414

15-
@Controller(HTTP_PATHS[1].validators)
15+
@Controller()
1616
@ApiTags('Validators')
1717
@UseInterceptors(ClassSerializerInterceptor)
1818
export class ValidatorsController {
1919
constructor(protected readonly validatorsService: ValidatorsService) {}
2020

2121
@Version('1')
22-
@Get('/')
22+
@Get(HTTP_PATHS[1]['validators-info'])
2323
@CacheTTL(20 * 1000)
2424
@ApiResponse({ status: HttpStatus.OK, type: ValidatorsDto })
2525
async validatorsV1(): Promise<ValidatorsDto> {
26-
return this.validatorsService.getAllValidatorsInfo();
26+
return this.validatorsService.getValidatorsInfo();
2727
}
2828
}

src/http/validators/validators.module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { ConfigModule } from 'common/config';
33
import { ValidatorsController } from './validators.controller';
44
import { ValidatorsService } from './validators.service';
55
import { ValidatorsStorageModule } from '../../storage';
6+
import { GenesisTimeModule } from '../../common/genesis-time';
67

78
@Module({
8-
imports: [ConfigModule, ValidatorsStorageModule],
9+
imports: [ConfigModule, ValidatorsStorageModule, GenesisTimeModule],
910
controllers: [ValidatorsController],
1011
providers: [ValidatorsService],
1112
})

src/http/validators/validators.service.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
import { Injectable } from '@nestjs/common';
22
import { ConfigService } from 'common/config';
33
import { ValidatorsStorageService } from '../../storage';
4+
import { GenesisTimeService } from '../../common/genesis-time';
45

56
@Injectable()
67
export class ValidatorsService {
78
constructor(
89
protected readonly configService: ConfigService,
910
protected readonly validatorsServiceStorage: ValidatorsStorageService,
11+
protected readonly genesisTimeService: GenesisTimeService,
1012
) {}
1113

12-
getAllValidatorsInfo() {
14+
getValidatorsInfo() {
1315
const lastUpdatedAt = this.validatorsServiceStorage.getLastUpdate();
1416
const maxExitEpoch = Number(this.validatorsServiceStorage.getMaxExitEpoch());
1517
const frameBalancesBigNumber = this.validatorsServiceStorage.getFrameBalances();
1618
const totalValidators = this.validatorsServiceStorage.getTotal();
19+
const currentFrame = this.genesisTimeService.getFrameOfEpoch(this.genesisTimeService.getCurrentEpoch());
1720

1821
const frameBalances = Object.keys(frameBalancesBigNumber).reduce((acc, item) => {
1922
acc[item] = frameBalancesBigNumber[item].toString();
@@ -25,6 +28,7 @@ export class ValidatorsService {
2528
maxExitEpoch,
2629
frameBalances,
2730
totalValidators,
31+
currentFrame,
2832
};
2933
}
3034
}

src/jobs/validators/validators.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,13 @@ export class ValidatorsService {
8989
this.validatorsStorageService.setFrameBalances(frameBalances);
9090
await this.validatorsCacheService.saveDataToCache();
9191

92+
const currentFrame = this.genesisTimeService.getFrameOfEpoch(this.genesisTimeService.getCurrentEpoch());
9293
this.logger.log('End update validators', {
9394
service: ValidatorsService.SERVICE_LOG_NAME,
9495
totalValidators,
9596
latestEpoch,
9697
frameBalances: stringifyFrameBalances(frameBalances),
98+
currentFrame,
9799
});
98100

99101
Object.keys(frameBalances).forEach((frame) => {

src/waiting-time/utils/calculate-frame-by-validator-balances.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ export const calculateFrameByValidatorBalances = (args: calculateFrameByValidato
4343
const sweepingMean = calculateSweepingMean(totalValidators).toNumber();
4444
const framesOfSweepingMean = Math.ceil(sweepingMean / epochPerFrame);
4545

46-
// todo: return back previous version of calculation after rework sweeping mean
47-
// If resulted withdrawable_epoch is less than current frame, should return next frame
48-
result = result.lt(currentFrame) ? BigNumber.from(currentFrame) : result;
49-
const resultWithSweep = result.add(framesOfSweepingMean).toNumber();
50-
return resultWithSweep;
46+
const resultFrame = result.add(framesOfSweepingMean).toNumber();
47+
48+
// If withdrawable_epoch is less than current frame, should return next frame
49+
return resultFrame < currentFrame ? currentFrame + 1 : resultFrame;
5150
};

0 commit comments

Comments
 (0)