The Segwit Wallet Development Guide has a small section on fee estimation:

Transaction Fee Estimation

  • Instead of transaction size, a new metric is defined, called “virtual size” (vsize)
  • vsize of a transaction equals to 3 times of the size with original serialization, plus the size with new serialization, divide the result by 4 and round up to the next integer. For example, if a transaction is 200 bytes with new serialization, and becomes 99 bytes with marker, flag, and witness removed, the vsize is (99 * 3 + 200) / 4 = 125 with round up.
  • vsize of a non-segwit transaction is simply its size
  • Transaction fee should be estimated by comparing the vsize with other transactions, not the size.
  • Developers should be careful not to make an off-by-4-times mistake in fee estimation.

vsize therefore is a value that allows easy comparison to the previously used transaction size. What is the reason that it is being recommended as the basis of fee estimation? Wouldn't it make more sense to directly calculate fee estimates on the basis of weight?


The advantage of using vsize is that it is a smooth transition from size; every non-witness transaction has vsize equal to size.

All code and infrastructure that used satoshi/byte before, will keep working when substituting size with vsize, and give consistent results. Switching to weight would be confusing - would we be talking about satoshi/weightbyte?

| improve this answer | |

Your Answer

