@substrate/api-sidecar 17.5.1 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/package.json +14 -14
- package/build/src/chains-config/cache/lruCache.d.ts +2 -2
- package/build/src/chains-config/cache/lruCache.js +3 -6
- package/build/src/chains-config/cache/lruCache.js.map +1 -1
- package/build/src/controllers/accounts/AccountsStakingPayoutsController.js +54 -12
- package/build/src/controllers/accounts/AccountsStakingPayoutsController.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingPayoutsService.d.ts +46 -18
- package/build/src/services/accounts/AccountsStakingPayoutsService.js +164 -49
- package/build/src/services/accounts/AccountsStakingPayoutsService.js.map +1 -1
- package/build/src/services/accounts/kusamaEarlyErasBlockInfo.json +2082 -0
- package/build/src/services/blocks/BlocksService.d.ts +2 -2
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.spec.js +70 -3
- package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
- package/build/src/services/blocks/XCMDecoder.d.ts +1 -1
- package/build/src/services/blocks/XCMDecoder.js +61 -46
- package/build/src/services/blocks/XCMDecoder.js.map +1 -1
- package/build/src/services/pallets/PalletsAssetConversionService.spec.js +1 -1
- package/build/src/services/pallets/PalletsAssetConversionService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsForeignAssetsService.js +2 -3
- package/build/src/services/pallets/PalletsForeignAssetsService.js.map +1 -1
- package/build/src/services/pallets/PalletsForeignAssetsService.spec.js +4 -4
- package/build/src/services/pallets/PalletsForeignAssetsService.spec.js.map +1 -1
- package/build/src/services/paras/ParasService.js +1 -1
- package/build/src/types/chains-config/ControllerConfig.d.ts +2 -2
- package/build/src/types/chains-config/ControllerConfig.js +1 -1
- package/build/src/types/responses/AccountStakingInfo.d.ts +3 -3
- package/build/src/types/responses/AccountStakingInfo.js +1 -1
- package/build/src/types/responses/BlockXCMMessages.d.ts +9 -4
- package/build/src/types/responses/BlockXCMMessages.js +1 -1
- package/build/src/types/responses/PalletAssetConversion.d.ts +3 -3
- package/build/src/types/responses/PalletAssetConversion.js +1 -1
- package/build/src/types/responses/SanitizedBackedCandidatesCommitments.d.ts +2 -1
- package/build/src/types/responses/SanitizedBackedCandidatesHorizontalMessage.d.ts +4 -0
- package/build/src/types/responses/SanitizedBackedCandidatesHorizontalMessage.js +18 -0
- package/build/src/types/responses/SanitizedBackedCandidatesHorizontalMessage.js.map +1 -0
- package/build/src/types/responses/SanitizedParachainInherentData.d.ts +3 -2
- package/build/src/types/responses/SanitizedParachainInherentData.js +1 -1
- package/build/src/types/responses/SanitizedParachainInherentDataHorizontalMessage.d.ts +4 -0
- package/build/src/types/responses/SanitizedParachainInherentDataHorizontalMessage.js +18 -0
- package/build/src/types/responses/SanitizedParachainInherentDataHorizontalMessage.js.map +1 -0
- package/package.json +14 -14
|
@@ -14,11 +14,15 @@
|
|
|
14
14
|
//
|
|
15
15
|
// You should have received a copy of the GNU General Public License
|
|
16
16
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
17
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
21
|
exports.AccountsStakingPayoutsService = void 0;
|
|
19
22
|
const calc_1 = require("@substrate/calc");
|
|
20
23
|
const http_errors_1 = require("http-errors");
|
|
21
24
|
const AbstractService_1 = require("../AbstractService");
|
|
25
|
+
const kusamaEarlyErasBlockInfo_json_1 = __importDefault(require("./kusamaEarlyErasBlockInfo.json"));
|
|
22
26
|
class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
23
27
|
/**
|
|
24
28
|
* Fetch and derive payouts for `address`.
|
|
@@ -34,41 +38,47 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
34
38
|
async fetchAccountStakingPayout(hash, address, depth, era, unclaimedOnly, currentEra, historicApi) {
|
|
35
39
|
const { api } = this;
|
|
36
40
|
const { number } = await api.rpc.chain.getHeader(hash);
|
|
41
|
+
const sanitizedEra = era < 0 ? 0 : era;
|
|
42
|
+
const at = {
|
|
43
|
+
height: number.unwrap().toString(10),
|
|
44
|
+
hash,
|
|
45
|
+
};
|
|
46
|
+
// User friendly - we don't error if the user specified era & depth combo <= 0, instead just start at 0
|
|
47
|
+
const startEra = Math.max(0, sanitizedEra - (depth - 1));
|
|
48
|
+
const runtimeInfo = await this.api.rpc.state.getRuntimeVersion(at.hash);
|
|
49
|
+
const isKusama = runtimeInfo.specName.toString().toLowerCase() === 'kusama';
|
|
37
50
|
/**
|
|
38
51
|
* Given https://github.com/polkadot-js/api/issues/5232,
|
|
39
52
|
* polkadot-js, and substrate treats historyDepth as a consts. In order
|
|
40
53
|
* to maintain historical integrity we need to make a check to cover both the
|
|
41
54
|
* storage query and the consts.
|
|
42
55
|
*/
|
|
43
|
-
let historyDepth;
|
|
56
|
+
let historyDepth = api.registry.createType('u32', 84);
|
|
44
57
|
if (historicApi.consts.staking.historyDepth) {
|
|
45
58
|
historyDepth = historicApi.consts.staking.historyDepth;
|
|
46
59
|
}
|
|
47
|
-
else {
|
|
60
|
+
else if (historicApi.query.staking.historyDepth) {
|
|
48
61
|
historyDepth = await historicApi.query.staking.historyDepth();
|
|
49
62
|
}
|
|
63
|
+
else if (currentEra < 518 && isKusama) {
|
|
64
|
+
historyDepth = api.registry.createType('u32', 0);
|
|
65
|
+
}
|
|
50
66
|
// Information is kept for eras in `[current_era - history_depth; current_era]`
|
|
51
|
-
if (depth > historyDepth.toNumber()) {
|
|
67
|
+
if (historyDepth.toNumber() !== 0 && depth > historyDepth.toNumber()) {
|
|
52
68
|
throw new http_errors_1.BadRequest('Must specify a depth less than history_depth');
|
|
53
69
|
}
|
|
54
|
-
if (era - (depth - 1) < currentEra - historyDepth.toNumber()) {
|
|
70
|
+
if (era - (depth - 1) < currentEra - historyDepth.toNumber() && historyDepth.toNumber() !== 0) {
|
|
55
71
|
// In scenarios where depth is not > historyDepth, but the user specifies an era
|
|
56
72
|
// and historyDepth combo that would lead to querying eras older than history depth
|
|
57
73
|
throw new http_errors_1.BadRequest('Must specify era and depth such that era - (depth - 1) is less ' +
|
|
58
74
|
'than or equal to current_era - history_depth.');
|
|
59
75
|
}
|
|
60
|
-
const at = {
|
|
61
|
-
height: number.unwrap().toString(10),
|
|
62
|
-
hash,
|
|
63
|
-
};
|
|
64
|
-
// User friendly - we don't error if the user specified era & depth combo <= 0, instead just start at 0
|
|
65
|
-
const startEra = Math.max(0, era - (depth - 1));
|
|
66
76
|
// Fetch general data about the era
|
|
67
|
-
const allErasGeneral = await this.fetchAllErasGeneral(historicApi, startEra,
|
|
77
|
+
const allErasGeneral = await this.fetchAllErasGeneral(historicApi, startEra, sanitizedEra, at, isKusama);
|
|
68
78
|
// With the general data, we can now fetch the commission of each validator `address` nominates
|
|
69
79
|
const allErasCommissions = await this.fetchAllErasCommissions(historicApi, address, startEra,
|
|
70
80
|
// Create an array of `DeriveEraExposure`
|
|
71
|
-
allErasGeneral.map((eraGeneral) => eraGeneral[0])).catch((err) => {
|
|
81
|
+
allErasGeneral.map((eraGeneral) => eraGeneral[0]), isKusama).catch((err) => {
|
|
72
82
|
throw this.createHttpErrorForAddr(address, err);
|
|
73
83
|
});
|
|
74
84
|
// Group together data by Era so we can easily associate parts that are used congruently downstream
|
|
@@ -93,40 +103,88 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
93
103
|
});
|
|
94
104
|
return {
|
|
95
105
|
at,
|
|
96
|
-
erasPayouts: allEraData.map((eraData) => this.deriveEraPayouts(address, unclaimedOnly, eraData)),
|
|
106
|
+
erasPayouts: allEraData.map((eraData) => this.deriveEraPayouts(address, unclaimedOnly, eraData, isKusama)),
|
|
97
107
|
};
|
|
98
108
|
}
|
|
99
109
|
/**
|
|
100
110
|
* Fetch general info about eras in the inclusive range `startEra` .. `era`.
|
|
101
111
|
*
|
|
102
|
-
* @param api
|
|
103
|
-
* @param hash `BlockHash` to make call at
|
|
112
|
+
* @param historicApi Historic api for querying past blocks
|
|
104
113
|
* @param startEra first era to get data for
|
|
105
114
|
* @param era the last era to get data for
|
|
115
|
+
* @param blockNumber block information to ensure compatibility with older eras
|
|
106
116
|
*/
|
|
107
|
-
async fetchAllErasGeneral(historicApi, startEra, era) {
|
|
117
|
+
async fetchAllErasGeneral(historicApi, startEra, era, blockNumber, isKusama) {
|
|
108
118
|
const allDeriveQuerys = [];
|
|
119
|
+
let nextEraStartBlock = Number(blockNumber.height);
|
|
120
|
+
let eraDurationInBlocks = 0;
|
|
121
|
+
const earlyErasBlockInfo = kusamaEarlyErasBlockInfo_json_1.default;
|
|
109
122
|
for (let e = startEra; e <= era; e += 1) {
|
|
110
123
|
const eraIndex = historicApi.registry.createType('EraIndex', e);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
124
|
+
if (historicApi.query.staking.erasRewardPoints) {
|
|
125
|
+
const eraGeneralTuple = Promise.all([
|
|
126
|
+
this.deriveEraExposure(historicApi, eraIndex),
|
|
127
|
+
historicApi.query.staking.erasRewardPoints(eraIndex),
|
|
128
|
+
historicApi.query.staking.erasValidatorReward(eraIndex),
|
|
129
|
+
]);
|
|
130
|
+
allDeriveQuerys.push(eraGeneralTuple);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// We check if we are in the Kusama chain since currently we have
|
|
134
|
+
// the block info for the early eras only for Kusama.
|
|
135
|
+
if (isKusama) {
|
|
136
|
+
// Retrieve the first block of the era following the given era in order
|
|
137
|
+
// to fetch the `Rewards` event at that block.
|
|
138
|
+
nextEraStartBlock = era === 0 ? earlyErasBlockInfo[era + 1].start : earlyErasBlockInfo[era].start;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const sessionDuration = historicApi.consts.staking.sessionsPerEra.toNumber();
|
|
142
|
+
const epochDuration = historicApi.consts.babe.epochDuration.toNumber();
|
|
143
|
+
eraDurationInBlocks = sessionDuration * epochDuration;
|
|
144
|
+
}
|
|
145
|
+
const nextEraStartBlockHash = await this.api.rpc.chain.getBlockHash(nextEraStartBlock);
|
|
146
|
+
const currentEraEndBlockHash = era === 0
|
|
147
|
+
? await this.api.rpc.chain.getBlockHash(earlyErasBlockInfo[0].end)
|
|
148
|
+
: await this.api.rpc.chain.getBlockHash(earlyErasBlockInfo[era - 1].end);
|
|
149
|
+
let reward = historicApi.registry.createType('Option<u128>');
|
|
150
|
+
const blockInfo = await this.api.rpc.chain.getBlock(nextEraStartBlockHash);
|
|
151
|
+
const allRecords = await historicApi.query.system.events();
|
|
152
|
+
blockInfo.block.extrinsics.forEach((index) => {
|
|
153
|
+
allRecords
|
|
154
|
+
.filter(({ phase }) => phase.isApplyExtrinsic && phase.asApplyExtrinsic.eq(index))
|
|
155
|
+
.forEach(({ event }) => {
|
|
156
|
+
if (event.method.toString() === 'Reward') {
|
|
157
|
+
const [dispatchInfo] = event.data;
|
|
158
|
+
reward = historicApi.registry.createType('Option<u128>', dispatchInfo.toString());
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
const points = this.fetchHistoricRewardPoints(currentEraEndBlockHash);
|
|
163
|
+
const rewardPromise = new Promise((resolve) => {
|
|
164
|
+
resolve(reward);
|
|
165
|
+
});
|
|
166
|
+
if (!isKusama) {
|
|
167
|
+
nextEraStartBlock = nextEraStartBlock - eraDurationInBlocks;
|
|
168
|
+
}
|
|
169
|
+
const eraGeneralTuple = Promise.all([this.deriveEraExposure(historicApi, eraIndex), points, rewardPromise]);
|
|
170
|
+
allDeriveQuerys.push(eraGeneralTuple);
|
|
171
|
+
}
|
|
117
172
|
}
|
|
118
173
|
return Promise.all(allDeriveQuerys);
|
|
119
174
|
}
|
|
175
|
+
async fetchHistoricRewardPoints(hash) {
|
|
176
|
+
const historicApi = await this.api.at(hash);
|
|
177
|
+
return historicApi.query.staking.currentEraPointsEarned();
|
|
178
|
+
}
|
|
120
179
|
/**
|
|
121
180
|
* Fetch the commission & staking ledger for each `validatorId` in `deriveErasExposures`.
|
|
122
181
|
*
|
|
123
|
-
* @param api
|
|
124
|
-
* @param hash `BlockHash` to make call at
|
|
182
|
+
* @param historicApi Historic api for querying past blocks
|
|
125
183
|
* @param address address of the _Stash_ account to get the payouts of
|
|
126
184
|
* @param startEra first era to get data for
|
|
127
185
|
* @param deriveErasExposures exposures per era for `address`
|
|
128
186
|
*/
|
|
129
|
-
fetchAllErasCommissions(historicApi, address, startEra, deriveErasExposures) {
|
|
187
|
+
fetchAllErasCommissions(historicApi, address, startEra, deriveErasExposures, isKusama) {
|
|
130
188
|
// Cache StakingLedger to reduce redundant queries to node
|
|
131
189
|
const validatorLedgerCache = {};
|
|
132
190
|
const allErasCommissions = deriveErasExposures.map((deriveEraExposure, idx) => {
|
|
@@ -135,7 +193,7 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
135
193
|
if (!nominatedExposures) {
|
|
136
194
|
return [];
|
|
137
195
|
}
|
|
138
|
-
const singleEraCommissions = nominatedExposures.map(({ validatorId }) => this.fetchCommissionAndLedger(historicApi, validatorId, currEra, validatorLedgerCache));
|
|
196
|
+
const singleEraCommissions = nominatedExposures.map(({ validatorId }) => this.fetchCommissionAndLedger(historicApi, validatorId, currEra, validatorLedgerCache, isKusama));
|
|
139
197
|
return Promise.all(singleEraCommissions);
|
|
140
198
|
});
|
|
141
199
|
return Promise.all(allErasCommissions);
|
|
@@ -147,24 +205,27 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
147
205
|
* @param era the era to query
|
|
148
206
|
* @param eraData data about the address and era we are calculating payouts for
|
|
149
207
|
*/
|
|
150
|
-
deriveEraPayouts(address, unclaimedOnly, { deriveEraExposure, eraRewardPoints, erasValidatorRewardOption, exposuresWithCommission, eraIndex }) {
|
|
208
|
+
deriveEraPayouts(address, unclaimedOnly, { deriveEraExposure, eraRewardPoints, erasValidatorRewardOption, exposuresWithCommission, eraIndex }, isKusama) {
|
|
151
209
|
if (!exposuresWithCommission) {
|
|
152
210
|
return {
|
|
153
211
|
message: `${address} has no nominations for the era ${eraIndex.toString()}`,
|
|
154
212
|
};
|
|
155
213
|
}
|
|
156
|
-
if (erasValidatorRewardOption.isNone) {
|
|
214
|
+
if (erasValidatorRewardOption.isNone && eraIndex.toNumber() !== 0) {
|
|
215
|
+
const event = eraIndex.toNumber() > 517 ? 'ErasValidatorReward' : 'Reward';
|
|
157
216
|
return {
|
|
158
|
-
message: `No
|
|
217
|
+
message: `No ${event} for the era ${eraIndex.toString()}`,
|
|
159
218
|
};
|
|
160
219
|
}
|
|
161
220
|
const totalEraRewardPoints = eraRewardPoints.total;
|
|
162
|
-
const totalEraPayout = erasValidatorRewardOption.unwrap();
|
|
221
|
+
const totalEraPayout = eraIndex.toNumber() !== 0 ? erasValidatorRewardOption.unwrap() : this.api.registry.createType('BalanceOf', 0);
|
|
163
222
|
const calcPayout = calc_1.CalcPayout.from_params(totalEraRewardPoints.toNumber(), totalEraPayout.toString(10));
|
|
164
223
|
// Iterate through validators that this nominator backs and calculate payouts for the era
|
|
165
224
|
const payouts = [];
|
|
166
225
|
for (const { validatorId, commission: validatorCommission, validatorLedger } of exposuresWithCommission) {
|
|
167
|
-
const totalValidatorRewardPoints =
|
|
226
|
+
const totalValidatorRewardPoints = deriveEraExposure.validatorIndex
|
|
227
|
+
? this.extractTotalValidatorRewardPoints(eraRewardPoints, validatorId, deriveEraExposure.validatorIndex)
|
|
228
|
+
: this.extractTotalValidatorRewardPoints(eraRewardPoints, validatorId);
|
|
168
229
|
if (!totalValidatorRewardPoints || (totalValidatorRewardPoints === null || totalValidatorRewardPoints === void 0 ? void 0 : totalValidatorRewardPoints.toNumber()) === 0) {
|
|
169
230
|
// Nothing to do if there are no reward points for the validator
|
|
170
231
|
continue;
|
|
@@ -200,6 +261,9 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
200
261
|
continue;
|
|
201
262
|
}
|
|
202
263
|
}
|
|
264
|
+
else if (eraIndex.toNumber() < 518 && isKusama) {
|
|
265
|
+
indexOfEra = eraIndex.toNumber();
|
|
266
|
+
}
|
|
203
267
|
else {
|
|
204
268
|
continue;
|
|
205
269
|
}
|
|
@@ -228,26 +292,41 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
228
292
|
/**
|
|
229
293
|
* Fetch the `commission` and `StakingLedger` of `validatorId`.
|
|
230
294
|
*
|
|
231
|
-
* @param api
|
|
295
|
+
* @param historicApi Historic api for querying past blocks
|
|
232
296
|
* @param validatorId accountId of a validator's _Stash_ account
|
|
233
297
|
* @param era the era to query
|
|
234
|
-
* @param hash `BlockHash` to make call at
|
|
235
298
|
* @param validatorLedgerCache object mapping validatorId => StakingLedger to limit redundant queries
|
|
236
299
|
*/
|
|
237
|
-
async fetchCommissionAndLedger(historicApi, validatorId, era, validatorLedgerCache) {
|
|
300
|
+
async fetchCommissionAndLedger(historicApi, validatorId, era, validatorLedgerCache, isKusama) {
|
|
238
301
|
let commission;
|
|
239
302
|
let validatorLedger;
|
|
303
|
+
let commissionPromise;
|
|
304
|
+
const ancient = era < 518;
|
|
240
305
|
if (validatorId in validatorLedgerCache) {
|
|
241
306
|
validatorLedger = validatorLedgerCache[validatorId];
|
|
242
|
-
|
|
243
|
-
|
|
307
|
+
let prefs;
|
|
308
|
+
if (!ancient) {
|
|
309
|
+
prefs = await historicApi.query.staking.erasValidatorPrefs(era, validatorId);
|
|
310
|
+
commission = prefs.commission.unwrap();
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
prefs = (await historicApi.query.staking.validators(validatorId));
|
|
314
|
+
commission = prefs[0].commission.unwrap();
|
|
315
|
+
}
|
|
244
316
|
}
|
|
245
317
|
else {
|
|
318
|
+
commissionPromise =
|
|
319
|
+
ancient && isKusama
|
|
320
|
+
? historicApi.query.staking.validators(validatorId)
|
|
321
|
+
: historicApi.query.staking.erasValidatorPrefs(era, validatorId);
|
|
246
322
|
const [prefs, validatorControllerOption] = await Promise.all([
|
|
247
|
-
|
|
323
|
+
commissionPromise,
|
|
248
324
|
historicApi.query.staking.bonded(validatorId),
|
|
249
325
|
]);
|
|
250
|
-
commission =
|
|
326
|
+
commission =
|
|
327
|
+
ancient && isKusama
|
|
328
|
+
? prefs[0].commission.unwrap()
|
|
329
|
+
: prefs.commission.unwrap();
|
|
251
330
|
if (validatorControllerOption.isNone) {
|
|
252
331
|
return {
|
|
253
332
|
commission,
|
|
@@ -271,11 +350,11 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
271
350
|
* The original version uses the base ApiDerive implementation which does not include the ApiDecoration implementation.
|
|
272
351
|
* It is required in this version to query older blocks for their historic data.
|
|
273
352
|
*
|
|
274
|
-
* @param historicApi
|
|
275
|
-
* @param eraIndex
|
|
353
|
+
* @param historicApi Historic api for querying past blocks
|
|
354
|
+
* @param eraIndex index of the era to query
|
|
276
355
|
*/
|
|
277
356
|
async deriveEraExposure(historicApi, eraIndex) {
|
|
278
|
-
function mapStakers(era, stakers) {
|
|
357
|
+
function mapStakers(era, stakers, validatorIndex) {
|
|
279
358
|
const nominators = {};
|
|
280
359
|
const validators = {};
|
|
281
360
|
stakers.forEach(([key, exposure]) => {
|
|
@@ -287,22 +366,58 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
287
366
|
nominators[nominatorId].push({ validatorId, validatorIndex });
|
|
288
367
|
});
|
|
289
368
|
});
|
|
290
|
-
|
|
369
|
+
if (Object.keys(validatorIndex).length > 0) {
|
|
370
|
+
return { era, nominators, validators, validatorIndex };
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
return { era, nominators, validators };
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
let storageKeys = [];
|
|
377
|
+
const validatorIndex = {};
|
|
378
|
+
if (historicApi.query.staking.erasStakersClipped) {
|
|
379
|
+
storageKeys = await historicApi.query.staking.erasStakersClipped.entries(eraIndex);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
const validators = (await historicApi.query.staking.currentElected());
|
|
383
|
+
const validatorId = [];
|
|
384
|
+
validators.map((validator, index) => {
|
|
385
|
+
validatorIndex[validator.toString()] = index;
|
|
386
|
+
validatorId.push(validator);
|
|
387
|
+
});
|
|
388
|
+
let eraExposure = {};
|
|
389
|
+
for (const validator of validatorId) {
|
|
390
|
+
const storageKey = {
|
|
391
|
+
args: [eraIndex, validator],
|
|
392
|
+
};
|
|
393
|
+
eraExposure = (await historicApi.query.staking.stakers(validator));
|
|
394
|
+
storageKeys.push([storageKey, eraExposure]);
|
|
395
|
+
}
|
|
291
396
|
}
|
|
292
|
-
|
|
293
|
-
return mapStakers(eraIndex, eraExposure);
|
|
397
|
+
return mapStakers(eraIndex, storageKeys, validatorIndex);
|
|
294
398
|
}
|
|
295
399
|
/**
|
|
296
400
|
* Extract the reward points of `validatorId` from `EraRewardPoints`.
|
|
297
401
|
*
|
|
298
402
|
* @param eraRewardPoints
|
|
299
403
|
* @param validatorId accountId of a validator's _Stash_ account
|
|
404
|
+
* @param validatorIndex index of the validator in relation to the `EraPoints`
|
|
405
|
+
* array
|
|
300
406
|
* */
|
|
301
|
-
extractTotalValidatorRewardPoints(eraRewardPoints, validatorId) {
|
|
407
|
+
extractTotalValidatorRewardPoints(eraRewardPoints, validatorId, validatorIndex) {
|
|
302
408
|
// Ideally we would just use the map's `get`, but that does not seem to be working here
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
409
|
+
if (validatorIndex === undefined) {
|
|
410
|
+
for (const [id, points] of eraRewardPoints.individual.entries()) {
|
|
411
|
+
if (id.toString() === validatorId) {
|
|
412
|
+
return points;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
for (const [id, points] of eraRewardPoints.individual.entries()) {
|
|
418
|
+
if (id.toString() === validatorIndex[validatorId.toString()].toString()) {
|
|
419
|
+
return points;
|
|
420
|
+
}
|
|
306
421
|
}
|
|
307
422
|
}
|
|
308
423
|
return;
|
|
@@ -313,7 +428,7 @@ class AccountsStakingPayoutsService extends AbstractService_1.AbstractService {
|
|
|
313
428
|
*
|
|
314
429
|
* @param address address of the _Stash_ account to get the exposure of behind `validatorId`
|
|
315
430
|
* @param validatorId accountId of a validator's _Stash_ account
|
|
316
|
-
* @param deriveEraExposure
|
|
431
|
+
* @param deriveEraExposure result of deriveEraExposure
|
|
317
432
|
*/
|
|
318
433
|
extractExposure(address, validatorId, deriveEraExposure) {
|
|
319
434
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountsStakingPayoutsService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingPayoutsService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccountsStakingPayoutsService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingPayoutsService.ts"],"names":[],"mappings":"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"}
|