需求
Solana原版代码会在初始化时,预先会创建一系列账户地址和余额
跟进代码,确定初始化地址用途,是否必须的,是否可禁掉
跟进代码
genesis/src/genesis_accounts.rs
fn add_stakes(
genesis_config: &mut GenesisConfig,
staker_infos: &[StakerInfo],
unlock_info: &UnlockInfo,
) -> u64 {
staker_infos
.iter()
.map(|staker_info| create_and_add_stakes(genesis_config, staker_info, unlock_info, None))
.sum::<u64>()
}
pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig, mut issued_lamports: u64) {
// add_stakes() and add_validators() award tokens for rent exemption and
// to cover an initial transfer-free period of the network
issued_lamports += add_stakes(
genesis_config,
CREATOR_STAKER_INFOS,
&UNLOCKS_HALF_AT_9_MONTHS,
) + add_stakes(
genesis_config,
SERVICE_STAKER_INFOS,
&UNLOCKS_ALL_AT_9_MONTHS,
) + add_stakes(
genesis_config,
FOUNDATION_STAKER_INFOS,
&UNLOCKS_ALL_DAY_ZERO,
) + add_stakes(genesis_config, GRANTS_STAKER_INFOS, &UNLOCKS_ALL_DAY_ZERO)
+ add_stakes(
genesis_config,
COMMUNITY_STAKER_INFOS,
&UNLOCKS_ALL_DAY_ZERO,
);
// "one thanks" (community pool) gets 500_000_000SOL (total) - above distributions
create_and_add_stakes(
genesis_config,
&StakerInfo {
name: "one thanks",
staker: "7vEAL3nS9CWmy1q6njUUyHE7Cf5RmyQpND6CsoHjzPiR",
lamports: (500_000_000 * LAMPORTS_PER_SOL).saturating_sub(issued_lamports),
withdrawer: Some("3FFaheyqtyAXZSYxDzsr5CVKvJuvZD1WE1VEsBtDbRqB"),
},
&UNLOCKS_ALL_DAY_ZERO,
None,
);
}
分析
- 创建多个质押锁仓地址,并初始化对应量余额
- 创建community pool,余额为 500_000_000 - (issued_lamports - faucet_lamports)
从功能来说不是私链初始化链所必须的
Diff
genesis/src/main.rs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/genesis/src/main.rs b/genesis/src/main.rs
index 6b7efd5e66..45154443ab 100644
--- a/genesis/src/main.rs
+++ b/genesis/src/main.rs
@@ -15,7 +15,7 @@ use {
},
},
solana_entry::poh::compute_hashes_per_tick,
- solana_genesis::{genesis_accounts::add_genesis_accounts, Base64Account},
+ solana_genesis::{Base64Account},
solana_ledger::{blockstore::create_new_ledger, blockstore_options::LedgerColumnOptions},
solana_sdk::{
account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
@@ -597,7 +597,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.map(|account| account.lamports)
.sum::<u64>();
- add_genesis_accounts(&mut genesis_config, issued_lamports - faucet_lamports);
+ // add_genesis_accounts(&mut genesis_config, issued_lamports - faucet_lamports);
let parse_address = |address: &str, input_type: &str| {
address.parse::<Pubkey>().unwrap_or_else(|err| {
测试
- 重置链网络
- 查看初始化地址,是否有非预期地址
- 查看bootstrap-validator 出块,手续费接收等是否正常