Pages:
Author

Topic: Blocking the creation of outputs that don't make economic sense to spend (Read 3525 times)

member
Activity: 115
Merit: 10
Isn't there a way of doing this without touching the UTXO space? Some kind of flag to let the miner know "Hey, I really just want you to put '9b3fc6a603193ce5ad63a619482bc645035af1e89137ae1c69d7ad35227af511' into the blockchain, I dont actually care about this transaction at all."

This is what you want Provably Unspendable/Prunable Outputs

It's still a bit controversial, but there is consensus among the devs that at least a 20 byte data payload should be made a standard transaction type. That is a zero-value output of the form:

Code:
scriptPubKey: OP_RETURN <20 bytes>

We may eventually enforce that the 20 bytes be a digest of a SHA256 hash to make sure putting arbitrary data in the blockchain is very difficult - gmaxwell came up with a (very clever) way to do this: To prevent arbitrary data storage in txouts — The Ultimate Solution

Pretty cool...looks like I have more reading to do.
legendary
Activity: 1120
Merit: 1164
Isn't there a way of doing this without touching the UTXO space? Some kind of flag to let the miner know "Hey, I really just want you to put '9b3fc6a603193ce5ad63a619482bc645035af1e89137ae1c69d7ad35227af511' into the blockchain, I dont actually care about this transaction at all."

This is what you want Provably Unspendable/Prunable Outputs

It's still a bit controversial, but there is consensus among the devs that at least a 20 byte data payload should be made a standard transaction type. That is a zero-value output of the form:

Code:
scriptPubKey: OP_RETURN <20 bytes>

We may eventually enforce that the 20 bytes be a digest of a SHA256 hash to make sure putting arbitrary data in the blockchain is very difficult - gmaxwell came up with a (very clever) way to do this: To prevent arbitrary data storage in txouts — The Ultimate Solution
legendary
Activity: 1022
Merit: 1033
Both the SatoshiDice transactions and those for timestamping are really about storing a specific piece of information in the chain, forever.

Isn't there a way of doing this without touching the UTXO space?

 Some kind of flag to let the miner know "Hey, I really just want you to put '9b3fc6a603193ce5ad63a619482bc645035af1e89137ae1c69d7ad35227af511' into the blockchain, I dont actually care about this transaction at all."

Colored coins and smart property actually need to be transferred via transactions, timestamps are not enough.

Is this not possible? Sorry, I don't understand UTXO enough to figure this out.

It is fairly easy to implement timestamping with close to zero overhead.
member
Activity: 115
Merit: 10
Bit late to the party on this one. Has anything been decided? I'm with killerstorm, it would be a huge shame to prevent colored coins/smart property in this way.

If I want to make a 'worthless' transaction of one satoshi, and im willing to pay a fee for the pleasure, where's the harm?

+1


Both the SatoshiDice transactions and those for timestamping are really about storing a specific piece of information in the chain, forever.

Isn't there a way of doing this without touching the UTXO space? Some kind of flag to let the miner know "Hey, I really just want you to put '9b3fc6a603193ce5ad63a619482bc645035af1e89137ae1c69d7ad35227af511' into the blockchain, I dont actually care about this transaction at all."

The Bitcoin transaction doing this could then just be a direct payment TO the miners. The last piece of the puzzle would be for miners to choose to make this payment lower than the transaction fee, and incentives would align such that everyone could save money with non-UTXO transactions (they are cheaper than just burning a satoshi).

Is this not possible? Sorry, I don't understand UTXO enough to figure this out.
legendary
Activity: 1120
Merit: 1164
Well, at present, people are uploading wikileaks data, GPG encrypted data, python scripts, hidden wiki URLs, and other data spam.

Are they paying fees?

