What we talked about recently in private was to out-source verification to a subset of nodes, so-called supernodes which have a very potent hardware and which just sign off POW packages and bounties. I thought it might be possible to use such scheme:
- Work may use up to 5 GIG of memory
- Work may take up to 10 seconds to verify
- Verification is only performed by supernodes
- Supernodes deposit an amount of 300,000 XEL and earn x% of all work they confirm
- If a supernode behaves maliciously (when it can be proven that a result was accepted while it's bad) the 300,000 XEL are gone
- Supernodes must be permanently online and have very decent hardware
- If supernodes decide to stop, they have to wait for 1000 blocks without verifying anything to unlock the 300,000 XEL deposit.
- Problem: Malicious billionaire supernodes that do not care about money, and the danger of ending up with no supernodes at all.
This is a change I can make in one weekend, it's just the question if we want it or if we can come up with something better?
I have been brainstorming last night and I think we should also introduce guard nodes.
So we have normal nodes (they just broadcast unverified POW/bounties)
Then we have super nodes who do the verification work and broadcast the verified POW/bounties
And then we have guard nodes who cross verify a certain percentage of the super node signed POW/bounties to detect malicious behavior
This way we do not even need to hard fork when we add new features / other work types later on since the supernode-signature-verification will remain the same!
I have a question/suggestion on this... It might be stupid, might be not.
My question is: why do we require those 300K XEL to be locked on Supernode account?
Can we made it the way any node can become Supernode if it provably has the needed processing resources (this can be checked by node software).
It doesn't need to have any balance, but it can earn XEL for work verification. That way the problem N2 is solved - there always be many powerful nodes who are ready to do the verification work for money, with zero entry barrier.
To resolve the main problem N1 (billionaire thing) and also to be able to not require 300K XEL locked, can the network accept the work only after it is verified by about 5-10 randomly chosen supernodes, and accept it only if all of them have confirmed it? The malicious nodes can be detected and maybe blacklisted that way (automatically, but not permanently). So there are no special guard nodes are needed in such case.
EK, I know this suggestion could be completely off-base, but just it would be interesting to listen what you think