Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: cointube on August 27, 2012, 09:42:39 PM



Title: Sending transactions with 0 fees
Post by: cointube on August 27, 2012, 09:42:39 PM
I compiled a version of bitcoind to not use fees and sent a few transaction (< 100) as an experiment. None of them showed up in the blockchain. I switched back to the 0.0005 default version and even tho I am paying the transaction fee the transactions still don't show up! Do miners stop processing your transactions if you try to send them transactions without fees?


Title: Re: Sending transactions with 0 fees
Post by: payb.tc on August 27, 2012, 09:45:35 PM
miners include whatever tx they like; they are individual entities.

it's unlikely that every miner in the world would refuse your transactions that have a fee on them.

it's unlikely too that any miner would say "hey wait, this is the guy that tried to send me a non-fee tx before!".

how would he know it was you? IP address?


Title: Re: Sending transactions with 0 fees
Post by: DeathAndTaxes on August 27, 2012, 09:47:17 PM
no but you likely have now created double spends and you have tx which miners won't include and double spends with fees that will never get to miners because some nodes won't relay them.

Messing with the fee rules is stupid.  Sorry for the harshness but the fees are a fraction of a penny and not including them can result in stuck tx like you are seeing.   Keep your bitcoind offline for a day so nodes forget about your txs, delete all the bad tx from your database (or extract the private keys and import into a new database) and you should be fine.

Yes cleaning up from invalid spam tx will be a complete mess.  In the future don't do that. :)


Title: Re: Sending transactions with 0 fees
Post by: gbl08ma on August 27, 2012, 09:50:10 PM
"the fees are a fraction of a penny and not including them can result in stuck tx like you are seeing."

Not when you're dealing with a service like cointube.tv and still you want real-time payments (i.e. not queuing them to save on fees) :D


Title: Re: Sending transactions with 0 fees
Post by: DeathAndTaxes on August 27, 2012, 09:52:25 PM
Then queue them to save on fees.  Bypassing the spam rules on a commercial service is about the worst idea ever.  You will spend more time on customer support and dealing with upset "unpaid" customers than you would ever save in fees.

The spam rules exist to protect the network from attack.  They are followed by most nodes.  If you could easily bypass them on tx which are indentical to a DOS attack or blockchain spam then wouldn't that mean an attacker could to?  The rules exist to protect the network.


Title: Re: Sending transactions with 0 fees
Post by: cointube on August 27, 2012, 10:06:36 PM
Thanks for the advice. I don't quite understand how this causes double spends. Would it be possible for me to run my own miners and have them include only my transactions onto the blockchain, or will the rest of the network refuse to relay them?


Title: Re: Sending transactions with 0 fees
Post by: DeathAndTaxes on August 27, 2012, 10:13:24 PM
Thanks for the advice. I don't quite understand how this causes double spends. Would it be possible for me to run my own miners and have them include only my transactions onto the blockchain, or will the rest of the network refuse to relay them?

The rest of the network (well decided on a node by node basis) may refuse to relay your tx however if you hash a valid block then unconfirmed double spend or insufficient fees it will still be accepted by the rest of the network.

An unintentional double spend can happen like this:
a) you create a tx with 0 fee using input A.  It is rejected by some but not all nodes.  It is relayed to miners but none include it in a block determining it is invalid.

b) you reinstall bitcoin and restore a wallet backup.  you create a tx w/ fees using the same input A.  The miners which relayed tx a) above won't relay this one because they see it as a double spend of the same input.  If enough nodes refuse to relay it you won't be able to reach a miner.

I would also point out as long as your bitcoind is running it will continually try to rebroadcast the tx (until it sees it in a block) which means the network will never forget about it.   So if your no-fee version is still running the network will never forget about the 0-fee txs.