Yes - about $500 worth of fees for the 2.5MB wikileaks data for instance. (although if they weren't so impatient, it could have been about $50)
hero member
Activity: 714
Merit: 500
If I want to make a 'worthless' transaction of one satoshi, and im willing to pay a fee for the pleasure, where's the harm?

Well, at present, people are uploading wikileaks data, GPG encrypted data, python scripts, hidden wiki URLs, and other data spam.



Are they paying fees?
legendary
Activity: 1596
Merit: 1100
If I want to make a 'worthless' transaction of one satoshi, and im willing to pay a fee for the pleasure, where's the harm?

Well, at present, people are uploading wikileaks data, GPG encrypted data, python scripts, hidden wiki URLs, and other data spam.

sr. member
Activity: 455
Merit: 250
You Don't Bitcoin 'till You Mint Coin
Bit late to the party on this one. Has anything been decided? I'm with killerstorm, it would be a huge shame to prevent colored coins/smart property in this way.

If I want to make a 'worthless' transaction of one satoshi, and im willing to pay a fee for the pleasure, where's the harm?

+1
hero member
Activity: 714
Merit: 500
Bit late to the party on this one. Has anything been decided? I'm with killerstorm, it would be a huge shame to prevent colored coins/smart property in this way.

If I want to make a 'worthless' transaction of one satoshi, and im willing to pay a fee for the pleasure, where's the harm?

But the expiry idea seems like a less drastic solution than just effectively banning what you decide are worthless transactions.
hero member
Activity: 896
Merit: 1000
This would be bloating UTXO data at a speed of 52 GB/year. That's a very big memory leak. And this is just the unspendable outputs.

You can save such "unlikely to be spent" TXOs to disk.
Actually you need a fast way to find out if a TX used as input for another one is valid and spendable and don't want to go to disk for that (of course all unspent TXs are stored on disk but you need a structure in RAM to avoid DoS attacks using large numbers of invalid inputs).
hero member
Activity: 896
Merit: 1000
Let's assume bitcoin has scaled up to 2000 tx/s. We all want this, right? https://en.bitcoin.it/wiki/Scalability. Block size is 500 MB. CPU, network and archival blockchain storage seem to solvable.

Let's say SatoshiDice-like systems are doing informational transactions that produce unspendable outputs, because they can and users are paying for it anyway (proved in real life). 400 unspendable outputs per second would be realistic.

This would be bloating UTXO data at a speed of 52 GB/year. That's a very big memory leak. And this is just the unspendable outputs.

Bitcoin cannot scale up until such dust output spamming is discouraged at the protocol level.

This is more and more looking like FUD.

52GB is nothing. The mining economy today at current BTC price is above $60M/year. You can have reliable servers handling more than 5 time this amount in RAM for less than $10k today. Add BloomFilter and sugar on top and you can probably do it on a $2k server.

If nothing changes running full nodes will be restricted to tens or hundreds of companies making a living of it. They will simply run the pools of today but charge more.
legendary
Activity: 1022
Merit: 1033
This would be bloating UTXO data at a speed of 52 GB/year. That's a very big memory leak. And this is just the unspendable outputs.

You can save such "unlikely to be spent" TXOs to disk.

EDIT: Oh, bad idea...
full member
Activity: 192
Merit: 100
Let's assume bitcoin has scaled up to 2000 tx/s. We all want this, right? https://en.bitcoin.it/wiki/Scalability. Block size is 500 MB. CPU, network and archival blockchain storage seem to solvable.

Let's say SatoshiDice-like systems are doing informational transactions that produce unspendable outputs, because they can and users are paying for it anyway (proved in real life). 400 unspendable outputs per second would be realistic.

This would be bloating UTXO data at a speed of 52 GB/year. That's a very big memory leak. And this is just the unspendable outputs.

Bitcoin cannot scale up until such dust output spamming is discouraged at the protocol level.
legendary
Activity: 1372
Merit: 1002
Fees should be enough to prevent spam transactions.
For unspent transactions...I'm with killerstorm about the tree-structured chain.

Also about his other proposal which seems less destructive, at least for legitimate use cases like colored coins/smart property.
Instead of expiring an address after a given number of blocks, I would prefer to activate some kind of no proportional demurrage so that we don't expire addresses with lots of funds without putting extra hardcoded validations about "small" amounts.
People just needs to move the coins if they still want them.
legendary
Activity: 1022
Merit: 1033
Im guessing you would have to enforce minimum fees on all transactions but make those fees really low. Costing someone else .10 when you only pay a .005 fee is unfair. It causes a form of negative externality where the true cost is pushed to someone else.

Well, in typical case externalities caused by colored coins and smart property are not different from externalities of normal Bitcoin transactions.

There is just a somewhat higher chance that such coins will be abandoned, e.g. coins representing shares of defunct company or ownership of a totaled car.

But, of course, normally users do not expect that their property will get worthless.

If abandoned outputs are really a problem, it would make more sense to 'expire' small-value outputs after some time. E.g. they are pruned out of UTXO set 1 year after last transaction.

Such rule will work fine with smart property and colored coins: if property is still in use, owner's wallet will periodically refresh it, sending coin to himself and paying a fee.

(In fact I'd say expiration would make sense for all outputs since users effectively pay maintenance fee for all outputs they own. But libertarian crows screams bloody murder when expiration is mentioned, somehow they think that storing their coins in a paper wallet for 1000 years is a sacred right.)
member
Activity: 98
Merit: 10
If I'm reading this correctly, smart property and colored coins are not welcome on Bitcoin chain, right?

Well, for smart property like a car one can just use a bigger output, but low-value smart property like game items will be effectively banned.

Still, you know, it doesn't feel right when you can change rules like that. Previously the rule was that you can put anything into blockchain as long as you're willing to pay for it, but now we care about UTXO set.

I believe that the right solution is to make Bitcoin scalable in the sense that one node won't need to maintain whole UTXO set. Apparently it is possible if UTXO set is encoded using a tree-like datastructure which is maintained by miners.

But of course it is just easier to ban microtransactions than to implement the right thing.

(Well, I understand that it is not a hard ban, but if it takes a lot of time to get even 1 confirmation, it effectively makes Bitcoin inconvenient for such uses.)

Im guessing you would have to enforce minimum fees on all transactions but make those fees really low. Costing someone else .10 when you only pay a .005 fee is unfair. It causes a form of negative externality where the true cost is pushed to someone else.

legendary
Activity: 1022
Merit: 1033
If I'm reading this correctly, smart property and colored coins are not welcome on Bitcoin chain, right?

Well, for smart property like a car one can just use a bigger output, but low-value smart property like game items will be effectively banned.

Still, you know, it doesn't feel right when you can change rules like that. Previously the rule was that you can put anything into blockchain as long as you're willing to pay for it, but now we care about UTXO set.

I believe that the right solution is to make Bitcoin scalable in the sense that one node won't need to maintain whole UTXO set. Apparently it is possible if UTXO set is encoded using a tree-like datastructure which is maintained by miners.

But of course it is just easier to ban microtransactions than to implement the right thing.

(Well, I understand that it is not a hard ban, but if it takes a lot of time to get even 1 confirmation, it effectively makes Bitcoin inconvenient for such uses.)
newbie
Activity: 24
Merit: 1
In my opinion, if full nodes are too expensive to run for enthusiasts and require funding by the miners, bitcoin will die.

Hence the 100,000 nodes, which would be government agencies, universities, big companies, big non profit organizations and enthusiasts (wealthy individuals).

There's no way bitcoin can survive with 1000 full nodes.

I disagree with this.  In fact, I think this type of scenario (full, non-mining nodes being too expensive) is almost inevitable.  I also don't see why 1,000 or under = death, but I have a feeling there will be more nodes than that.

Basically, why run a full node if you're not mining?  Seriously.  Right now I run a full node, because, hey why not.  I already have a computer, internet, all that stuff, it's no big deal for me.  It basically doesn't cost me anything.  I just fire it up in the background when I run my computer and it goes and catches up with the blockchain.

But I get no direct benefit from running the software really.  I know the general argument is this: I gain by not having to trust the miners.  I can verify ever transaction in a published block and see if it's kosher.

To me, this is not really relevant.  If I'm on my computer, and I get block A that is pushed to me, but my full-node sees as invalid, OK, I can drop it.
But what if the next block, block B, is built on block A?  And then after that C?  What am I supposed to do, throw up my hands and say, no, you guys are all wrong!!!

Basically, if you mistrust ALL the miners, being able to look at blocks and reject them as invalid is pretty much useless.  If the mining network has actually been completely compromised, well that's pretty much game over anyway.

Another argument would be, well maybe someone's got control of my internet connection, and is feeding me made-up blocks.  But in that case you should see the block production rate collapse, because an attacker doing so would have vastly less hashing power than the total network.  So maybe he can do that with one block, but the 2nd or 3rd in that false-chain will take hours.

Basically, why not let only miners run the full nodes?  Maybe you can worry about "centralization", true, but recall that initially, every full node was a mining node, or could be.  Mining has now become more centralized because of hardware requirements.  I expect that full-nodes will do the same, and substantially all full nodes will be engaged in mining in the future, because the costs of running a full node will continue to increase, with no concurrent increase in benefit.  Once holding on to the whole blockchain becomes economically significant, you'll think, hey, I'm spending all this money to run a full node, I might as well mine while I'm at it, since mining has all of the same requirements.

Are there plausible scenarios where the _average_ home user runs full nodes years from now?
Also... why is this a problem?  Thousands of miners running the bitcoin network, and being compensated to do so.  Normal users connect to those miners and bid for transaction space.  Sounds OK.
hero member
Activity: 896
Merit: 1000
For 1000 tx/s with the current broadcast system you'd need 5MB/s upload bandwidth: ~ 50Mbps upload link.
I have a 100 Mbps internet connection (upload and download) for $20/month, but we're going off topic here.

We aren't really off topic when discussing how many full nodes will be affordable in the future: your computations rely on the network having 100 000 full nodes. My opinion is that the number of full nodes will adapt to the cost/benefit ratio of running one.

How much more expensive is an unspendable output compared to a spendable output to the global network?
~$0.10.

If I'm correct with only 1000 full nodes this drops to $0.001. This is why I think the previous discussion about the number of full nodes is important.

It is obviously a flaw in the bitcoin protocol that miners can include a $0.10 network cost transaction with a cost of 0.00008 BTC for themselves.

It isn't if you consider that running a full node will have to be linked to mining in the future. Such a transaction doesn't cost them 0.00008 BTC, it pays them whatever they want to include it in the block. Fees will simply have to adapt to whatever rule the miners put in place, the full nodes without miners behind them don't count at all as they don't bring any valuable service (copying data around isn't much of a service).

And that 0.00008 BTC cost decreases with better connectivity and infrastructure, to a point it even becomes profitable for well connected miners to spam the network (See retep's post). The problem doesn't even fix itself when BTC is worth $1000, because miners are getting the tx fees, not the network full nodes.

This is why I disagree: if running a full node doesn't bring any income to its owner and doesn't bring any security benefit by mining what exactly is it good for?
full member
Activity: 192
Merit: 100
For 1000 tx/s with the current broadcast system you'd need 5MB/s upload bandwidth: ~ 50Mbps upload link.
I have a 100 Mbps connection (upload and download) for $20/month, but we're going off topic here.

How much more expensive is an unspendable output compared to a spendable output to the global network?
~$0.10.

It is obviously a flaw in the bitcoin protocol that miners can include a $0.10 network cost transaction with a cost of 0.00008 BTC for themselves. And that 0.00008 BTC cost decreases with better connectivity and infrastructure, to a point it even becomes profitable for well connected miners to spam the network (See retep's post). The problem doesn't even fix itself when BTC is worth $1000, because miners are getting the tx fees, not the network full nodes.
Pages:
Jump to: