![]() |
Bitcoin ABC 0.34.2
P2P Digital Currency
|
#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, std::function< bool(const ProofId &proofid)> const &shouldPromote) |
| 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) |
| std::optional< StakeContenderCacheInfo > | getContenderInfo (const StakeContenderId &contenderId) const |
| 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< std::pair< ProofId, CScript > > &winners) const |
| bool | hasAcceptedWinner (const BlockHash &prevblockhash) const |
| True if any accepted contender is in the winner set for prevblockhash. 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 |
Definition at line 103 of file stakecontendercache.h.
|
private |
Definition at line 106 of file stakecontendercache.h.
|
private |
Definition at line 126 of file stakecontendercache.h.
|
inline |
Definition at line 142 of file stakecontendercache.h.
| bool avalanche::StakeContenderCache::accept | ( | const StakeContenderId & | contenderId | ) |
Helpers to set avalanche state of a contender.
Definition at line 106 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 45 of file stakecontendercache.cpp.
| void avalanche::StakeContenderCache::cleanup | ( | const int | requestedMinHeight | ) |
| bool avalanche::StakeContenderCache::finalize | ( | const StakeContenderId & | contenderId | ) |
| std::optional< StakeContenderCacheInfo > avalanche::StakeContenderCache::getContenderInfo | ( | const StakeContenderId & | contenderId | ) | const |
| 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 188 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, and -1 for not in cache. prevblockhashout gets set if the contender is in the cache.
Definition at line 177 of file stakecontendercache.cpp.
| bool avalanche::StakeContenderCache::getWinners | ( | const BlockHash & | prevblockhash, |
| std::vector< std::pair< ProofId, CScript > > & | winners | ||
| ) | const |
Definition at line 246 of file stakecontendercache.cpp.
| bool avalanche::StakeContenderCache::hasAcceptedWinner | ( | const BlockHash & | prevblockhash | ) | const |
True if any accepted contender is in the winner set for prevblockhash.
Definition at line 303 of file stakecontendercache.cpp.
|
inline |
For tests.
Definition at line 149 of file stakecontendercache.h.
| void avalanche::StakeContenderCache::promoteToBlock | ( | const CBlockIndex * | activeTip, |
| std::function< bool(const ProofId &proofid)> const & | shouldPromote | ||
| ) |
Promote cache entries to a the active chain tip.
Definition at line 54 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 92 of file stakecontendercache.cpp.
|
private |
Definition at line 124 of file stakecontendercache.h.
|
private |
Definition at line 104 of file stakecontendercache.h.
|
private |
Definition at line 139 of file stakecontendercache.h.