One of the main reasons:
Simplified Payment Verification (see the bitcoin whitepaper Section 8 ) becomes not usable. Since the miner will not verify whether a XCP transaction is valid like they do in bitcoin transactions, to check the validity of a XCP transaction, we have to track up to the very beginning (the address sent to burn address). This requires each client to download and keep the whole blockchain.
In Ethereum, they seems to find a way to solve this problem.
Detail can be found in their whitepaper:
http://www.ethereum.org/ethereum.htmlPersonally, I don't think this is something will make Mastercoin/XCP not usable. It just increases the downloading and parsing time.
Would it be possible to have a checkpoint file that is signed by the XCP devs that clients could load instead of the entire blockchain?
For ease of use, this is almost a requirement as few normal people will wait for hours and hours for the initial sync up
It's possible, but it will not be decentralized if there's a checkpoint. People has to trust the one who publish the checkpoint. However, I think it could be very useful to provide some trustworthy services keeping some snapshots, therefore most average users can choose to trust these services and shortcut their parsing and verification. Those trustworthy services cannot cheat others for a long time as long as there're some independent clients choose to verify transactions all by themselves.
Could the network provide feedback on any checkpointed file to make sure it is valid? Presumably there will always be counterpartyd's that parsed the full blockchain, so before any checkpoint file is trusted locally and used, it could make sure it is valid by checking with the overall network.
Assuming it is published on counterparty.co, matches sig, odds are very good it is valid, plus it is only for initial install. So, after quick install, check with network to make sure nobody goofed when uploading the checkpoint file. If it all checks out, then BAM! we saved 17 hours of blockchain sync time without any risk
James
The problem is that even if we use a checkpoint, the size of a checkpoint file for counterparty will be much larger than a checkpoint of BTC. A checkpoint of BTC is just the hash of current block, but a checkpoint of counterparty has to snapshot the balance of each address and the status of each order, bid, broadcast etc.
There is a very elegant solution (theoretically) to this problem. Decentralise the checkpointing. A DAC (Decentralised Autonomous Community/Corporation/Company, for those who aren't familiar with the concept) could ensure that a checkpoint that has been arrived at by consensus is published/broadcast.
For those of you whose eyes glaze over when they see the acronym "DAC", picture this please:
I install my "Counterparty-qt". During installation it asks me "Do you want to run a full node?". I say yes because I personally don't care about "downloading and parsing time". This installs a DAC add-on with my Counterparty-qt.
I run Counterparty-qt. In the background a checkpoint of the system is periodically being updated (presumably by block).
My CP-DAC (CounterParty-DAC) is talking to every other CP-DAC on the network. They reach a consensus of the checkpoint of the system. The DACs then publish both the checkpoint (as a torrent perhaps?) and the checksum for it (for further verification).
Those individuals choosing to run Counterparty-qt without supporting the decentralised check-pointing add-on can just download that checkpoint torrent as their starting point. This would allow them to get up and running almost immediately.
The beautiful thing here is that after the checkpoints for every block so far (and checksums corresponding to them) are published, more people could run the DAC from those points onwards at less expense (bandwidth and processing power) and contribute to the decentralised checkpointing.
Feel free to ask me any questions about this.
So, does the Counterparty Project want to have the first useful DAC as well as the first useful decentralised exchange?
TLDR: A light-weight Counterparty Protocol client is possible by utilising a DAC.