Prioritized transactions, and tx fees

View Satoshi only

External link

As noted in this wiki page and in this satoshi post, the -paytxfee switch may be employed give your sent transactions "priority."

Prioritized transactions appear to be defined as increasing the likelihood that a transaction will be included in a block, even if that block is very large (byte-wise or tx-wise).

Considering that 99.9% of blocks are outside the range that will incur tx fees, it can be said that tx fees are largely useless today.  But it makes me curious...

Are there any other areas of the bitcoin client or network that could somehow prioritize transactions based on tx fees?  Examples:
  • if you have a list of transactions to send out to the network, send prioritized ones to more connected nodes
  • restart mining work immediately if priority tx arrives, but continue working on existing block for a while, if free tx arrives

And with my businessman's cap on, I would think it prudent practice for any bitcoin business to use -paytxfee=0.02 by default, just to be safe, guaranteeing priority on the existing network and existing clients, in cases of extreme network load.

Other comments about how to use tx fees welcome...  I strongly believe that a healthy tx fee structure is important to the long term health of the bitcoin P2P network.
As far as I can tell, transactions are not prioritized according to fee size. Paytxfee just ensures that you will meet the fee requirements (and it isn't guaranteed to do that). This does seem to be contrary to what Satoshi and sirius-m have implied, but I can't find any prioritization in the code.
The fees are a function of total transaction volume.
Right now the volume is pretty tiny so all fees are zero.
Later when the volume is high only some of the current transactions will be included in each
block so you either pay a fee to make sure your transaction is desirable to be in each block
or wait until the trading volume drops.

It ramps up the fee requirement as the block fills up:

<50KB  free
50KB   0.01
250KB  0.02
333KB  0.03
375KB  0.04

It's a typical pricing mechanism.  After the first 50KB sells out, the price is raised to 0.01.  After 250KB is sold, it goes up to 0.02.  At some price, you can pretty much always get in if you're willing to outbid the other customers.

Just including the minimum 0.01 goes a long way.
That's cost per kilobyte, though, and a kilobyte can only hold ~9 TxIns, so 0.01 is not guaranteed to meet the requirement.
True, the switch should be something more dynamic that pays per KB.  It's harder to think of how to explain it.