微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

随着时间的流逝,我如何从Kulupupolkadotjs获得困难?

如何解决随着时间的流逝,我如何从Kulupupolkadotjs获得困难?

// Import
import { ApiPromise,WsProvider } from "@polkadot/api";

// Construct
/*
https://rpc.kulupu.network
https://rpc.kulupu.network/ws
https://rpc.kulupu.corepaper.org
https://rpc.kulupu.corepaper.org/ws
*/

(async () => {
  //const wsProvider = new WsProvider('wss://rpc.polkadot.io');
  const wsProvider = new WsProvider("wss://rpc.kulupu.network/ws");
  const api = await ApiPromise.create({ provider: wsProvider });

  // Do something
  const chain = await api.rpc.system.chain();

  console.log(`You are connected to ${chain} !`);
  console.log(await api.query.difficulty.pastDifficultiesAndTimestamps.toJSON());

  console.log(api.genesisHash.toHex());
})();

解决方法

存储项pastDifficultiesAndTimestamps仅保存最后60个块的数据。为了获得该信息,您只需要解决以下问题:

console.log(await api.query.difficulty.pastDifficultiesAndTimestamps());

如果您通常想查询块的难度,则可以执行如下循环:

let best_block = await api.derive.chain.bestNumber()

// Could be 0,but that is a lot of queries...
let first_block = best_block - 100;

for (let block = first_block; block < best_block; block++) {
  let block_hash = await api.rpc.chain.getBlockHash(block);
  let difficulty = await api.query.difficulty.currentDifficulty.at(block_hash);
  console.log(block,difficulty)
}

请注意,这需要一个归档节点,该节点具有有关所有块的信息。否则,默认情况下,节点在状态清理之前将只存储约256个先前的块。

如果您想了解如何进行这样的查询,但是效率更高得多,请在此处查看我的博客文章:

https://www.shawntabrizi.com/substrate/porting-web3-js-to-polkadot-js/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。