From fb12136975f4551deb117c659d88f2937a97e5b5 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Mon, 4 Nov 2019 13:46:33 -0700 Subject: [PATCH] Add genesis_accounts module (#6708) --- genesis/src/genesis_accounts.rs | 27 +++++++++++++++++++++++++++ genesis/src/main.rs | 14 ++++++++------ 2 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 genesis/src/genesis_accounts.rs diff --git a/genesis/src/genesis_accounts.rs b/genesis/src/genesis_accounts.rs new file mode 100644 index 0000000000..75f6c13387 --- /dev/null +++ b/genesis/src/genesis_accounts.rs @@ -0,0 +1,27 @@ +use solana_sdk::{account::Account, pubkey::Pubkey, system_program}; + +pub(crate) fn create_genesis_accounts( + mint_pubkey: &Pubkey, + mint_lamports: u64, +) -> Vec<(Pubkey, Account)> { + vec![ + // the mint + ( + *mint_pubkey, + Account::new(mint_lamports, 0, &system_program::id()), + ), + ] +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_create_genesis_accounts() { + let mint_lamports = 42; + let accounts = create_genesis_accounts(&Pubkey::default(), mint_lamports); + let genesis_lamports: u64 = accounts.iter().map(|(_, account)| account.lamports).sum(); + assert_eq!(genesis_lamports, mint_lamports); + } +} diff --git a/genesis/src/main.rs b/genesis/src/main.rs index dbe5bec060..62c0d548f2 100644 --- a/genesis/src/main.rs +++ b/genesis/src/main.rs @@ -1,5 +1,8 @@ //! A command-line executable for generating the chain's genesis block. +mod genesis_accounts; + +use crate::genesis_accounts::create_genesis_accounts; use clap::{crate_description, crate_name, crate_version, value_t_or_exit, App, Arg}; use solana_genesis::Base64Account; use solana_ledger::blocktree::create_new_ledger; @@ -330,12 +333,7 @@ fn main() -> Result<(), Box> { bootstrap_leader_stake_lamports, ); - let accounts = vec![ - // the mint - ( - mint_keypair.pubkey(), - Account::new(lamports, 0, &system_program::id()), - ), + let mut accounts = vec![ // node needs an account to issue votes from ( bootstrap_leader_keypair.pubkey(), @@ -359,6 +357,10 @@ fn main() -> Result<(), Box> { ), ), ]; + accounts.append(&mut create_genesis_accounts( + &mint_keypair.pubkey(), + lamports, + )); let ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64); let slots_per_epoch = value_t_or_exit!(matches, "slots_per_epoch", u64);