diff options
| author | Pieter Wuille <[email protected]> | 2012-07-08 00:06:34 +0200 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2012-10-20 23:08:57 +0200 |
| commit | 64dd46fd05de1dd8ff5066e192e1345f733c6a1f (patch) | |
| tree | 40b287fafe4b309c0dd6e20cc44746e04d267f3c /src/main.h | |
| parent | Batch block connection during IBD (diff) | |
| download | discoin-64dd46fd05de1dd8ff5066e192e1345f733c6a1f.tar.xz discoin-64dd46fd05de1dd8ff5066e192e1345f733c6a1f.zip | |
Transaction hash caching
Use CBlock's vMerkleTree to cache transaction hashes, and pass them
along as argument in more function calls. During initial block download,
this results in every transaction's hash to be only computed once.
Diffstat (limited to 'src/main.h')
| -rw-r--r-- | src/main.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main.h b/src/main.h index 0ec68b612..3ee0108f4 100644 --- a/src/main.h +++ b/src/main.h @@ -91,7 +91,7 @@ class CCoinsView; void RegisterWallet(CWallet* pwalletIn); void UnregisterWallet(CWallet* pwalletIn); -void SyncWithWallets(const CTransaction& tx, const CBlock* pblock = NULL, bool fUpdate = false); +void SyncWithWallets(const uint256 &hash, const CTransaction& tx, const CBlock* pblock = NULL, bool fUpdate = false); bool ProcessBlock(CNode* pfrom, CBlock* pblock); bool CheckDiskSpace(uint64 nAdditionalBytes=0); FILE* OpenBlockFile(const CDiskBlockPos &pos, bool fReadOnly = false); @@ -577,7 +577,7 @@ public: bool CheckInputs(CCoinsView &view, enum CheckSig_mode csmode, bool fStrictPayToScriptHash=true, bool fStrictEncodings=true) const; // Apply the effects of this transaction on the UTXO set represented by view - bool UpdateCoins(CCoinsView &view, CTxUndo &txundo, int nHeight) const; + bool UpdateCoins(CCoinsView &view, CTxUndo &txundo, int nHeight, const uint256 &txhash) const; // Context-independent validity checks bool CheckTransaction() const; @@ -1111,6 +1111,12 @@ public: return (vMerkleTree.empty() ? 0 : vMerkleTree.back()); } + const uint256 &GetTxHash(unsigned int nIndex) const { + assert(vMerkleTree.size() > 0); // BuildMerkleTree must have been called first + assert(nIndex < vtx.size()); + return vMerkleTree[nIndex]; + } + std::vector<uint256> GetMerkleBranch(int nIndex) const { if (vMerkleTree.empty()) |