From b2170cf3f49fea4915a1ef281f79d455cfce8785 Mon Sep 17 00:00:00 2001 From: niftynei Date: Wed, 9 Sep 2020 16:50:52 +0930 Subject: [PATCH] feerate: add a 'common_weight' calculation for a tx The bits of a transaction that are paid by the opener! --- bitcoin/feerate.c | 10 ++++++++++ bitcoin/feerate.h | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/bitcoin/feerate.c b/bitcoin/feerate.c index 696ec4b39..c6b37c17c 100644 --- a/bitcoin/feerate.c +++ b/bitcoin/feerate.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -38,3 +39,12 @@ const char *feerate_style_name(enum feerate_style style) } abort(); } + +size_t common_weight(size_t num_inputs, size_t num_outputs) +{ + /*(nVersion + num inputs + num outputs + locktime) * 4 + * + SegWit marker + SegWit flag */ + return (4 + varint_size(num_inputs) + + varint_size(num_outputs) + 4) * 4 + + 1 + 1; +} diff --git a/bitcoin/feerate.h b/bitcoin/feerate.h index 43bec2118..6190625aa 100644 --- a/bitcoin/feerate.h +++ b/bitcoin/feerate.h @@ -34,6 +34,11 @@ */ #define FEERATE_FLOOR 253 +/* + * This is the net common weight of a transaction. + */ +size_t common_weight(size_t num_inputs, size_t num_outputs); + enum feerate_style { FEERATE_PER_KSIPA, FEERATE_PER_KBYTE