Bitcoin ABC 0.26.3
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. | |
bool | add (const CBlockIndex *pindex, const ProofRef &proof, uint8_t status=StakeContenderStatus::UNKNOWN) |
Add a proof to consider in staking rewards pre-consensus. | |
void | promoteToBlock (const CBlockIndex *activeTip, PeerManager &pm) |
Promote cache entries to a the active chain tip. | |
bool | setWinners (const CBlockIndex *pindex, const std::vector< CScript > &payoutScripts) |
Set proof(s) that should be treated as winners (already finalized). | |
bool | accept (const StakeContenderId &contenderId) |
Helpers to set avalanche state of a contender. | |
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. | |
bool | getWinners (const BlockHash &prevblockhash, std::vector< CScript > &payouts) const |
Get payout scripts of the winning proofs. | |
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 85 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 42 of file stakecontendercache.cpp.
Definition at line 13 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::finalize | ( | const StakeContenderId & | contenderId | ) |
Definition at line 97 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 135 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 165 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::invalidate | ( | const StakeContenderId & | contenderId | ) |
Definition at line 122 of file stakecontendercache.cpp.
|
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 50 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::reject | ( | const StakeContenderId & | contenderId | ) |
Definition at line 110 of file stakecontendercache.cpp.
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 71 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.