diff --git a/core/benches/banking_stage.rs b/core/benches/banking_stage.rs index debd764163..c070ec0547 100644 --- a/core/benches/banking_stage.rs +++ b/core/benches/banking_stage.rs @@ -11,7 +11,7 @@ use solana::banking_stage::{create_test_recorder, BankingStage}; use solana::blocktree::{get_tmp_ledger_path, Blocktree}; use solana::cluster_info::ClusterInfo; use solana::cluster_info::Node; -use solana::genesis_utils::create_genesis_block; +use solana::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use solana::packet::to_packets_chunked; use solana::poh_recorder::WorkingBankEntries; use solana::service::Service; @@ -25,7 +25,6 @@ use solana_sdk::timing::{ duration_as_ms, timestamp, DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES, }; use std::iter; -use std::rc::Rc; use std::sync::atomic::Ordering; use std::sync::mpsc::{channel, Receiver}; use std::sync::{Arc, RwLock}; @@ -52,7 +51,7 @@ fn check_txs(receiver: &Arc>, ref_tx_count: usize) #[bench] fn bench_consume_buffered(bencher: &mut Bencher) { - let (genesis_block, _mint_keypair) = create_genesis_block(100_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(100_000); let bank = Arc::new(Bank::new(&genesis_block)); let ledger_path = get_tmp_ledger_path!(); let my_id = Pubkey::new_rand(); @@ -92,7 +91,11 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { // a multiple of packet chunk 2X duplicates to avoid races let txes = 192 * num_threads * 2; let mint_total = 1_000_000_000_000; - let (mut genesis_block, mint_keypair) = create_genesis_block(mint_total); + let GenesisBlockInfo { + mut genesis_block, + mint_keypair, + .. + } = create_genesis_block(mint_total); // Set a high ticks_per_slot so we don't run out of ticks // during the benchmark @@ -203,7 +206,11 @@ fn bench_banking_stage_multi_programs(bencher: &mut Bencher) { // a multiple of packet chunk 2X duplicates to avoid races let txes = 96 * 100 * num_threads * 2; let mint_total = 1_000_000_000_000; - let (genesis_block, mint_keypair) = create_genesis_block(mint_total); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(mint_total); let (verified_sender, verified_receiver) = channel(); let (vote_sender, vote_receiver) = channel(); diff --git a/core/src/bank_forks.rs b/core/src/bank_forks.rs index e3d4c6be8c..421872e950 100644 --- a/core/src/bank_forks.rs +++ b/core/src/bank_forks.rs @@ -147,13 +147,13 @@ impl BankForks { #[cfg(test)] mod tests { use super::*; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use solana_sdk::hash::Hash; use solana_sdk::pubkey::Pubkey; #[test] fn test_bank_forks() { - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let mut bank_forks = BankForks::new(0, bank); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); @@ -165,7 +165,7 @@ mod tests { #[test] fn test_bank_forks_descendants() { - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let mut bank_forks = BankForks::new(0, bank); let bank0 = bank_forks[0].clone(); @@ -182,7 +182,7 @@ mod tests { #[test] fn test_bank_forks_ancestors() { - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let mut bank_forks = BankForks::new(0, bank); let bank0 = bank_forks[0].clone(); @@ -200,7 +200,7 @@ mod tests { #[test] fn test_bank_forks_frozen_banks() { - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let mut bank_forks = BankForks::new(0, bank); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); @@ -211,7 +211,7 @@ mod tests { #[test] fn test_bank_forks_active_banks() { - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let mut bank_forks = BankForks::new(0, bank); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index d688c6224c..96c89e4d5a 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -848,7 +848,7 @@ mod tests { use crate::blocktree::get_tmp_ledger_path; use crate::cluster_info::Node; use crate::entry::EntrySlice; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::packet::to_packets; use crate::poh_recorder::WorkingBank; use crate::{get_tmp_ledger_path, tmp_ledger_name}; @@ -862,7 +862,7 @@ mod tests { #[test] fn test_banking_stage_shutdown1() { - let genesis_block = create_genesis_block(2).0; + let genesis_block = create_genesis_block(2).genesis_block; let bank = Arc::new(Bank::new(&genesis_block)); let (verified_sender, verified_receiver) = channel(); let (vote_sender, vote_receiver) = channel(); @@ -893,7 +893,9 @@ mod tests { #[test] fn test_banking_stage_tick() { solana_logger::setup(); - let (mut genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { + mut genesis_block, .. + } = create_genesis_block(2); genesis_block.ticks_per_slot = 4; let bank = Arc::new(Bank::new(&genesis_block)); let start_hash = bank.last_blockhash(); @@ -939,7 +941,11 @@ mod tests { #[test] fn test_banking_stage_entries_only() { solana_logger::setup(); - let (genesis_block, mint_keypair) = create_genesis_block(10); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10); let bank = Arc::new(Bank::new(&genesis_block)); let start_hash = bank.last_blockhash(); let (verified_sender, verified_receiver) = channel(); @@ -1046,7 +1052,11 @@ mod tests { // In this attack we'll demonstrate that a verifier can interpret the ledger // differently if either the server doesn't signal the ledger to add an // Entry OR if the verifier tries to parallelize across multiple Entries. - let (genesis_block, mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(2); let (verified_sender, verified_receiver) = channel(); // Process a batch that includes a transaction that receives two lamports. @@ -1137,7 +1147,11 @@ mod tests { #[test] fn test_bank_record_transactions() { - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let bank = Arc::new(Bank::new(&genesis_block)); let working_bank = WorkingBank { bank: bank.clone(), @@ -1217,7 +1231,11 @@ mod tests { #[test] fn test_bank_filter_transaction_indexes() { - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let pubkey = Pubkey::new_rand(); let transactions = vec![ @@ -1294,7 +1312,11 @@ mod tests { #[test] fn test_bank_prepare_filter_for_pending_transaction() { - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let pubkey = Pubkey::new_rand(); let transactions = vec![ @@ -1407,7 +1429,11 @@ mod tests { #[test] fn test_bank_process_and_record_transactions() { solana_logger::setup(); - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let bank = Arc::new(Bank::new(&genesis_block)); let pubkey = Pubkey::new_rand(); @@ -1492,7 +1518,11 @@ mod tests { #[test] fn test_bank_process_and_record_transactions_account_in_use() { solana_logger::setup(); - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let bank = Arc::new(Bank::new(&genesis_block)); let pubkey = Pubkey::new_rand(); let pubkey1 = Pubkey::new_rand(); diff --git a/core/src/blockstream_service.rs b/core/src/blockstream_service.rs index dd8ac82207..1b1ab498eb 100644 --- a/core/src/blockstream_service.rs +++ b/core/src/blockstream_service.rs @@ -109,7 +109,7 @@ mod test { use super::*; use crate::blocktree::create_new_tmp_ledger; use crate::entry::{create_ticks, Entry}; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use bincode::{deserialize, serialize}; use chrono::{DateTime, FixedOffset}; use serde_json::Value; @@ -124,7 +124,9 @@ mod test { let leader_id = Pubkey::new_rand(); // Set up genesis block and blocktree - let (mut genesis_block, _mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + mut genesis_block, .. + } = create_genesis_block(1000); genesis_block.ticks_per_slot = ticks_per_slot; let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); diff --git a/core/src/blocktree_processor.rs b/core/src/blocktree_processor.rs index 1ef8af0a98..dc9afbf813 100644 --- a/core/src/blocktree_processor.rs +++ b/core/src/blocktree_processor.rs @@ -286,7 +286,9 @@ pub mod tests { use crate::blocktree::create_new_tmp_ledger; use crate::blocktree::tests::entries_to_blobs; use crate::entry::{create_ticks, next_entry, next_entry_mut, Entry}; - use crate::genesis_utils::{create_genesis_block, create_genesis_block_with_leader}; + use crate::genesis_utils::{ + create_genesis_block, create_genesis_block_with_leader, GenesisBlockInfo, + }; use solana_runtime::epoch_schedule::EpochSchedule; use solana_sdk::hash::Hash; use solana_sdk::instruction::InstructionError; @@ -315,7 +317,7 @@ pub mod tests { fn test_process_blocktree_with_incomplete_slot() { solana_logger::setup(); - let (genesis_block, _mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let ticks_per_slot = genesis_block.ticks_per_slot; /* @@ -372,7 +374,7 @@ pub mod tests { fn test_process_blocktree_with_two_forks_and_squash() { solana_logger::setup(); - let (genesis_block, _mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let ticks_per_slot = genesis_block.ticks_per_slot; // Create a new ledger with slot 0 full of ticks @@ -446,7 +448,7 @@ pub mod tests { fn test_process_blocktree_with_two_forks() { solana_logger::setup(); - let (genesis_block, _mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let ticks_per_slot = genesis_block.ticks_per_slot; // Create a new ledger with slot 0 full of ticks @@ -537,7 +539,7 @@ pub mod tests { fn test_process_blocktree_epoch_boundary_root() { solana_logger::setup(); - let (genesis_block, _mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let ticks_per_slot = genesis_block.ticks_per_slot; // Create a new ledger with slot 0 full of ticks @@ -627,7 +629,11 @@ pub mod tests { fn test_process_empty_entry_is_registered() { solana_logger::setup(); - let (genesis_block, mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(2); let bank = Bank::new(&genesis_block); let keypair = Keypair::new(); let slot_entries = create_ticks(genesis_block.ticks_per_slot - 1, genesis_block.hash()); @@ -654,8 +660,11 @@ pub mod tests { solana_logger::setup(); let leader_pubkey = Pubkey::new_rand(); let mint = 100; - let (genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(mint, &leader_pubkey, 50); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(mint, &leader_pubkey, 50); let (ledger_path, mut last_entry_hash) = create_new_tmp_ledger!(&genesis_block); debug!("ledger_path: {:?}", ledger_path); @@ -722,7 +731,9 @@ pub mod tests { #[test] fn test_process_ledger_with_one_tick_per_slot() { - let (mut genesis_block, _mint_keypair) = create_genesis_block(123); + let GenesisBlockInfo { + mut genesis_block, .. + } = create_genesis_block(123); genesis_block.ticks_per_slot = 1; let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); @@ -744,7 +755,7 @@ pub mod tests { #[test] fn test_process_entries_tick() { - let (genesis_block, _mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); // ensure bank can process a tick @@ -756,7 +767,11 @@ pub mod tests { #[test] fn test_process_entries_2_entries_collision() { - let (genesis_block, mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -786,7 +801,11 @@ pub mod tests { #[test] fn test_process_entries_2_txes_collision() { - let (genesis_block, mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -839,7 +858,11 @@ pub mod tests { #[test] fn test_process_entries_2_txes_collision_and_error() { - let (genesis_block, mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -917,7 +940,11 @@ pub mod tests { #[test] fn test_process_entries_2_entries_par() { - let (genesis_block, mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -964,7 +991,11 @@ pub mod tests { #[test] fn test_process_entries_2_entries_tick() { - let (genesis_block, mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -1028,7 +1059,11 @@ pub mod tests { #[test] fn test_update_transaction_statuses() { // Make sure instruction errors still update the signature cache - let (genesis_block, mint_keypair) = create_genesis_block(11_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(11_000); let bank = Bank::new(&genesis_block); let pubkey = Pubkey::new_rand(); bank.transfer(1_000, &mint_keypair, &pubkey).unwrap(); @@ -1066,7 +1101,11 @@ pub mod tests { #[test] fn test_update_transaction_statuses_fail() { - let (genesis_block, mint_keypair) = create_genesis_block(11_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(11_000); let bank = Bank::new(&genesis_block); let keypair1 = Keypair::new(); let keypair2 = Keypair::new(); @@ -1107,7 +1146,11 @@ pub mod tests { // this test throws lots of rayon threads at process_entries() // finds bugs in very low-layer stuff solana_logger::setup(); - let (genesis_block, mint_keypair) = create_genesis_block(1_000_000_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(1_000_000_000); let mut bank = Bank::new(&genesis_block); const NUM_TRANSFERS: usize = 100; diff --git a/core/src/broadcast_stage.rs b/core/src/broadcast_stage.rs index dd6b99e31f..28b341abc4 100644 --- a/core/src/broadcast_stage.rs +++ b/core/src/broadcast_stage.rs @@ -298,7 +298,7 @@ mod test { use crate::blocktree::{get_tmp_ledger_path, Blocktree}; use crate::cluster_info::{ClusterInfo, Node}; use crate::entry::create_ticks; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::service::Service; use solana_runtime::bank::Bank; use solana_sdk::hash::Hash; @@ -337,7 +337,7 @@ mod test { let exit_sender = Arc::new(AtomicBool::new(false)); - let (genesis_block, _) = create_genesis_block(10_000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(10_000); let bank = Arc::new(Bank::new(&genesis_block)); // Start up the broadcast stage diff --git a/core/src/fullnode.rs b/core/src/fullnode.rs index b4e5093749..669d81aace 100644 --- a/core/src/fullnode.rs +++ b/core/src/fullnode.rs @@ -345,14 +345,17 @@ impl Service for Fullnode { pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) { use crate::blocktree::create_new_tmp_ledger; - use crate::genesis_utils::create_genesis_block_with_leader; + use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo}; let node_keypair = Arc::new(Keypair::new()); let node = Node::new_localhost_with_pubkey(&node_keypair.pubkey()); let contact_info = node.info.clone(); - let (mut genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(10_000, &contact_info.id, 42); + let GenesisBlockInfo { + mut genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(10_000, &contact_info.id, 42); genesis_block .native_instruction_processors .push(solana_budget_program!()); @@ -390,7 +393,7 @@ mod tests { let validator_keypair = Keypair::new(); let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey()); let genesis_block = - create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000).0; + create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000).genesis_block; let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let voting_keypair = Arc::new(Keypair::new()); @@ -419,8 +422,9 @@ mod tests { .map(|_| { let validator_keypair = Keypair::new(); let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey()); - let (genesis_block, _mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000); + let genesis_block = + create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000) + .genesis_block; let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); ledger_paths.push(validator_ledger_path.clone()); let voting_keypair = Arc::new(Keypair::new()); diff --git a/core/src/genesis_utils.rs b/core/src/genesis_utils.rs index 1d5296a663..6901d263a6 100644 --- a/core/src/genesis_utils.rs +++ b/core/src/genesis_utils.rs @@ -1,17 +1,14 @@ pub use solana_runtime::genesis_utils::{ - create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS, + create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS, }; -use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::pubkey::Pubkey; -use solana_sdk::signature::Keypair; // same as genesis_block::create_genesis_block, but with bootstrap_leader staking logic // for the core crate tests -pub fn create_genesis_block(mint_lamports: u64) -> (GenesisBlock, Keypair) { - let (genesis_block, mint_keypair, _vote_keypair) = create_genesis_block_with_leader( +pub fn create_genesis_block(mint_lamports: u64) -> GenesisBlockInfo { + create_genesis_block_with_leader( mint_lamports, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS, - ); - (genesis_block, mint_keypair) + ) } diff --git a/core/src/leader_schedule_cache.rs b/core/src/leader_schedule_cache.rs index 59fcb5eb70..5966a62acb 100644 --- a/core/src/leader_schedule_cache.rs +++ b/core/src/leader_schedule_cache.rs @@ -167,7 +167,9 @@ mod tests { use super::*; use crate::blocktree::tests::make_slot_entries; use crate::genesis_utils::create_genesis_block; - use crate::genesis_utils::{create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS}; + use crate::genesis_utils::{ + create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS, + }; use crate::staking_utils::tests::setup_vote_and_stake_accounts; use solana_runtime::bank::Bank; use solana_runtime::epoch_schedule::{EpochSchedule, MINIMUM_SLOT_LENGTH}; @@ -179,7 +181,7 @@ mod tests { #[test] fn test_slot_leader_at() { - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Bank::new(&genesis_block); let cache = LeaderScheduleCache::new_from_bank(&bank); @@ -221,7 +223,7 @@ mod tests { fn run_thread_race() { let slots_per_epoch = MINIMUM_SLOT_LENGTH as u64; let epoch_schedule = EpochSchedule::new(slots_per_epoch, slots_per_epoch / 2, true); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let cache = Arc::new(LeaderScheduleCache::new(epoch_schedule, bank.slot())); @@ -265,7 +267,7 @@ mod tests { &pubkey, BOOTSTRAP_LEADER_LAMPORTS, ) - .0; + .genesis_block; genesis_block.epoch_warmup = false; let bank = Bank::new(&genesis_block); @@ -306,7 +308,7 @@ mod tests { &pubkey, BOOTSTRAP_LEADER_LAMPORTS, ) - .0; + .genesis_block; genesis_block.epoch_warmup = false; let bank = Bank::new(&genesis_block); @@ -372,7 +374,11 @@ mod tests { #[test] fn test_next_leader_slot_next_epoch() { - let (mut genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + mut genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); genesis_block.epoch_warmup = false; let bank = Bank::new(&genesis_block); @@ -420,7 +426,7 @@ mod tests { #[test] fn test_schedule_for_unconfirmed_epoch() { - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let cache = LeaderScheduleCache::new_from_bank(&bank); diff --git a/core/src/leader_schedule_utils.rs b/core/src/leader_schedule_utils.rs index dd7e3f72d8..51a36aa6d7 100644 --- a/core/src/leader_schedule_utils.rs +++ b/core/src/leader_schedule_utils.rs @@ -65,7 +65,7 @@ mod tests { fn test_leader_schedule_via_bank() { let pubkey = Pubkey::new_rand(); let genesis_block = - create_genesis_block_with_leader(0, &pubkey, BOOTSTRAP_LEADER_LAMPORTS).0; + create_genesis_block_with_leader(0, &pubkey, BOOTSTRAP_LEADER_LAMPORTS).genesis_block; let bank = Bank::new(&genesis_block); let ids_and_stakes: Vec<_> = staking_utils::staked_nodes(&bank).into_iter().collect(); @@ -90,7 +90,7 @@ mod tests { &pubkey, BOOTSTRAP_LEADER_LAMPORTS, ) - .0; + .genesis_block; let bank = Bank::new(&genesis_block); assert_eq!(slot_leader_at(bank.slot(), &bank).unwrap(), pubkey); } diff --git a/core/src/local_cluster.rs b/core/src/local_cluster.rs index 555d02a99e..5b135f36aa 100644 --- a/core/src/local_cluster.rs +++ b/core/src/local_cluster.rs @@ -3,7 +3,7 @@ use crate::cluster::Cluster; use crate::cluster_info::{Node, FULLNODE_PORT_RANGE}; use crate::contact_info::ContactInfo; use crate::fullnode::{Fullnode, FullnodeConfig}; -use crate::genesis_utils::create_genesis_block_with_leader; +use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo}; use crate::gossip_service::discover_cluster; use crate::replicator::Replicator; use crate::service::Service; @@ -116,7 +116,11 @@ impl LocalCluster { let leader_keypair = Arc::new(Keypair::new()); let leader_pubkey = leader_keypair.pubkey(); let leader_node = Node::new_localhost_with_pubkey(&leader_keypair.pubkey()); - let (mut genesis_block, mint_keypair, voting_keypair) = create_genesis_block_with_leader( + let GenesisBlockInfo { + mut genesis_block, + mint_keypair, + voting_keypair, + } = create_genesis_block_with_leader( config.cluster_lamports, &leader_pubkey, config.node_stakes[0], diff --git a/core/src/poh_recorder.rs b/core/src/poh_recorder.rs index 314ec48264..195f61776a 100644 --- a/core/src/poh_recorder.rs +++ b/core/src/poh_recorder.rs @@ -443,7 +443,7 @@ impl PohRecorder { mod tests { use super::*; use crate::blocktree::{get_tmp_ledger_path, Blocktree}; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::test_tx::test_tx; use solana_sdk::hash::hash; use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT; @@ -535,7 +535,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, _entry_receiver) = PohRecorder::new( @@ -569,7 +569,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -615,7 +615,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -659,7 +659,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -697,7 +697,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, _entry_receiver) = PohRecorder::new( @@ -737,7 +737,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -784,7 +784,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -828,7 +828,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, entry_receiver) = PohRecorder::new( @@ -961,7 +961,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let (mut poh_recorder, _entry_receiver) = PohRecorder::new( 0, @@ -993,7 +993,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let (sender, receiver) = sync_channel(1); let (mut poh_recorder, _entry_receiver) = PohRecorder::new_with_clear_signal( @@ -1022,7 +1022,9 @@ mod tests { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); let ticks_per_slot = 5; - let (mut genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { + mut genesis_block, .. + } = create_genesis_block(2); genesis_block.ticks_per_slot = ticks_per_slot; let bank = Arc::new(Bank::new(&genesis_block)); @@ -1070,7 +1072,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, _entry_receiver) = PohRecorder::new( @@ -1232,7 +1234,7 @@ mod tests { { let blocktree = Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let (mut poh_recorder, _entry_receiver) = PohRecorder::new( diff --git a/core/src/poh_service.rs b/core/src/poh_service.rs index 471878fec8..d10812795e 100644 --- a/core/src/poh_service.rs +++ b/core/src/poh_service.rs @@ -86,7 +86,7 @@ impl Service for PohService { mod tests { use super::*; use crate::blocktree::{get_tmp_ledger_path, Blocktree}; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::leader_schedule_cache::LeaderScheduleCache; use crate::poh_recorder::WorkingBank; use crate::result::Result; @@ -98,7 +98,7 @@ mod tests { #[test] fn test_poh_service() { - let (genesis_block, _mint_keypair) = create_genesis_block(2); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(2); let bank = Arc::new(Bank::new(&genesis_block)); let prev_hash = bank.last_blockhash(); let ledger_path = get_tmp_ledger_path!(); diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index 34792c5806..4c7fdc1277 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -628,7 +628,7 @@ mod test { Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"), ); - let genesis_block = create_genesis_block(10_000).0; + let genesis_block = create_genesis_block(10_000).genesis_block; let bank0 = Bank::new(&genesis_block); let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank0)); let mut bank_forks = BankForks::new(0, bank0); @@ -667,7 +667,7 @@ mod test { #[test] fn test_handle_new_root() { - let genesis_block = create_genesis_block(10_000).0; + let genesis_block = create_genesis_block(10_000).genesis_block; let bank0 = Bank::new(&genesis_block); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank0))); let mut progress = HashMap::new(); diff --git a/core/src/rpc.rs b/core/src/rpc.rs index 9aedb71498..63e3205a01 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -477,7 +477,7 @@ impl RpcSol for RpcSolImpl { mod tests { use super::*; use crate::contact_info::ContactInfo; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use jsonrpc_core::{MetaIoHandler, Response}; use solana_sdk::hash::{hash, Hash}; use solana_sdk::instruction::InstructionError; @@ -833,11 +833,15 @@ mod tests { } fn new_bank_forks() -> (Arc>, Keypair) { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); ( Arc::new(RwLock::new(BankForks::new(bank.slot(), bank))), - alice, + mint_keypair, ) } diff --git a/core/src/rpc_pubsub.rs b/core/src/rpc_pubsub.rs index 8a3228267d..caf686c3e6 100644 --- a/core/src/rpc_pubsub.rs +++ b/core/src/rpc_pubsub.rs @@ -238,7 +238,7 @@ impl RpcSolPubSub for RpcSolPubSubImpl { mod tests { use super::*; use crate::bank_forks::BankForks; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use jsonrpc_core::futures::sync::mpsc; use jsonrpc_core::Response; use jsonrpc_pubsub::{PubSubHandler, Session}; @@ -276,7 +276,11 @@ mod tests { #[test] fn test_signature_subscribe() { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair: alice, + .. + } = create_genesis_block(10_000); let bob = Keypair::new(); let bob_pubkey = bob.pubkey(); let bank = Bank::new(&genesis_block); @@ -309,7 +313,11 @@ mod tests { #[test] fn test_signature_unsubscribe() { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair: alice, + .. + } = create_genesis_block(10_000); let bob_pubkey = Pubkey::new_rand(); let bank = Bank::new(&genesis_block); let arc_bank = Arc::new(bank); @@ -351,7 +359,11 @@ mod tests { #[test] fn test_account_subscribe() { - let (mut genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + mut genesis_block, + mint_keypair: alice, + .. + } = create_genesis_block(10_000); // This test depends on the budget program genesis_block @@ -489,7 +501,11 @@ mod tests { #[test] #[should_panic] fn test_account_confirmations_not_fulfilled() { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair: alice, + .. + } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let blockhash = bank.last_blockhash(); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); @@ -514,7 +530,11 @@ mod tests { #[test] fn test_account_confirmations() { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair: alice, + .. + } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let blockhash = bank.last_blockhash(); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); diff --git a/core/src/rpc_service.rs b/core/src/rpc_service.rs index b36ca6a643..641f421560 100644 --- a/core/src/rpc_service.rs +++ b/core/src/rpc_service.rs @@ -88,14 +88,18 @@ impl Service for JsonRpcService { mod tests { use super::*; use crate::contact_info::ContactInfo; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use solana_runtime::bank::Bank; use solana_sdk::signature::KeypairUtil; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; #[test] fn test_rpc_new() { - let (genesis_block, alice) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let exit = Arc::new(AtomicBool::new(false)); let bank = Bank::new(&genesis_block); let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_invalid_keypair( @@ -123,7 +127,7 @@ mod tests { .request_processor .read() .unwrap() - .get_balance(&alice.pubkey()) + .get_balance(&mint_keypair.pubkey()) ); exit.store(true, Ordering::Relaxed); rpc_service.join().unwrap(); diff --git a/core/src/rpc_subscriptions.rs b/core/src/rpc_subscriptions.rs index 85bdd87304..5fe5b252ba 100644 --- a/core/src/rpc_subscriptions.rs +++ b/core/src/rpc_subscriptions.rs @@ -298,7 +298,7 @@ impl RpcSubscriptions { #[cfg(test)] mod tests { use super::*; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use jsonrpc_pubsub::typed::Subscriber; use solana_budget_api; use solana_sdk::signature::{Keypair, KeypairUtil}; @@ -307,7 +307,11 @@ mod tests { #[test] fn test_check_account_subscribe() { - let (genesis_block, mint_keypair) = create_genesis_block(100); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(100); let bank = Bank::new(&genesis_block); let blockhash = bank.last_blockhash(); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); @@ -358,7 +362,11 @@ mod tests { #[test] fn test_check_program_subscribe() { - let (genesis_block, mint_keypair) = create_genesis_block(100); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(100); let bank = Bank::new(&genesis_block); let blockhash = bank.last_blockhash(); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); @@ -408,7 +416,11 @@ mod tests { } #[test] fn test_check_signature_subscribe() { - let (genesis_block, mint_keypair) = create_genesis_block(100); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(100); let bank = Bank::new(&genesis_block); let blockhash = bank.last_blockhash(); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); diff --git a/core/src/staking_utils.rs b/core/src/staking_utils.rs index 46f1bfd1ea..1cdeaf2b80 100644 --- a/core/src/staking_utils.rs +++ b/core/src/staking_utils.rs @@ -113,7 +113,8 @@ where pub(crate) mod tests { use super::*; use crate::genesis_utils::{ - create_genesis_block, create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS, + create_genesis_block, create_genesis_block_with_leader, GenesisBlockInfo, + BOOTSTRAP_LEADER_LAMPORTS, }; use hashbrown::HashSet; use solana_sdk::instruction::Instruction; @@ -131,8 +132,11 @@ pub(crate) mod tests { #[test] fn test_vote_account_stakes_at_epoch() { - let (genesis_block, _mint_keypair, voting_keypair) = - create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS); + let GenesisBlockInfo { + genesis_block, + voting_keypair, + .. + } = create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS); let bank = Bank::new(&genesis_block); @@ -206,7 +210,11 @@ pub(crate) mod tests { let stake = 42; let validator = Keypair::new(); - let (genesis_block, mint_keypair) = create_genesis_block(10_000); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block(10_000); let bank = Bank::new(&genesis_block); let vote_id = Pubkey::new_rand(); diff --git a/core/src/storage_stage.rs b/core/src/storage_stage.rs index 1016aa588b..52deafb731 100644 --- a/core/src/storage_stage.rs +++ b/core/src/storage_stage.rs @@ -462,7 +462,7 @@ mod tests { use crate::cluster_info::ClusterInfo; use crate::contact_info::ContactInfo; use crate::entry::{make_tiny_test_entries, Entry}; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::service::Service; use rayon::prelude::*; use solana_runtime::bank::Bank; @@ -485,7 +485,7 @@ mod tests { let exit = Arc::new(AtomicBool::new(false)); let cluster_info = test_cluster_info(&keypair.pubkey()); - let (genesis_block, _mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000); let bank = Arc::new(Bank::new(&genesis_block)); let bank_forks = Arc::new(RwLock::new(BankForks::new_from_banks(&[bank], 0))); let (_slot_sender, slot_receiver) = channel(); @@ -518,7 +518,7 @@ mod tests { let storage_keypair = Arc::new(Keypair::new()); let exit = Arc::new(AtomicBool::new(false)); - let (genesis_block, _mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000); let ticks_per_slot = genesis_block.ticks_per_slot; let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); @@ -593,7 +593,7 @@ mod tests { let storage_keypair = Arc::new(Keypair::new()); let exit = Arc::new(AtomicBool::new(false)); - let (genesis_block, _mint_keypair) = create_genesis_block(1000); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(1000); let ticks_per_slot = genesis_block.ticks_per_slot;; let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); diff --git a/core/src/tvu.rs b/core/src/tvu.rs index 69df045ddc..99e878d396 100644 --- a/core/src/tvu.rs +++ b/core/src/tvu.rs @@ -183,7 +183,7 @@ pub mod tests { use crate::banking_stage::create_test_recorder; use crate::blocktree::get_tmp_ledger_path; use crate::cluster_info::{ClusterInfo, Node}; - use crate::genesis_utils::create_genesis_block; + use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo}; use crate::storage_stage::STORAGE_ROTATE_TEST_COUNT; use solana_runtime::bank::Bank; use std::sync::atomic::Ordering; @@ -196,7 +196,7 @@ pub mod tests { let target1 = Node::new_localhost_with_pubkey(&target1_keypair.pubkey()); let starting_balance = 10_000; - let (genesis_block, _mint_keypair) = create_genesis_block(starting_balance); + let GenesisBlockInfo { genesis_block, .. } = create_genesis_block(starting_balance); let bank_forks = BankForks::new(0, Bank::new(&genesis_block)); diff --git a/core/src/window_service.rs b/core/src/window_service.rs index 0251dd27b5..66b3e7d442 100644 --- a/core/src/window_service.rs +++ b/core/src/window_service.rs @@ -296,7 +296,7 @@ mod test { let me_id = Pubkey::new_rand(); let leader_id = Pubkey::new_rand(); let bank = Arc::new(Bank::new( - &create_genesis_block_with_leader(100, &leader_id, 10).0, + &create_genesis_block_with_leader(100, &leader_id, 10).genesis_block, )); let cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank)); @@ -358,7 +358,7 @@ mod test { .expect("Expected to be able to open database ledger"); let blocktree = Arc::new(blocktree); - let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).0); + let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).genesis_block); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let repair_strategy = RepairStrategy::RepairAll { bank_forks: bank_forks.clone(), @@ -445,7 +445,7 @@ mod test { .expect("Expected to be able to open database ledger"); let blocktree = Arc::new(blocktree); - let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).0); + let bank = Bank::new(&create_genesis_block_with_leader(100, &me_id, 10).genesis_block); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let epoch_schedule = *bank_forks.read().unwrap().working_bank().epoch_schedule(); let repair_strategy = RepairStrategy::RepairAll { diff --git a/core/tests/tvu.rs b/core/tests/tvu.rs index da6ec1dad2..640a96df5b 100644 --- a/core/tests/tvu.rs +++ b/core/tests/tvu.rs @@ -8,7 +8,7 @@ use solana::cluster_info::{ClusterInfo, Node}; use solana::entry::next_entry_mut; use solana::entry::EntrySlice; use solana::fullnode; -use solana::genesis_utils::create_genesis_block_with_leader; +use solana::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo}; use solana::gossip_service::GossipService; use solana::packet::index_blobs; use solana::rpc_subscriptions::RpcSubscriptions; @@ -75,8 +75,11 @@ fn test_replay() { let mint_balance = 10_000; let leader_balance = 100; - let (mut genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(mint_balance, &leader.info.id, leader_balance); + let GenesisBlockInfo { + mut genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(mint_balance, &leader.info.id, leader_balance); genesis_block.ticks_per_slot = 160; genesis_block.slots_per_epoch = MINIMUM_SLOT_LENGTH as u64; let (blocktree_path, blockhash) = create_new_tmp_ledger!(&genesis_block); diff --git a/ledger-tool/tests/basic.rs b/ledger-tool/tests/basic.rs index 0557457517..b6be8e5270 100644 --- a/ledger-tool/tests/basic.rs +++ b/ledger-tool/tests/basic.rs @@ -32,7 +32,7 @@ fn bad_arguments() { #[test] fn nominal() { - let genesis_block = create_genesis_block(100).0; + let genesis_block = create_genesis_block(100).genesis_block; let ticks_per_slot = genesis_block.ticks_per_slot; let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 5877fa9935..359e5262f7 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -999,7 +999,9 @@ impl Drop for Bank { mod tests { use super::*; use crate::epoch_schedule::MINIMUM_SLOT_LENGTH; - use crate::genesis_utils::{create_genesis_block_with_leader, BOOTSTRAP_LEADER_LAMPORTS}; + use crate::genesis_utils::{ + create_genesis_block_with_leader, GenesisBlockInfo, BOOTSTRAP_LEADER_LAMPORTS, + }; use solana_sdk::genesis_block::create_genesis_block; use solana_sdk::hash; use solana_sdk::instruction::InstructionError; @@ -1014,7 +1016,12 @@ mod tests { let dummy_leader_id = Pubkey::new_rand(); let dummy_leader_lamports = BOOTSTRAP_LEADER_LAMPORTS; let mint_lamports = 10_000; - let (genesis_block, mint_keypair, voting_keypair) = create_genesis_block_with_leader( + let GenesisBlockInfo { + genesis_block, + mint_keypair, + voting_keypair, + .. + } = create_genesis_block_with_leader( mint_lamports, &dummy_leader_id, dummy_leader_lamports, @@ -1230,8 +1237,11 @@ mod tests { #[test] fn test_bank_tx_fee() { let leader = Pubkey::new_rand(); - let (genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(100, &leader, 3); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(100, &leader, 3); let mut bank = Bank::new(&genesis_block); bank.fee_calculator.lamports_per_signature = 3; @@ -1271,8 +1281,11 @@ mod tests { #[test] fn test_filter_program_errors_and_collect_fee() { let leader = Pubkey::new_rand(); - let (genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(100, &leader, 3); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(100, &leader, 3); let mut bank = Bank::new(&genesis_block); let key = Keypair::new(); @@ -1584,7 +1597,8 @@ mod tests { fn test_bank_epoch_vote_accounts() { let leader_id = Pubkey::new_rand(); let leader_lamports = 3; - let mut genesis_block = create_genesis_block_with_leader(5, &leader_id, leader_lamports).0; + let mut genesis_block = + create_genesis_block_with_leader(5, &leader_id, leader_lamports).genesis_block; // set this up weird, forces future generation, odd mod(), etc. // this says: "vote_accounts for epoch X should be generated at slot index 3 in epoch X-2... @@ -1820,8 +1834,11 @@ mod tests { #[test] fn test_bank_vote_accounts() { - let (genesis_block, mint_keypair, _voting_keypair) = - create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1); let bank = Arc::new(Bank::new(&genesis_block)); let vote_accounts = bank.vote_accounts(); diff --git a/runtime/src/genesis_utils.rs b/runtime/src/genesis_utils.rs index ea3e59cf49..cb98010d1e 100644 --- a/runtime/src/genesis_utils.rs +++ b/runtime/src/genesis_utils.rs @@ -9,11 +9,17 @@ use solana_vote_api::vote_state; // The default stake placed with the bootstrap leader pub const BOOTSTRAP_LEADER_LAMPORTS: u64 = 42; +pub struct GenesisBlockInfo { + pub genesis_block: GenesisBlock, + pub mint_keypair: Keypair, + pub voting_keypair: Keypair, +} + pub fn create_genesis_block_with_leader( mint_lamports: u64, bootstrap_leader_id: &Pubkey, bootstrap_leader_stake_lamports: u64, -) -> (GenesisBlock, Keypair, Keypair) { +) -> GenesisBlockInfo { let mint_keypair = Keypair::new(); let voting_keypair = Keypair::new(); let staking_keypair = Keypair::new(); @@ -56,5 +62,9 @@ pub fn create_genesis_block_with_leader( &[solana_vote_program!(), solana_stake_program!()], ); - (genesis_block, mint_keypair, voting_keypair) + GenesisBlockInfo { + genesis_block, + mint_keypair, + voting_keypair, + } } diff --git a/runtime/src/locked_accounts_results.rs b/runtime/src/locked_accounts_results.rs index bb9f8f1b72..c34d6127fd 100644 --- a/runtime/src/locked_accounts_results.rs +++ b/runtime/src/locked_accounts_results.rs @@ -53,7 +53,7 @@ impl<'a, 'b, I: Borrow> Drop for LockedAccountsResults<'a, 'b, I> { #[cfg(test)] mod tests { use super::*; - use crate::genesis_utils::create_genesis_block_with_leader; + use crate::genesis_utils::{create_genesis_block_with_leader, GenesisBlockInfo}; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction; @@ -108,8 +108,11 @@ mod tests { fn setup() -> (Bank, Vec) { let dummy_leader_id = Pubkey::new_rand(); - let (genesis_block, mint_keypair, _) = - create_genesis_block_with_leader(500, &dummy_leader_id, 100); + let GenesisBlockInfo { + genesis_block, + mint_keypair, + .. + } = create_genesis_block_with_leader(500, &dummy_leader_id, 100); let bank = Bank::new(&genesis_block); let pubkey = Pubkey::new_rand();