18 llmqType(params.type),
19 quorumHash(_quorumHash),
21 validMembers(params.size)
57 template<
typename... Args>
58 static bool errorFinalCommitment(
const char* fmt,
const Args&... args)
63 LogPrintf(
"Error (%s) while formatting message %s\n", std::string(e.what()), fmt);
71 if (count_validmembers < params.
minSize) {
72 return errorFinalCommitment(
"valid members count (%d < %d)", count_validmembers, params.
minSize);
75 if (count_signers < params.
minSize) {
76 return errorFinalCommitment(
"signers count (%d < %d)", count_signers, params.
minSize);
80 return errorFinalCommitment(
"public key");
83 return errorFinalCommitment(
"quorumVvecHash");
86 return errorFinalCommitment(
"membersSig");
89 return errorFinalCommitment(
"quorumSig");
92 for (
int i = allkeys.size(); i < params.
size; i++) {
94 return errorFinalCommitment(
"validMembers bitset (bit %d should not be set)", i);
97 return errorFinalCommitment(
"signers bitset (bit %d should not be set)", i);
103 std::vector<CBLSPublicKey> memberPubKeys;
104 for (
size_t i = 0; i < allkeys.size(); i++) {
108 memberPubKeys.emplace_back(allkeys[i]);
111 return errorFinalCommitment(
"aggregated members signature");
114 return errorFinalCommitment(
"invalid quorum signature");
123 return errorFinalCommitment(
"signers size (%d != %d)",
signers.size(), params.
size);
126 return errorFinalCommitment(
"validMembers size (%d != %d)",
validMembers.size(), params.
size);
139 obj.
pushKV(
"commitment", qcObj);
const CChainParams & Params()
Return the currently selected parameters.
bool VerifyInsecure(const CBLSPublicKey &pubKey, const uint256 &hash) const
bool VerifySecureAggregated(const std::vector< CBLSPublicKey > &pks, const uint256 &hash) const
std::string ToString() const
bool pushKV(const std::string &key, const UniValue &val)
std::string ToString() const
void ToJson(UniValue &obj) const
bool Verify(const std::vector< CBLSPublicKey > &allkeys, const Consensus::LLMQParams ¶ms) const
CFinalCommitment()=default
CBLSPublicKey quorumPublicKey
int CountValidMembers() const
std::vector< bool > validMembers
std::vector< bool > signers
bool VerifySizes(const Consensus::LLMQParams ¶ms) const
void ToJson(UniValue &obj) const
CFinalCommitment commitment
#define LogPrint(category,...)
std::string EncodePublic(const CChainParams ¶ms, const CBLSPublicKey &pk)
std::string ToHexStr(const std::vector< bool > &vBits)
uint256 BuildCommitmentHash(Consensus::LLMQType llmqType, const uint256 &blockHash, const std::vector< bool > &validMembers, const CBLSPublicKey &pubKey, const uint256 &vvecHash)