Bitcoin Forum
May 09, 2024, 05:46:15 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 »  All
  Print  
Author Topic: Is Mastercoin bloating the blockchain and what we can do about it?  (Read 10254 times)
ripper234 (OP)
Legendary
*
Offline Offline

Activity: 1358
Merit: 1003


Ron Gross


View Profile WWW
August 30, 2013, 07:21:00 AM
 #1

Let's create a healthy, constructive discussion here about the question whether Mastercoin "bloats" the blockchain, and what are some good technical solutions to that.

Please stop!

You are creating enormous amounts of  nonredeemable UTXO.  This kind of usage undermines the scalability of Bitcoin because you are pushing data storage into the UTXO set and not merely into the transaction history. The UTXO set must be rapidly available for validation and can not be pruned unlike the rest of the blockchain.  Currently pruning yields 50:1 compression (and improving) of the space required to run a full node. The addition of never-redeemable outputs undermines that.


Do you believe that "Bitcoin" cares about how people use it?
Bitcoin scalability is a definite challenge. We should tackle that challenge as early as possible, instead of nicely asking people to only use it in specific ways.

Willet is open to discuss better, more efficient ways to encode Mastercoin transactions into the blockchain.

gmaxwell, do you belong to the school of thinking that categorizes SatoshiDice as spam?

Please do not pm me, use ron@bitcoin.org.il instead
Mastercoin Executive Director
Co-founder of the Israeli Bitcoin Association
1715233575
Hero Member
*
Offline Offline

Posts: 1715233575

View Profile Personal Message (Offline)

Ignore
1715233575
Reply with quote  #2

1715233575
Report to moderator
Unlike traditional banking where clients have only a few account numbers, with Bitcoin people can create an unlimited number of accounts (addresses). This can be used to easily track payments, and it improves anonymity.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715233575
Hero Member
*
Offline Offline

Posts: 1715233575

View Profile Personal Message (Offline)

Ignore
1715233575
Reply with quote  #2

1715233575
Report to moderator
1715233575
Hero Member
*
Offline Offline

Posts: 1715233575

View Profile Personal Message (Offline)

Ignore
1715233575
Reply with quote  #2

1715233575
Report to moderator
Gavin Andresen
Legendary
*
Offline Offline

Activity: 1652
Merit: 2216


Chief Scientist


View Profile WWW
August 30, 2013, 07:29:22 AM
 #2

It bloats the UTXO set, which is bad.

MasterCoin transactions should all be spendable or provably prune-able. There are plenty of ways to accomplish that, the easiest of which that works today would be to stuff data into unused public keys of an OP_CHECKMULTISIG transaction.

How often do you get the chance to work on a potentially world-changing project?
maaku
Legendary
*
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 30, 2013, 08:07:15 AM
 #3

Or prefix the data output with OP_RETURN, which is guaranteed to be prunable. If the output is never meant to be spent, then it is irresponsible not to do this.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
gmaxwell
Staff
Legendary
*
Offline Offline

Activity: 4172
Merit: 8418



View Profile WWW
August 30, 2013, 08:44:35 AM
Last edit: August 30, 2013, 09:27:32 AM by gmaxwell
 #4

Creating an altcoin system which stores its data in blockchain is parasitic and increases the cost for non-consenting Bitcoin uses— and I think that is not great, and, I think it's pretty objectively clear that it bloats the blockchain, but that is not what I was complaining about.

Nor do I think we needed _yet another thread_ to help pump the name of this latest altcoin. This will be my one and only post in this thread and I hope other people decline to help give free PR here by continuing to post in this thread and giving them a free controversy to spin.

The issue here is that that mastercoin stores data in Bitcoin by creating perpetually unredeemable transaction outputs. It doesn't just store data in the blockchain, it stores it in the UTXO set and the blockchain. The former is a more precious resource than the latter. This kind of behavior, if wide spread, changes the asymptotic fast storage requirements for a full validating node from something close to constant (just some growth due to forever lost Bitcoins which all users are paid for via deflation) to perpetually growing.  The ability to for a full node to forget old transaction data would currently let you run one with about 2% of the storage that the blockchain takes up, but these outputs cannot be spent so they cannot be forgotten.

