Как я могу инициализировать баланс пользователя в блокчейне субстрата? - PullRequest
0 голосов
/ 31 мая 2019

Когда я запускаю блокчейн Substrate, я хочу инициализировать пользователей с некоторым свободным балансом.

Как мне этого добиться?

Что если моя цепочка уже запущена, а я не хочуперезапустить его?

1 Ответ

2 голосов
/ 31 мая 2019

Конфигурация Genesis

Лучший способ настроить пользователей субстрата с некоторым начальным свободным балансом - это обновить файл chain_spec.rs таким образом, чтобы пользователи получали единицы в блоке генеза вашей блокчейна.

Эта конфигурация генезиса происходит через модуль Balances:

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 - это просто Алиса, но вы можете добавить любые учетные записи, которые вы хотите, например, так:

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 Module

Если вы уже запустили блокчейн и у вас есть SudoЕсли модуль включен, то пользователь также может вызвать привилегированную функцию set_balance в модуле «Балансы».

Эта функция позволит вам установить свободный и зарезервированный баланс любой учетной записи налюбое значение.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...