Author

Topic: The real way to deal with "uneconomic outputs" is to charge for them (Read 758 times)

staff
Activity: 4284
Merit: 8808
Go ahead, create an altcoin as you describe it...

I'll happily go make it impossible to validate/secure by making a bunch of blocks with gigabyte scriptsigs.

While I agree that block limits an txcost objectives must be aligned (and wrote up an elaborate non-bitcoin proposal based on it, search for prepayment) It's not quite so simple... you can't just ignore parts of transactions of the blocks, lest people start cramming in hundreds of gigs of data they want to make other people store in them.
legendary
Activity: 1232
Merit: 1094
That would allow tx spam and unlimited block sizes.

The benefit is that it decreases the UTXO space.  What about outputs - (inputs / 2) as a compromise?

Quote
In practice, the fee rules are hardcoded. Clients enforce a minimum tx fee, with no option of bypass.

You can bypass the fees if you want.  Free transactions are already included by miners.

You take a risk, and as block space becomes more limited, they will probably be delayed more.

Quote
Users do not need to consolidate because that gives no economic benefit anymore, as inputs are not charged fees.

It is in the network's interests to encourage consolidation.  The UTXO set is effectively the unprunable part of the blockchain. 
legendary
Activity: 1246
Merit: 1077
Block size limit replaced by total block output size limit
The blockchain's size can be reduced drastically if the number of unspent outputs are reduced. Currently, the block size limit accomplishes this only indirectly. If this were replaced with a limit to block output size (say, at 500 kB), we would be targeting this directly.

Better would be to use number of outputs - number of inputs.  That way miners might even pay for transactions with lots of inputs.  I assume transactions with negative fees are not allowed atm?
That would allow tx spam and unlimited block sizes.

Quote
Charge fees on outputs, not TX size
Really, for a transaction, nothing matters except the number of outputs. Outputs increase unprunable blockchain size. Combined with the block output size limit, this will shrink blockchain size considerably.

The network doesn't charge fees.  You set your own fee, and the miner accepts it or not.

However, if the blocks were limited to a maximum UTXO set increase, then miners would naturally charge only for outputs.
In practice, the fee rules are hardcoded. Clients enforce a minimum tx fee, with no option of bypass.

Quote
  • Uneconomic outputs solve themselves. If every output pays a fee, messaging transactions would become impractical. As fees change with price changes, the uneconomic line will move with them.

The fee is for a slot in the UTXO set.  If that becomes really limited, users may demand merchants provide their own receiving UTXO.
The point is to eliminate outputs that cost more than they are worth to spend. If spending them costs nothing, then this problem is solved. Charging for the outputs effectively then puts the restraints back, but without reintroducing the problem.

Quote
  • More anonymous. Instead of worrying about mixing inputs, the default client can maximize anonymity by using inputs that have not been connected to others, without extra fee.

If UTXO slots are inherently expensive, it encourages users to consolidate, so it reduces privacy.
Users do not need to consolidate because that gives no economic benefit anymore, as inputs are not charged fees.

Quote
Caveat
Of course, current inputs have not been paid for, so an implementation would have to start at a certain block. This solution would also seem to hardfork the blockchain. It would also require all inputs to be emptied with every transaction, but this happens already. The solution would make faucets and SatoshiDICE "you lose" messages uneconomic—but is that necessarily a bad thing?

You have the risk of UTXO set spam, if it looks like they are going to be expensive.  People who split their money into loads of small holding would get more UTXO slots.  However, the 1MB limit inherently limits the maximum UTXO set increase, but it could still expand.  In the greater order of things that doesn't matter much.

Also, if you set a maximum number of outputs per block, then you hard limit the rate at which new users can enter the system.
There is already a hard limit for the adoption rate, in the block size limit. People who split their money into loads of small holdings will have to pay for those small holdings. This proposal effectively eliminates the free transaction, which is a drain on the rest of the economy anyways.
legendary
Activity: 1232
Merit: 1094
Block size limit replaced by total block output size limit
The blockchain's size can be reduced drastically if the number of unspent outputs are reduced. Currently, the block size limit accomplishes this only indirectly. If this were replaced with a limit to block output size (say, at 500 kB), we would be targeting this directly.

