diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-08-28 17:15:21 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-08-29 17:26:01 +0200 |
commit | 0101483f46396a7f1d19a9d29a1da15639ce4233 (patch) | |
tree | f00a0b5ddfb8eef309f51812593658563ab71261 /src/wallet.h | |
parent | 57153d4e1ac6e2cc9fc3f2fcd6d786e9813d824f (diff) |
Move CMerkleTx to wallet.cpp/h
It is only used by the wallet so it has no place in main.
Diffstat (limited to 'src/wallet.h')
-rw-r--r-- | src/wallet.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/wallet.h b/src/wallet.h index b3878adb1e..544b4f5bfb 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -457,6 +457,63 @@ struct COutputEntry int vout; }; +/** A transaction with a merkle branch linking it to the block chain. */ +class CMerkleTx : public CTransaction +{ +private: + int GetDepthInMainChainINTERNAL(CBlockIndex* &pindexRet) const; + +public: + uint256 hashBlock; + std::vector<uint256> vMerkleBranch; + int nIndex; + + // memory only + mutable bool fMerkleVerified; + + + CMerkleTx() + { + Init(); + } + + CMerkleTx(const CTransaction& txIn) : CTransaction(txIn) + { + Init(); + } + + void Init() + { + hashBlock = 0; + nIndex = -1; + fMerkleVerified = false; + } + + + IMPLEMENT_SERIALIZE + ( + nSerSize += SerReadWrite(s, *(CTransaction*)this, nType, nVersion, ser_action); + nVersion = this->nVersion; + READWRITE(hashBlock); + READWRITE(vMerkleBranch); + READWRITE(nIndex); + ) + + + int SetMerkleBranch(const CBlock* pblock=NULL); + + // Return depth of transaction in blockchain: + // -1 : not in blockchain, and not in memory pool (conflicted transaction) + // 0 : in memory pool, waiting to be included in a block + // >=1 : this many blocks deep in the main chain + int GetDepthInMainChain(CBlockIndex* &pindexRet) const; + int GetDepthInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChain(pindexRet); } + bool IsInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChainINTERNAL(pindexRet) > 0; } + int GetBlocksToMaturity() const; + bool AcceptToMemoryPool(bool fLimitFree=true, bool fRejectInsaneFee=true); +}; + + /** A transaction with a bunch of additional info that only the owner cares about. * It includes any unrecorded transactions needed to link it back to the block chain. */ |