aboutsummaryrefslogtreecommitdiff
path: root/src/consensus/validation.h
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2017-07-14 17:37:54 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2017-07-14 17:49:48 -0700
commitf90603ac6d24f5263649675d51233f1fce8b2ecd (patch)
treee2e2b4f29859a255db00b479d2dae30b70139d0c /src/consensus/validation.h
parentb7d6623c76e1468f2a93db5a3120580e2784d74a (diff)
parent3babbcb48786372d4b22171674c4cc5a6220c294 (diff)
Merge #10618: Remove confusing MAX_BLOCK_BASE_SIZE.
3babbcb48 Remove confusing MAX_BLOCK_BASE_SIZE. (Gregory Maxwell) Tree-SHA512: 361293fc4e1e379cd5a0908ed0866a00e1c7a771bdf02fded158fca21b492a29c7a67fea0d13dc40b2a04204c89823bf1836fe5b63a17c9747751b9c845a3527
Diffstat (limited to 'src/consensus/validation.h')
-rw-r--r--src/consensus/validation.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/consensus/validation.h b/src/consensus/validation.h
index 8fc3ef1b66..5494ce40ea 100644
--- a/src/consensus/validation.h
+++ b/src/consensus/validation.h
@@ -7,6 +7,10 @@
#define BITCOIN_CONSENSUS_VALIDATION_H
#include <string>
+#include "version.h"
+#include "consensus/consensus.h"
+#include "primitives/transaction.h"
+#include "primitives/block.h"
/** "reject" message codes */
static const unsigned char REJECT_MALFORMED = 0x01;
@@ -85,4 +89,18 @@ public:
std::string GetDebugMessage() const { return strDebugMessage; }
};
+static inline int64_t GetTransactionWeight(const CTransaction& tx)
+{
+ return ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS) * (WITNESS_SCALE_FACTOR -1) + ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);
+}
+
+static inline int64_t GetBlockWeight(const CBlock& block)
+{
+ // This implements the weight = (stripped_size * 4) + witness_size formula,
+ // using only serialization with and without witness data. As witness_size
+ // is equal to total_size - stripped_size, this formula is identical to:
+ // weight = (stripped_size * 3) + total_size.
+ return ::GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS) * (WITNESS_SCALE_FACTOR - 1) + ::GetSerializeSize(block, SER_NETWORK, PROTOCOL_VERSION);
+}
+
#endif // BITCOIN_CONSENSUS_VALIDATION_H