mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 02:55:50 +00:00
61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
//------------------------------------------------------------------------------
|
|
/*
|
|
Copyright (c) 2011-2013, OpenCoin, Inc.
|
|
*/
|
|
//==============================================================================
|
|
|
|
#ifndef RIPPLE_IPROOFOFWORKFACTORY_H
|
|
#define RIPPLE_IPROOFOFWORKFACTORY_H
|
|
|
|
enum POWResult
|
|
{
|
|
powOK = 0,
|
|
powREUSED = 1, // already submitted
|
|
powBADNONCE = 2, // you didn't solve it
|
|
powEXPIRED = 3, // time is up
|
|
powCORRUPT = 4,
|
|
powTOOEASY = 5, // the difficulty increased too much while you solved it
|
|
};
|
|
|
|
// VFALCO TODO move this to the class as a static member and rename it
|
|
bool powResultInfo (POWResult powCode, std::string& strToken, std::string& strHuman);
|
|
|
|
class IProofOfWorkFactory : LeakChecked <IProofOfWorkFactory>
|
|
{
|
|
public:
|
|
typedef boost::bimap< boost::bimaps::multiset_of<time_t>, boost::bimaps::unordered_set_of<uint256> > powMap_t;
|
|
typedef powMap_t::value_type powMap_vt;
|
|
|
|
public:
|
|
static IProofOfWorkFactory* New ();
|
|
|
|
virtual ~IProofOfWorkFactory () { }
|
|
|
|
// VFALCO TODO which members can be const?
|
|
|
|
virtual ProofOfWork getProof () = 0;
|
|
|
|
virtual POWResult checkProof (const std::string& token, uint256 const& solution) = 0;
|
|
|
|
virtual uint64 getDifficulty () = 0;
|
|
|
|
virtual void setDifficulty (int i) = 0;
|
|
|
|
virtual void loadHigh () = 0;
|
|
|
|
virtual void loadLow () = 0;
|
|
|
|
virtual void sweep () = 0;
|
|
|
|
virtual uint256 const& getSecret () const = 0;
|
|
|
|
virtual void setSecret (uint256 const& secret) = 0;
|
|
|
|
public:
|
|
static int getPowEntry (uint256 const& target, int iterations);
|
|
};
|
|
|
|
#endif
|
|
|
|
// vim:ts=4
|