💡

[Astar]コントラクト備忘録36(Polkadot.jsを使ってvalidatorの情報をとってみよう!)

2023/03/10に公開

本日は、「Polkadot.js」の「Read storage」を元に、 validatorの情報をとってみましょう。


https://polkadot.js.org/docs/api/examples/promise/read-storage

今回は、こちらのコードを使用します。

async function main () {
  // Initialise the provider to connect to the local node
  const provider = new WsProvider('wss://rpc.shibuya.astar.network');

  // Create the API and wait until ready
  const api = await ApiPromise.create({ provider });

  // Make our basic chain state/storage queries, all in one go
  const [{ nonce: accountNonce }, now, validators] = await Promise.all([
    api.query.system.account(ALICE),
    api.query.timestamp.now(),
    api.query.session.validators()
  ]);

  console.log(`accountNonce(${ALICE}) ${accountNonce}`);
  console.log(`last block timestamp ${now.toNumber()}`);

  if (validators && validators.length > 0) {
    // Retrieve the balances for all validators
    const validatorBalances = await Promise.all(
      validators.map((authorityId) =>
        api.query.system.account(authorityId)
      )
    );

    // Print out the authorityIds and balances of all validators
    console.log('validators', validators.map((authorityId, index) => ({
      address: authorityId.toString(),
      balance: validatorBalances[index].data.free.toHuman(),
      nonce: validatorBalances[index].nonce.toHuman()
    })));
  }
}

このようになりました。

せっかくなので、Metadataについても確認してみましょう。

下のように、「consts」、「query」、「tx」という3つのタイプを持ち、動的であるということがわかります。


https://polkadot.js.org/docs/api/start/basics

下のようにvalidatorなどの情報を取得しています。

このように、結果を取得できたことが確認できました。

本日は以上です。

Discussion