+1 for Common Sense
When you really think about it in a global way, storing data in a second blockchain is even more wasteful.
Imagine these two future cases:
Scenario 1: Bitcoin + Counterparty
Scenario 2: Bitcoin + BitcoinLikeSecondChain + Counterparty
Scenario #2 will always use up more data globally than #1 because we have to add in the second chain + its overheads.
Scenario #2 makes all parties (Bitcoin, BitcoindSecondChain, and Counterparty) a little less secured.
Why have Counterparty/metaprotocols running on top of a second chain when it's even simpler to integrate directly into the chain like some of the Bitcoin competitors? Why even have OP_RETURN? Why even have script if we really want to save every bit of space?
Counterparty is just tiny writings in the margins of the Bitcoin book. Reducing the margin to 40 bytes and advocating that all metaprotocols write to more books is just encouraging more wasted resources for everyone on the planet -- just so we might save up a few bytes in one book.
Allowing just enough room in OP_RETURN for a hash is like leaving enough room for Fermat to write down one last equation when that one equation could have led to another, and another in a chain of discoveries. It makes sense that a little more room for writing in the margin will make the Bitcoin book more valuable for everyone NOW before the new competitions come.
Please allow some room in the margins instead of encouraging metaprotocols to waste more trees by starting more useless books.
It is called a free ride. Given that the overwhelming majority -- >90% -- application for the bitcoin blockchain is currency use, using full nodes as dumb data storage terminals is simply abusing an all-volunteer network resource. The network replicates transaction data, so why not come along for a free ride?
Rather than engage the existing community, mastercoin and counterparty simply flipped an "on" switch and started using bitcoin P2P nodes as unwanted data stores. An unspent transaction output was never meant to be used as arbitrary data storage. The fact that it can be abused as such does not make it right, or remotely efficient, or the best solution.
The UTXO (unspent transaction output) database is the entire network's fast access database. Every single node needs that database to be as small as possible, for best processing of network transactions. Encoding arbitrary data into unspent outputs is network-wide abuse, plain and simple. The entire network bears the cost.
"All volunteer"? I think that's somewhat misleading. It's not like Bitcoin is Folding@home or something where the nodes are running for a glorious altruistic purpose. Bitcoin nodes are running because it is profitable to do so (in the case of mining) or they hold Bitcoin and have a vested interest in preserving its value.
Counterparty and Mastercoin play by the rules of Bitcoin. XCP users pay transaction fees and, to my limited understanding, frequently create unspendable outputs which effectively deflate Bitcoin and so theoretically make every BTC worth a little more, given a set market cap.
Furthermore, XCP is basically extending the utility of Bitcoin. I think of XCP/MSC as being the JavaScript to Bitcoin's HTML. Yes, HTML was a revolution, but you essentially could only do one thing with it. The truly interesting stuff started happening once we allowed little programs to run on top of it and modify it. We now have fully dynamic, interactive programs running within a Web browser with no plugins needed. As somebody who started in Web Development back when Netscape was dominant and the coolest thing you could do with JavaScript was change an image on mouseover, I am blown away at the orders of magnitude how much more useful basic HTML is today than it was 15 years ago.
There are some competitors such as BitShares or NXT that run on completely different networks but are trying to achieve the same thing. Kinda like, say, Flash -- abandon HTML completely, start from scratch and build something that in some ways is more capable than HTML+JS but less compatible, requiring a separate software download and install.
We all know how that story played out. But if Microsoft had never added a little thing which came to be called XMLHttpRequest to Internet Explorer 5, eventually birthing AJAX and the fully interactive JSON-loaded sites that we have today, the Web might have moved on past HTML. Would HTML still be around today, or would everybody have moved on to something more fully-featured like Flash (God forbid)? The duo of HTML+JS = "Web 2.0" has won, but there's no guarantees in this world.
I believe in the BitShares idea, and the NXT idea, and the Ripple idea. All of these are starting from scratch and building their own networks. I also believe in the Counterparty and Mastercoin ideas. Mastercoin and XCP are preserving the Bitcoin blockchain and creating useful structures on top of that blockchain. To my mind, that should be exciting as hell to someone invested in the Bitcoin community and (presumably) Bitcoins as a currency. It's a value-add, pure and simple. And while nobody can predict the future, IMO these features provide a much more compelling future for Bitcoin than the alternative, where so-called "Crypto-Currency 2.0" products simply leave Bitcoin in the dust and abandon PoW-mined blockchains altogether.
I think that I understand your point about unspent outputs being memory hogs for the Bitcoin network nodes. But AFAIK, this is the one thing that Bitcoin CANNOT do away with. It seems that Counterparty would be happy to use the 80-byte OP_RETURN space (which, AFAIK, only takes up space in the blockchain and does not remain resident in the active memory of nodes), but with only 40 bytes of space, they are forced to use unspent outputs for some transactions; and if OP_RETURN gets shortened further, unspent outputs will be used for all transactions..
Now, I am just a disinterested observer here (with investments in Bitcoin and all major 2.0 cryptos) so I don't speak for anybody but myself here; but it seems to me that Counterparty has Bitcoin over a barrel somewhat, especially with respect to the unspent outputs, which would be quite difficult to selectively block on the Bitcoin end. It would quickly turn into a cat and mouse game. Bitcoin could implement code to detect and block XCP transactions, but XCP changes a few parameters and re-launches a week later to get around it, which causes Bitcoin to respond, which causes a new change in XCP, etc. ad nauseum. I don't think that anybody wants that.