aboutsummaryrefslogblamecommitdiff
path: root/src/consensus.cpp
blob: 8b21064952cdf6d5d54c4a8eef381ca2bec22754 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                                           








                                    
                                    


                    
                                                      

                                        
                                                   





                                      
                        
               









                                                               
                                                                    













                                                        
                                                        
                                              












                                                                         
                                                       





                                                      
                                                                 

                                
                            









                                                             


                                                        



                                                                          
                                                          


                                                       
                                                       
     
              


                                                      
                                               


                                                   
     
                   

                        


                
                                                                 
                                                                
                                                  



                                                  

                                
                                            





                                                       
                              
                                    

                                            
                          
                   






                                                      
                                                        
                   

                                                                            
                           


                                                           
                      





                                                              
                                                   









                                     




                                               
     


                                                           
                               



                             
                                     

                                                               
                   



                                                      

                                                           
                                                   
                                     
                                        




                                                       

                                              
                                                       




                                     






                                                              




























                                                                          


























                                                                       


                                                          
       

 
                                                       


                                                                   

 
                                            
                                             




                                                      

                                        
                    

 





                                                               





                                           



                                                    

                                                                     

                                                         
                        


 
/**
 * Copyright 2018 VMware
 * Copyright 2018 Ted Yin
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <cassert>
#include <stack>

#include "hotstuff/util.h"
#include "hotstuff/consensus.h"

#define LOG_INFO HOTSTUFF_LOG_INFO
#define LOG_DEBUG HOTSTUFF_LOG_DEBUG
#define LOG_WARN HOTSTUFF_LOG_WARN
#define LOG_PROTO HOTSTUFF_LOG_PROTO

namespace hotstuff {

/* The core logic of HotStuff, is fairly simple :). */
/*** begin HotStuff protocol logic ***/
HotStuffCore::HotStuffCore(ReplicaID id,
                            privkey_bt &&priv_key):
        b0(new Block(true, 1)),
        bqc(b0),
        bexec(b0),
        vheight(0),
        priv_key(std::move(priv_key)),
        tails{bqc},
        neg_vote(false),
        id(id),
        storage(new EntityStorage()) {