PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@polkadot/api-derive/staking

Просмотр файла: validators.js

import { combineLatest, map, of, switchMap } from 'rxjs';
import { memo } from '../util/index.js';
export function nextElected(instanceId, api) {
    return memo(instanceId, () => 
    // Compatibility for future generation changes in staking.
    api.query.staking.erasStakersPaged
        ? api.derive.session.indexes().pipe(
        // only populate for next era in the last session, so track both here - entries are not
        // subscriptions, so we need a trigger - currentIndex acts as that trigger to refresh
        switchMap(({ currentEra }) => api.query.staking.erasStakersPaged.keys(currentEra)), 
        // Dedupe any duplicates
        map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
        : api.query.staking.erasStakers
            ? api.derive.session.indexes().pipe(
            // only populate for next era in the last session, so track both here - entries are not
            // subscriptions, so we need a trigger - currentIndex acts as that trigger to refresh
            switchMap(({ currentEra }) => api.query.staking.erasStakers.keys(currentEra)), 
            // Dedupe any duplicates
            map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
            : api.query.staking['currentElected']());
}
/**
 * @description Retrieve latest list of validators
 */
export function validators(instanceId, api) {
    return memo(instanceId, () => 
    // Sadly the node-template is (for some obscure reason) not comprehensive, so while the derive works
    // in all actual real-world deployed chains, it does create some confusion for limited template chains
    combineLatest([
        api.query.session
            ? api.query.session.validators()
            : of([]),
        api.query.staking
            ? api.derive.staking.nextElected()
            : of([])
    ]).pipe(map(([validators, nextElected]) => ({
        nextElected: nextElected.length
            ? nextElected
            : validators,
        validators
    }))));
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!