Given I have an account with balance 1BTC + 1 satoshi. I want to transfer 1BTC to another account and tribute 0.0001 BTC out of that 1BTC to the network as fee. Would my transaction being rejected for produce dust spam (1 satoshi in this case)?

So the number is:

  • Account 1: 1BTC + 1 satoshi
  • Transfer: 0.9999 BTC and tribute 0.0001 BTC to miner
  • Left over: 1 satoshi.
  • 1
    Note the correct spelling is "satoshi". I've edited to correct it. – Nate Eldredge Sep 23 '14 at 13:48
up vote 2 down vote accepted

Your transaction (1.00000001 ===> 0.99990000 transfer + 0.00010000 fee + 0.00000001 change) will be valid. But it is not guaranteed that other nodes will pass your transaction. May be yes, may be no.

Modern referral clients do not relay such transactions, because developers hate dust and spam. But there are nodes which relay such transactions and there are miners who confirm them into blocks.

E.g. https://blockchain.info/address/1Fri3h6MtMkjZjYHub4r1N6r5nERWgZXHQ

  • Also, the network has no way of knowing if the 1 satoshi is being sent and the 0.9999 transfer is the transaction value, or vice versa (assuming no addresses are reused). So to the rest of the network, it could look like you are just trying to make a dust output. – StephenM347 Nov 17 '14 at 21:49

If your proposed transaction is to have an input of BTC 1.00000001, one output of BTC 0.9999 and a change output of BTC 0.00000001 (leaving BTC 0.0001 as a fee), then yes, most clients will reject it under the dust rule. Bitcoin Core's rule is to refuse transactions with any output that is too small - the precise details are a little complicated, but generally outputs of less than 546 satoshis (BTC 0.00000546) are forbidden. (You can see the full details in the source - it is the function CTxOut::IsDust() in core.h.) It is possible, however, that some nonstandard clients would relay your transaction, and it might find its way to a nonstandard miner who would include it in a block, but there is a risk that it would not.

If you are using Bitcoin Core and you actually try to make a transaction that takes an input of BTC 1.00000001 and sends BTC 0.9999 to another address, it will avoid this problem by not creating a change output, but adding the extra 1 satoshi to the fee instead. So you will effectively pay a fee of BTC 0.00010001, and your transaction should be relayed and confirmed with no problems.

Rejecting a transaction is not as simple as one of the outputs. If you look at this wiki page https://en.bitcoin.it/wiki/Transaction_fees all parts of the transaction are included when calculating this. Minning pools do not look for single output size when rejecting / accepting that i know of but base it off the priority shown in the formula.

  • That is to say my transaction should be as acceptable as other transactions without a dust, given everything else is more or less equal? – Phương Nguyễn Sep 23 '14 at 4:53
  • Yes this would be an acceptable transaction. – mschuett Sep 23 '14 at 5:03

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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