![]() |
PRCYCoin
2.0.0.7rc1
P2P Digital Currency
|
#include "amount.h"#include "chain.h"#include "chainparams.h"#include "coins.h"#include "consensus/validation.h"#include "net.h"#include "poa.h"#include "primitives/block.h"#include "primitives/transaction.h"#include "script/script.h"#include "script/sigcache.h"#include "script/standard.h"#include "sync.h"#include "tinyformat.h"#include "txmempool.h"#include "uint256.h"#include "undo.h"#include "bignum.h"#include <algorithm>#include <exception>#include <map>#include <set>#include <stdint.h>#include <string>#include <utility>#include <vector>#include <boost/unordered_map.hpp>#include "secp256k1_bulletproofs.h"#include "secp256k1_commitment.h"#include "secp256k1_generator.h"#include "secp256k1.h"#include "secp256k1-mw/src/hash_impl.h"Go to the source code of this file.
Classes | |
| struct | BlockHasher |
| struct | CNodeStateStats |
| class | CScriptCheck |
| Closure representing one script verification Note that this stores references to the spending transaction. More... | |
| class | CVerifyDB |
| RAII wrapper for VerifyDB: Verify consistency of the block and coin databases. More... | |
Typedefs | |
| typedef boost::unordered_map< uint256, CBlockIndex *, BlockHasher > | BlockMap |
Functions | |
| void | RegisterNodeSignals (CNodeSignals &nodeSignals) |
| Register with a network node to receive its signals. More... | |
| void | UnregisterNodeSignals (CNodeSignals &nodeSignals) |
| Unregister a network node. More... | |
| secp256k1_context2 * | GetContext () |
| secp256k1_scratch_space2 * | GetScratch () |
| secp256k1_bulletproof_generators * | GetGenerator () |
| bool | VerifyBulletProofAggregate (const CTransaction &tx) |
| bool | VerifyRingSignatureWithTxFee (const CTransaction &tx, CBlockIndex *pindex) |
| void | DestroyContext () |
| bool | VerifyDerivedAddress (const CTxOut &out, std::string stealth) |
| bool | ReVerifyPoSBlock (CBlockIndex *pindex) |
| bool | ProcessNewBlock (CValidationState &state, CNode *pfrom, CBlock *pblock, CDiskBlockPos *dbp=NULL) |
| Process an incoming block. More... | |
| bool | CheckDiskSpace (uint64_t nAdditionalBytes=0) |
| Check whether enough disk space is available for an incoming block. More... | |
| FILE * | OpenBlockFile (const CDiskBlockPos &pos, bool fReadOnly=false) |
| Open a block file (blk?????.dat) More... | |
| FILE * | OpenUndoFile (const CDiskBlockPos &pos, bool fReadOnly=false) |
| Open an undo file (rev?????.dat) More... | |
| fs::path | GetBlockPosFilename (const CDiskBlockPos &pos, const char *prefix) |
| Translation to a filesystem path. More... | |
| bool | LoadExternalBlockFile (FILE *fileIn, CDiskBlockPos *dbp=NULL) |
| Import blocks from an external file. More... | |
| bool | InitBlockIndex () |
| Initialize a new block tree database + block data on disk. More... | |
| bool | LoadBlockIndex (std::string &strError) |
| Load the block tree and coins database from disk. More... | |
| void | UnloadBlockIndex () |
| Unload database information. More... | |
| int | ActiveProtocol () |
| See whether the protocol update is enforced for connected nodes. More... | |
| bool | ProcessMessages (CNode *pfrom) |
| Process protocol messages received from a given node. More... | |
| bool | VerifyZeroBlindCommitment (const CTxOut &out) |
| bool | SendMessages (CNode *pto) |
| Send queued protocol messages to be sent to a give node. More... | |
| void | ThreadScriptCheck () |
| Run an instance of the script checking thread. More... | |
| bool | IsInitialBlockDownload () |
| Check whether we are doing an initial block download (synchronizing from disk or network) More... | |
| std::string | GetWarnings (std::string strFor) |
| Format a string that describes several potential problems detected by the core. More... | |
| bool | GetTransaction (const uint256 &hash, CTransaction &tx, uint256 &hashBlock, bool fAllowSlow=false, CBlockIndex *blockIndex=nullptr) |
| Retrieve a transaction (from memory pool, or from disk, if possible) More... | |
| bool | CheckHaveInputs (const CCoinsViewCache &view, const CTransaction &tx) |
| Find the best known block, and make it the tip of the block chain. More... | |
| double | ConvertBitsToDouble (unsigned int nBits) |
| int64_t | GetMasternodePayment (int nHeight, int64_t blockValue, int nMasternodeCount=0) |
| unsigned int | GetNextWorkRequired (const CBlockIndex *pindexLast, const CBlockHeader *pblock, bool fProofOfStake) |
| bool | ActivateBestChain (CValidationState &state, CBlock *pblock=NULL, bool fAlreadyChecked=false) |
| Make the best chain active, in multiple steps. More... | |
| CAmount | GetBlockValue (int nHeight) |
| void | RemoveInvalidTransactionsFromMempool () |
| void | SetRingSize (int nHeight) |
| CBlockIndex * | InsertBlockIndex (uint256 hash) |
| Create a new block index entry for a given block hash. More... | |
| bool | GetNodeStateStats (NodeId nodeid, CNodeStateStats &stats) |
| Get statistics from node state. More... | |
| void | Misbehaving (NodeId nodeid, int howmuch) EXCLUSIVE_LOCKS_REQUIRED(cs_main) |
| Increase a node's misbehavior score. More... | |
| void | FlushStateToDisk () |
| Flush all state, indexes and buffers to disk. More... | |
| CAmount | GetValueIn (CCoinsViewCache view, const CTransaction &tx) |
| bool | AcceptToMemoryPool (CTxMemPool &pool, CValidationState &state, const CTransaction &tx, bool fLimitFree, bool *pfMissingInputs, bool fRejectInsaneFee=false, bool ignoreFees=false) |
| (try to) add transaction to memory pool More... | |
| bool | AcceptableInputs (CTxMemPool &pool, CValidationState &state, const CTransaction &tx, bool fLimitFree, bool *pfMissingInputs, bool fRejectInsaneFee=false, bool isDSTX=false) |
| bool | IsSpentKeyImage (const std::string &kiHex, const uint256 &againsHash) |
| bool | CheckKeyImageSpendInMainChain (const std::string &kiHex, int &confirmations) |
| double | GetPriority (const CTransaction &tx, int nHeight) |
| Return priority of tx at height nHeight. More... | |
| uint256 | GetTxSignatureHash (const CTransaction &tx) |
| uint256 | GetTxInSignatureHash (const CTxIn &txin) |
| bool | VerifyShnorrKeyImageTx (const CTransaction &tx) |
| bool | VerifyShnorrKeyImageTxIn (const CTxIn &txin, uint256 sigHash) |
| int | GetInputAge (CTxIn &vin) |
| int | GetIXConfirmations (uint256 nTXHash) |
| CAmount | GetMinRelayFee (const CTransaction &tx, unsigned int nBytes, bool fAllowFree) |
| bool | AreInputsStandard (const CTransaction &tx, const CCoinsViewCache &mapInputs) |
| Check transaction inputs, and make sure any pay-to-script-hash transactions are evaluating IsStandard scripts. More... | |
| bool | CheckInputs (const CTransaction &tx, CValidationState &state, const CCoinsViewCache &view, bool fScriptChecks, unsigned int flags, bool cacheStore, std::vector< CScriptCheck > *pvChecks=NULL) |
| Check whether all inputs of this transaction are valid (no double spends, scripts & sigs, amounts) This does not modify the UTXO set. More... | |
| void | UpdateCoins (const CTransaction &tx, CCoinsViewCache &inputs, CTxUndo &txundo, int nHeight) |
| Apply the effects of this transaction on the UTXO set represented by view. More... | |
| bool | IsTransactionInChain (const uint256 &txId, int &nHeightTx, CTransaction &tx) |
| Context-independent validity checks. More... | |
| bool | IsTransactionInChain (const uint256 &txId, int &nHeightTx) |
| bool | IsBlockHashInChain (const uint256 &hashBlock) |
| bool | ValidOutPoint (const COutPoint out, int nHeight=1) |
| bool | RecalculatePRCYSupply (int nHeightStart) |
| bool | CheckFinalTx (const CTransaction &tx, int flags=-1) |
| Check if transaction will be final in the next block to be created. More... | |
| bool | IsStandardTx (const CTransaction &tx, std::string &reason) |
| Check for standard transaction types. More... | |
| bool | WriteBlockToDisk (CBlock &block, CDiskBlockPos &pos) |
| Functions for disk access for blocks. More... | |
| bool | ReadBlockFromDisk (CBlock &block, const CDiskBlockPos &pos) |
| bool | ReadBlockFromDisk (CBlock &block, const CBlockIndex *pindex) |
| bool | DisconnectBlock (CBlock &block, CValidationState &state, CBlockIndex *pindex, CCoinsViewCache &coins, bool *pfClean=NULL) |
| Functions for validating blocks and updating the block tree. More... | |
| bool | DisconnectBlocks (int nBlocks) |
| Reprocess a number of blocks to try and get on the correct chain again. More... | |
| void | ReprocessBlocks (int nBlocks) |
| bool | ConnectBlock (const CBlock &block, CValidationState &state, CBlockIndex *pindex, CCoinsViewCache &coins, bool fJustCheck, bool fAlreadyChecked=false) |
| Apply the effects of this block (with given index) on the UTXO set represented by coins. More... | |
| bool | CheckBlockHeader (const CBlockHeader &block, CValidationState &state, bool fCheckPOW=true) |
| Context-independent validity checks. More... | |
| bool | CheckBlock (const CBlock &block, CValidationState &state, bool fCheckPOW=true, bool fCheckMerkleRoot=true, bool fCheckSig=true) |
| bool | CheckWork (const CBlock block, CBlockIndex *const pindexPrev) |
| bool | ContextualCheckBlockHeader (const CBlockHeader &block, CValidationState &state, CBlockIndex *pindexPrev) |
| Context-dependent validity checks. More... | |
| bool | ContextualCheckBlock (const CBlock &block, CValidationState &state, CBlockIndex *pindexPrev) |
| bool | TestBlockValidity (CValidationState &state, const CBlock &block, CBlockIndex *pindexPrev, bool fCheckPOW=true, bool fCheckMerkleRoot=true) |
| Check a block is completely valid from start to finish (only works on top of our current best block, with cs_main held) More... | |
| bool | AcceptBlock (CBlock &block, CValidationState &state, CBlockIndex **pindex, CDiskBlockPos *dbp=NULL, bool fAlreadyCheckedBlock=false) |
| Store block on disk. More... | |
| bool | AcceptBlockHeader (const CBlockHeader &block, CValidationState &state, CBlockIndex **ppindex=NULL) |
| CBlockIndex * | FindForkInGlobalIndex (const CChain &chain, const CBlockLocator &locator) |
| Find the last common block between the parameter chain and a locator. More... | |
| bool | InvalidateBlock (CValidationState &state, CBlockIndex *pindex) |
| Mark a block as invalid. More... | |
| bool | ReconsiderBlock (CValidationState &state, CBlockIndex *pindex) |
| Remove invalidity status from a block and its descendants. More... | |
Variables | |
| CScript | COINBASE_FLAGS |
| Constant stuff for coinbase transactions we create: More... | |
| RecursiveMutex | cs_main |
| Global state. More... | |
| CTxMemPool | mempool |
| BlockMap | mapBlockIndex |
| uint64_t | nLastBlockTx |
| uint64_t | nLastBlockSize |
| const std::string | strMessageMagic |
| int64_t | nTimeBestReceived |
| Mutex | g_best_block_mutex |
| std::condition_variable | g_best_block_cv |
| uint256 | g_best_block |
| std::atomic< bool > | fImporting |
| std::atomic< bool > | fReindex |
| int | nScriptCheckThreads |
| bool | fTxIndex |
| bool | fIsBareMultisigStd |
| bool | fCheckBlockIndex |
| size_t | nCoinCacheUsage |
| CFeeRate | minRelayTxFee |
| Fees smaller than this (in duffs) are considered zero fee (for relaying and mining) We are ~100 times smaller then bitcoin now (2015-06-23), set minRelayTxFee only 10 times higher so it's still 10 times lower comparing to bitcoin. More... | |
| int64_t | nMaxTipAge |
| bool | fVerifyingBlocks |
| bool | fGeneratePrcycoins |
| bool | fLargeWorkForkFound |
| bool | fLargeWorkInvalidChainFound |
| int64_t | nLastCoinStakeSearchInterval |
| int64_t | nLastCoinStakeSearchTime |
| int | MIN_RING_SIZE |
| int | MAX_RING_SIZE |
| const int | MAX_TX_INPUTS |
| const int | MIN_TX_INPUTS_FOR_SWEEPING |
| std::map< uint256, int64_t > | mapRejectedBlocks |
| std::map< unsigned int, unsigned int > | mapHashedBlocks |
| std::map< COutPoint, COutPoint > | mapInvalidOutPoints |
| CBlockIndex * | pindexBestHeader |
| Best header we've seen so far (used for getheaders queries' starting points). More... | |
| CChain | chainActive |
| The currently-connected chain of blocks. More... | |
| CCoinsViewCache * | pcoinsTip |
| Global variable that points to the active CCoinsView (protected by cs_main) More... | |
| CBlockTreeDB * | pblocktree |
| Global variable that points to the active block tree (protected by cs_main) More... | |
| typedef boost::unordered_map<uint256, CBlockIndex*, BlockHasher> BlockMap |
| bool AcceptableInputs | ( | CTxMemPool & | pool, |
| CValidationState & | state, | ||
| const CTransaction & | tx, | ||
| bool | fLimitFree, | ||
| bool * | pfMissingInputs, | ||
| bool | fRejectInsaneFee = false, |
||
| bool | isDSTX = false |
||
| ) |
| bool AcceptBlock | ( | CBlock & | block, |
| CValidationState & | state, | ||
| CBlockIndex ** | pindex, | ||
| CDiskBlockPos * | dbp = NULL, |
||
| bool | fAlreadyCheckedBlock = false |
||
| ) |
| bool AcceptBlockHeader | ( | const CBlockHeader & | block, |
| CValidationState & | state, | ||
| CBlockIndex ** | ppindex = NULL |
||
| ) |
| bool AcceptToMemoryPool | ( | CTxMemPool & | pool, |
| CValidationState & | state, | ||
| const CTransaction & | tx, | ||
| bool | fLimitFree, | ||
| bool * | pfMissingInputs, | ||
| bool | fRejectInsaneFee = false, |
||
| bool | ignoreFees = false |
||
| ) |
| bool ActivateBestChain | ( | CValidationState & | state, |
| CBlock * | pblock, | ||
| bool | fAlreadyChecked | ||
| ) |
Make the best chain active, in multiple steps.
The result is either failure or an activated best chain. pblock is either NULL or a pointer to a block that is already loaded (to avoid loading it again from disk).
Definition at line 3892 of file main.cpp.
| int ActiveProtocol | ( | ) |
| bool AreInputsStandard | ( | const CTransaction & | tx, |
| const CCoinsViewCache & | mapInputs | ||
| ) |
Check transaction inputs, and make sure any pay-to-script-hash transactions are evaluating IsStandard scripts.
Why bother? To avoid denial-of-service attacks; an attacker can submit a standard HASH... OP_EQUAL transaction, which will get accepted into blocks. The redemption script can be anything; an attacker could use a very expensive-to-check-upon-redemption script like: DUP CHECKSIG DROP ... repeated 100 times... OP_1 Check for standard transaction types
| [in] | mapInputs | Map of previous transactions that have outputs we're spending |
Check transaction inputs, and make sure any pay-to-script-hash transactions are evaluating IsStandard scripts.
Definition at line 1309 of file main.cpp.
| bool CheckBlock | ( | const CBlock & | block, |
| CValidationState & | state, | ||
| bool | fCheckPOW = true, |
||
| bool | fCheckMerkleRoot = true, |
||
| bool | fCheckSig = true |
||
| ) |
| bool CheckBlockHeader | ( | const CBlockHeader & | block, |
| CValidationState & | state, | ||
| bool | fCheckPOW = true |
||
| ) |
| bool CheckDiskSpace | ( | uint64_t | nAdditionalBytes = 0 | ) |
| bool CheckFinalTx | ( | const CTransaction & | tx, |
| int | flags = -1 |
||
| ) |
Check if transaction will be final in the next block to be created.
Calls IsFinalTx() with current block height and appropriate block time.
See consensus/consensus.h for flag definitions.
Definition at line 1465 of file main.cpp.
| bool CheckHaveInputs | ( | const CCoinsViewCache & | view, |
| const CTransaction & | tx | ||
| ) |
| bool CheckInputs | ( | const CTransaction & | tx, |
| CValidationState & | state, | ||
| const CCoinsViewCache & | view, | ||
| bool | fScriptChecks, | ||
| unsigned int | flags, | ||
| bool | cacheStore, | ||
| std::vector< CScriptCheck > * | pvChecks = NULL |
||
| ) |
Check whether all inputs of this transaction are valid (no double spends, scripts & sigs, amounts) This does not modify the UTXO set.
If pvChecks is not NULL, script checks are pushed onto it instead of being performed inline.
Definition at line 2766 of file main.cpp.
| bool CheckKeyImageSpendInMainChain | ( | const std::string & | kiHex, |
| int & | confirmations | ||
| ) |
| bool CheckWork | ( | const CBlock | block, |
| CBlockIndex *const | pindexPrev | ||
| ) |
| bool ConnectBlock | ( | const CBlock & | block, |
| CValidationState & | state, | ||
| CBlockIndex * | pindex, | ||
| CCoinsViewCache & | coins, | ||
| bool | fJustCheck, | ||
| bool | fAlreadyChecked = false |
||
| ) |
| bool ContextualCheckBlock | ( | const CBlock & | block, |
| CValidationState & | state, | ||
| CBlockIndex * | pindexPrev | ||
| ) |
| bool ContextualCheckBlockHeader | ( | const CBlockHeader & | block, |
| CValidationState & | state, | ||
| CBlockIndex * | pindexPrev | ||
| ) |
| double ConvertBitsToDouble | ( | unsigned int | nBits | ) |
| void DestroyContext | ( | ) |
| bool DisconnectBlock | ( | CBlock & | block, |
| CValidationState & | state, | ||
| CBlockIndex * | pindex, | ||
| CCoinsViewCache & | coins, | ||
| bool * | pfClean = NULL |
||
| ) |
Functions for validating blocks and updating the block tree.
Undo the effects of this block (with given index) on the UTXO set represented by coins. In case pfClean is provided, operation will try to be tolerant about errors, and *pfClean will be true if no problems were found. Otherwise, the return value will be false in case of problems. Note that in any case, coins may be modified.
Definition at line 2877 of file main.cpp.
| bool DisconnectBlocks | ( | int | nBlocks | ) |
| CBlockIndex* FindForkInGlobalIndex | ( | const CChain & | chain, |
| const CBlockLocator & | locator | ||
| ) |
| void FlushStateToDisk | ( | ) |
| fs::path GetBlockPosFilename | ( | const CDiskBlockPos & | pos, |
| const char * | prefix | ||
| ) |
| CAmount GetBlockValue | ( | int | nHeight | ) |
| secp256k1_context2* GetContext | ( | ) |
| secp256k1_bulletproof_generators* GetGenerator | ( | ) |
| int GetInputAge | ( | CTxIn & | vin | ) |
| int GetIXConfirmations | ( | uint256 | nTXHash | ) |
| int64_t GetMasternodePayment | ( | int | nHeight, |
| int64_t | blockValue, | ||
| int | nMasternodeCount = 0 |
||
| ) |
| CAmount GetMinRelayFee | ( | const CTransaction & | tx, |
| unsigned int | nBytes, | ||
| bool | fAllowFree | ||
| ) |
| unsigned int GetNextWorkRequired | ( | const CBlockIndex * | pindexLast, |
| const CBlockHeader * | pblock, | ||
| bool | fProofOfStake | ||
| ) |
| bool GetNodeStateStats | ( | NodeId | nodeid, |
| CNodeStateStats & | stats | ||
| ) |
| double GetPriority | ( | const CTransaction & | tx, |
| int | nHeight | ||
| ) |
| secp256k1_scratch_space2* GetScratch | ( | ) |
| bool GetTransaction | ( | const uint256 & | hash, |
| CTransaction & | txOut, | ||
| uint256 & | hashBlock, | ||
| bool | fAllowSlow, | ||
| CBlockIndex * | blockIndex | ||
| ) |
| uint256 GetTxSignatureHash | ( | const CTransaction & | tx | ) |
| CAmount GetValueIn | ( | CCoinsViewCache | view, |
| const CTransaction & | tx | ||
| ) |
| std::string GetWarnings | ( | std::string | strFor | ) |
| bool InitBlockIndex | ( | ) |
| CBlockIndex* InsertBlockIndex | ( | uint256 | hash | ) |
| bool InvalidateBlock | ( | CValidationState & | state, |
| CBlockIndex * | pindex | ||
| ) |
| bool IsBlockHashInChain | ( | const uint256 & | hashBlock | ) |
| bool IsInitialBlockDownload | ( | ) |
| bool IsSpentKeyImage | ( | const std::string & | kiHex, |
| const uint256 & | againsHash | ||
| ) |
| bool IsStandardTx | ( | const CTransaction & | tx, |
| std::string & | reason | ||
| ) |
| bool IsTransactionInChain | ( | const uint256 & | txId, |
| int & | nHeightTx | ||
| ) |
| bool IsTransactionInChain | ( | const uint256 & | txId, |
| int & | nHeightTx, | ||
| CTransaction & | tx | ||
| ) |
| bool LoadBlockIndex | ( | std::string & | strError | ) |
| bool LoadExternalBlockFile | ( | FILE * | fileIn, |
| CDiskBlockPos * | dbp = NULL |
||
| ) |
| void Misbehaving | ( | NodeId | nodeid, |
| int | howmuch | ||
| ) |
| FILE* OpenBlockFile | ( | const CDiskBlockPos & | pos, |
| bool | fReadOnly = false |
||
| ) |
| FILE* OpenUndoFile | ( | const CDiskBlockPos & | pos, |
| bool | fReadOnly = false |
||
| ) |
| bool ProcessMessages | ( | CNode * | pfrom | ) |
| bool ProcessNewBlock | ( | CValidationState & | state, |
| CNode * | pfrom, | ||
| CBlock * | pblock, | ||
| CDiskBlockPos * | dbp = NULL |
||
| ) |
Process an incoming block.
This only returns after the best known valid block is made active. Note that it does not, however, guarantee that the specific block passed to it has been checked for validity!
| [out] | state | This may be set to an Error state if any error occurred processing it, including during validation/connection/etc of otherwise unrelated blocks during reorganisation; or it may be set to an Invalid state if pblock is itself invalid (but this is not guaranteed even when the block is checked). If you want to possibly get feedback on whether pblock is valid, you must also install a CValidationInterface - this will have its BlockChecked method called whenever any block completes validation. |
| [in] | pfrom | The node which we are receiving the block from; it is added to mapBlockSource and may be penalised if the block is invalid. |
| [in] | pblock | The block we want to process. |
| [out] | dbp | If pblock is stored to disk (or already there), this will be set to its location. |
Definition at line 4890 of file main.cpp.
| bool ReadBlockFromDisk | ( | CBlock & | block, |
| const CBlockIndex * | pindex | ||
| ) |
| bool ReadBlockFromDisk | ( | CBlock & | block, |
| const CDiskBlockPos & | pos | ||
| ) |
| bool RecalculatePRCYSupply | ( | int | nHeightStart | ) |
| bool ReconsiderBlock | ( | CValidationState & | state, |
| CBlockIndex * | pindex | ||
| ) |
| void RegisterNodeSignals | ( | CNodeSignals & | nodeSignals | ) |
| void RemoveInvalidTransactionsFromMempool | ( | ) |
| void ReprocessBlocks | ( | int | nBlocks | ) |
| bool ReVerifyPoSBlock | ( | CBlockIndex * | pindex | ) |
| bool SendMessages | ( | CNode * | pto | ) |
| void SetRingSize | ( | int | nHeight | ) |
| bool TestBlockValidity | ( | CValidationState & | state, |
| const CBlock & | block, | ||
| CBlockIndex * | pindexPrev, | ||
| bool | fCheckPOW = true, |
||
| bool | fCheckMerkleRoot = true |
||
| ) |
| void ThreadScriptCheck | ( | ) |
| void UnloadBlockIndex | ( | ) |
| void UnregisterNodeSignals | ( | CNodeSignals & | nodeSignals | ) |
| void UpdateCoins | ( | const CTransaction & | tx, |
| CCoinsViewCache & | inputs, | ||
| CTxUndo & | txundo, | ||
| int | nHeight | ||
| ) |
| bool ValidOutPoint | ( | const COutPoint | out, |
| int | nHeight = 1 |
||
| ) |
| bool VerifyBulletProofAggregate | ( | const CTransaction & | tx | ) |
| bool VerifyDerivedAddress | ( | const CTxOut & | out, |
| std::string | stealth | ||
| ) |
| bool VerifyRingSignatureWithTxFee | ( | const CTransaction & | tx, |
| CBlockIndex * | pindex | ||
| ) |
| bool VerifyShnorrKeyImageTx | ( | const CTransaction & | tx | ) |
| bool VerifyZeroBlindCommitment | ( | const CTxOut & | out | ) |
| bool WriteBlockToDisk | ( | CBlock & | block, |
| CDiskBlockPos & | pos | ||
| ) |
| CScript COINBASE_FLAGS |
| RecursiveMutex cs_main |
Global state.
Mutex to guard access to validation specific variables, such as reading or changing the chainstate.
This may also need to be locked when updating the transaction pool, e.g. on AcceptToMemoryPool. See CTxMemPool::cs comment for details.
The transaction pool has a separate lock to allow reading from it and the chainstate at the same time.
| bool fGeneratePrcycoins |
| CTxMemPool mempool |
| CFeeRate minRelayTxFee |
| int64_t nLastCoinStakeSearchTime |
| CBlockTreeDB* pblocktree |
| CCoinsViewCache* pcoinsTip |
Global variable that points to the active CCoinsView (protected by cs_main)
| CBlockIndex* pindexBestHeader |
1.8.17