This means that if I hijack the upstream connection of a client I can leave out just the transaction where I spent my coins and then pretend I can spend them again.
You'd need to hijack many nodes. There is the problem of cancer nodes and man-in-the-middle attacks, regardless. A PKI system or web of trust could help the problem of bad nodes.
No just YOUR upstream connection, then I can simply tell you that I am IP XYZ and that there are no new updates to my addresses.
You don't need a web of trust or anything like that, just PKC; each client randomly selects a PK and publishes it.
Each client would then have its own list of Pub.Ks or "client addresses". For instance I might add MtGox, my brother and some others.
This doesn't mean I trust these guys it just means I find it near impossible that they would ALL know what the attacker wanted left out AND either have been hacked or colluding with him.
If I cannot connect to them because the attacker cannot fake them without their Pri.Ks I will know my connection has been hijacked.
I don't know why. It would probably be better to validate a certain manageable amount of transactions per block at random offsets (done to try and ensure even spacing of the validation across the transactions).
This would not be possible, you cannot tell if a transaction is valid unless you know ALL movements to/from that address prior to the new move.
A distributed validation system will always require trust in other nodes.
Wrong. My solution does not require trust, hence its awesomeness.
The key would be to try and ensure enough nodes are relied upon to prevent the risk of all the nodes being untrustworthy
A swarm client would query thousands of nodes for updates to the same address.
Only ONE of those thousand would have to be honest and the swarm node would know your addresses true balance.
Actually when thinking about it the vulnerabilities of the swarm client and the normal client are the same:
"Hijack attack"
1. I hijack your connection.
2. I pretend I am your 8 peers.
3. Instead of the real blocks I start to relay blocks I made.
4. Your client will simply think the computing power of the miners dropped or something (and eventually lower its difficulty level).
5. I spend my bitcoins on the real chain.
6. I "buy" something physical from you on the fake chain I am feeding you.
If the official client doesn't have PKC you could execute this attack right now. The swarm client is
just as strong as the normal client.