首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用polkadot js查询所有当前的polkadot账号?

如何使用polkadot js查询所有当前的polkadot账号?
EN

Stack Overflow用户
提问于 2021-02-17 00:21:08
回答 1查看 408关注 0票数 0

我希望查询所有Polkadot帐户,以便我可以按余额排序。我应该使用哪个javascript api?我不仅仅是在找有身份的账号。我正在寻找所有的帐户,非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 01:05:05

使用Polkadot:https://polkadot.js.org/docs/

要查询所有账户,您需要查看system.account的所有条目

代码语言:javascript
复制
let users = substrate.query.system.account.entries();

然后,要查看某个特定用户的总余额,您需要查看其data.free并将其添加到其data.reserved中。

下面是为第一个用户获取数据的方法:

代码语言:javascript
复制
let account_id = util_crypto.encodeAddress(users[0][0].slice(-32));
let free_balance = users[0][1].data.free.toNumber();
let reserved_balance = users[0][1].data.reserved.toNumber();

在此基础上,您应该能够确定如何对列表进行排序并创建所需的输出。

编辑:

下面是给其他人的完整脚本:

代码语言:javascript
复制
var { ApiPromise, WsProvider } = require('@polkadot/api');
var { encodeAddress } = require('@polkadot/util-crypto')

async function main() {
    // Substrate node we are connected to and listening to remarks
    const provider = new WsProvider('ws://localhost:9944');
    const api = await ApiPromise.create({ provider });

    // Get general information about the node we are connected to
    const [chain, nodeName, nodeVersion] = await Promise.all([
        api.rpc.system.chain(),
        api.rpc.system.name(),
        api.rpc.system.version()
    ]);
    console.log(
        `You are connected to chain ${chain} using ${nodeName} v${nodeVersion}`
    );

    // Adjust how many accounts to query at once.
    let limit = 50;
    let result = [];
    let last_key = "";

    while (true) {
        let query = await api.query.system.account.entriesPaged({ args: [], pageSize: limit, startKey: last_key });

        if (query.length == 0) {
            break
        }

        for (user of query) {
            let account_id = encodeAddress(user[0].slice(-32));
            let free_balance = user[1].data.free.toString();
            let reserved_balance = user[1].data.reserved.toString();
            result.push({ account_id, free_balance, reserved_balance });
            last_key = user[0];
        }
    }

    console.log(result)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66228220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档