Конфигурация 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
в модуле «Балансы».
Эта функция позволит вам установить свободный и зарезервированный баланс любой учетной записи налюбое значение.