 |
Bitcoin Core
22.99.0
P2P Digital Currency
|
Go to the documentation of this file.
15 if (pindex ==
nullptr) {
22 pindex = pindex->
pprev;
28 std::vector<uint256> vHave;
47 if (vHave.size() > 10)
55 if (pindex ==
nullptr) {
61 pindex = pindex->
pprev;
67 std::pair<int64_t, int> blockparams = std::make_pair(
nTime, height);
68 std::vector<CBlockIndex*>::const_iterator lower = std::lower_bound(
vChain.begin(),
vChain.end(), blockparams,
69 [](
CBlockIndex* pBlock,
const std::pair<int64_t, int>& blockparams) ->
bool { return pBlock->GetBlockTimeMax() < blockparams.first || pBlock->nHeight < blockparams.second; });
70 return (lower ==
vChain.end() ?
nullptr : *lower);
89 if (height >
nHeight || height < 0) {
95 while (heightWalk > height) {
98 if (pindexWalk->
pskip !=
nullptr &&
99 (heightSkip == height ||
100 (heightSkip > height && !(heightSkipPrev < heightSkip - 2 &&
101 heightSkipPrev >= height)))) {
103 pindexWalk = pindexWalk->
pskip;
104 heightWalk = heightSkip;
107 pindexWalk = pindexWalk->
pprev;
131 if (fNegative || fOverflow || bnTarget == 0)
137 return (~bnTarget / (bnTarget + 1)) + 1;
152 return sign * std::numeric_limits<int64_t>::max();
154 return sign * int64_t(r.
GetLow64());
166 while (pa != pb && pa && pb) {
std::string FormatISO8601Date(int64_t nTime)
uint64_t nTimeFirst
earliest time of block in file
CBlockIndex * GetAncestor(int height)
Efficiently find an ancestor of this block.
256-bit unsigned big integer.
CBlockIndex * pprev
pointer to the index of the predecessor of this block
int nHeight
height of the entry in the chain. The genesis block has height 0
unsigned int bits() const
Returns the position of the highest bit set plus one, or zero if the value is zero.
arith_uint256 nChainWork
(memory only) Total amount of work (expected number of hashes) in the chain up to and including this ...
const CBlockIndex * LastCommonAncestor(const CBlockIndex *pa, const CBlockIndex *pb)
Find the last common ancestor two blocks have.
CBlockIndex * pskip
pointer to the index of some further predecessor of this block
CBlockIndex * Tip() const
Returns the index entry for the tip of this chain, or nullptr if none.
const CBlockIndex * FindFork(const CBlockIndex *pindex) const
Find the last common block between this chain and a block index entry.
int64_t nPowTargetSpacing
CBlockIndex * FindEarliestAtLeast(int64_t nTime, int height) const
Find the earliest block with timestamp equal or greater than the given time and height equal or great...
Parameters that influence chain consensus.
uint64_t nTimeLast
latest time of block in file
unsigned int nBlocks
number of blocks stored in file
unsigned int nHeightFirst
lowest height of block in file
uint64_t GetLow64() const
CBlockLocator GetLocator(const CBlockIndex *pindex=nullptr) const
Return a CBlockLocator that refers to a block in this chain (by default the tip).
unsigned int nHeightLast
highest height of block in file
void SetTip(CBlockIndex *pindex)
Set/initialize a chain with a given tip.
uint256 GetBlockHash() const
int Height() const
Return the maximal height in the chain.
static int InvertLowestOne(int n)
Turn the lowest '1' bit in the binary representation of a number into a '0'.
arith_uint256 & SetCompact(uint32_t nCompact, bool *pfNegative=nullptr, bool *pfOverflow=nullptr)
The "compact" format is a representation of a whole number N using an unsigned 32bit number similar t...
void BuildSkip()
Build the skiplist pointer for this entry.
std::vector< CBlockIndex * > vChain
bool Contains(const CBlockIndex *pindex) const
Efficiently check whether a block is present in this chain.
arith_uint256 GetBlockProof(const CBlockIndex &block)
std::string ToString() const
Describes a place in the block chain to another node such that if the other node doesn't have the sam...
static int GetSkipHeight(int height)
Compute what height to jump back to with the CBlockIndex::pskip pointer.
The block chain is a tree shaped structure starting with the genesis block at the root,...
unsigned int nSize
number of used bytes of block file
int64_t GetBlockProofEquivalentTime(const CBlockIndex &to, const CBlockIndex &from, const CBlockIndex &tip, const Consensus::Params ¶ms)
Return the time it would take to redo the work difference between from and to, assuming the current h...