Files
agrarian/src/genwit.cpp
T
2022-02-03 23:45:47 -08:00

68 lines
1.8 KiB
C++

//
// Copyright (c) 2015-2018 The PIVX developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <iostream>
#include "genwit.h"
#include "chainparams.h"
#include "util.h"
CGenWit::CGenWit() : accWitValue(0) {}
CGenWit::CGenWit(const CBloomFilter &filter, int startingHeight, libzerocoin::CoinDenomination den, int requestNum, CBigNum accWitValue)
: filter(filter), startingHeight(startingHeight), den(den), requestNum(requestNum), accWitValue(accWitValue) {}
bool CGenWit::isValid(int chainActiveHeight) {
if (den == libzerocoin::CoinDenomination::ZQ_ERROR){
return error("%s: ERROR: invalid denomination", __func__);
}
if(!filter.IsWithinSizeConstraints()){
return error("%s: ERROR: filter not within size constraints", __func__);
}
if (startingHeight < Params().Zerocoin_Block_V2_Start()){
return error("%s: ERROR: starting height before V2 activation", __func__);
}
if (accWitValue == 0){
return error("%s: ERROR: invalid accWit value", __func__);
}
return (startingHeight < chainActiveHeight - 20);
}
const CBloomFilter &CGenWit::getFilter() const {
return filter;
}
int CGenWit::getStartingHeight() const {
return startingHeight;
}
libzerocoin::CoinDenomination CGenWit::getDen() const {
return den;
}
int CGenWit::getRequestNum() const {
return requestNum;
}
CNode *CGenWit::getPfrom() const {
return pfrom;
}
void CGenWit::setPfrom(CNode *pfrom) {
CGenWit::pfrom = pfrom;
}
const CBigNum &CGenWit::getAccWitValue() const {
return accWitValue;
}
const std::string CGenWit::toString() const {
return "From: " + pfrom->addrName + ",\n" +
"Height: " + std::to_string(startingHeight) + ",\n" +
"accWit: " + accWitValue.GetHex();
}