14
« on: July 11, 2015, 08:15:33 am »
So I was contemplating the mumble session we had earlier today. I had asked a question regarding SPV (simplified payment verification...akin to that of a light wallet in Bitcoin) and if it was at all possible. The answer I got was that in the traditional sense (that being a trustless sense as SPV confirms based on a handful of block headers), no it is not. You will have to read from a central server website, the idea being that replication will ideally create the web of trust we are seeking here. However, there is something to be said for 'trustless' solutions. So a thought occurred to me. The witness nodes when thought of in the abstract as they are seem to form something of a ring...a ring that could be utilized as a distributed hash table methinks. So here's my proposal for a new operation in the blockchain to enable TRUE SPV.
Why not have a DHT integrated into the witness ring so that a light client could merely tap the DHT network and see the last N block headers (where N is also the number of witnesses). This could be supplemented for speed purposes by a full node broadcasting the block (we have to incentivize people to still run full nodes for the sake of security...why not create a role like witness in training or make it a worker section?) If we could find a way to prove that the "witness in training" delivered a packet of blockchain successfully to the light wallet, you may also have another way to generate economic gains to those simply running a full node. Granted that is going to be hard, but it is definitely something to think about (perhaps some form of a ranking system?)
One of the biggest problems with a DHT is the problem of Sybil attacks...something that the blockchain has effectively solved the problem of. One way we defend against sybil attacks is using the exact IDs that we have recorded in the blockchain as certified IDs. You aren't registered to the blockchain, you won't be delivered any data. Another is to find some way of implementing a proof of work, such that if a node reports that you delivered data that was incorrect (we see a node trying to fork the state), then we look for who delivered that data (not sure how exactly we do that outside of a ranking system) and can either a) impose a fee, b) kick them out of the DHT, or both. Kicking them out seems a bit harsh however, as an attacker could try to create false data and say that a full node did it, unjustly penalizing them....perhaps something involving the signing key? Another way is for a delegate/worker to administer a reverse turing test....think something like a CAPTCHA...only useful to the blockchain. Yet another way would be to simply have them pay to use the light wallet service (something like a small micropayment to access the DHT and make GET requests).
To me, this seems like it has even greater applications when we think of resurrecting DNS, content distribution, and reducing blockchain bloat. What do you guys think? Am I crazy or can this thing work?