diff --git a/src/avalanche/delegationbuilder.h b/src/avalanche/delegationbuilder.h --- a/src/avalanche/delegationbuilder.h +++ b/src/avalanche/delegationbuilder.h @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -15,17 +16,16 @@ namespace avalanche { -class Proof; - class DelegationBuilder { LimitedProofId limitedProofid; - ProofId proofid; DelegationId dgid; std::vector levels; public: explicit DelegationBuilder(const Proof &p); + explicit DelegationBuilder(const LimitedProofId &limitedProofIdIn, + const CPubKey &proofMaster); bool importDelegation(const Delegation &d); diff --git a/src/avalanche/delegationbuilder.cpp b/src/avalanche/delegationbuilder.cpp --- a/src/avalanche/delegationbuilder.cpp +++ b/src/avalanche/delegationbuilder.cpp @@ -9,12 +9,20 @@ namespace avalanche { DelegationBuilder::DelegationBuilder(const Proof &p) - : limitedProofid(p.getLimitedId()), proofid(p.getId()), dgid(proofid) { + : limitedProofid(p.getLimitedId()), dgid(p.getId()) { levels.push_back({p.getMaster(), {}}); } +DelegationBuilder::DelegationBuilder(const LimitedProofId &limitedProofIdIn, + const CPubKey &proofMaster) + : limitedProofid(limitedProofIdIn), + dgid(limitedProofIdIn.computeProofId(proofMaster)) { + levels.push_back({proofMaster, {}}); +} + bool DelegationBuilder::importDelegation(const Delegation &d) { - if (d.getProofId() != proofid) { + if (d.getProofId() != + limitedProofid.computeProofId(levels.front().pubkey)) { return false; }