Better would be to use number of outputs - number of inputs.  That way miners might even pay for transactions with lots of inputs.  I assume transactions with negative fees are not allowed atm?

Quote
Charge fees on outputs, not TX size
Really, for a transaction, nothing matters except the number of outputs. Outputs increase unprunable blockchain size. Combined with the block output size limit, this will shrink blockchain size considerably.

The network doesn't charge fees.  You set your own fee, and the miner accepts it or not.

However, if the blocks were limited to a maximum UTXO set increase, then miners would naturally charge only for outputs.

Quote
  • Uneconomic outputs solve themselves. If every output pays a fee, messaging transactions would become impractical. As fees change with price changes, the uneconomic line will move with them.

The fee is for a slot in the UTXO set.  If that becomes really limited, users may demand merchants provide their own receiving UTXO.

Quote
  • More anonymous. Instead of worrying about mixing inputs, the default client can maximize anonymity by using inputs that have not been connected to others, without extra fee.

If UTXO slots are inherently expensive, it encourages users to consolidate, so it reduces privacy.

Quote
Caveat
Of course, current inputs have not been paid for, so an implementation would have to start at a certain block. This solution would also seem to hardfork the blockchain. It would also require all inputs to be emptied with every transaction, but this happens already. The solution would make faucets and SatoshiDICE "you lose" messages uneconomic—but is that necessarily a bad thing?

You have the risk of UTXO set spam, if it looks like they are going to be expensive.  People who split their money into loads of small holding would get more UTXO slots.  However, the 1MB limit inherently limits the maximum UTXO set increase, but it could still expand.  In the greater order of things that doesn't matter much.

Also, if you set a maximum number of outputs per block, then you hard limit the rate at which new users can enter the system.
legendary
Activity: 1246
Merit: 1077
Hardcoding a value isn't going to help anything. Let the free market decide what is uneconomic. There's a simple way to do this, which incidentally should have been how Bitcoin was designed in the first place. It might need a hardfork, but it's still much more elegant than what we have now.

Block size limit replaced by total block output size limit
The blockchain's size can be reduced drastically if the number of unspent outputs are reduced. Currently, the block size limit accomplishes this only indirectly. If this were replaced with a limit to block output size (say, at 500 kB), we would be targeting this directly.

Charge fees on outputs, not TX size
Really, for a transaction, nothing matters except the number of outputs. Outputs increase unprunable blockchain size. Combined with the block output size limit, this will shrink blockchain size considerably.

Stop charging for inputs
Every input was an output once, and so has already been paid for. There is no reason to double-charge, as that would be double taxation. And since block inputs are no longer limited, miners would gladly accept transactions like this.

Enjoy the benefits
What's there to lose?

  • Uneconomic outputs solve themselves. If every output pays a fee, messaging transactions would become impractical. As fees change with price changes, the uneconomic line will move with them.
  • Better economy. The average benevolent merchant receives more transactions than they send. This revised fee schedule promotes commerce.
  • More efficient. Significant proportions of block space are used to "consolidate" inputs. A better solution is to consolidate inputs without cost, as inputs have already been paid for.
  • More anonymous. Instead of worrying about mixing inputs, the default client can maximize anonymity by using inputs that have not been connected to others, without extra fee.
  • No child pornography. Arbitrary data is now charged the way it should be charged: per kB of new data introduced. Inputs have all been previously used and so can never introduce new data. This will put an end to using the blockchain as mass storage.
Caveat
Of course, current inputs have not been paid for, so an implementation would have to start at a certain block. This solution would also seem to hardfork the blockchain. It would also require all inputs to be emptied with every transaction, but this happens already. The solution would make faucets and SatoshiDICE "you lose" messages uneconomic—but is that necessarily a bad thing?
Jump to: