create_genesis_block() now returns a struct (#4403)

This commit is contained in:
Michael Vines 2019-05-22 20:39:00 -07:00 committed by GitHub
parent 7ada8510c4
commit 2ed77b040a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 308 additions and 132 deletions

View File

@ -11,7 +11,7 @@ use solana::banking_stage::{create_test_recorder, BankingStage};
use solana::blocktree::{get_tmp_ledger_path, Blocktree}; use solana::blocktree::{get_tmp_ledger_path, Blocktree};
use solana::cluster_info::ClusterInfo; use solana::cluster_info::ClusterInfo;
use solana::cluster_info::Node; 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::packet::to_packets_chunked;
use solana::poh_recorder::WorkingBankEntries; use solana::poh_recorder::WorkingBankEntries;
use solana::service::Service; use solana::service::Service;
@ -25,7 +25,6 @@ use solana_sdk::timing::{
duration_as_ms, timestamp, DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES, duration_as_ms, timestamp, DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES,
}; };
use std::iter; use std::iter;
use std::rc::Rc;
use std::sync::atomic::Ordering; use std::sync::atomic::Ordering;
use std::sync::mpsc::{channel, Receiver}; use std::sync::mpsc::{channel, Receiver};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@ -52,7 +51,7 @@ fn check_txs(receiver: &Arc<Receiver<WorkingBankEntries>>, ref_tx_count: usize)
#[bench] #[bench]
fn bench_consume_buffered(bencher: &mut Bencher) { 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 bank = Arc::new(Bank::new(&genesis_block));
let ledger_path = get_tmp_ledger_path!(); let ledger_path = get_tmp_ledger_path!();
let my_id = Pubkey::new_rand(); 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 // a multiple of packet chunk 2X duplicates to avoid races
let txes = 192 * num_threads * 2; let txes = 192 * num_threads * 2;
let mint_total = 1_000_000_000_000; 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 // Set a high ticks_per_slot so we don't run out of ticks
// during the benchmark // 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 // a multiple of packet chunk 2X duplicates to avoid races
let txes = 96 * 100 * num_threads * 2; let txes = 96 * 100 * num_threads * 2;
let mint_total = 1_000_000_000_000; 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 (verified_sender, verified_receiver) = channel();
let (vote_sender, vote_receiver) = channel(); let (vote_sender, vote_receiver) = channel();

View File

@ -147,13 +147,13 @@ impl BankForks {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; 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::hash::Hash;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
#[test] #[test]
fn test_bank_forks() { 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 bank = Bank::new(&genesis_block);
let mut bank_forks = BankForks::new(0, bank); let mut bank_forks = BankForks::new(0, bank);
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);
@ -165,7 +165,7 @@ mod tests {
#[test] #[test]
fn test_bank_forks_descendants() { 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 bank = Bank::new(&genesis_block);
let mut bank_forks = BankForks::new(0, bank); let mut bank_forks = BankForks::new(0, bank);
let bank0 = bank_forks[0].clone(); let bank0 = bank_forks[0].clone();
@ -182,7 +182,7 @@ mod tests {
#[test] #[test]
fn test_bank_forks_ancestors() { 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 bank = Bank::new(&genesis_block);
let mut bank_forks = BankForks::new(0, bank); let mut bank_forks = BankForks::new(0, bank);
let bank0 = bank_forks[0].clone(); let bank0 = bank_forks[0].clone();
@ -200,7 +200,7 @@ mod tests {
#[test] #[test]
fn test_bank_forks_frozen_banks() { 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 bank = Bank::new(&genesis_block);
let mut bank_forks = BankForks::new(0, bank); let mut bank_forks = BankForks::new(0, bank);
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);
@ -211,7 +211,7 @@ mod tests {
#[test] #[test]
fn test_bank_forks_active_banks() { 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 bank = Bank::new(&genesis_block);
let mut bank_forks = BankForks::new(0, bank); let mut bank_forks = BankForks::new(0, bank);
let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1); let child_bank = Bank::new_from_parent(&bank_forks[0u64], &Pubkey::default(), 1);

View File

@ -848,7 +848,7 @@ mod tests {
use crate::blocktree::get_tmp_ledger_path; use crate::blocktree::get_tmp_ledger_path;
use crate::cluster_info::Node; use crate::cluster_info::Node;
use crate::entry::EntrySlice; 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::packet::to_packets;
use crate::poh_recorder::WorkingBank; use crate::poh_recorder::WorkingBank;
use crate::{get_tmp_ledger_path, tmp_ledger_name}; use crate::{get_tmp_ledger_path, tmp_ledger_name};
@ -862,7 +862,7 @@ mod tests {
#[test] #[test]
fn test_banking_stage_shutdown1() { 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 bank = Arc::new(Bank::new(&genesis_block));
let (verified_sender, verified_receiver) = channel(); let (verified_sender, verified_receiver) = channel();
let (vote_sender, vote_receiver) = channel(); let (vote_sender, vote_receiver) = channel();
@ -893,7 +893,9 @@ mod tests {
#[test] #[test]
fn test_banking_stage_tick() { fn test_banking_stage_tick() {
solana_logger::setup(); 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; genesis_block.ticks_per_slot = 4;
let bank = Arc::new(Bank::new(&genesis_block)); let bank = Arc::new(Bank::new(&genesis_block));
let start_hash = bank.last_blockhash(); let start_hash = bank.last_blockhash();
@ -939,7 +941,11 @@ mod tests {
#[test] #[test]
fn test_banking_stage_entries_only() { fn test_banking_stage_entries_only() {
solana_logger::setup(); 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 bank = Arc::new(Bank::new(&genesis_block));
let start_hash = bank.last_blockhash(); let start_hash = bank.last_blockhash();
let (verified_sender, verified_receiver) = channel(); 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 // 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 // differently if either the server doesn't signal the ledger to add an
// Entry OR if the verifier tries to parallelize across multiple Entries. // 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(); let (verified_sender, verified_receiver) = channel();
// Process a batch that includes a transaction that receives two lamports. // Process a batch that includes a transaction that receives two lamports.
@ -1137,7 +1147,11 @@ mod tests {
#[test] #[test]
fn test_bank_record_transactions() { 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 bank = Arc::new(Bank::new(&genesis_block));
let working_bank = WorkingBank { let working_bank = WorkingBank {
bank: bank.clone(), bank: bank.clone(),
@ -1217,7 +1231,11 @@ mod tests {
#[test] #[test]
fn test_bank_filter_transaction_indexes() { 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 pubkey = Pubkey::new_rand();
let transactions = vec![ let transactions = vec![
@ -1294,7 +1312,11 @@ mod tests {
#[test] #[test]
fn test_bank_prepare_filter_for_pending_transaction() { 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 pubkey = Pubkey::new_rand();
let transactions = vec![ let transactions = vec![
@ -1407,7 +1429,11 @@ mod tests {
#[test] #[test]
fn test_bank_process_and_record_transactions() { fn test_bank_process_and_record_transactions() {
solana_logger::setup(); 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 bank = Arc::new(Bank::new(&genesis_block));
let pubkey = Pubkey::new_rand(); let pubkey = Pubkey::new_rand();
@ -1492,7 +1518,11 @@ mod tests {
#[test] #[test]
fn test_bank_process_and_record_transactions_account_in_use() { fn test_bank_process_and_record_transactions_account_in_use() {
solana_logger::setup(); 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 bank = Arc::new(Bank::new(&genesis_block));
let pubkey = Pubkey::new_rand(); let pubkey = Pubkey::new_rand();
let pubkey1 = Pubkey::new_rand(); let pubkey1 = Pubkey::new_rand();

View File

@ -109,7 +109,7 @@ mod test {
use super::*; use super::*;
use crate::blocktree::create_new_tmp_ledger; use crate::blocktree::create_new_tmp_ledger;
use crate::entry::{create_ticks, Entry}; 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 bincode::{deserialize, serialize};
use chrono::{DateTime, FixedOffset}; use chrono::{DateTime, FixedOffset};
use serde_json::Value; use serde_json::Value;
@ -124,7 +124,9 @@ mod test {
let leader_id = Pubkey::new_rand(); let leader_id = Pubkey::new_rand();
// Set up genesis block and blocktree // 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; genesis_block.ticks_per_slot = ticks_per_slot;
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);

View File

@ -286,7 +286,9 @@ pub mod tests {
use crate::blocktree::create_new_tmp_ledger; use crate::blocktree::create_new_tmp_ledger;
use crate::blocktree::tests::entries_to_blobs; use crate::blocktree::tests::entries_to_blobs;
use crate::entry::{create_ticks, next_entry, next_entry_mut, Entry}; 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_runtime::epoch_schedule::EpochSchedule;
use solana_sdk::hash::Hash; use solana_sdk::hash::Hash;
use solana_sdk::instruction::InstructionError; use solana_sdk::instruction::InstructionError;
@ -315,7 +317,7 @@ pub mod tests {
fn test_process_blocktree_with_incomplete_slot() { fn test_process_blocktree_with_incomplete_slot() {
solana_logger::setup(); 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; 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() { fn test_process_blocktree_with_two_forks_and_squash() {
solana_logger::setup(); 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; let ticks_per_slot = genesis_block.ticks_per_slot;
// Create a new ledger with slot 0 full of ticks // Create a new ledger with slot 0 full of ticks
@ -446,7 +448,7 @@ pub mod tests {
fn test_process_blocktree_with_two_forks() { fn test_process_blocktree_with_two_forks() {
solana_logger::setup(); 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; let ticks_per_slot = genesis_block.ticks_per_slot;
// Create a new ledger with slot 0 full of ticks // Create a new ledger with slot 0 full of ticks
@ -537,7 +539,7 @@ pub mod tests {
fn test_process_blocktree_epoch_boundary_root() { fn test_process_blocktree_epoch_boundary_root() {
solana_logger::setup(); 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; let ticks_per_slot = genesis_block.ticks_per_slot;
// Create a new ledger with slot 0 full of ticks // Create a new ledger with slot 0 full of ticks
@ -627,7 +629,11 @@ pub mod tests {
fn test_process_empty_entry_is_registered() { fn test_process_empty_entry_is_registered() {
solana_logger::setup(); 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 bank = Bank::new(&genesis_block);
let keypair = Keypair::new(); let keypair = Keypair::new();
let slot_entries = create_ticks(genesis_block.ticks_per_slot - 1, genesis_block.hash()); let slot_entries = create_ticks(genesis_block.ticks_per_slot - 1, genesis_block.hash());
@ -654,8 +660,11 @@ pub mod tests {
solana_logger::setup(); solana_logger::setup();
let leader_pubkey = Pubkey::new_rand(); let leader_pubkey = Pubkey::new_rand();
let mint = 100; let mint = 100;
let (genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(mint, &leader_pubkey, 50); 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); let (ledger_path, mut last_entry_hash) = create_new_tmp_ledger!(&genesis_block);
debug!("ledger_path: {:?}", ledger_path); debug!("ledger_path: {:?}", ledger_path);
@ -722,7 +731,9 @@ pub mod tests {
#[test] #[test]
fn test_process_ledger_with_one_tick_per_slot() { 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; genesis_block.ticks_per_slot = 1;
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
@ -744,7 +755,7 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_tick() { 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); let bank = Bank::new(&genesis_block);
// ensure bank can process a tick // ensure bank can process a tick
@ -756,7 +767,11 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_2_entries_collision() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -786,7 +801,11 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_2_txes_collision() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -839,7 +858,11 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_2_txes_collision_and_error() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -917,7 +940,11 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_2_entries_par() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -964,7 +991,11 @@ pub mod tests {
#[test] #[test]
fn test_process_entries_2_entries_tick() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -1028,7 +1059,11 @@ pub mod tests {
#[test] #[test]
fn test_update_transaction_statuses() { fn test_update_transaction_statuses() {
// Make sure instruction errors still update the signature cache // 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 bank = Bank::new(&genesis_block);
let pubkey = Pubkey::new_rand(); let pubkey = Pubkey::new_rand();
bank.transfer(1_000, &mint_keypair, &pubkey).unwrap(); bank.transfer(1_000, &mint_keypair, &pubkey).unwrap();
@ -1066,7 +1101,11 @@ pub mod tests {
#[test] #[test]
fn test_update_transaction_statuses_fail() { 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 bank = Bank::new(&genesis_block);
let keypair1 = Keypair::new(); let keypair1 = Keypair::new();
let keypair2 = Keypair::new(); let keypair2 = Keypair::new();
@ -1107,7 +1146,11 @@ pub mod tests {
// this test throws lots of rayon threads at process_entries() // this test throws lots of rayon threads at process_entries()
// finds bugs in very low-layer stuff // finds bugs in very low-layer stuff
solana_logger::setup(); 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); let mut bank = Bank::new(&genesis_block);
const NUM_TRANSFERS: usize = 100; const NUM_TRANSFERS: usize = 100;

View File

@ -298,7 +298,7 @@ mod test {
use crate::blocktree::{get_tmp_ledger_path, Blocktree}; use crate::blocktree::{get_tmp_ledger_path, Blocktree};
use crate::cluster_info::{ClusterInfo, Node}; use crate::cluster_info::{ClusterInfo, Node};
use crate::entry::create_ticks; 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 crate::service::Service;
use solana_runtime::bank::Bank; use solana_runtime::bank::Bank;
use solana_sdk::hash::Hash; use solana_sdk::hash::Hash;
@ -337,7 +337,7 @@ mod test {
let exit_sender = Arc::new(AtomicBool::new(false)); 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)); let bank = Arc::new(Bank::new(&genesis_block));
// Start up the broadcast stage // Start up the broadcast stage

View File

@ -345,14 +345,17 @@ impl Service for Fullnode {
pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) { pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) {
use crate::blocktree::create_new_tmp_ledger; 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_keypair = Arc::new(Keypair::new());
let node = Node::new_localhost_with_pubkey(&node_keypair.pubkey()); let node = Node::new_localhost_with_pubkey(&node_keypair.pubkey());
let contact_info = node.info.clone(); let contact_info = node.info.clone();
let (mut genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(10_000, &contact_info.id, 42); mut genesis_block,
mint_keypair,
..
} = create_genesis_block_with_leader(10_000, &contact_info.id, 42);
genesis_block genesis_block
.native_instruction_processors .native_instruction_processors
.push(solana_budget_program!()); .push(solana_budget_program!());
@ -390,7 +393,7 @@ mod tests {
let validator_keypair = Keypair::new(); let validator_keypair = Keypair::new();
let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey()); let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey());
let genesis_block = 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 (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
let voting_keypair = Arc::new(Keypair::new()); let voting_keypair = Arc::new(Keypair::new());
@ -419,8 +422,9 @@ mod tests {
.map(|_| { .map(|_| {
let validator_keypair = Keypair::new(); let validator_keypair = Keypair::new();
let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey()); let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey());
let (genesis_block, _mint_keypair, _voting_keypair) = let genesis_block =
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000); 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 (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
ledger_paths.push(validator_ledger_path.clone()); ledger_paths.push(validator_ledger_path.clone());
let voting_keypair = Arc::new(Keypair::new()); let voting_keypair = Arc::new(Keypair::new());

View File

@ -1,17 +1,14 @@
pub use solana_runtime::genesis_utils::{ 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::pubkey::Pubkey;
use solana_sdk::signature::Keypair;
// same as genesis_block::create_genesis_block, but with bootstrap_leader staking logic // same as genesis_block::create_genesis_block, but with bootstrap_leader staking logic
// for the core crate tests // for the core crate tests
pub fn create_genesis_block(mint_lamports: u64) -> (GenesisBlock, Keypair) { pub fn create_genesis_block(mint_lamports: u64) -> GenesisBlockInfo {
let (genesis_block, mint_keypair, _vote_keypair) = create_genesis_block_with_leader( create_genesis_block_with_leader(
mint_lamports, mint_lamports,
&Pubkey::new_rand(), &Pubkey::new_rand(),
BOOTSTRAP_LEADER_LAMPORTS, BOOTSTRAP_LEADER_LAMPORTS,
); )
(genesis_block, mint_keypair)
} }

View File

@ -167,7 +167,9 @@ mod tests {
use super::*; use super::*;
use crate::blocktree::tests::make_slot_entries; use crate::blocktree::tests::make_slot_entries;
use crate::genesis_utils::create_genesis_block; 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 crate::staking_utils::tests::setup_vote_and_stake_accounts;
use solana_runtime::bank::Bank; use solana_runtime::bank::Bank;
use solana_runtime::epoch_schedule::{EpochSchedule, MINIMUM_SLOT_LENGTH}; use solana_runtime::epoch_schedule::{EpochSchedule, MINIMUM_SLOT_LENGTH};
@ -179,7 +181,7 @@ mod tests {
#[test] #[test]
fn test_slot_leader_at() { 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 bank = Bank::new(&genesis_block);
let cache = LeaderScheduleCache::new_from_bank(&bank); let cache = LeaderScheduleCache::new_from_bank(&bank);
@ -221,7 +223,7 @@ mod tests {
fn run_thread_race() { fn run_thread_race() {
let slots_per_epoch = MINIMUM_SLOT_LENGTH as u64; let slots_per_epoch = MINIMUM_SLOT_LENGTH as u64;
let epoch_schedule = EpochSchedule::new(slots_per_epoch, slots_per_epoch / 2, true); 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 bank = Arc::new(Bank::new(&genesis_block));
let cache = Arc::new(LeaderScheduleCache::new(epoch_schedule, bank.slot())); let cache = Arc::new(LeaderScheduleCache::new(epoch_schedule, bank.slot()));
@ -265,7 +267,7 @@ mod tests {
&pubkey, &pubkey,
BOOTSTRAP_LEADER_LAMPORTS, BOOTSTRAP_LEADER_LAMPORTS,
) )
.0; .genesis_block;
genesis_block.epoch_warmup = false; genesis_block.epoch_warmup = false;
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
@ -306,7 +308,7 @@ mod tests {
&pubkey, &pubkey,
BOOTSTRAP_LEADER_LAMPORTS, BOOTSTRAP_LEADER_LAMPORTS,
) )
.0; .genesis_block;
genesis_block.epoch_warmup = false; genesis_block.epoch_warmup = false;
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
@ -372,7 +374,11 @@ mod tests {
#[test] #[test]
fn test_next_leader_slot_next_epoch() { 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; genesis_block.epoch_warmup = false;
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
@ -420,7 +426,7 @@ mod tests {
#[test] #[test]
fn test_schedule_for_unconfirmed_epoch() { 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 bank = Arc::new(Bank::new(&genesis_block));
let cache = LeaderScheduleCache::new_from_bank(&bank); let cache = LeaderScheduleCache::new_from_bank(&bank);

View File

@ -65,7 +65,7 @@ mod tests {
fn test_leader_schedule_via_bank() { fn test_leader_schedule_via_bank() {
let pubkey = Pubkey::new_rand(); let pubkey = Pubkey::new_rand();
let genesis_block = 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 bank = Bank::new(&genesis_block);
let ids_and_stakes: Vec<_> = staking_utils::staked_nodes(&bank).into_iter().collect(); let ids_and_stakes: Vec<_> = staking_utils::staked_nodes(&bank).into_iter().collect();
@ -90,7 +90,7 @@ mod tests {
&pubkey, &pubkey,
BOOTSTRAP_LEADER_LAMPORTS, BOOTSTRAP_LEADER_LAMPORTS,
) )
.0; .genesis_block;
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
assert_eq!(slot_leader_at(bank.slot(), &bank).unwrap(), pubkey); assert_eq!(slot_leader_at(bank.slot(), &bank).unwrap(), pubkey);
} }

View File

@ -3,7 +3,7 @@ use crate::cluster::Cluster;
use crate::cluster_info::{Node, FULLNODE_PORT_RANGE}; use crate::cluster_info::{Node, FULLNODE_PORT_RANGE};
use crate::contact_info::ContactInfo; use crate::contact_info::ContactInfo;
use crate::fullnode::{Fullnode, FullnodeConfig}; 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::gossip_service::discover_cluster;
use crate::replicator::Replicator; use crate::replicator::Replicator;
use crate::service::Service; use crate::service::Service;
@ -116,7 +116,11 @@ impl LocalCluster {
let leader_keypair = Arc::new(Keypair::new()); let leader_keypair = Arc::new(Keypair::new());
let leader_pubkey = leader_keypair.pubkey(); let leader_pubkey = leader_keypair.pubkey();
let leader_node = Node::new_localhost_with_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, config.cluster_lamports,
&leader_pubkey, &leader_pubkey,
config.node_stakes[0], config.node_stakes[0],

View File

@ -443,7 +443,7 @@ impl PohRecorder {
mod tests { mod tests {
use super::*; use super::*;
use crate::blocktree::{get_tmp_ledger_path, Blocktree}; 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 crate::test_tx::test_tx;
use solana_sdk::hash::hash; use solana_sdk::hash::hash;
use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT; use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
@ -535,7 +535,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, _entry_receiver) = PohRecorder::new( let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
@ -569,7 +569,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -615,7 +615,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -659,7 +659,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -697,7 +697,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, _entry_receiver) = PohRecorder::new( let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
@ -737,7 +737,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -784,7 +784,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -828,7 +828,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, entry_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver) = PohRecorder::new(
@ -961,7 +961,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let (mut poh_recorder, _entry_receiver) = PohRecorder::new( let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
0, 0,
@ -993,7 +993,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let (sender, receiver) = sync_channel(1); let (sender, receiver) = sync_channel(1);
let (mut poh_recorder, _entry_receiver) = PohRecorder::new_with_clear_signal( let (mut poh_recorder, _entry_receiver) = PohRecorder::new_with_clear_signal(
@ -1022,7 +1022,9 @@ mod tests {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger");
let ticks_per_slot = 5; 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; genesis_block.ticks_per_slot = ticks_per_slot;
let bank = Arc::new(Bank::new(&genesis_block)); let bank = Arc::new(Bank::new(&genesis_block));
@ -1070,7 +1072,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, _entry_receiver) = PohRecorder::new( let (mut poh_recorder, _entry_receiver) = PohRecorder::new(
@ -1232,7 +1234,7 @@ mod tests {
{ {
let blocktree = let blocktree =
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"); 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let (mut poh_recorder, _entry_receiver) = PohRecorder::new( let (mut poh_recorder, _entry_receiver) = PohRecorder::new(

View File

@ -86,7 +86,7 @@ impl Service for PohService {
mod tests { mod tests {
use super::*; use super::*;
use crate::blocktree::{get_tmp_ledger_path, Blocktree}; 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::leader_schedule_cache::LeaderScheduleCache;
use crate::poh_recorder::WorkingBank; use crate::poh_recorder::WorkingBank;
use crate::result::Result; use crate::result::Result;
@ -98,7 +98,7 @@ mod tests {
#[test] #[test]
fn test_poh_service() { 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 bank = Arc::new(Bank::new(&genesis_block));
let prev_hash = bank.last_blockhash(); let prev_hash = bank.last_blockhash();
let ledger_path = get_tmp_ledger_path!(); let ledger_path = get_tmp_ledger_path!();

View File

@ -628,7 +628,7 @@ mod test {
Blocktree::open(&ledger_path).expect("Expected to be able to open database ledger"), 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 bank0 = Bank::new(&genesis_block);
let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank0)); let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank0));
let mut bank_forks = BankForks::new(0, bank0); let mut bank_forks = BankForks::new(0, bank0);
@ -667,7 +667,7 @@ mod test {
#[test] #[test]
fn test_handle_new_root() { 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 bank0 = Bank::new(&genesis_block);
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank0))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank0)));
let mut progress = HashMap::new(); let mut progress = HashMap::new();

View File

@ -477,7 +477,7 @@ impl RpcSol for RpcSolImpl {
mod tests { mod tests {
use super::*; use super::*;
use crate::contact_info::ContactInfo; 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 jsonrpc_core::{MetaIoHandler, Response};
use solana_sdk::hash::{hash, Hash}; use solana_sdk::hash::{hash, Hash};
use solana_sdk::instruction::InstructionError; use solana_sdk::instruction::InstructionError;
@ -833,11 +833,15 @@ mod tests {
} }
fn new_bank_forks() -> (Arc<RwLock<BankForks>>, Keypair) { fn new_bank_forks() -> (Arc<RwLock<BankForks>>, 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); let bank = Bank::new(&genesis_block);
( (
Arc::new(RwLock::new(BankForks::new(bank.slot(), bank))), Arc::new(RwLock::new(BankForks::new(bank.slot(), bank))),
alice, mint_keypair,
) )
} }

View File

@ -238,7 +238,7 @@ impl RpcSolPubSub for RpcSolPubSubImpl {
mod tests { mod tests {
use super::*; use super::*;
use crate::bank_forks::BankForks; 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::futures::sync::mpsc;
use jsonrpc_core::Response; use jsonrpc_core::Response;
use jsonrpc_pubsub::{PubSubHandler, Session}; use jsonrpc_pubsub::{PubSubHandler, Session};
@ -276,7 +276,11 @@ mod tests {
#[test] #[test]
fn test_signature_subscribe() { 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 = Keypair::new();
let bob_pubkey = bob.pubkey(); let bob_pubkey = bob.pubkey();
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
@ -309,7 +313,11 @@ mod tests {
#[test] #[test]
fn test_signature_unsubscribe() { 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 bob_pubkey = Pubkey::new_rand();
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
let arc_bank = Arc::new(bank); let arc_bank = Arc::new(bank);
@ -351,7 +359,11 @@ mod tests {
#[test] #[test]
fn test_account_subscribe() { 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 // This test depends on the budget program
genesis_block genesis_block
@ -489,7 +501,11 @@ mod tests {
#[test] #[test]
#[should_panic] #[should_panic]
fn test_account_confirmations_not_fulfilled() { 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 bank = Bank::new(&genesis_block);
let blockhash = bank.last_blockhash(); let blockhash = bank.last_blockhash();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
@ -514,7 +530,11 @@ mod tests {
#[test] #[test]
fn test_account_confirmations() { 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 bank = Bank::new(&genesis_block);
let blockhash = bank.last_blockhash(); let blockhash = bank.last_blockhash();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));

View File

@ -88,14 +88,18 @@ impl Service for JsonRpcService {
mod tests { mod tests {
use super::*; use super::*;
use crate::contact_info::ContactInfo; 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_runtime::bank::Bank;
use solana_sdk::signature::KeypairUtil; use solana_sdk::signature::KeypairUtil;
use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::net::{IpAddr, Ipv4Addr, SocketAddr};
#[test] #[test]
fn test_rpc_new() { 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 exit = Arc::new(AtomicBool::new(false));
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_invalid_keypair( let cluster_info = Arc::new(RwLock::new(ClusterInfo::new_with_invalid_keypair(
@ -123,7 +127,7 @@ mod tests {
.request_processor .request_processor
.read() .read()
.unwrap() .unwrap()
.get_balance(&alice.pubkey()) .get_balance(&mint_keypair.pubkey())
); );
exit.store(true, Ordering::Relaxed); exit.store(true, Ordering::Relaxed);
rpc_service.join().unwrap(); rpc_service.join().unwrap();

View File

@ -298,7 +298,7 @@ impl RpcSubscriptions {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::genesis_utils::create_genesis_block; use crate::genesis_utils::{create_genesis_block, GenesisBlockInfo};
use jsonrpc_pubsub::typed::Subscriber; use jsonrpc_pubsub::typed::Subscriber;
use solana_budget_api; use solana_budget_api;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
@ -307,7 +307,11 @@ mod tests {
#[test] #[test]
fn test_check_account_subscribe() { 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 bank = Bank::new(&genesis_block);
let blockhash = bank.last_blockhash(); let blockhash = bank.last_blockhash();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
@ -358,7 +362,11 @@ mod tests {
#[test] #[test]
fn test_check_program_subscribe() { 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 bank = Bank::new(&genesis_block);
let blockhash = bank.last_blockhash(); let blockhash = bank.last_blockhash();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
@ -408,7 +416,11 @@ mod tests {
} }
#[test] #[test]
fn test_check_signature_subscribe() { 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 bank = Bank::new(&genesis_block);
let blockhash = bank.last_blockhash(); let blockhash = bank.last_blockhash();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));

View File

@ -113,7 +113,8 @@ where
pub(crate) mod tests { pub(crate) mod tests {
use super::*; use super::*;
use crate::genesis_utils::{ 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 hashbrown::HashSet;
use solana_sdk::instruction::Instruction; use solana_sdk::instruction::Instruction;
@ -131,8 +132,11 @@ pub(crate) mod tests {
#[test] #[test]
fn test_vote_account_stakes_at_epoch() { fn test_vote_account_stakes_at_epoch() {
let (genesis_block, _mint_keypair, voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS); genesis_block,
voting_keypair,
..
} = create_genesis_block_with_leader(1, &Pubkey::new_rand(), BOOTSTRAP_LEADER_LAMPORTS);
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
@ -206,7 +210,11 @@ pub(crate) mod tests {
let stake = 42; let stake = 42;
let validator = Keypair::new(); 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 bank = Bank::new(&genesis_block);
let vote_id = Pubkey::new_rand(); let vote_id = Pubkey::new_rand();

View File

@ -462,7 +462,7 @@ mod tests {
use crate::cluster_info::ClusterInfo; use crate::cluster_info::ClusterInfo;
use crate::contact_info::ContactInfo; use crate::contact_info::ContactInfo;
use crate::entry::{make_tiny_test_entries, Entry}; 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 crate::service::Service;
use rayon::prelude::*; use rayon::prelude::*;
use solana_runtime::bank::Bank; use solana_runtime::bank::Bank;
@ -485,7 +485,7 @@ mod tests {
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let cluster_info = test_cluster_info(&keypair.pubkey()); 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 = Arc::new(Bank::new(&genesis_block));
let bank_forks = Arc::new(RwLock::new(BankForks::new_from_banks(&[bank], 0))); let bank_forks = Arc::new(RwLock::new(BankForks::new_from_banks(&[bank], 0)));
let (_slot_sender, slot_receiver) = channel(); let (_slot_sender, slot_receiver) = channel();
@ -518,7 +518,7 @@ mod tests {
let storage_keypair = Arc::new(Keypair::new()); let storage_keypair = Arc::new(Keypair::new());
let exit = Arc::new(AtomicBool::new(false)); 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 ticks_per_slot = genesis_block.ticks_per_slot;
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
@ -593,7 +593,7 @@ mod tests {
let storage_keypair = Arc::new(Keypair::new()); let storage_keypair = Arc::new(Keypair::new());
let exit = Arc::new(AtomicBool::new(false)); 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 ticks_per_slot = genesis_block.ticks_per_slot;;
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);

View File

@ -183,7 +183,7 @@ pub mod tests {
use crate::banking_stage::create_test_recorder; use crate::banking_stage::create_test_recorder;
use crate::blocktree::get_tmp_ledger_path; use crate::blocktree::get_tmp_ledger_path;
use crate::cluster_info::{ClusterInfo, Node}; 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 crate::storage_stage::STORAGE_ROTATE_TEST_COUNT;
use solana_runtime::bank::Bank; use solana_runtime::bank::Bank;
use std::sync::atomic::Ordering; use std::sync::atomic::Ordering;
@ -196,7 +196,7 @@ pub mod tests {
let target1 = Node::new_localhost_with_pubkey(&target1_keypair.pubkey()); let target1 = Node::new_localhost_with_pubkey(&target1_keypair.pubkey());
let starting_balance = 10_000; 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)); let bank_forks = BankForks::new(0, Bank::new(&genesis_block));

View File

@ -296,7 +296,7 @@ mod test {
let me_id = Pubkey::new_rand(); let me_id = Pubkey::new_rand();
let leader_id = Pubkey::new_rand(); let leader_id = Pubkey::new_rand();
let bank = Arc::new(Bank::new( 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)); let cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank));
@ -358,7 +358,7 @@ mod test {
.expect("Expected to be able to open database ledger"); .expect("Expected to be able to open database ledger");
let blocktree = Arc::new(blocktree); 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 bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
let repair_strategy = RepairStrategy::RepairAll { let repair_strategy = RepairStrategy::RepairAll {
bank_forks: bank_forks.clone(), bank_forks: bank_forks.clone(),
@ -445,7 +445,7 @@ mod test {
.expect("Expected to be able to open database ledger"); .expect("Expected to be able to open database ledger");
let blocktree = Arc::new(blocktree); 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 bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank)));
let epoch_schedule = *bank_forks.read().unwrap().working_bank().epoch_schedule(); let epoch_schedule = *bank_forks.read().unwrap().working_bank().epoch_schedule();
let repair_strategy = RepairStrategy::RepairAll { let repair_strategy = RepairStrategy::RepairAll {

View File

@ -8,7 +8,7 @@ use solana::cluster_info::{ClusterInfo, Node};
use solana::entry::next_entry_mut; use solana::entry::next_entry_mut;
use solana::entry::EntrySlice; use solana::entry::EntrySlice;
use solana::fullnode; 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::gossip_service::GossipService;
use solana::packet::index_blobs; use solana::packet::index_blobs;
use solana::rpc_subscriptions::RpcSubscriptions; use solana::rpc_subscriptions::RpcSubscriptions;
@ -75,8 +75,11 @@ fn test_replay() {
let mint_balance = 10_000; let mint_balance = 10_000;
let leader_balance = 100; let leader_balance = 100;
let (mut genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(mint_balance, &leader.info.id, leader_balance); 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.ticks_per_slot = 160;
genesis_block.slots_per_epoch = MINIMUM_SLOT_LENGTH as u64; genesis_block.slots_per_epoch = MINIMUM_SLOT_LENGTH as u64;
let (blocktree_path, blockhash) = create_new_tmp_ledger!(&genesis_block); let (blocktree_path, blockhash) = create_new_tmp_ledger!(&genesis_block);

View File

@ -32,7 +32,7 @@ fn bad_arguments() {
#[test] #[test]
fn nominal() { 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 ticks_per_slot = genesis_block.ticks_per_slot;
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block); let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);

View File

@ -999,7 +999,9 @@ impl Drop for Bank {
mod tests { mod tests {
use super::*; use super::*;
use crate::epoch_schedule::MINIMUM_SLOT_LENGTH; 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::genesis_block::create_genesis_block;
use solana_sdk::hash; use solana_sdk::hash;
use solana_sdk::instruction::InstructionError; use solana_sdk::instruction::InstructionError;
@ -1014,7 +1016,12 @@ mod tests {
let dummy_leader_id = Pubkey::new_rand(); let dummy_leader_id = Pubkey::new_rand();
let dummy_leader_lamports = BOOTSTRAP_LEADER_LAMPORTS; let dummy_leader_lamports = BOOTSTRAP_LEADER_LAMPORTS;
let mint_lamports = 10_000; 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, mint_lamports,
&dummy_leader_id, &dummy_leader_id,
dummy_leader_lamports, dummy_leader_lamports,
@ -1230,8 +1237,11 @@ mod tests {
#[test] #[test]
fn test_bank_tx_fee() { fn test_bank_tx_fee() {
let leader = Pubkey::new_rand(); let leader = Pubkey::new_rand();
let (genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(100, &leader, 3); genesis_block,
mint_keypair,
..
} = create_genesis_block_with_leader(100, &leader, 3);
let mut bank = Bank::new(&genesis_block); let mut bank = Bank::new(&genesis_block);
bank.fee_calculator.lamports_per_signature = 3; bank.fee_calculator.lamports_per_signature = 3;
@ -1271,8 +1281,11 @@ mod tests {
#[test] #[test]
fn test_filter_program_errors_and_collect_fee() { fn test_filter_program_errors_and_collect_fee() {
let leader = Pubkey::new_rand(); let leader = Pubkey::new_rand();
let (genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(100, &leader, 3); genesis_block,
mint_keypair,
..
} = create_genesis_block_with_leader(100, &leader, 3);
let mut bank = Bank::new(&genesis_block); let mut bank = Bank::new(&genesis_block);
let key = Keypair::new(); let key = Keypair::new();
@ -1584,7 +1597,8 @@ mod tests {
fn test_bank_epoch_vote_accounts() { fn test_bank_epoch_vote_accounts() {
let leader_id = Pubkey::new_rand(); let leader_id = Pubkey::new_rand();
let leader_lamports = 3; 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. // 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... // 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] #[test]
fn test_bank_vote_accounts() { fn test_bank_vote_accounts() {
let (genesis_block, mint_keypair, _voting_keypair) = let GenesisBlockInfo {
create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1); genesis_block,
mint_keypair,
..
} = create_genesis_block_with_leader(500, &Pubkey::new_rand(), 1);
let bank = Arc::new(Bank::new(&genesis_block)); let bank = Arc::new(Bank::new(&genesis_block));
let vote_accounts = bank.vote_accounts(); let vote_accounts = bank.vote_accounts();

View File

@ -9,11 +9,17 @@ use solana_vote_api::vote_state;
// The default stake placed with the bootstrap leader // The default stake placed with the bootstrap leader
pub const BOOTSTRAP_LEADER_LAMPORTS: u64 = 42; 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( pub fn create_genesis_block_with_leader(
mint_lamports: u64, mint_lamports: u64,
bootstrap_leader_id: &Pubkey, bootstrap_leader_id: &Pubkey,
bootstrap_leader_stake_lamports: u64, bootstrap_leader_stake_lamports: u64,
) -> (GenesisBlock, Keypair, Keypair) { ) -> GenesisBlockInfo {
let mint_keypair = Keypair::new(); let mint_keypair = Keypair::new();
let voting_keypair = Keypair::new(); let voting_keypair = Keypair::new();
let staking_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!()], &[solana_vote_program!(), solana_stake_program!()],
); );
(genesis_block, mint_keypair, voting_keypair) GenesisBlockInfo {
genesis_block,
mint_keypair,
voting_keypair,
}
} }

View File

@ -53,7 +53,7 @@ impl<'a, 'b, I: Borrow<Transaction>> Drop for LockedAccountsResults<'a, 'b, I> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; 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::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_transaction; use solana_sdk::system_transaction;
@ -108,8 +108,11 @@ mod tests {
fn setup() -> (Bank, Vec<Transaction>) { fn setup() -> (Bank, Vec<Transaction>) {
let dummy_leader_id = Pubkey::new_rand(); let dummy_leader_id = Pubkey::new_rand();
let (genesis_block, mint_keypair, _) = let GenesisBlockInfo {
create_genesis_block_with_leader(500, &dummy_leader_id, 100); genesis_block,
mint_keypair,
..
} = create_genesis_block_with_leader(500, &dummy_leader_id, 100);
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
let pubkey = Pubkey::new_rand(); let pubkey = Pubkey::new_rand();