#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()) {
storage->add_blk(b0);
b0->qc_ref