<p>The current dust limit fee rate is 3 satoshis/byte. If, at 3 satoshis per byte, an output would cost more in fees to spend that it has in value, then that output is considered dust. If you are sending to non-segwit addresses, this limit is <code>3 sat/byte * 148 bytes = 444 sats</code>. If you are sending to P2SH-segwit addresses (the default address type in Bitcoin Core), then the fee limit is <code>3 sat/byte * 91 bytes = 273 sat</code>. If you are sending to bech32 addresses, then the fee limit is <code>3 sat/byte * 68 bytes = 204 sat</code>.</p>

<p>You can lower your dust limit by setting <code>-dustrelayfee</code> to something lower than 0.00003 BTC/kB (equivalent to 3 sat/byte). However I do not recommend that you change this as even though your node will accept transactions with outputs that are otherwise dust, other nodes will not and your transactions will not be relayed.</p>

<p>Furthermore, you should not set your transaction fee rate to be less than 0.00001 BTC/kB (equivalent to 1 sat/byte) as this is the default minimum relay fee and transactions that have a fee rate less than this will not be relayed. Just because your node accepts a transaction does not mean that other people's nodes will.</p>

CC BY-SA 4.0
2018-08-11T01:29:37.290Z
There will be many addresses has dust in it, typically 0.0003BTC each. I want to collect them into a single address. How to do the math in this situation?
Allen_Tsang
CC BY-SA 4.0
2018-08-11T01:37:07.503Z
0.0003 BTC is not dust. The problem is not that you are spending small outputs. Rather the problem is that you are creating a dust output. If the addresses are part of your Bitcoin Core wallet, let Bitcoin Core do the work. You can create a transaction using createrawtransaction which has no inputs and only the outputs that you want the coins to go to with the full amount of your wallet. Then, using fundrawtransaction, you can set it so that the fee is deducted from this output. Core will select the coins and set the fee for you.
Ava Chow
CC BY-SA 4.0
2018-08-11T01:38:49.560Z
The commands are: `createrawtransaction '[]' '[{"<address>":<wallet balance>}]'` and then `fundrawtransaction <tx hex from createraw> '{"subtractFeeFromOutputs":[0]}'`
Ava Chow
CC BY-SA 4.0
2018-08-13T02:01:50.397Z
I trying your suggestion. But I still don't fully understand. You mean the problem is that the size of output is too small, even the amount (0.0003BTC) is big enough. But how the app client do the similar transaction? I use Copay to send 0.0003BTC to the address in my bitcoin core. When I try to send the same amount out of bitcoin core, the dust problem occurs.
Allen_Tsang
CC BY-SA 4.0
2018-08-15T04:01:14.963Z
I believe I have solve the problem. Your advice is really helpful. @Andrew
Allen_Tsang
CC BY-SA 4.0
2018-08-10T01:37:42.667Z
2018-08-10T01:37:42.667Z
Ava Chow
<p>When I try to broadcast a transaction, my bitcoin core throw a "dust" exception.</p>

<pre><code>amount: 0.00029
fee: 0.00001
bitcoin core version: v0.16.0
</code></pre>

<p>The same transaction can success in testnet, but fail in mainnet.</p>

<p>When I send 0.0003 BTC to an account in my bitcoin core, it can success. So, I think send 0.00029 BTC out of the node is still possible. </p>

<p>I set the fee to such a small number to lower the transaction cost, since there will be many transactions like this one. If this fee will not work, then what is the lowest fee?</p>

<p>I try to set the option "discardfee", but didn't make anything change.</p>

<p>Any advice is helpful, thanks in advance.</p>

<dust>
In bitcoin core, how to avoid the dust exception?
Allen_Tsang
# In bitcoin core, how to avoid the dust exception?

(Asked by: username_0 on 2018-08-10)

When I try to broadcast a transaction, my bitcoin core throw a "dust" exception.

```
amount: 0.00029
fee: 0.00001
bitcoin core version: v0.16.0

```

The same transaction can success in testnet, but fail in mainnet.

When I send 0.0003 BTC to an account in my bitcoin core, it can success. So, I think send 0.00029 BTC out of the node is still possible.

I set the fee to such a small number to lower the transaction cost, since there will be many transactions like this one. If this fee will not work, then what is the lowest fee?

I try to set the option "discardfee", but didn't make anything change.

Any advice is helpful, thanks in advance.

**Tags:** dust


---

## 1 answers

### Answer by username_1 on 2018-08-10. Score: 3

The current dust limit fee rate is 3 satoshis/byte. If, at 3 satoshis per byte, an output would cost more in fees to spend that it has in value, then that output is considered dust. If you are sending to non-segwit addresses, this limit is `3 sat/byte * 148 bytes = 444 sats`. If you are sending to P2SH-segwit addresses (the default address type in Bitcoin Core), then the fee limit is `3 sat/byte * 91 bytes = 273 sat`. If you are sending to bech32 addresses, then the fee limit is `3 sat/byte * 68 bytes = 204 sat`.

You can lower your dust limit by setting `-dustrelayfee` to something lower than 0.00003 BTC/kB (equivalent to 3 sat/byte). However I do not recommend that you change this as even though your node will accept transactions with outputs that are otherwise dust, other nodes will not and your transactions will not be relayed.

Furthermore, you should not set your transaction fee rate to be less than 0.00001 BTC/kB (equivalent to 1 sat/byte) as this is the default minimum relay fee and transactions that have a fee rate less than this will not be relayed. Just because your node accepts a transaction does not mean that other people's nodes will.

> **Comments:**
> **username_0**: There will be many addresses has dust in it, typically 0.0003BTC each. I want to collect them into a single address. How to do the math in this situation?  
> **username_1**: 0.0003 BTC is not dust. The problem is not that you are spending small outputs. Rather the problem is that you are creating a dust output. If the addresses are part of your Bitcoin Core wallet, let Bitcoin Core do the work. You can create a transaction using createrawtransaction which has no inputs and only the outputs that you want the coins to go to with the full amount of your wallet. Then, using fundrawtransaction, you can set it so that the fee is deducted from this output. Core will select the coins and set the fee for you.  
> **username_1**: The commands are: `createrawtransaction '[]' '[{"<address>":<wallet balance>}]'` and then `fundrawtransaction <tx hex from createraw> '{"subtractFeeFromOutputs":[0]}'`  
> **username_0**: I trying your suggestion. But I still don't fully understand. You mean the problem is that the size of output is too small, even the amount (0.0003BTC) is big enough. But how the app client do the similar transaction? I use Copay to send 0.0003BTC to the address in my bitcoin core. When I try to send the same amount out of bitcoin core, the dust problem occurs.  
> **username_0**: I believe I have solve the problem. Your advice is really helpful. @Andrew  

---

