// // 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 #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(); }