【问题标题】:Where are accounts located in substrate-node-template?帐户位于基板节点模板中的什么位置?
【发布时间】:2021-12-28 14:38:41
【问题描述】:

当我们启动 substrate-front-end-template 时,首先看到的是一堆带有一定余额的虚拟账户,我的印象是这些账户是从运行链的 Genesis 存储中获取的。然而,当我进入 chain_spec.rs 文件并删除所有帐户,甚至在 testnet_genesis 函数中重命名了一些帐户时,我继续看到帐户,尽管余额为零:

在控制台上,keyring.getAccounts() 会返回这些帐户。

这是我的 ChainSpec 的样子:

Ok(ChainSpec::from_genesis(
        "Development",
        "dev",
        ChainType::Development,
        move || {
            testnet_genesis(
                wasm_binary,
                vec![authority_keys_from_seed("Foundation")],
                get_account_id_from_seed::<sr25519::Public>("Foundation"),
                vec![
                    get_account_id_from_seed::<sr25519::Public>("Foundation"),
                ],
                true,
            )
        },
        // Bootnodes
        vec![],
        // Telemetry
        None,
        // Protocol ID
        None,
        // Properties
        Some(props),
        // Extensions
        None,
    ))

如您所见,没有提及 alice、bob、charlie 等帐户。我什至搜索了整个节点文件夹以找到提及这些帐户的内容,但无济于事。有人可以告诉我如何正确将新帐户、sudo 帐户等添加到我的 genesis 配置中吗?谢谢。

【问题讨论】:

    标签: substrate


    【解决方案1】:

    帐户只是节点模板中的公钥。这意味着您可以检查每个可能的公钥,它将返回零。但这并不意味着有任何状态与此帐户相关联。 (假设您已经配置了高于 0 的存在存款)。

    如果您想在 genesis 上添加帐户,只需查看 testnet_genesisendowed_accounts(第 4 个参数)是您要搜索的内容。这些是在创世时获得一些平衡的账户。所有这些代码都依赖于链,您可以随意更改它。

    【讨论】:

    • 是的,我也看过 testnet_genesis 代码,它是从 development_config 或 local_testnet_config 函数调用的。但我找不到“创建”帐户的方法。 development_config 创建的帐户来自种子“Alice”和“Bob”等。我想从子密钥生成的公钥创建它们,并像 alice 和 bob 帐户一样将它们显示在前端模板上。
    • 您可以将公钥添加到这个endowed_accounts vec。以github.com/paritytech/substrate/blob/… 为例。关于前端的显示,需要在ui中手动添加到通讯录中。
    【解决方案2】:

    如果满足以下条件,当前会添加这些测试帐户:

    (第二次检查纯粹是为了向后兼容)

    正如 bkchr 所提到的,这些帐户没有存储任何状态,因此在将某些东西转移到帐户之前,它们并不真正存在。

    【讨论】:

    猜你喜欢
    • 2013-01-24
    • 2019-01-02
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多