diff options
author | Determinant <[email protected]> | 2019-08-30 20:45:38 -0400 |
---|---|---|
committer | Determinant <[email protected]> | 2019-08-30 20:45:38 -0400 |
commit | 5ffbe0da60782ea2aa7f2fd872b8880333620133 (patch) | |
tree | 89c8b99426d5820ae07539578b3f97e3a6a051ca /src | |
parent | 9b2128d042187b510b298cfbd724646b0300097e (diff) | |
parent | 870d09e53d93eee04e06fd225bfe4b124b7610aa (diff) |
Merge branch 'master' of github.com:hot-stuff/libhotstuff
Diffstat (limited to 'src')
-rw-r--r-- | src/entity.cpp | 12 | ||||
-rw-r--r-- | src/hotstuff.cpp | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/entity.cpp b/src/entity.cpp index e90e0f2..59febac 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -62,4 +62,16 @@ void Block::unserialize(DataStream &s, HotStuffCore *hsc) { this->hash = salticidae::get_hash(*this); } +bool Block::verify(const HotStuffCore *hsc) const { + return qc && qc->verify(hsc->get_config()); +} + +promise_t Block::verify(const HotStuffCore *hsc, VeriPool &vpool) const { + if (!qc) + return promise_t([](promise_t &pm) { pm.resolve(false); }); + if (qc->get_obj_hash() == hsc->get_genesis()->get_hash()) + return promise_t([](promise_t &pm) { pm.resolve(true); }); + return qc->verify(hsc->get_config(), vpool); +} + } diff --git a/src/hotstuff.cpp b/src/hotstuff.cpp index 5ae0fe6..b584af0 100644 --- a/src/hotstuff.cpp +++ b/src/hotstuff.cpp @@ -184,7 +184,7 @@ promise_t HotStuffBase::async_deliver_blk(const uint256_t &blk_hash, for (const auto &phash: blk->get_parent_hashes()) pms.push_back(async_deliver_blk(phash, replica_id)); if (blk != get_genesis()) - pms.push_back(blk->verify(get_config(), vpool)); + pms.push_back(blk->verify(this, vpool)); promise::all(pms).then([this, blk]() { on_deliver_blk(blk); }); |