<p>Bitcoin core sets the dust limit to a value where spending an output would exceed 1/3 of its value. This calculation is based on the node's setting for the minimum relay transaction fee (see option <a href="https://en.bitcoin.it/wiki/Running_Bitcoin" rel="noreferrer">-minrelaytxfee</a>) whose default is 0.00001 BTC/KB. Any transaction with a fee less than that does not get relayed by the node i.e. is dropped from its mempool.</p>

<p>For a node that uses the default <code>-minrelaytxfee</code> of 0.00001 BTC/KB (1000 satoshis/KB) and given that for P2PKH an input is 148 bytes and an output is 34 bytes, it follows that an output less than or equal to 546 satoshis is considered dust according to Bicoin core.</p>

<p>Reference: <a href="https://bitcoin.stackexchange.com/questions/10986/what-is-meant-by-bitcoin-dust/41082#41082">What is meant by Bitcoin dust?</a></p>

CC BY-SA 4.0
2019-04-15T16:55:38.607Z
2019-04-15T16:55:38.607Z
thalisk
<p>The dust limit is not actually fixed, technically - it varies based on the type of output. 546 satoshis is simply the most commonly known one, for a p2pkh output. Being the longest-lived output type, I suspect some wallets/blog posts/literature might treat it as a hard coded dust limit.</p>

<p>As to how to arrive at 546 satoshis, we must first know what "dust" means. A dust output is an output which costs more to spend, than it is worth. In other words, an X BTC output that costs >X to spend, is a dust output. This is directly proportional to the amount of data required to spend an output, since fees in bitcoin are commonly denoted "per-byte". The more bytes you must add to your tx to spend an output, the higher its dust threshold.</p>

<p>A very basic tx consisting of 1 p2pkh input (~148 bytes), and 1 p2pkh output (~34 bytes) comes out to 182 bytes. The dust limit is 3 times this number (assuming a relay fee of 1 satoshi), or <code>182*3 = 546</code> sats.</p>

<p>For more complex txs, such as p2sh, this number is larger. For less space-intensive ones such as the newer segwit options, this number would be lower.</p>

<p>The code used in Bitcoin core to determine the dust threshold can be found <a href="https://github.com/bitcoin/bitcoin/blob/c536dfbcb00fb15963bf5d507b7017c241718bf6/src/policy/policy.cpp#L18" rel="noreferrer">here</a>.</p>

