Mud is commonly used colloquially to discuss with any small quantity UTXO. In distinction, Bitcoin Core’s exact definition of mud is utilized in mempool coverage to outline a minimal for output quantities in customary transactions.
Bitcoin Core considers a transaction output to be mud, when its worth is decrease than the price of creating and spending it on the dustRelayFee
fee. The default worth for dustRelayFee
is 3,000 sat/kvB¹, which ends up in the identical mud values because the prior mud definition used earlier than Bitcoin Core 0.15.0. The earlier mud definition tied the mud restrict to the minRelayTxFee fee and the spending price of an output exceeding 1/3 of its worth.
mud = (input_vsize + output_size) × 3 sat/vB
On the default dustRelayFee
of three,000 sat/kvB, given the scale of a P2PKH enter being 148 bytes and the scale of a P2PKH output being 34 bytes, P2PKH outputs value lower than 546 satoshis are thought of mud by Bitcoin Core (546 satoshi being the smallest non-dust worth). For P2WPKH outputs, Bitcoin Core considers outputs value lower than 294 satoshis² mud. For the reason that enter sizes of scripthash and taproot outputs are unknowable, Bitcoin Core combines their precise output sizes with the enter sizes of the corresponding keyhash sorts for mud thresholds of 540 satoshis for P2SH, and 330 satoshis for P2WSH and P2TR.
The dustRelayFee
may be set with the hidden command line possibility -dustrelayfee
.
Moreover, Bitcoin Core 0.15.0 added a discard_rate
. The discard_rate
matches the longest goal price fee estimate (at the moment the 1,000 block price fee estimate), however is bounded to not less than dustRelayFee
and at most 10,000 satoshi/kvB. Any change output that may be mud on the discard_rate
, i.e. would price extra to spend than its worth on the discard_rate
, will mechanically be dropped to the price as an alternative of being created as a change output.
Different makes use of of “mud”
Notice that the time period “mud” can be colloquially used to discuss with a) any UTXOs of vanishingly low worth and b) for UTXOs which are uneconomical to create or spend at the present feerate.
¹ The transaction measurement was measured in bytes earlier than segwit. Since segwit, the related measure is transaction weight which is both given in virtualbytes (vbyte, vB) or weight models (wu) the place 4 wu = 1 vB. For non-segwit transactions, their measurement is the same as their virtualsize: 1 B = 1 vB. For segwit transactions, their virtualsize is smaller or equal to their measurement. You possibly can learn extra about these models on Is there a distinction between bytes and digital bytes (vbytes)?.
² The attentive reader may count on the mud restrict for P2WPKH outputs to be 297 satoshis as P2WPKH outputs are 31 bytes and P2WPKH inputs are about 68 vbytes, however it seems that when the mud restrict for P2WPKH outputs was carried out, the code contained a rounding error within the vsize of the enter that prompted it to be assumed one vbyte smaller than it truly is. (Hat tip to Crypt-iQ for pointing this out.)