Personally, I question the "social agreement/contract" aspect. To me, the software/code is the entirety of the contract. That is kind of the whole point of a decentralized, trustless, electronic currency. The rules are stated in the code, and enforced by the code. Any transaction that meets the rules of the Bitcoin code is a valid Bitcoin transaction, by definition.
This is true, but being a valid transaction does not imply a right to be stored by every Bitcoin node forever, be mined by every Bitcoin miner, or be relayed by every p2p node.
Every node has the right to decide for himself what he wants to relay.
Every miner has the right to decide for himself what he wants to mine.
It is also impossible to mine every possible transaction: doing so means inherently unbounded storage requirements by every Bitcoin user.
This is why human miners are charged with the responsibility of filtering out spam.
All Bitcoin users storing the blockchain have agreed to store the financial data necessary for the Bitcoin consensus network.
This agreement was implied by the fact of Bitcoin's design being inherently for such a purpose. Similar implicit agreements are held to be legally and morally binding in other contexts (for example, GPL software that has always linked to GPL-incompatible libraries from the start, is implicitly considered to have an exception in its license terms for those specific libraries).
On the contrary, only
some Bitcoin users have agreed to store data unnecessary for the financial functioning of the Bitcoin consensus network.
Those who willfully mine or attempt to have mined such data, are forcing it on every node against (in many cases) their consent.
On the other hand, I do see the validity to the argument that each "miner" has the right to mine only the transactions that he sees fit. However, I do not think that "pool operator" necessarily equates to "miner" and I would be interested to see a poll or something among Eligius miners asking whether or not they support including XCP and MSC transactions in Eligius-mined blocks. Not to do so is leaving money on the table, and miners are notoriously ROI-minded. AFAIK Counterparty is pretty generous with the fees, given the transaction sizes. (Annoyingly so, as an XCP user.) (And I am aware of Eligius' support of GBT and promotion of its use, which would skirt this issue entirely as well as ensure continued decentralization for Bitcoin. Now if only we could get people to actually use it...)
GBT is definitely the road forward for this, in my opinion. Even if the pool had some way of selecting which policy to use (for example, picking a policy by name with your miner "password"), there is nothing to stop the pool from lying if it is compromised. We need end miners to do their job and provide the transaction selection themselves, or at least independently from the pool itself (for example, "transaction policy servers").
"Basically anything that isn't a pubkey shouldn't be scripted as a pubkey, anything that isn't a hash shouldn't be scripted as a hash, and anything that isn't financial data (not sure if this exists, but it was implied in this conversation earlier that it did) shouldn't appear directly in the blockchain."
How can you tell whether something is or isn't a pubkey? How can you tell whether something is or isn't a hash?
Identification of spam in filtering is an independent matter from whether it is spam.
There are proposals for identification of valid hashes at least (look up P2SH
2), but hopefully we won't have to use them...
And the Counterparty developers would certainly prefer for *everything* (except for valid escrow/m-of-n situations) to take place in OP_RETURN instead of being encoded in pubkeys or anywhere else.
Unfortunately, that did not seem to be the case in my experience. They were more worried about forcing the transactions on miners by hiding them. If there's been a change of heart since then, great. If Eligius isn't mining these properly-formed transactions, they should get in touch.
As for moving to a merged-mined separate chain, the number of XCP tokens never increases. It is impossible to create them; they are fixed in number, and to change this would basically destroy Counterparty. Counterparty transaction fees are paid in BTC (except for asset issuance, which requires XCP to be burned forever). Counterparty users must periodically buy BTC if they make a lot of Counterparty transactions. There could therefore be no reward for miners in a Counterparty-only blockchain.
This is solved by Bitcoin daughter-chain support - you would be able to pay Bitcoin transaction fees on a conceptual Counterparty blockchain and miners could collect on them.
Lastly, I have to close with this. As a supporter of Bitcoin, wouldn't you rather have this functionality (decentralized exchange; like a stock market for crypto-currencies and crypto-assets) exist on the Bitcoin blockchain and be a part of the Bitcoin ecosystem instead of having all of this functionality take place in NXT, BTSX, Ethereum, Ripple, etc. and leave Bitcoin in the dust as a simple/stupid currency-only? Does the idea of this not excite you? Think about displacing ALL of the corrupt stock exchanges in the world, with something provably fair and honest and decentralized! This is what is going to happen, and what Counterparty and Mastercoin are trying to make happen on the Bitcoin blockchain, with Bitcoin as the common price denominator. Wouldn't you rather be able to buy a share of Overstock directly with BTC instead of NXT, and to have that transaction immortalized in the Bitcoin blockchain instead of the NXT blockchain? Wouldn't you like to see on the ticker "Shares of Overstock are trading at .05 BTC today" instead of USD, NXT, or some other currency? Woudn't that strengthen and accelerate the growth and acceptance of Bitcoin to an incredible degree? It's coming. One way or another, it's coming. Overstock is already in discussions with multiple crypto-asset projects, including Counterparty. As a Bitcoin supporter, would you rather this future be "Built on Bitcoin" or built on something else?
Stocks are inherently centralised, and cannot gain any direct benefit from being traded on a blockchain.
The stocks have value only because of recognition by the company (to pay dividends) or government (to enforce payment of dividends)
Therefore, the logical place to track the stocks is a centralised registry operated by the company, government, or someone they outsource it to.
Remember that centralisation is more efficient than decentralisation, so with the benefits of decentralisation eliminated, it doesn't make sense to incur the costs of decentralisation anymore.
Honestly it amazes me to hear you suggest that any project should be "on their own blockchain". What, and derail the work and the value that has been put into Bitcoin? To someday possibly eclipse Bitcoin? Of course as a Bitcoin developer, you can't go crazy and implement every weird idea that's come up in every altcoin out there (not that there are that many good ideas in the altcoin world). Can't rock the boat too much, and you don't want to put anything untested into production. Stability is definitely the core concern at this point. But adding new features and value to Bitcoin should also be a priority, and if third-parties are able to do this discretely and "on top of" Bitcoin without disturbing Bitcoin-per-se in any significant way, I think they should be encouraged.
I'm all for experimentation in general, which is why I don't buy into the "X should leave simply on the basis of it being not Bitcoin-unit denominated".
Daughter-chains should definitely help the situation by making any innovation possible within the Bitcoin framework.
Basically instead of a single blockchain, Bitcoin would now be comprised of any number of multiple blockchains, each with their own possibly-different set of rules.
So, when you want to try a new feature by Joe Random Developer, you just sent however many bitcoins you want to his blockchain.
If you decide you want to go back, you just send whatever you have left there back to the main blockchain (assuming his blockchain didn't allow you to get robbed of them, of course).
In the Counterparty example, you would occasionally fund your wallet on the Counterparty blockchain with bitcoins to spend on fees, and miners would be the ones bringing them back to the main blockchain when they mine your transaction.