PIVX Core  5.6.99
P2P Digital Currency
zerocoin_verify.h
Go to the documentation of this file.
1 // Copyright (c) 2020-2021 The PIVX Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef PIVX_CONSENSUS_ZEROCOIN_VERIFY_H
6 #define PIVX_CONSENSUS_ZEROCOIN_VERIFY_H
7 
8 #include "consensus/consensus.h"
9 #include "script/interpreter.h"
10 
11 class CValidationState;
12 class CBigNum;
13 
14 namespace Consensus {
15  struct Params;
16 }
17 namespace libzerocoin {
18  class CoinSpend;
19 }
20 
21 // Fake Serial attack Range
22 bool isBlockBetweenFakeSerialAttackRange(int nHeight);
23 // Public coin spend
24 bool CheckPublicCoinSpendEnforced(int blockHeight, bool isPublicSpend);
25 bool ContextualCheckZerocoinTx(const CTransactionRef& tx, CValidationState& state, const Consensus::Params& consensus, int nHeight, bool isMined);
26 bool ContextualCheckZerocoinSpend(const CTransaction& tx, const libzerocoin::CoinSpend* spend, int nHeight);
27 bool ContextualCheckZerocoinSpendNoSerialCheck(const CTransaction& tx, const libzerocoin::CoinSpend* spend, int nHeight);
28 
29 bool IsSerialInBlockchain(const CBigNum& bnSerial, int& nHeightTx);
30 
31 // Returns false if coin spend is invalid. Invalidity/DoS causes are treated inside the function.
33  const CTransaction& tx, int chainHeight,
34  CValidationState& state,
35  std::vector<std::pair<CBigNum, uint256>>& vSpendsRet);
36 
37 #endif // PIVX_CONSENSUS_ZEROCOIN_VERIFY_H
const CChainParams & Params()
Return the currently selected parameters.
C++ wrapper for BIGNUM.
Definition: bignum.h:35
The basic transaction that is broadcasted on the network and contained in blocks.
Definition: transaction.h:244
Capture information about block/transaction validation.
Definition: validation.h:24
The complete proof needed to spend a zerocoin.
Definition: CoinSpend.h:79
Parameters that influence chain consensus.
Definition: params.h:171
std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:456
bool ParseAndValidateZerocoinSpends(const Consensus::Params &consensus, const CTransaction &tx, int chainHeight, CValidationState &state, std::vector< std::pair< CBigNum, uint256 >> &vSpendsRet)
bool IsSerialInBlockchain(const CBigNum &bnSerial, int &nHeightTx)
bool ContextualCheckZerocoinSpend(const CTransaction &tx, const libzerocoin::CoinSpend *spend, int nHeight)
bool ContextualCheckZerocoinTx(const CTransactionRef &tx, CValidationState &state, const Consensus::Params &consensus, int nHeight, bool isMined)
bool isBlockBetweenFakeSerialAttackRange(int nHeight)
bool ContextualCheckZerocoinSpendNoSerialCheck(const CTransaction &tx, const libzerocoin::CoinSpend *spend, int nHeight)
bool CheckPublicCoinSpendEnforced(int blockHeight, bool isPublicSpend)