I wrote about Watchers before, but I wanted to write about it in more detail as an alternative to Consensus.
For the past several weeks, I have really been thinking about the concepts of the SAFE network (which I consider to have just the right architecture, and can’t wait to see it gradually bring about a revolution on the internet in several areas at once). I was interested in figuring out how the concepts work together across existing technologies and SAFE, and how things can seamlessly work between the current Web, domains, Kademlia, close consensus and so on.
So here is the thing about consensus: it can be either done by voting (ie whatever the majority believes is the truth, even “fake news”) or proof (like is done in science and math).
The second one is what I call Watchers. Basically it is a different consensus algorithm than “majority wins”. Each close consensus participant is watching the others like a hawk.
In this conception, every file has a history (it is essentially a cryptographically signed chain of hashes).
Every time some request to take an action on the “head” of the chain comes in, it is sent to all the close participants by the network. Each participant independently validates this request, and makes a decision whether it is valid.
If a participant can prove that another participant honored an invalid request (eg it had an unauthorized signature, or it was not on the head of the chain) it packages the Claim of Violation, stores it and gossips to all the other participants (and possibly elsewhere on the network).
In this conception, the core enforcement of rules comes from the clients and/or routers! It is presumably in the interest of at least the subsequent recipients of the file/safecoin to make sure it is valid. Because if they don’t care or are dishonest, then at some point an honest, self-interested client will reject the safecoin/file and won’t honor the payment in the real world. So by ignoring the Claims of Violation they are only hurting themselves.
The clients can check the claim, since they have the whole history of the file, etc. Some claims are easy to check, eg that a validator signed off on the head of a file history, but then backtracked and forked the history, signing off on another head, too. Other claims require the client checking the entire history of the file.
Claims of Violation can be like a bet. Essentially a close consensus participant is claiming “irreconcilable differences” and desires a “divorce” from the other participant. Then the rest of the participants can decide which “spouse” they will continue to be friends with.
Ultimately however the decision is made by the end-users or routers. More generally, even without Kademlia, they would insist that new publishers appear to join the one they consider “honest”. There is no concept of who is “really right”, but rather honoring what the end-users want and are willing to pay safecoins for.
This means that you can’t penalize the “violator” participant(s) by taking away some bounty. However, they will immediately henceforth be ignored by all honest participants in the network, including end-users, and therefore not earn any MORE safecoins and essentially have to start over from the beginning with a young vault age.
This system works best if queries about “what is the head of the file history” and so on are done completely anonymously, eg through proxies a la Tor, so that participants can’t keep up a sharade by perfectly giving different answers to different requesters. They will therefore be caught much sooner in a lie by honest participants.
I arrived at this by thinking about safecoins and currency. After A paid token T to B, who is the most invested in making sure that everyone knows that T belongs to B? B is! So B periodically does those anonymous checks (“who owns T?” ie “what is the latest state of the file?”) and is ready to complain if the answer is anything but the correct one. But B can also have agents do it, the agents are essentially the other members of the close consensus which watch one another, and know whenever such a query comes in since all queries about T are routed to them.
This is already done in SAFE network via proof of storage. If a vault isn’t storing the latest version of the file, that’s a violation. I am saying that it should instantly be kicked out of the section by any honest vault in that section, but ultimately it is the end-users who are most motivated to figure out the truth and ENFORCE it by asking for another section to be formed, along with the vaults they consider honest, but without the ones they consider dishonest.
If various sets of end-users disagree for some reason on what history is valid, this essentially is equivalent of forking a section. Each set of end-users ends up with a section of vaults that agree with their reasoning.
So I have generalized the situation and that’s what it looks like, Kademlia or not.