Browse Source

consensus: hot/live slot checkpoints sync impl added as part of consensus_sync task

aggstam 3 years ago
parent
commit
6bc24e54ef

+ 2 - 0
src/consensus/proto/protocol_sync_consensus.rs

@@ -77,12 +77,14 @@ impl ProtocolSyncConsensus {
             let offset = lock.consensus.offset;
             let proposals = lock.consensus.proposals.clone();
             let unconfirmed_txs = lock.unconfirmed_txs.clone();
+            let slot_checkpoints = lock.consensus.slot_checkpoints.clone();
             let leaders_nullifiers = lock.consensus.leaders_nullifiers.clone();
             let leaders_spent_coins = lock.consensus.leaders_spent_coins.clone();
             let response = ConsensusResponse {
                 offset,
                 proposals,
                 unconfirmed_txs,
+                slot_checkpoints,
                 leaders_nullifiers,
                 leaders_spent_coins,
             };

+ 5 - 0
src/consensus/state.rs

@@ -42,6 +42,8 @@ pub struct ConsensusState {
     pub proposals: Vec<ProposalChain>,
     /// Current epoch
     pub epoch: u64,
+    /// Hot/live slot checkpoints
+    pub slot_checkpoints: Vec<SlotCheckpoint>,
     /// previous epoch eta
     pub prev_epoch_eta: pallas::Base,
     /// Current epoch eta
@@ -76,6 +78,7 @@ impl ConsensusState {
             offset: None,
             proposals: vec![],
             epoch: 0,
+            slot_checkpoints: vec![],
             prev_epoch_eta: pallas::Base::one(),
             epoch_eta: pallas::Base::one(),
             coins: vec![],
@@ -109,6 +112,8 @@ pub struct ConsensusResponse {
     pub proposals: Vec<ProposalChain>,
     /// Pending transactions
     pub unconfirmed_txs: Vec<Transaction>,
+    /// Hot/live slot checkpoints
+    pub slot_checkpoints: Vec<SlotCheckpoint>,
     /// Seen nullifiers from proposals
     pub leaders_nullifiers: Vec<pallas::Base>,
     /// Seen spent coins from proposals

+ 1 - 0
src/consensus/task/consensus_sync.rs

@@ -59,6 +59,7 @@ pub async fn consensus_sync_task(p2p: P2pPtr, state: ValidatorStatePtr) -> Resul
             lock.consensus.offset = response.offset;
             lock.consensus.proposals = response.proposals.clone();
             lock.unconfirmed_txs = response.unconfirmed_txs.clone();
+            lock.consensus.slot_checkpoints = response.slot_checkpoints.clone();
             lock.consensus.leaders_nullifiers = response.leaders_nullifiers.clone();
             lock.consensus.leaders_spent_coins = response.leaders_spent_coins.clone();