繁体   English   中英

如何在Substrate区块链中初始化用户余额?

[英]How can I initialize a user's balance in a Substrate blockchain?

当我启动Substrate区块链时,我想用一些自由余额来初始化用户。

我该如何实现?

如果我的链已经在运行并且我不想重新启动它,该怎么办?

创世配置

为您的Substrate用户设置一些初始可用余额的最好方法是更新chain_spec.rs文件,以便在区块链的创世块中为用户提供单位。

此创始配置通过“余额”模块进行:

fn testnet_genesis(initial_authorities: Vec<AuthorityId>, endowed_accounts: Vec<AccountId>, root_key: AccountId) -> GenesisConfig {
    GenesisConfig {
        balances: Some(BalancesConfig {
            transaction_base_fee: 1,
            transaction_byte_fee: 0,
            existential_deposit: 500,
            transfer_fee: 0,
            creation_fee: 0,
            balances: endowed_accounts.iter().cloned().map(|k|(k, 1 << 60)).collect(),
            vesting: vec![],
        }),
        ...
    }
}

请注意此处的balances配置,其中每个endowed_accounts都被迭代,并且其余额设置为1 << 60 (读取1左移60,即十进制1152921504606846976 )。

对于--dev链, endowed_accounts只是Alice,但是您可以添加所需的任何帐户,如下所示:

vec![
    account_key("Alice"),
    account_key("Bob"),
    // From public key
    sr25519::Public::from_ss58check("5GukQt4gJW2XqzFwmm3RHa7x6sYuVcGhuhz72CN7oiBsgffx").unwrap(),

]

其中account_key函数使用输入的字符串生成sr25519种子。

fn account_key(s: &str) -> AccountId {
    sr25519::Pair::from_string(&format!("//{}", s), None)
        .expect("static values are valid; qed")
        .public()
}

须藤模块

如果您已经启动了区块链并且启用了Sudo模块,那么use也可以调用Balances模块中的set_balance特权函数。

此功能可让您将任何帐户的自由和保留余额设置为任何值。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM