首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在底层区块链中初始化用户的余额?

如何在底层区块链中初始化用户的余额?
EN

Stack Overflow用户
提问于 2019-05-31 18:00:28
回答 1查看 614关注 0票数 0

当我开始我的底层区块链时,我想用一些自由余额来初始化用户。

我如何才能做到这一点?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 18:00:28

Genesis配置

为底层用户设置一些初始自由余额的最佳方法是更新您的chain_spec.rs文件,以便在区块链的起源区块为用户提供单位。

这种起源配置通过Balances模块进行:

代码语言:javascript
复制
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,但是您可以像这样添加您想要的任何帐户:

代码语言:javascript
复制
vec![
    account_key("Alice"),
    account_key("Bob"),
    // From public key
    sr25519::Public::from_ss58check("5GukQt4gJW2XqzFwmm3RHa7x6sYuVcGhuhz72CN7oiBsgffx").unwrap(),

]

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

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

Sudo模块

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

此功能允许您将任何帐户的自由余额和预留余额设置为任何值。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56392875

复制
相关文章

相似问题

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