instead of nicely asking people
I am reasonably confident that you would prefer I defend Bitcoin by nicely asking as opposed to the alternatives.

Do you believe that "Bitcoin" cares about how people use it?
No more than the door of your home cares when some thief walks through it when you've left it unlocked.  The technically possibility of something does not equal moral authority, nor does the possibility of doing something now guarantee that that possibility will remain in the future— especially if it causes harm to others, like taking up their resource for private use. Just because it's possible doesn't mean its right, nor does it mean that its wise.

I certainly believe the users of Bitcoin care and will take action to defend Bitcoin from use which is harmful to it. Some time back I'd made a minor technical proposal which would completely block data-storage txouts with no impact to normal Bitcoin usage.  Adopting it would require switching people to a new address style for new transactions, so it's not something that would be adopted quickly if the Bitcoin userbase were to decide to go down that route, but it certainly could be done.  I tend to think asking nicely is preferable, however.

Willet is open to discuss better, more efficient ways to encode Mastercoin transactions into the blockchain.
I have better things to do with my time than to provide free consulting for altcoins who've just raised hundreds of thousands of dollars worth of investments in their ill considered schemes. The concerns here are not new, the impacts of unspendable outputs are not mysterous to people who have even half a technical clue about the Bitcoin system, and the solutions are not subtle.

My preference is that you do what hundreds of other altcoins have done and not store your data inside Bitcoin (but feel free to merge-mine if you need a consensus system), don't non-consensually consume the resources of people who are disinterested— even opposed— to your system... but failing that, see what all the other people piling on are saying about keeping data out of the UTXO set as a bare minimum.
Rampion
Legendary
*
Offline Offline

Activity: 1148
Merit: 1018


View Profile
August 30, 2013, 08:48:08 AM
 #5

Unfortunately not everybody will be willing to use the Bitcoin blockchain as we/the devs would like. If someone creates something that bloats the UTXO set, they might just do not care about what the devs think about it.

How we solve THAT problem?

freedomno1
Legendary
*
Offline Offline

Activity: 1806
Merit: 1090


Learning the troll avoidance button :)


View Profile
August 30, 2013, 08:58:09 AM
Last edit: August 30, 2013, 08:55:07 PM by freedomno1
 #6


How we solve THAT problem?

Off-Chain transactions comes to mind but may only be a part of the total solution
https://bitcointalk.org/index.php?topic=152334.0

https://bitcointalk.org/index.php?topic=274711.msg2949016#msg2949016

@gmaxwell
Sorry to add towards the posting just replying now while it is still fresh.

EDIT:
After reading the bitangels response on the Mastercoin thread and the devs reply I am on the fence with either implementation this needs more discussion since both sides seem to have validated points.
That said discussion has started, which is encouraging.

Believing in Bitcoins and it's ability to change the world
murraypaul
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250


View Profile
August 30, 2013, 09:02:13 AM
 #7

Unfortunately not everybody will be willing to use the Bitcoin blockchain as we/the devs would like. If someone creates something that bloats the UTXO set, they might just do not care about what the devs think about it.

How we solve THAT problem?

Identify those transactions and reject them as invalid.
Do not store or relay them.

BTC: 16TgAGdiTSsTWSsBDphebNJCFr1NT78xFW
SRC: scefi1XMhq91n3oF5FrE3HqddVvvCZP9KB
d'aniel
Sr. Member
****
Offline Offline

Activity: 461
Merit: 251


View Profile
August 30, 2013, 09:27:42 AM
 #8

@dacoinminster, if you're still intending to give me those 3 BTC for pointing out that problem with your proposal, could you please send them to 1GMaxweLLbo8mdXvnnC19Wt2wigiYUKgEB

@gmaxwell, thanks for your efforts.
TierNolan
Legendary
*
Offline Offline

Activity: 1232
Merit: 1083


View Profile
August 30, 2013, 10:49:27 AM
 #9

How we solve THAT problem?

There was a suggestion to directly limit the UTXO set.  For example, a block is invalid if the number of outputs is more than <some number> greater than the total number of inputs.

