68 lines
1.8 KiB
C++
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();
|
|
}
|