💡
[Astar]コントラクト備忘録36(Polkadot.jsを使ってvalidatorの情報をとってみよう!)
本日は、「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