Bitcoin ABC 0.26.3
P2P Digital Currency
|
#include <voterecord.h>
Public Member Functions | |
VoteRecord (bool accepted) | |
VoteRecord (const VoteRecord &other) | |
Copy semantic. | |
bool | isAccepted () const |
Vote accounting facilities. | |
uint16_t | getConfidence () const |
bool | hasFinalized () const |
bool | isStale (uint32_t staleThreshold=AVALANCHE_VOTE_STALE_THRESHOLD, uint32_t staleFactor=AVALANCHE_VOTE_STALE_FACTOR) const |
bool | registerVote (NodeId nodeid, uint32_t error) |
Register a new vote for an item and update confidence accordingly. | |
bool | registerPoll () const |
Register that a request is being made regarding that item. | |
bool | shouldPoll () const |
Return if this item is in condition to be polled at the moment. | |
void | clearInflightRequest (uint8_t count=1) |
Clear count inflight requests. | |
Private Member Functions | |
bool | addNodeToQuorum (NodeId nodeid) |
Add the node to the quorum. | |
Private Attributes | |
uint16_t | confidence = 0 |
uint8_t | votes = 0 |
uint8_t | consider = 0 |
std::atomic< uint8_t > | inflight {0} |
const uint32_t | seed = 0 |
uint32_t | successfulVotes = 0 |
std::array< uint16_t, 8 > | nodeFilter {{0, 0, 0, 0, 0, 0, 0, 0}} |
Friends | |
struct | ::avalanche::TestVoteRecord |
Vote history.
Definition at line 49 of file voterecord.h.
|
inlineexplicit |
Definition at line 72 of file voterecord.h.
|
inline |
Copy semantic.
Definition at line 77 of file voterecord.h.
Add the node to the quorum.
Returns true if the node was added, false if the node already was in the quorum.
Check if the node is in the filter.
Add the node which just voted to the filter.
Definition at line 61 of file voterecord.cpp.
Clear count
inflight requests.
Definition at line 120 of file voterecord.h.
|
inline |
|
inline |
|
inline |
Vote accounting facilities.
Definition at line 86 of file voterecord.h.
|
inline |
bool avalanche::VoteRecord::registerPoll | ( | ) | const |
Register that a request is being made regarding that item.
The method is made const so that it can be accessed via a read only view of blockVoteRecords. It's not a problem as it is made thread safe.
Definition at line 87 of file voterecord.cpp.
Register a new vote for an item and update confidence accordingly.
Returns true if the acceptance or finalization state changed.
The result of the vote is determined from the error code. If the error code is 0, there is no error and therefore the vote is yes. If there is an error, we check the most significant bit to decide if the vote is a no (for instance, the block is invalid) or is the vote inconclusive (for instance, the queried node does not have the block yet).
We compute the number of yes and/or no votes as follow:
votes: 1010 consider: 1100
yes votes: 1000 using votes & consider no votes: 0100 using ~votes & consider
Definition at line 13 of file voterecord.cpp.
|
inline |
Return if this item is in condition to be polled at the moment.
Definition at line 115 of file voterecord.h.
Definition at line 130 of file voterecord.h.
|
private |
Definition at line 53 of file voterecord.h.
|
private |
Definition at line 58 of file voterecord.h.
|
mutableprivate |
Definition at line 60 of file voterecord.h.
|
private |
Definition at line 69 of file voterecord.h.
|
private |
Definition at line 63 of file voterecord.h.
|
private |
Definition at line 66 of file voterecord.h.
|
private |
Definition at line 56 of file voterecord.h.