// Copyright (c) 2017-2018 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef Agrarian_ACCUMULATORMAP_H #define Agrarian_ACCUMULATORMAP_H #include "libzerocoin/Accumulator.h" #include "libzerocoin/Coin.h" #include "accumulatorcheckpoints.h" //A map with an accumulator for each denomination class AccumulatorMap { private: libzerocoin::ZerocoinParams* params; std::map > mapAccumulators; public: explicit AccumulatorMap(libzerocoin::ZerocoinParams* params); bool Load(uint256 nCheckpoint); void Load(const AccumulatorCheckpoints::Checkpoint& checkpoint); bool Accumulate(const libzerocoin::PublicCoin& pubCoin, bool fSkipValidation = false); libzerocoin::Accumulator GetAccumulator(libzerocoin::CoinDenomination denom); CBigNum GetValue(libzerocoin::CoinDenomination denom); uint256 GetCheckpoint(); void Reset(); void Reset(libzerocoin::ZerocoinParams* params2); }; #endif //Agrarian_ACCUMULATORMAP_H