簡體   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