Always pay transaction fee?

10 messages BitcoinTalk Jeff Garzik, Satoshi Nakamoto, MoonShadow, caveden, FreeMoney, lfm, theymos September 6, 2010 — September 23, 2010
Jeff Garzik September 6, 2010 Source · Permalink

To accurately reflect that processing a transaction has certain resource costs across the network, I propose that tx fee be required for every transaction after X datetime (where X is a few months in the future).

MoonShadow September 7, 2010 Source · Permalink

I propose that that number of months be 1440.

caveden September 7, 2010 Source · Permalink

That will probably happen spontaneously if someone make a client (or add the option to the current one) that allows the user to charge transaction fees for the blocks it generates.

FreeMoney September 7, 2010 Source · Permalink

The correct fee is so small right now that the psychological detriment far outweighs the benefits of charging it imo. It’s like that damn place that charges me a quarter a tiny cup of water when I buy a $9 meal. Yes, I know there are costs to pressing the button, but now I don’t like you anyway.

I expect it will be a long time before a high % of nodes require a fee for normal transactions. This means most users will not attach a fee, being willing to wait 4 blocks on average or whatever. So for a good while charging a fee simply means not putting transactions in blocks, this will make bitcoin slightly less appealing and slightly reduce use which will slightly reduce the value of coins. So anyone who has coins can self interestedly include transactions for free.

Jgarzik, do you have a guess as to the resource costs of a normal transaction?

Satoshi Nakamoto September 7, 2010 Source · Permalink

Another option is to reduce the number of free transactions allowed per block before transaction fees are required.  Nodes only take so many KB of free transactions per block before they start requiring at least 0.01 transaction fee.

The threshold should probably be lower than it currently is.

I don’t think the threshold should ever be 0.  We should always allow at least some free transactions.

lfm September 7, 2010 Source · Permalink

If you WANT to start paying the transaction fees now you can with the -paytxfee=0.01 (beta?) command line switch. If more people use this switch then it might help discourage others from requiring compulsory fees.

MoonShadow September 7, 2010 Source · Permalink

Quote from: satoshi on September 07, 2010, 04:32:21 PM

Another option is to reduce the number of free transactions allowed per block before transaction fees are required. Nodes only take so many KB of free transactions per block before they start requiring at least 0.01 transaction fee.

The threshold should probably be lower than it currently is.

I don’t think the threshold should ever be 0. We should always allow at least some free transactions.

What is the current threshold, and how does a client know to pay for this in advance?

theymos September 7, 2010 Source · Permalink

Quote from: creighto on September 07, 2010, 07:20:29 PM

What is the current threshold, and how does a client know to pay for this in advance?

http://www.bitcoin.org/wiki/doku.php?id=transaction_fee

Satoshi Nakamoto September 8, 2010 Source · Permalink

Currently, paying a fee is controlled manually with the -paytxfee switch.  It would be very easy to make the software automatically check the size of recent blocks to see if it should pay a fee.  We’re so far from reaching the threshold, we don’t need that yet.  It’s a good idea to see how things go with controlling it manually first anyway.

It’s not a big deal if we reach the threshold.  Free transactions would just take longer to get into a block.

I did a rough tally of 4000 blocks from around 74000-78000.  This is excluding the block reward transactions:

There were average 2 transactions per block, 17 transactions per hour, 400 transactions per day.

Average transaction bytes per block was 428 bytes, or 214 bytes per transaction.

The current threshold is 200KB per block, or about 1000 transactions per block.  I think it should be lowered to 50KB per block.  That would still be more than 100 times the average transactions per block.

The threshold can easily be changed in the future.  We can decide to increase it when the time comes.  It’s a good idea to keep it lower as a circuit breaker and increase it as needed.  If we hit the threshold now, it would almost certainly be some kind of flood and not actual use.  Keeping the threshold lower would help limit the amount of wasted disk space in that event.

Satoshi Nakamoto September 23, 2010 Source · Permalink

Quote from: satoshi on September 08, 2010, 05:30:14 PM

The current threshold is 200KB per block, or about 1000 transactions per block.  I think it should be lowered to 50KB per block.  That would still be more than 100 times the average transactions per block.

I implemented this change in SVN rev 157.

The reason I previously made it so high was to allow very large transactions without hitting the transaction fee.  The threshold was around 26,000 BTC for transactions made of 50 BTC generated coins.  Even though it was 100 times easier to generate back then, only a few people ever encountered the fee at that level.  The new threshold puts it at around 11,000 BTC for sending generated coins.  It would mostly only be reached with generated bitcoins.  If you bought your bitcoins, they’ll be denominated in larger transactions and won’t be anywhere near the fee limit, unless you bought them in several hundred separate transactions.  Even if you do reach the fee level, you only have to pay it once to bundle your little transactions together.