如何在 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 模块
如果您已经启动了区块链并且启用了 Sudo 模块,那么还可以调用 Balances 模块中的 set_balance
特权函数。
此功能将允许您将任何帐户的免费和保留余额设置为任何值。
当我启动我的 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 模块
如果您已经启动了区块链并且启用了 Sudo 模块,那么还可以调用 Balances 模块中的 set_balance
特权函数。
此功能将允许您将任何帐户的免费和保留余额设置为任何值。