Add code comments about CNoteData::witnessHeight

This commit is contained in:
Jack Grigg 2016-11-15 16:42:22 +13:00
parent 4a6a48479d
commit ccfd8aae1d
No known key found for this signature in database
GPG Key ID: 6A6914DAFBEA00DA
2 changed files with 17 additions and 1 deletions

View File

@ -762,6 +762,8 @@ void CWallet::DecrementNoteWitnesses(const CBlockIndex* pindex)
if (nd->witnesses.size() > 0) { if (nd->witnesses.size() > 0) {
nd->witnesses.pop_front(); nd->witnesses.pop_front();
} }
// pindex is the block being removed, so the new witness cache
// height is one below it.
nd->witnessHeight = pindex->nHeight - 1; nd->witnessHeight = pindex->nHeight - 1;
} }
} }

View File

@ -221,7 +221,15 @@ public:
*/ */
std::list<ZCIncrementalWitness> witnesses; std::list<ZCIncrementalWitness> witnesses;
/** Block height corresponding to the most current witness. */ /**
* Block height corresponding to the most current witness.
*
* When we first create a CNoteData in CWallet::FindMyNotes, this is set to
* -1 as a placeholder. The next time CWallet::ChainTip is called, we can
* determine what height the witness cache for this note is valid for (even
* if no witnesses were cached), and so can set the correct value in
* CWallet::IncrementNoteWitnesses and CWallet::DecrementNoteWitnesses.
*/
int witnessHeight; int witnessHeight;
CNoteData() : address(), nullifier(), witnessHeight {-1} { } CNoteData() : address(), nullifier(), witnessHeight {-1} { }
@ -616,9 +624,15 @@ public:
void ClearNoteWitnessCache(); void ClearNoteWitnessCache();
protected: protected:
/**
* pindex is the new tip being connected.
*/
void IncrementNoteWitnesses(const CBlockIndex* pindex, void IncrementNoteWitnesses(const CBlockIndex* pindex,
const CBlock* pblock, const CBlock* pblock,
ZCIncrementalMerkleTree& tree); ZCIncrementalMerkleTree& tree);
/**
* pindex is the old tip being disconnected.
*/
void DecrementNoteWitnesses(const CBlockIndex* pindex); void DecrementNoteWitnesses(const CBlockIndex* pindex);
template <typename WalletDB> template <typename WalletDB>