substrate-node-template 中的帐户在哪里?

Where are accounts located in substrate-node-template?

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

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

这是我的 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 帐户等到我的创世配置中吗?谢谢

帐户只是节点模板中的 public 键。这意味着您可以检查每个可能的 public 键,它会 return 为零。但这并不意味着这个帐户有任何关联的状态。 (假设你已经配置了一个高于 0 的存在存款)。

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

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

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

正如 bkchr 提到的那样,这些帐户没有存储状态,因此在将某些内容转移到帐户之前它们并不真正存在。