CC BY-SA 4.0
2019-04-15T15:31:08.237Z
I think this answer could be clarified a bit.  It seems to boil down to the statement that "the dust limit is fixed at 3 satoshis per byte", which raises the question as to how *this* figure was selected.  Also, referring to this as a "relay fee" seems misleading because no fees are collected by nodes who merely relay transactions.
Nate Eldredge
CC BY-SA 4.0
2019-04-15T15:36:35.917Z
@NateEldredge Absolutely - I'm trying to look up some sources I read ages ago on why `3*relay fee` was selected. As for the relay fee bit, I believe it comes from the `minrelaytxfee` flag for bitcoind, which lets you control which transactions your node relays based on fee
Raghav Sood
CC BY-SA 4.0
2019-04-15T16:29:28.683Z
Wasn't it the case that dust limit was introduced to prevent creation of UTXOs whose value is lower than the cost of scriptSig to spend it? For a 148 byte input, scriptSig would be 107 bytes. That is ~34*3.
Ugam Kamat
CC BY-SA 4.0
2019-04-15T16:48:04.240Z
I think Ugam is right according to [this](https://github.com/bitcoin/bitcoin/pull/2577#issuecomment-17738577).
MCCCS
CC BY-SA 4.0
2022-05-09T13:07:17.527Z
how to calculate dust for Testnet pubkey hash (with testnet address like mutrAf4usv3HKNdpLwVD4ow2oLArL6Rez8) and  Testnet script hash (with testnet address like 2N1SP7r92ZZJvYKG2oNtzPwYnzw62up7mTo)? Can I still consider 546 sats? Consider that one is about 34 and one is about 35 bits
Giacomo Brunetta
CC BY-SA 4.0
2019-04-15T15:15:58.813Z
2019-04-16T02:58:50.377Z
2019-04-16T02:58:50.377Z
Raghav Sood
<p>Is there a reason why <code>546</code> satoshis was chosen as dust limit instead of <code>547</code> or even <code>550</code> satoshis, historically?</p>

<history><dust>
How was the dust limit of 546 satoshis was chosen? Why not 550 satoshis?
MCCCS
# How was the dust limit of 546 satoshis was chosen? Why not 550 satoshis?

(Asked by: username_0 on 2019-04-15)

Is there a reason why `546` satoshis was chosen as dust limit instead of `547` or even `550` satoshis, historically?

**Tags:** history, dust


---

## 2 answers

### Answer by username_2 on 2019-04-15. Score: 8 | Accepted answer

The dust limit is not actually fixed, technically - it varies based on the type of output. 546 satoshis is simply the most commonly known one, for a p2pkh output. Being the longest-lived output type, I suspect some wallets/blog posts/literature might treat it as a hard coded dust limit.

As to how to arrive at 546 satoshis, we must first know what "dust" means. A dust output is an output which costs more to spend, than it is worth. In other words, an X BTC output that costs >X to spend, is a dust output. This is directly proportional to the amount of data required to spend an output, since fees in bitcoin are commonly denoted "per-byte". The more bytes you must add to your tx to spend an output, the higher its dust threshold.

A very basic tx consisting of 1 p2pkh input (~148 bytes), and 1 p2pkh output (~34 bytes) comes out to 182 bytes. The dust limit is 3 times this number (assuming a relay fee of 1 satoshi), or `182*3 = 546` sats.

For more complex txs, such as p2sh, this number is larger. For less space-intensive ones such as the newer segwit options, this number would be lower.

The code used in Bitcoin core to determine the dust threshold can be found [here](https://github.com/bitcoin/bitcoin/blob/c536dfbcb00fb15963bf5d507b7017c241718bf6/src/policy/policy.cpp#L18).

> **Comments:**
> **username_3**: I think this answer could be clarified a bit.  It seems to boil down to the statement that "the dust limit is fixed at 3 satoshis per byte", which raises the question as to how *this* figure was selected.  Also, referring to this as a "relay fee" seems misleading because no fees are collected by nodes who merely relay transactions.  
> **username_2**: @username_3 Absolutely - I'm trying to look up some sources I read ages ago on why `3*relay fee` was selected. As for the relay fee bit, I believe it comes from the `minrelaytxfee` flag for bitcoind, which lets you control which transactions your node relays based on fee  
> **username_4**: Wasn't it the case that dust limit was introduced to prevent creation of UTXOs whose value is lower than the cost of scriptSig to spend it? For a 148 byte input, scriptSig would be 107 bytes. That is ~34*3.  
> **username_0**: I think username_4 is right according to [this](https://github.com/bitcoin/bitcoin/pull/2577#issuecomment-17738577).  
> **username_5**: how to calculate dust for Testnet pubkey hash (with testnet address like mutrAf4usv3HKNdpLwVD4ow2oLArL6Rez8) and  Testnet script hash (with testnet address like 2N1SP7r92ZZJvYKG2oNtzPwYnzw62up7mTo)? Can I still consider 546 sats? Consider that one is about 34 and one is about 35 bits  

---

### Answer by username_1 on 2019-04-15. Score: 5

Bitcoin core sets the dust limit to a value where spending an output would exceed 1/3 of its value. This calculation is based on the node's setting for the minimum relay transaction fee (see option [-minrelaytxfee](https://en.bitcoin.it/wiki/Running_Bitcoin)) whose default is 0.00001 BTC/KB. Any transaction with a fee less than that does not get relayed by the node i.e. is dropped from its mempool.

For a node that uses the default `-minrelaytxfee` of 0.00001 BTC/KB (1000 satoshis/KB) and given that for P2PKH an input is 148 bytes and an output is 34 bytes, it follows that an output less than or equal to 546 satoshis is considered dust according to Bicoin core.

Reference: [What is meant by Bitcoin dust?](https://bitcoin.stackexchange.com/questions/10986/what-is-meant-by-bitcoin-dust/41082#41082)


---

