2

I'm trying to calculate SegWit transaction fees in bytes, I have two Segwit inputs and 2 segwit outputs. can anyone calculate this transaction fees if I'm paying 100 Sat per byte?

10

That depends on what those inputs and outputs look like.

The formula, as specified in BIP141, is:

  • Call base_size the number of bytes needed to serialize the transaction in legacy format (which does not include the witnesses).
  • Call total_size the number of bytes needed to serialize the transaction including witnesses.
  • The weight of the transaction equals 3*base_size + total_size
  • The virtual size of the transaction (which is what feerates are usually expressed against) equals weight/4 or 0.75*base_size + 0.25*total_size.

Some reference numbers:

  • Outputs:
    • A P2PKH (1... address) output is 34 vbytes.
    • A P2SH (3... address) output is 32 vbytes.
    • A P2WPKH (bc1q... address of length 42) output is 31 vbytes.
    • A P2WSH (bc1q... address of length 62) output is 43 vbytes.
  • Inputs:
    • A P2PKH spend with a compressed public key is 149 vbytes.
    • A P2WPKH spend is 68 vbytes.
    • A P2SH-P2WPKH spend is 93 vbytes.
| improve this answer | |
  • Thanks for your expensive explanation, if I have 2 P2WPKH inputs and 2 P2WPKH output, how can I estimate the fees for this transaction? also practically can we convert vbytes to legacy bytes? – Adam Apr 25 '19 at 0:38
  • 1
    @Adam You can't convert vbyte to bytes as they're independent metrics. Thankfully, legacy bytes are irrelevant for fee calculations. If you have two 2 P2WPKH outputs and inputs, you'll have 10 + 2*31 + 2*101.25 = 274.5 vbytes. Whatever fee you're paying divided by 275 (rounding 274.5 up) gives you the fee/vbyte metric, which is what matters for miners. – Pieter Wuille Apr 25 '19 at 0:42
  • Thanks again for your explanation, as I see in this transaction on blockchain they says transaction size in bytes 191, do you know how did they calculate that? blockchain.com/btc/tx/… – Adam Apr 25 '19 at 0:51
  • @Adam Stop looking at transaction size, as you've been told elsewhere. The relevant metric for feerate is either virtual size or weight. – Pieter Wuille Apr 25 '19 at 0:53
  • 1
    @Adam How many times do I need to repeat this? No, you cannot convert vbytes into bytes. They compute bytes by just counting the bytes. They count the vbytes by using the formula in my answer. – Pieter Wuille Apr 25 '19 at 2:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.