Skip to content

Commit 51d7293

Browse files
authored
fix: unappliedSlashes per era (#1869)
1 parent ee1d98f commit 51d7293

File tree

6 files changed

+42
-21
lines changed

6 files changed

+42
-21
lines changed

src/services/pallets/PalletsStakingProgressService.spec.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { InternalServerError } from 'http-errors';
2626

2727
import { ApiPromiseRegistry } from '../../apiRegistry';
2828
import { sanitizeNumbers } from '../../sanitize/sanitizeNumbers';
29-
import { polkadotRegistry } from '../../test-helpers/registries';
29+
import { polkadotRegistry, polkadotRegistryV1003000 } from '../../test-helpers/registries';
3030
import {
3131
activeEraAt,
3232
blockHash100000,
@@ -123,23 +123,25 @@ const mockApi = {
123123
} as unknown as ApiPromise;
124124

125125
const unappliedSlashes = {
126-
validator: '5CD2Q2EnKaKvjWza3ufMxaXizBTTDgm9kPB3DCZ4VA9j7Ud6',
126+
validator: '19KYMVrBMbQB4161YiN6jMsqoT6uzKHpsuXNVYR3FBFHrvW',
127127
own: '0',
128-
others: [['5GxDBrTuFgCAN49xrpRFWJiA969R2Ny5NnTa8cSPBh8hWHY9', '6902377436592']],
128+
others: [['15tWLBiy7TTdobAUpTUFeTYJzi94igXDTHC4HuRjjnADgZuw', '6902377436592']],
129129
reporters: [],
130130
payout: '345118871829',
131131
toJSON: function () {
132132
return {
133133
validator: this.validator,
134134
own: this.own,
135-
others: this.others.map(([account, amount]) => ({ account, amount })),
135+
others: this.others.map(([account, amount]) => [account, amount]),
136136
reporters: this.reporters,
137137
payout: this.payout,
138138
};
139139
},
140140
};
141141
const unappliedSlashesEntriesUnappliedSlashes = () => {
142-
return Promise.resolve([['5640', unappliedSlashes]]);
142+
return Promise.resolve([
143+
[{ args: [5640] }, polkadotRegistryV1003000.createType('Option<PalletStakingUnappliedSlash>', unappliedSlashes)],
144+
]);
143145
};
144146

145147
const mockHistoricApiUnappliedSlashes = {

src/services/pallets/PalletsStakingProgressService.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616

1717
import { ApiPromise } from '@polkadot/api';
1818
import { ApiDecoration } from '@polkadot/api/types';
19+
import { Option, StorageKey } from '@polkadot/types';
1920
import { BlockHash, EraIndex } from '@polkadot/types/interfaces';
21+
import { PalletStakingAsyncUnappliedSlash } from '@polkadot/types/lookup';
2022
import { AnyJson, ITuple } from '@polkadot/types/types';
2123
import { u32, u64, Vec } from '@polkadot/types-codec';
2224
import BN from 'bn.js';
@@ -104,7 +106,8 @@ export class PalletsStakingProgressService extends AbstractService {
104106
const [eraElectionStatus, { eraLength, eraProgress, sessionLength, sessionProgress, activeEra }] =
105107
await Promise.all([eraElectionPromise, deriveSessionAndEra]);
106108

107-
const unappliedSlashesAtActiveEra = await historicApi.query.staking.unappliedSlashes.entries();
109+
const unappliedSlashesAtActiveEra: [StorageKey<[u32]>, Option<PalletStakingAsyncUnappliedSlash>][] =
110+
await historicApi.query.staking.unappliedSlashes.entries();
108111

109112
const currentBlockNumber = number.toBn();
110113

@@ -120,10 +123,24 @@ export class PalletsStakingProgressService extends AbstractService {
120123
nextSessionEstimate: nextSession.toString(10),
121124
unappliedSlashes:
122125
Array.isArray(unappliedSlashesAtActiveEra) && unappliedSlashesAtActiveEra.length > 0
123-
? unappliedSlashesAtActiveEra.map(([_key, slash]) =>
124-
slash && Object.keys(slash).length > 0 ? slash.toJSON() : {},
125-
)
126+
? unappliedSlashesAtActiveEra.flatMap(([key, slashOption]) => {
127+
if (!slashOption || !slashOption.isSome) return [];
128+
const slashes: PalletStakingAsyncUnappliedSlash = slashOption.unwrap();
129+
const era = key.args[0]?.toString();
130+
return Array.isArray(slashes)
131+
? slashes.map((slash: PalletStakingAsyncUnappliedSlash) => ({
132+
era,
133+
...slash.toJSON(),
134+
}))
135+
: [
136+
{
137+
era,
138+
...slashes.toJSON(),
139+
},
140+
];
141+
})
126142
: ([] as AnyJson[]),
143+
127144
validatorSet: validators && validators.length ? validators.map((accountId) => accountId.toString()) : [],
128145
};
129146

src/services/test-helpers/responses/pallets/stakingProgress789629.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"activeEra": "49",
77
"forceEra": "NotForcing",
88
"nextSessionEstimate": "791868",
9-
"unappliedSlashes": [{}],
9+
"unappliedSlashes": [],
1010
"nextActiveEraEstimate": "803868",
1111
"electionStatus": {
1212
"status": {

src/services/test-helpers/responses/pallets/stakingProgressPostAhm.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"activeEra": "49",
77
"forceEra": "NotForcing",
88
"nextSessionEstimate": "789999",
9-
"unappliedSlashes": [{}],
9+
"unappliedSlashes": [],
1010
"nextActiveEraEstimate": "-20369001",
1111
"electionStatus": {
1212
"status": {

src/services/test-helpers/responses/pallets/stakingProgressUnappliedSlashes.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
"nextSessionEstimate": "791868",
99
"unappliedSlashes": [
1010
{
11-
"validator": "5CD2Q2EnKaKvjWza3ufMxaXizBTTDgm9kPB3DCZ4VA9j7Ud6",
11+
"era": "5640",
12+
"validator": "19KYMVrBMbQB4161YiN6jMsqoT6uzKHpsuXNVYR3FBFHrvW",
1213
"own": "0",
1314
"others": [
14-
{
15+
[
1516

16-
"account": "5GxDBrTuFgCAN49xrpRFWJiA969R2Ny5NnTa8cSPBh8hWHY9",
17-
"amount": "6902377436592"
18-
}
17+
"15tWLBiy7TTdobAUpTUFeTYJzi94igXDTHC4HuRjjnADgZuw",
18+
"6902377436592"
19+
]
1920
],
2021
"reporters": [],
2122
"payout": "345118871829"

src/services/test-helpers/responses/pallets/stakingProgressUnappliedSlashesPostAHM.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
"nextSessionEstimate": "789999",
99
"unappliedSlashes": [
1010
{
11-
"validator": "5CD2Q2EnKaKvjWza3ufMxaXizBTTDgm9kPB3DCZ4VA9j7Ud6",
11+
"era": "5640",
12+
"validator": "19KYMVrBMbQB4161YiN6jMsqoT6uzKHpsuXNVYR3FBFHrvW",
1213
"own": "0",
1314
"others": [
14-
{
15+
[
1516

16-
"account": "5GxDBrTuFgCAN49xrpRFWJiA969R2Ny5NnTa8cSPBh8hWHY9",
17-
"amount": "6902377436592"
18-
}
17+
"15tWLBiy7TTdobAUpTUFeTYJzi94igXDTHC4HuRjjnADgZuw",
18+
"6902377436592"
19+
]
1920
],
2021
"reporters": [],
2122
"payout": "345118871829"

0 commit comments

Comments
 (0)