diff --git a/book/src/blocktree.md b/book/src/blocktree.md index 6b82f1559d..112decce3e 100644 --- a/book/src/blocktree.md +++ b/book/src/blocktree.md @@ -52,7 +52,7 @@ slot index and blob index for an entry, and the value is the entry data. Note bl the ledger to find possible fork points. * `last_index` - The index of the blob that is flagged as the last blob for this slot. This flag on a blob will be set by the leader for a slot when they are transmitting the last blob for a slot. * `is_rooted` - True iff every block from 0...slot forms a full sequence without any holes. We can derive is_rooted for each slot with the following rules. Let slot(n) be the slot with index `n`, and slot(n).is_full() is true if the slot with index `n` has all the ticks expected for that slot. Let is_rooted(n) be the statement that "the slot(n).is_rooted is true". Then: - + is_rooted(0) is_rooted(n+1) iff (is_rooted(n) and slot(n).is_full() @@ -60,7 +60,7 @@ slot index and blob index for an entry, and the value is the entry data. Note bl 4. Subscriptions - The Blocktree records a set of slots that have been "subscribed" to. This means entries that chain to these slots will be sent on the Blocktree channel for consumption by the ReplayStage. See the `Blocktree APIs` for details. -5. Update notifications - The Blocktree notifies listeners when slot(n).is_rooted is flipped from false to true for any `n`. +5. Update notifications - The Blocktree notifies listeners when slot(n).is_rooted is flipped from false to true for any `n`. ### Blocktree APIs @@ -75,13 +75,13 @@ Note: Cumulatively, this means that the replay stage will now have to know when The bank exposes to replay stage: - 1. `prev_id`: which PoH chain it's working on as indicated by the id of the last + 1. `prev_hash`: which PoH chain it's working on as indicated by the hash of the last entry it processed 2. `tick_height`: the ticks in the PoH chain currently being verified by this bank 3. `votes`: a stack of records that contain: - 1. `prev_ids`: what anything after this vote must chain to in PoH + 1. `prev_hashes`: what anything after this vote must chain to in PoH 2. `tick_height`: the tick height at which this vote was cast 3. `lockout period`: how long a chain must be observed to be in the ledger to be able to be chained below this vote diff --git a/src/entry.rs b/src/entry.rs index c6b99e850e..2160306670 100644 --- a/src/entry.rs +++ b/src/entry.rs @@ -55,18 +55,18 @@ pub struct Entry { impl Entry { /// Creates the next Entry `num_hashes` after `start_hash`. - pub fn new(prev_id: &Hash, num_hashes: u64, transactions: Vec) -> Self { + pub fn new(prev_hash: &Hash, num_hashes: u64, transactions: Vec) -> Self { let entry = { if num_hashes == 0 && transactions.is_empty() { Entry { num_hashes: 0, - id: *prev_id, + id: *prev_hash, transactions, } } else if num_hashes == 0 { // If you passed in transactions, but passed in num_hashes == 0, then // next_hash will generate the next hash and set num_hashes == 1 - let id = next_hash(prev_id, 1, &transactions); + let id = next_hash(prev_hash, 1, &transactions); Entry { num_hashes: 1, id, @@ -76,7 +76,7 @@ impl Entry { // Otherwise, the next Entry `num_hashes` after `start_hash`. // If you wanted a tick for instance, then pass in num_hashes = 1 // and transactions = empty - let id = next_hash(prev_id, num_hashes, &transactions); + let id = next_hash(prev_hash, num_hashes, &transactions); Entry { num_hashes, id, @@ -461,11 +461,11 @@ pub fn make_consecutive_blobs( #[cfg(test)] /// Creates the next Tick or Transaction Entry `num_hashes` after `start_hash`. -pub fn next_entry(prev_id: &Hash, num_hashes: u64, transactions: Vec) -> Entry { +pub fn next_entry(prev_hash: &Hash, num_hashes: u64, transactions: Vec) -> Entry { assert!(num_hashes > 0 || transactions.is_empty()); Entry { num_hashes, - id: next_hash(prev_id, num_hashes, &transactions), + id: next_hash(prev_hash, num_hashes, &transactions), transactions, } } @@ -641,11 +641,11 @@ mod tests { fn test_next_entries() { solana_logger::setup(); let id = Hash::default(); - let next_id = hash(&id.as_ref()); + let next_hash = hash(&id.as_ref()); let keypair = Keypair::new(); let vote_account = Keypair::new(); - let tx_small = VoteTransaction::new_vote(&vote_account, 1, next_id, 2); - let tx_large = BudgetTransaction::new(&keypair, keypair.pubkey(), 1, next_id); + let tx_small = VoteTransaction::new_vote(&vote_account, 1, next_hash, 2); + let tx_large = BudgetTransaction::new(&keypair, keypair.pubkey(), 1, next_hash); let tx_small_size = tx_small.serialized_size().unwrap() as usize; let tx_large_size = tx_large.serialized_size().unwrap() as usize; diff --git a/src/poh_recorder.rs b/src/poh_recorder.rs index 1410e2ec06..c88894dbe6 100644 --- a/src/poh_recorder.rs +++ b/src/poh_recorder.rs @@ -197,8 +197,8 @@ mod tests { #[test] fn test_poh_recorder_no_zero_tick() { - let prev_id = Hash::default(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let prev_hash = Hash::default(); + let mut poh_recorder = PohRecorder::new(0, prev_hash); poh_recorder.tick(); assert_eq!(poh_recorder.tick_cache.len(), 1); assert_eq!(poh_recorder.tick_cache[0].1, 1); @@ -207,8 +207,8 @@ mod tests { #[test] fn test_poh_recorder_tick_height_is_last_tick() { - let prev_id = Hash::default(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let prev_hash = Hash::default(); + let mut poh_recorder = PohRecorder::new(0, prev_hash); poh_recorder.tick(); poh_recorder.tick(); assert_eq!(poh_recorder.tick_cache.len(), 2); @@ -229,9 +229,9 @@ mod tests { fn test_poh_recorder_clear() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, _) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, @@ -249,9 +249,9 @@ mod tests { fn test_poh_recorder_tick_sent_after_min() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, @@ -280,9 +280,9 @@ mod tests { fn test_poh_recorder_tick_sent_upto_and_including_max() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); poh_recorder.tick(); poh_recorder.tick(); @@ -310,9 +310,9 @@ mod tests { fn test_poh_recorder_record_to_early() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, @@ -332,9 +332,9 @@ mod tests { fn test_poh_recorder_record_at_min_passes() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, @@ -363,9 +363,9 @@ mod tests { fn test_poh_recorder_record_at_max_fails() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, @@ -391,9 +391,9 @@ mod tests { fn test_poh_cache_on_disconnect() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let mut poh_recorder = PohRecorder::new(0, prev_id); + let mut poh_recorder = PohRecorder::new(0, prev_hash); let working_bank = WorkingBank { bank, diff --git a/src/poh_service.rs b/src/poh_service.rs index 363f2e3152..1510614e66 100644 --- a/src/poh_service.rs +++ b/src/poh_service.rs @@ -124,9 +124,9 @@ mod tests { fn test_poh_service() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let poh_recorder = Arc::new(Mutex::new(PohRecorder::new(bank.tick_height(), prev_id))); + let poh_recorder = Arc::new(Mutex::new(PohRecorder::new(bank.tick_height(), prev_hash))); let exit = Arc::new(AtomicBool::new(false)); let working_bank = WorkingBank { bank: bank.clone(), @@ -204,9 +204,9 @@ mod tests { fn test_poh_service_drops_working_bank() { let (genesis_block, _mint_keypair) = GenesisBlock::new(2); let bank = Arc::new(Bank::new(&genesis_block)); - let prev_id = bank.last_id(); + let prev_hash = bank.last_id(); let (entry_sender, entry_receiver) = channel(); - let poh_recorder = Arc::new(Mutex::new(PohRecorder::new(bank.tick_height(), prev_id))); + let poh_recorder = Arc::new(Mutex::new(PohRecorder::new(bank.tick_height(), prev_hash))); let exit = Arc::new(AtomicBool::new(false)); let working_bank = WorkingBank { bank: bank.clone(),