Changeset View
Changeset View
Standalone View
Standalone View
src/pow.h
// Copyright (c) 2009-2010 Satoshi Nakamoto | // Copyright (c) 2009-2010 Satoshi Nakamoto | ||||
// Copyright (c) 2009-2016 The Bitcoin Core developers | // Copyright (c) 2009-2016 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_POW_H | #ifndef BITCOIN_POW_H | ||||
#define BITCOIN_POW_H | #define BITCOIN_POW_H | ||||
#include "consensus/params.h" | #include "consensus/params.h" | ||||
#include <cstdint> | #include <cstdint> | ||||
// Fixed precision for weighted-time difficulty ratio | |||||
static const uint32_t DIFF_WEIGHT_PRECISION = 1000000; // 6 decimal places | |||||
class CBlockHeader; | class CBlockHeader; | ||||
class CBlockIndex; | class CBlockIndex; | ||||
class uint256; | class uint256; | ||||
uint32_t GetNextWorkRequired(const CBlockIndex *pindexPrev, | uint32_t GetNextWorkRequired(const CBlockIndex *pindexPrev, | ||||
const CBlockHeader *pblock, | const CBlockHeader *pblock, | ||||
const Consensus::Params &); | const Consensus::Params &); | ||||
uint32_t CalculateNextWorkRequired(const CBlockIndex *pindexPrev, | uint32_t CalculateNextWorkRequired(const CBlockIndex *pindexPrev, | ||||
int64_t nFirstBlockTime, | int64_t nFirstBlockTime, | ||||
const Consensus::Params &); | const Consensus::Params &); | ||||
/** | /** | ||||
* Check whether a block hash satisfies the proof-of-work requirement specified | * Check whether a block hash satisfies the proof-of-work requirement specified | ||||
* by nBits | * by nBits | ||||
*/ | */ | ||||
bool CheckProofOfWork(uint256 hash, uint32_t nBits, const Consensus::Params &); | bool CheckProofOfWork(uint256 hash, uint32_t nBits, const Consensus::Params &); | ||||
/** | |||||
* Bitcoin cash's difficulty adjustement mechanism. | |||||
*/ | |||||
uint32_t GetNextCashWorkRequired(const CBlockIndex *pindexPrev, | |||||
const CBlockHeader *pblock, | |||||
const Consensus::Params ¶ms); | |||||
#endif // BITCOIN_POW_H | #endif // BITCOIN_POW_H |