Bitcoin ABC 0.30.9
P2P Digital Currency
|
Cache to track stake contenders for recent blocks. More...
#include <stakecontendercache.h>
Public Member Functions | |
StakeContenderCache () | |
void | cleanup (const int requestedMinHeight) |
bool | isEmpty () const |
For tests. More... | |
bool | add (const CBlockIndex *pindex, const ProofRef &proof, uint8_t status=StakeContenderStatus::UNKNOWN) |
Add a proof to consider in staking rewards pre-consensus. More... | |
void | promoteToBlock (const CBlockIndex *activeTip, PeerManager &pm) |
Promote cache entries to a the active chain tip. More... | |
bool | setWinners (const CBlockIndex *pindex, const std::vector< CScript > &payoutScripts) |
Set proof(s) that should be treated as winners (already finalized). More... | |
bool | accept (const StakeContenderId &contenderId) |
Helpers to set avalanche state of a contender. More... | |
bool | finalize (const StakeContenderId &contenderId) |
bool | reject (const StakeContenderId &contenderId) |
bool | invalidate (const StakeContenderId &contenderId) |
int | getVoteStatus (const StakeContenderId &contenderId, BlockHash &prevblockhashout) const |
Get contender acceptance state for avalanche voting. More... | |
size_t | getPollableContenders (const BlockHash &prevblockhash, size_t maxPollable, std::vector< StakeContenderId > &pollableContenders) const |
Get the best ranking contenders, accepted contenders ranking first. More... | |
bool | getWinners (const BlockHash &prevblockhash, std::vector< CScript > &payouts) const |
Get payout scripts of the winning proofs. More... | |
Private Types | |
using | ContenderSet = boost::multi_index_container< StakeContenderCacheEntry, bmi::indexed_by< bmi::hashed_unique< bmi::tag< by_stakecontenderid >, stakecontenderid_index, SaltedUint256Hasher >, bmi::hashed_non_unique< bmi::tag< by_prevblockhash >, bmi::member< StakeContenderCacheEntry, BlockHash, &StakeContenderCacheEntry::prevblockhash >, SaltedUint256Hasher >, bmi::ordered_non_unique< bmi::tag< by_blockheight >, bmi::member< StakeContenderCacheEntry, int, &StakeContenderCacheEntry::blockheight > > > > |
using | ManualWinnersSet = boost::multi_index_container< ManualWinners, bmi::indexed_by< bmi::hashed_unique< bmi::tag< by_prevblockhash >, bmi::member< ManualWinners, BlockHash, &ManualWinners::prevblockhash >, SaltedUint256Hasher >, bmi::ordered_unique< bmi::tag< by_blockheight >, bmi::member< ManualWinners, int, &ManualWinners::blockheight > > > > |
Private Attributes | |
int | lastPromotedHeight {0} |
ContenderSet | contenders |
ManualWinnersSet | manualWinners |
Cache to track stake contenders for recent blocks.
Definition at line 90 of file stakecontendercache.h.
|
private |
Definition at line 93 of file stakecontendercache.h.
|
private |
Definition at line 113 of file stakecontendercache.h.
|
inline |
Definition at line 129 of file stakecontendercache.h.
bool avalanche::StakeContenderCache::accept | ( | const StakeContenderId & | contenderId | ) |
Helpers to set avalanche state of a contender.
Definition at line 86 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::add | ( | const CBlockIndex * | pindex, |
const ProofRef & | proof, | ||
uint8_t | status = StakeContenderStatus::UNKNOWN |
||
) |
Add a proof to consider in staking rewards pre-consensus.
Definition at line 43 of file stakecontendercache.cpp.
void avalanche::StakeContenderCache::cleanup | ( | const int | requestedMinHeight | ) |
bool avalanche::StakeContenderCache::finalize | ( | const StakeContenderId & | contenderId | ) |
size_t avalanche::StakeContenderCache::getPollableContenders | ( | const BlockHash & | prevblockhash, |
size_t | maxPollable, | ||
std::vector< StakeContenderId > & | pollableContenders | ||
) | const |
Get the best ranking contenders, accepted contenders ranking first.
The output of this function is only reliable to select contenders to reconcile and should not be called after contender polling begins.
Definition at line 166 of file stakecontendercache.cpp.
int avalanche::StakeContenderCache::getVoteStatus | ( | const StakeContenderId & | contenderId, |
BlockHash & | prevblockhashout | ||
) | const |
Get contender acceptance state for avalanche voting.
Returns 0 for accepted, 1 for rejected, -1 for not in cache, and -2 for pending. prevblockhashout gets set if the contender is in the cache.
Definition at line 136 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::getWinners | ( | const BlockHash & | prevblockhash, |
std::vector< CScript > & | payouts | ||
) | const |
Get payout scripts of the winning proofs.
Definition at line 224 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::invalidate | ( | const StakeContenderId & | contenderId | ) |
|
inline |
For tests.
Definition at line 136 of file stakecontendercache.h.
void avalanche::StakeContenderCache::promoteToBlock | ( | const CBlockIndex * | activeTip, |
PeerManager & | pm | ||
) |
Promote cache entries to a the active chain tip.
Definition at line 51 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::reject | ( | const StakeContenderId & | contenderId | ) |
bool avalanche::StakeContenderCache::setWinners | ( | const CBlockIndex * | pindex, |
const std::vector< CScript > & | payoutScripts | ||
) |
Set proof(s) that should be treated as winners (already finalized).
This should only be used for manually added winners via RPC.
Definition at line 72 of file stakecontendercache.cpp.
|
private |
Definition at line 111 of file stakecontendercache.h.
|
private |
Definition at line 91 of file stakecontendercache.h.
|
private |
Definition at line 126 of file stakecontendercache.h.