60. On the Requirement of a Transaction Fee

60

On the Requirement of a Transaction Fee

SATOSHI’S ADVICE is to allow some transactions to be processed even if they do not have transaction fees. Currently, miners are still being rewarded with bitcoins, but this is scheduled to stop when all 21 million bitcoins have been mined—somewhere in the middle of the 22nd century. At that point, transaction fees might become mandatory so that miners are appropriately rewarded for use of their resources.

Always pay transaction fee?

Posted by jgarzik, September 07, 2010, 03:17:34 AM

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).

Re: Always pay transaction fee?

Posted by satoshi, September 07, 2010, 04:32:21 PM

Another option is to reduce the number of free transactionsallowed 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.

Re: Always pay transaction fee?

Posted by satoshi, September 08, 2010, 05:30:14 PM

Currently, paying a fee is controlled manually with thepaytxfee 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.

Re: Always pay transaction fee?

Posted by satoshi, September 23, 2010, 04:08:35 PM

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.

Last updated