Implement accurate memory accounting for mempool

This commit is contained in:
Pieter Wuille
2015-07-09 13:56:31 -04:00
parent 943b322d5d
commit 5098c47b24
8 changed files with 110 additions and 2 deletions

View File

@@ -72,6 +72,11 @@ void CTransaction::UpdateHash() const
*const_cast<uint256*>(&hash) = SerializeHash(*this);
}
size_t CTransaction::DynamicMemoryUsage() const
{
return memusage::RecursiveDynamicUsage(vin) + memusage::RecursiveDynamicUsage(vout);
}
CTransaction::CTransaction() : nVersion(CTransaction::CURRENT_VERSION), vin(), vout(), nLockTime(0) { }
CTransaction::CTransaction(const CMutableTransaction &tx) : nVersion(tx.nVersion), vin(tx.vin), vout(tx.vout), nLockTime(tx.nLockTime) {

View File

@@ -7,6 +7,7 @@
#define BITCOIN_PRIMITIVES_TRANSACTION_H
#include "amount.h"
#include "memusage.h"
#include "script/script.h"
#include "serialize.h"
#include "uint256.h"
@@ -48,6 +49,8 @@ public:
}
std::string ToString() const;
size_t DynamicMemoryUsage() const { return 0; }
};
/** An input of a transaction. It contains the location of the previous
@@ -96,6 +99,8 @@ public:
}
std::string ToString() const;
size_t DynamicMemoryUsage() const { return scriptSig.DynamicMemoryUsage(); }
};
/** An output of a transaction. It contains the public key that the next input
@@ -166,6 +171,8 @@ public:
}
std::string ToString() const;
size_t DynamicMemoryUsage() const { return scriptPubKey.DynamicMemoryUsage(); }
};
struct CMutableTransaction;
@@ -249,6 +256,8 @@ public:
}
std::string ToString() const;
size_t DynamicMemoryUsage() const;
};
/** A mutable version of CTransaction. */