I should clarify that the point is
not that inputs are free, but rather that inputs are paid for by the outputs they redeem. My description was focused on the general principle, but I believe it can be implemented in a way that addresses many of the concerns raised.
Here is a strawman concrete implementation proposal:
Currently the reference client makes fee decisions based on the size of a transaction, which is simply the number of bytes in the transaction. All of that logic remains the same, except that the size of a transaction is redefined as follows:
- the number of bytes in all outputs (serialized CTxOut objects), plus
- 200 bytes per output (intended to pay for the input that will eventually redeem each output), plus
- the number of excess bytes beyond the first 200 bytes in all inputs (serialized CTxIn objects).
The value of 200 bytes is somewhat arbitrary. It is more than enough to redeem a payment to address with an uncompressed key (180 bytes if I calculated correctly). It could be set lower, e.g. just enough to redeem a payment to address with a compressed key (148 bytes), or higher, e.g. enough to cover some interesting P2SH use cases like 2-of-3 multisig.
These rules could be rolled out now, but there is the problem that if the block size limit is reached, it will be more profitable for miners to use the original definition of transaction size instead of the adjusted definition. That problem could be fixed by redefining the block size limit so that instead of being based on the number of bytes in the block, it is based on the total size of transactions in the block, where transaction size is defined as above. Of course that is a hard fork.
Some responses:
It is possible to make very large inputs, so inputs must also be taxed on a basis of size, not on a per-input basis, and especially must not be free.
As described above, all inputs are fully paid for. All that changes is who pays.
If you want to reward efficient transactions, one could consider a .0000005 BTC per byte fee.
No change is proposed to the behavior of using rounded transaction sizes for fee computations. The alternate definition of transaction size would still be rounded.
Change you're proposing will subsidize multi-signature P2SH transactions.
What if I want to use 10 signatures for one input? Who cares, inputs are free!
As described above, all inputs are fully paid for. Typical inputs are paid for by the output they redeem, but oversized inputs require an extra charge.
You could create a tx close to a megabyte with a fee of only 0.005 and force it to be relayed, then create a new tx the same way, and repeat.
Inputs cannot simply be invented -- they must redeem an existing output. Yes, you can create a huge transaction that redeems every output you have available to you, but then you have used up all your unspent outputs, and to do it again you would have to create more outputs. Creating those outputs requires a fee which covers those outputs plus the redeeming inputs. Every byte is fully paid for.