An output that pays to OP_RETURN wouldn't count as an output.

What about a weaker rule, if there is a tie between 2 blocks, break the tie in favor of the one with lower (total output - total inputs).

If a node receives a block and it would result in a small UTXO set, it still forward it and mine against it, displacing the earlier received block.

This would only affect blocks when orphans would happen, but does create an incentive to favor transactions which reduce the UTXO set.

A block which combines lots of dust into a single output would have an advantage, so miners would include those for free.

1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
lishbtc
Full Member
***
Offline Offline

Activity: 184
Merit: 100


View Profile
August 30, 2013, 12:34:37 PM
 #10

Whilst getting consensus on this topic is unlikely, I would think it's clear JRW is not just spitting out another 'altcoin' and would look at any suggestions to mitigate blockchain bloat - Mastercoin is supposed to complement Bitcoin after all.

Given Mastercoin is an additional layer of functionality that sits on top of Bitcoin, it therefore needs Bitcoin to succeed and as such it would make no sense to make design choices that negatively impact Bitcoin.

Shame to see the hostility (I've always found collaborating to be much more rewarding) but I'm sure with the quarter million plus $ raised the project will be able to engage the right minds to find the best implementation.

rbdrbd
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250



View Profile
August 30, 2013, 02:06:58 PM
 #11

Given Mastercoin is an additional layer of functionality that sits on top of Bitcoin, it therefore needs Bitcoin to succeed and as such it would make no sense to make design choices that negatively impact Bitcoin.

Shame to see the hostility (I've always found collaborating to be much more rewarding) but I'm sure with the quarter million plus $ raised the project will be able to engage the right minds to find the best implementation.

+1. This was going to happen sooner or later. There's way too much brainpower on these forums to not have a rational storage implementation come out of this effort.
dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 02:58:42 PM
Last edit: August 30, 2013, 03:12:08 PM by dacoinminster
 #12

I'm totally cool with stuffing the data in alternate places once we have our own client. I see using unspendable transactions as a "crutch" so that the protocol works until we get to that point. For instance, right now none of the existing bitcoin clients has functionality that will let an average user hide data in OP_CHECKMULTISIG.

I expect once we have alternate ways of storing the data, we'll support both methods for awhile, then switch to the more efficient one at some pre-determined block number.

MasterCoin wants to be a good block-chain citizen in the long run, but we are willing to put that off in the short run in favor of simplicity and immediate usability. Also, one of my design goals was to be "censorship resistant", meaning it would be really hard for anybody to tweak the bitcoin protocol such that MasterCoin no longer works. Any pruning scheme will need to be similarly robust.

Thanks for your input!

dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 04:14:40 PM
 #13

@dacoinminster, if you're still intending to give me those 3 BTC for pointing out that problem with your proposal, could you please send them to 1GMaxweLLbo8mdXvnnC19Wt2wigiYUKgEB

@gmaxwell, thanks for your efforts.

Sure. I've got to run a small list of expenditures by the oversight board next week, which includes the bounty that you and bytemaster earned. Thanks!

dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 04:28:24 PM
 #14

Relevant PM:

Quote
Hi JR, thanks for your work on Mastercoin so far. I am about to be investing ~50BTC...just finishing up my due diligence.

Regarding your post at: https://bitcointalk.org/index.php?topic=284178.msg3043044#msg3043044

So the plan is to fork a full client (I'd think bitcoin QT or Armory ...the latter you've forked from for your test implementation) and add all the Mastercoin functionality to that? How much effort is adding the ability to store the data in OP_CHECKMULTISIG ?? (Sorry, I'm a software developer by trade, but am not familiar with the bitcoin codebase).

If it's not a ton of work, why not plan to do this from the start? That would avoid issues with the bitcoin community at large around this (especially if you have folks like Gavin saying that it should be avoided). Having the bitcoin devs irked from this initiative from the start won't bode well... :/

-----

Frankly, I don't know how hard this will be yet. I believe Gavin when he says there are multiple ways to do it, but I don't know what all of them are or which way is best.

I do plan to use bounty money to encourage innovation in this area early on.

The most important thing to me is not to be dependent on the charity and goodwill of people running the higher protocol layer. They are great people, but I don't want to give them a lever to turn off MasterCoin, however well-intentioned they may be.

edit: I accidentally said "higher protocol layer" in this PM, but I meant bitcoin, the lower protocol layer.

killerstorm
Legendary
*
Offline Offline

Activity: 1022
Merit: 1015



View Profile
August 30, 2013, 04:48:20 PM
 #15

Quote
Hi JR, thanks for your work on Mastercoin so far. I am about to be investing ~50BTC...just finishing up my due diligence.

Regarding your post at: https://bitcointalk.org/index.php?topic=284178.msg3043044#msg3043044

So the plan is to fork a full client (I'd think bitcoin QT or Armory ...the latter you've forked from for your test implementation) and add all the Mastercoin functionality to that? How much effort is adding the ability to store the data in OP_CHECKMULTISIG ?? (Sorry, I'm a software developer by trade, but am not familiar with the bitcoin codebase).

If it's not a ton of work, why not plan to do this from the start? That would avoid issues with the bitcoin community at large around this (especially if you have folks like Gavin saying that it should be avoided). Having the bitcoin devs irked from this initiative from the start won't bode well... :/

-----

Frankly, I don't know how hard this will be yet.

I believe no more than a couple of days of work, if you know what are you doing. Likely less than that for a person who is very familiar with the client codebase, data structures etc.

So, yes, it makes sense to do this from the start.

Chromia: a better dapp platform
dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 05:13:20 PM
 #16


I believe no more than a couple of days of work, if you know what are you doing. Likely less than that for a person who is very familiar with the client codebase, data structures etc.

So, yes, it makes sense to do this from the start.


Agree it should be easy on one client, but less so for people who are currently using blockchain.info for MasterCoin. I don't want to leave them hanging.

I look forward to seeing what people come up with for hiding this data in the chain in more efficient ways Smiley

maaku
Legendary
*
Offline Offline

Activity: 905
Merit: 1011


View Profile
August 30, 2013, 07:22:20 PM
 #17

JR, put OP_RETURN in front of the data script. That can't take more than a few seconds to change, and a few minutes to communicate. You may even be able to use dust/empty outputs in this case (you should, but not sure if the client supports it yet).

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 08:02:52 PM
 #18

JR, put OP_RETURN in front of the data script. That can't take more than a few seconds to change, and a few minutes to communicate. You may even be able to use dust/empty outputs in this case (you should, but not sure if the client supports it yet).

I think you are assuming that we have code which directly sends MasterCoin transactions, which we do not. Sends are currently accomplished using standard unmodified bitcoin clients (bitcoin-qt, blockchain.info, etc)

Peter Todd
Legendary
*
Offline Offline

Activity: 1120
Merit: 1150


View Profile
August 30, 2013, 10:05:38 PM
 #19

JR, put OP_RETURN in front of the data script. That can't take more than a few seconds to change, and a few minutes to communicate. You may even be able to use dust/empty outputs in this case (you should, but not sure if the client supports it yet).

I think you are assuming that we have code which directly sends MasterCoin transactions, which we do not. Sends are currently accomplished using standard unmodified bitcoin clients (bitcoin-qt, blockchain.info, etc)

Given how much money you've raised it'd be quite easy to pay someone to add support for OP_RETURN to those clients, among other things.

dacoinminster
Legendary
*
Offline Offline

Activity: 1260
Merit: 1031


Rational Exuberance


View Profile WWW
August 30, 2013, 10:27:45 PM
 #20

Given how much money you've raised it'd be quite easy to pay someone to add support for OP_RETURN to those clients, among other things.

Hey Peter! Thanks for checking out the project! (Peter and I met at the conference in San Jose, and had some interesting discussions there, and he is a tireless advocate for keeping bitcoin awesome, as you can see from his sig)

I completely agree. We seem to have a rather formidable war-chest Smiley

Being a good block-chain citizen is a matter of survival for MasterCoin. If we don't, we'll face competition from a clone that says "We're like MasterCoin, but with less impact on the blockchain"

Pages: [1] 2 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!