Make Genesis block handle extra tokens for the leader (#2743)
This commit is contained in:
51
src/bank.rs
51
src/bank.rs
@ -950,7 +950,6 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::entry::{next_entries, next_entry, Entry};
|
use crate::entry::{next_entries, next_entry, Entry};
|
||||||
use crate::gen_keys::GenKeys;
|
use crate::gen_keys::GenKeys;
|
||||||
use crate::genesis_block::BOOTSTRAP_LEADER_TOKENS;
|
|
||||||
use bincode::serialize;
|
use bincode::serialize;
|
||||||
use hashbrown::HashSet;
|
use hashbrown::HashSet;
|
||||||
use solana_sdk::hash::hash;
|
use solana_sdk::hash::hash;
|
||||||
@ -968,16 +967,13 @@ mod tests {
|
|||||||
fn test_bank_new() {
|
fn test_bank_new() {
|
||||||
let (genesis_block, _) = GenesisBlock::new(10_000);
|
let (genesis_block, _) = GenesisBlock::new(10_000);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
assert_eq!(
|
assert_eq!(bank.get_balance(&genesis_block.mint_id), 10_000);
|
||||||
bank.get_balance(&genesis_block.mint_id),
|
|
||||||
10_000 - genesis_block.bootstrap_leader_tokens
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_bank_new_with_leader() {
|
fn test_bank_new_with_leader() {
|
||||||
let dummy_leader_id = Keypair::new().pubkey();
|
let dummy_leader_id = Keypair::new().pubkey();
|
||||||
let dummy_leader_tokens = BOOTSTRAP_LEADER_TOKENS;
|
let dummy_leader_tokens = crate::genesis_block::BOOTSTRAP_LEADER_TOKENS;
|
||||||
let (genesis_block, _) =
|
let (genesis_block, _) =
|
||||||
GenesisBlock::new_with_leader(10_000, dummy_leader_id, dummy_leader_tokens);
|
GenesisBlock::new_with_leader(10_000, dummy_leader_id, dummy_leader_tokens);
|
||||||
assert_eq!(genesis_block.bootstrap_leader_tokens, dummy_leader_tokens);
|
assert_eq!(genesis_block.bootstrap_leader_tokens, dummy_leader_tokens);
|
||||||
@ -1011,7 +1007,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_one_source_two_tx_one_batch() {
|
fn test_one_source_two_tx_one_batch() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(1 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(1);
|
||||||
let key1 = Keypair::new().pubkey();
|
let key1 = Keypair::new().pubkey();
|
||||||
let key2 = Keypair::new().pubkey();
|
let key2 = Keypair::new().pubkey();
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
@ -1036,7 +1032,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_one_tx_two_out_atomic_fail() {
|
fn test_one_tx_two_out_atomic_fail() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(1 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(1);
|
||||||
let key1 = Keypair::new().pubkey();
|
let key1 = Keypair::new().pubkey();
|
||||||
let key2 = Keypair::new().pubkey();
|
let key2 = Keypair::new().pubkey();
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
@ -1085,7 +1081,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_one_tx_two_out_atomic_pass() {
|
fn test_one_tx_two_out_atomic_pass() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
let key1 = Keypair::new().pubkey();
|
let key1 = Keypair::new().pubkey();
|
||||||
let key2 = Keypair::new().pubkey();
|
let key2 = Keypair::new().pubkey();
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
@ -1108,7 +1104,7 @@ mod tests {
|
|||||||
// See github issue 1157 (https://github.com/solana-labs/solana/issues/1157)
|
// See github issue 1157 (https://github.com/solana-labs/solana/issues/1157)
|
||||||
#[test]
|
#[test]
|
||||||
fn test_detect_failed_duplicate_transactions_issue_1157() {
|
fn test_detect_failed_duplicate_transactions_issue_1157() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let dest = Keypair::new();
|
let dest = Keypair::new();
|
||||||
|
|
||||||
@ -1144,7 +1140,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_account_not_found() {
|
fn test_account_not_found() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(0);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -1156,7 +1152,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_insufficient_funds() {
|
fn test_insufficient_funds() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(11_000 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(11_000);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let pubkey = Keypair::new().pubkey();
|
let pubkey = Keypair::new().pubkey();
|
||||||
bank.transfer(1_000, &mint_keypair, pubkey, genesis_block.last_id())
|
bank.transfer(1_000, &mint_keypair, pubkey, genesis_block.last_id())
|
||||||
@ -1189,7 +1185,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_debits_before_credits() {
|
fn test_debits_before_credits() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
let tx0 = SystemTransaction::new_account(
|
let tx0 = SystemTransaction::new_account(
|
||||||
@ -1216,7 +1212,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_process_empty_entry_is_registered() {
|
fn test_process_empty_entry_is_registered() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
let entry = next_entry(&genesis_block.last_id(), 1, vec![]);
|
let entry = next_entry(&genesis_block.last_id(), 1, vec![]);
|
||||||
@ -1323,15 +1319,7 @@ mod tests {
|
|||||||
tokens: u64,
|
tokens: u64,
|
||||||
num_one_token_transfers: usize,
|
num_one_token_transfers: usize,
|
||||||
) -> (GenesisBlock, Keypair, impl Iterator<Item = Entry>) {
|
) -> (GenesisBlock, Keypair, impl Iterator<Item = Entry>) {
|
||||||
let mint_keypair = Keypair::new();
|
let (genesis_block, mint_keypair) = GenesisBlock::new(tokens);
|
||||||
let bootstrap_leader_vote_account_keypair = Keypair::new();
|
|
||||||
let genesis_block = GenesisBlock {
|
|
||||||
bootstrap_leader_id: Keypair::new().pubkey(),
|
|
||||||
bootstrap_leader_tokens: BOOTSTRAP_LEADER_TOKENS,
|
|
||||||
bootstrap_leader_vote_account_id: bootstrap_leader_vote_account_keypair.pubkey(),
|
|
||||||
mint_id: mint_keypair.pubkey(),
|
|
||||||
tokens,
|
|
||||||
};
|
|
||||||
let block = create_sample_block_with_ticks(
|
let block = create_sample_block_with_ticks(
|
||||||
&genesis_block,
|
&genesis_block,
|
||||||
&mint_keypair,
|
&mint_keypair,
|
||||||
@ -1343,8 +1331,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_process_ledger_simple() {
|
fn test_process_ledger_simple() {
|
||||||
let (genesis_block, mint_keypair, ledger) =
|
let (genesis_block, mint_keypair, ledger) = create_sample_ledger(100, 3);
|
||||||
create_sample_ledger(100 + BOOTSTRAP_LEADER_TOKENS, 3);
|
|
||||||
let mut bank = Bank::default();
|
let mut bank = Bank::default();
|
||||||
bank.add_builtin_programs();
|
bank.add_builtin_programs();
|
||||||
bank.process_genesis_block(&genesis_block);
|
bank.process_genesis_block(&genesis_block);
|
||||||
@ -1363,15 +1350,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_hash_internal_state() {
|
fn test_hash_internal_state() {
|
||||||
let mint_keypair = Keypair::new();
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2_000);
|
||||||
let bootstrap_leader_vote_account_keypair = Keypair::new();
|
|
||||||
let genesis_block = GenesisBlock {
|
|
||||||
bootstrap_leader_id: Keypair::new().pubkey(),
|
|
||||||
bootstrap_leader_tokens: BOOTSTRAP_LEADER_TOKENS,
|
|
||||||
bootstrap_leader_vote_account_id: bootstrap_leader_vote_account_keypair.pubkey(),
|
|
||||||
mint_id: mint_keypair.pubkey(),
|
|
||||||
tokens: 2_000,
|
|
||||||
};
|
|
||||||
let seed = [0u8; 32];
|
let seed = [0u8; 32];
|
||||||
let mut rnd = GenKeys::new(seed);
|
let mut rnd = GenKeys::new(seed);
|
||||||
let keypairs = rnd.gen_n_keypairs(5);
|
let keypairs = rnd.gen_n_keypairs(5);
|
||||||
@ -1418,7 +1397,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_interleaving_locks() {
|
fn test_interleaving_locks() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(3 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(3);
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let alice = Keypair::new();
|
let alice = Keypair::new();
|
||||||
let bob = Keypair::new();
|
let bob = Keypair::new();
|
||||||
@ -1870,7 +1849,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_bank_pay_to_self() {
|
fn test_bank_pay_to_self() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(1 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(1);
|
||||||
let key1 = Keypair::new();
|
let key1 = Keypair::new();
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@ mod tests {
|
|||||||
use crate::bank::Bank;
|
use crate::bank::Bank;
|
||||||
use crate::banking_stage::BankingStageReturnType;
|
use crate::banking_stage::BankingStageReturnType;
|
||||||
use crate::entry::EntrySlice;
|
use crate::entry::EntrySlice;
|
||||||
use crate::genesis_block::{GenesisBlock, BOOTSTRAP_LEADER_TOKENS};
|
use crate::genesis_block::GenesisBlock;
|
||||||
use crate::packet::to_packets;
|
use crate::packet::to_packets;
|
||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
@ -286,7 +286,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banking_stage_shutdown1() {
|
fn test_banking_stage_shutdown1() {
|
||||||
let (genesis_block, _mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, _mint_keypair) = GenesisBlock::new(2);
|
||||||
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 (to_validator_sender, _) = channel();
|
let (to_validator_sender, _) = channel();
|
||||||
@ -308,7 +308,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banking_stage_shutdown2() {
|
fn test_banking_stage_shutdown2() {
|
||||||
let (genesis_block, _mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, _mint_keypair) = GenesisBlock::new(2);
|
||||||
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 (to_validator_sender, _) = channel();
|
let (to_validator_sender, _) = channel();
|
||||||
@ -330,7 +330,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banking_stage_tick() {
|
fn test_banking_stage_tick() {
|
||||||
let (genesis_block, _mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, _mint_keypair) = GenesisBlock::new(2);
|
||||||
let bank = Arc::new(Bank::new(&genesis_block));
|
let bank = Arc::new(Bank::new(&genesis_block));
|
||||||
let start_hash = bank.last_id();
|
let start_hash = bank.last_id();
|
||||||
let (verified_sender, verified_receiver) = channel();
|
let (verified_sender, verified_receiver) = channel();
|
||||||
@ -359,7 +359,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_banking_stage_entries_only() {
|
fn test_banking_stage_entries_only() {
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
let bank = Arc::new(Bank::new(&genesis_block));
|
let bank = Arc::new(Bank::new(&genesis_block));
|
||||||
let start_hash = bank.last_id();
|
let start_hash = bank.last_id();
|
||||||
let (verified_sender, verified_receiver) = channel();
|
let (verified_sender, verified_receiver) = channel();
|
||||||
@ -418,7 +418,7 @@ 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) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(2);
|
||||||
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 (to_validator_sender, _) = channel();
|
let (to_validator_sender, _) = channel();
|
||||||
@ -486,7 +486,7 @@ mod tests {
|
|||||||
// with reason BankingStageReturnType::LeaderRotation
|
// with reason BankingStageReturnType::LeaderRotation
|
||||||
#[test]
|
#[test]
|
||||||
fn test_max_tick_height_shutdown() {
|
fn test_max_tick_height_shutdown() {
|
||||||
let (genesis_block, _mint_keypair) = GenesisBlock::new(2 + BOOTSTRAP_LEADER_TOKENS);
|
let (genesis_block, _mint_keypair) = GenesisBlock::new(2);
|
||||||
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 (to_validator_sender, _to_validator_receiver) = channel();
|
let (to_validator_sender, _to_validator_receiver) = channel();
|
||||||
|
@ -24,7 +24,9 @@ pub struct GenesisBlock {
|
|||||||
impl GenesisBlock {
|
impl GenesisBlock {
|
||||||
#[allow(clippy::new_ret_no_self)]
|
#[allow(clippy::new_ret_no_self)]
|
||||||
pub fn new(tokens: u64) -> (Self, Keypair) {
|
pub fn new(tokens: u64) -> (Self, Keypair) {
|
||||||
assert!(tokens >= 2);
|
let tokens = tokens
|
||||||
|
.checked_add(BOOTSTRAP_LEADER_TOKENS)
|
||||||
|
.unwrap_or(tokens);
|
||||||
let mint_keypair = Keypair::new();
|
let mint_keypair = Keypair::new();
|
||||||
let bootstrap_leader_keypair = Keypair::new();
|
let bootstrap_leader_keypair = Keypair::new();
|
||||||
let bootstrap_leader_vote_account_keypair = Keypair::new();
|
let bootstrap_leader_vote_account_keypair = Keypair::new();
|
||||||
@ -84,7 +86,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_genesis_block_new() {
|
fn test_genesis_block_new() {
|
||||||
let (genesis_block, mint) = GenesisBlock::new(10_000);
|
let (genesis_block, mint) = GenesisBlock::new(10_000);
|
||||||
assert_eq!(genesis_block.tokens, 10_000);
|
assert_eq!(genesis_block.tokens, 10_000 + BOOTSTRAP_LEADER_TOKENS);
|
||||||
assert_eq!(genesis_block.mint_id, mint.pubkey());
|
assert_eq!(genesis_block.mint_id, mint.pubkey());
|
||||||
assert!(genesis_block.bootstrap_leader_id != Pubkey::default());
|
assert!(genesis_block.bootstrap_leader_id != Pubkey::default());
|
||||||
assert!(genesis_block.bootstrap_leader_vote_account_id != Pubkey::default());
|
assert!(genesis_block.bootstrap_leader_vote_account_id != Pubkey::default());
|
||||||
|
@ -758,9 +758,8 @@ pub mod tests {
|
|||||||
fn test_rank_active_set() {
|
fn test_rank_active_set() {
|
||||||
let num_validators: usize = 101;
|
let num_validators: usize = 101;
|
||||||
// Give genesis_block sum(1..num_validators) tokens
|
// Give genesis_block sum(1..num_validators) tokens
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(
|
let (genesis_block, mint_keypair) =
|
||||||
BOOTSTRAP_LEADER_TOKENS + (((num_validators + 1) / 2) * (num_validators + 1)) as u64,
|
GenesisBlock::new((((num_validators + 1) / 2) * (num_validators + 1)) as u64);
|
||||||
);
|
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let mut validators = vec![];
|
let mut validators = vec![];
|
||||||
let last_id = genesis_block.last_id();
|
let last_id = genesis_block.last_id();
|
||||||
@ -818,8 +817,7 @@ pub mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Break ties between validators with the same balances using public key
|
// Break ties between validators with the same balances using public key
|
||||||
let (genesis_block, mint_keypair) =
|
let (genesis_block, mint_keypair) = GenesisBlock::new((num_validators + 1) as u64);
|
||||||
GenesisBlock::new(BOOTSTRAP_LEADER_TOKENS + (num_validators + 1) as u64);
|
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let mut tied_validators_pk = vec![];
|
let mut tied_validators_pk = vec![];
|
||||||
let last_id = genesis_block.last_id();
|
let last_id = genesis_block.last_id();
|
||||||
@ -939,9 +937,8 @@ pub mod tests {
|
|||||||
|
|
||||||
// Create the bank and validators
|
// Create the bank and validators
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(
|
let (genesis_block, mint_keypair) = GenesisBlock::new(
|
||||||
BOOTSTRAP_LEADER_TOKENS
|
((((num_validators + 1) / 2) * (num_validators + 1))
|
||||||
+ ((((num_validators + 1) / 2) * (num_validators + 1))
|
+ (num_vote_account_tokens * num_validators)) as u64,
|
||||||
+ (num_vote_account_tokens * num_validators)) as u64,
|
|
||||||
);
|
);
|
||||||
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
|
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
|
||||||
let mut validators = vec![];
|
let mut validators = vec![];
|
||||||
|
@ -245,7 +245,7 @@ mod tests {
|
|||||||
let required_balance = num_nodes * (num_nodes + 1) / 2;
|
let required_balance = num_nodes * (num_nodes + 1) / 2;
|
||||||
|
|
||||||
// create a genesis block
|
// create a genesis block
|
||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(required_balance + 2);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(required_balance);
|
||||||
|
|
||||||
// describe the leader
|
// describe the leader
|
||||||
let leader_info = ContactInfo::new_localhost(Keypair::new().pubkey(), 0);
|
let leader_info = ContactInfo::new_localhost(Keypair::new().pubkey(), 0);
|
||||||
|
@ -496,8 +496,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_rpc_new() {
|
fn test_rpc_new() {
|
||||||
let (genesis_block, alice) =
|
let (genesis_block, alice) = GenesisBlock::new(10_000);
|
||||||
GenesisBlock::new(10_000 + crate::genesis_block::BOOTSTRAP_LEADER_TOKENS);
|
|
||||||
let bank = Bank::new(&genesis_block);
|
let bank = Bank::new(&genesis_block);
|
||||||
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new(NodeInfo::default())));
|
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new(NodeInfo::default())));
|
||||||
let rpc_addr = SocketAddr::new(
|
let rpc_addr = SocketAddr::new(
|
||||||
|
@ -326,8 +326,6 @@ pub mod tests {
|
|||||||
let (genesis_block, mint_keypair) = GenesisBlock::new(starting_balance);
|
let (genesis_block, mint_keypair) = GenesisBlock::new(starting_balance);
|
||||||
let tvu_addr = target1.info.tvu;
|
let tvu_addr = target1.info.tvu;
|
||||||
let bank = Arc::new(Bank::new(&genesis_block));
|
let bank = Arc::new(Bank::new(&genesis_block));
|
||||||
// 2 tokens are consumed by the genesis
|
|
||||||
let starting_balance = starting_balance - 2;
|
|
||||||
assert_eq!(bank.get_balance(&mint_keypair.pubkey()), starting_balance);
|
assert_eq!(bank.get_balance(&mint_keypair.pubkey()), starting_balance);
|
||||||
|
|
||||||
//start cluster_info1
|
//start cluster_info1
|
||||||
|
Reference in New Issue
Block a user