status.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // @ts-check
  2. import { ApiPromise, WsProvider } from '@polkadot/api';
  3. import { types } from '@joystream/types'
  4. import { Seat } from '@joystream/types/council';
  5. // import { ValidatorId } from '@polkadot/types/interfaces';
  6. // import BN from 'bn.js';
  7. const BN = require('bn.js');
  8. async function main () {
  9. // Initialise the provider to connect to the local node
  10. const provider = new WsProvider('ws://127.0.0.1:9944');
  11. // Create the API and wait until ready
  12. const api = await ApiPromise.create({ provider, types })
  13. // Retrieve the chain & node information information via rpc calls
  14. const [chain, nodeName, nodeVersion] = await Promise.all([
  15. api.rpc.system.chain(),
  16. api.rpc.system.name(),
  17. api.rpc.system.version()
  18. ]);
  19. console.log(`Chain '${chain}' - node: ${nodeName} v${nodeVersion}`);
  20. let council = await api.query.council.activeCouncil() as unknown as Seat[];
  21. let validators = await api.query.session.validators() // as unknown as ValidatorId[];
  22. let version = await api.rpc.state.getRuntimeVersion() // as any;
  23. console.log(`Runtime Version: ${version.authoringVersion}.${version.specVersion}.${version.implVersion}`);
  24. // number of council members
  25. console.log('Council size:', council.length)
  26. console.log('Validator count:', validators.length);
  27. if (validators && validators.length > 0) {
  28. // Retrieve the balances of validators' stash accounts
  29. const validatorBalances = await Promise.all(
  30. validators.map(authorityId => api.derive.balances.all(authorityId))
  31. );
  32. const totalValidatorBalances =
  33. validatorBalances.reduce((total, value) => total.add(value.lockedBalance), new BN(0))
  34. console.log('Total Validator Locked Balances:', totalValidatorBalances.toString());
  35. }
  36. api.disconnect();
  37. }
  38. main()