I am doing as fast as I can, but sometimes there is a point where you face so many expectations that you start working faster and faster - with a higher likelihood of errors and mistakes.
I have finished the core client, it now has:
- Supernodes, these are the nodes who sign off on works, pow packages and bounties. Anyone with 250000 XEL can become a supernode and help support the network. The 250000 XEL go into a secure deposit, and are given back when the supernode status times out and is not renewed. Unless ...
- Guardnodes, these are watchdogs that occasionally (with a very low probability) run plausibility checks on what supernodes do. If a supernode comfirms work solutions, which can be proven wrong, the supernode loses both its super node status and its deposit. So ... unless a bounty is higher than 250000 XEL, the supernodes have no incentives to behave maliciously. Nobody can become a guardnode unless he is hard coded into the client.
- Supernodes earn 10% of all bounties and POW rewards. I have initially set the reward to 10%, so there is a high incentive to run one of these. The exact value can be negotiated of course.
- Also, redeem transactions have now the exact timestamp of the corresponding BTC transaction in the BTC blockchain.
- All forfeited deposits (be it from malicious supernodes or from bounty haxx0rs - remember, blounty submissions need a deposit one block earlier) go to an account called the "DEPOSIT FORFEIT ACCOUNT". Not sure who should hold it and what happens with those funds ... but for now, it's there. Giving everything to the miners could be one option, but what if a bug causes a deposit to be taken by accident. Let's keep this on the radar.
There were many other little changes, the API is fully functional and has been extended by the features described above, and everything should work fine now. I say "should", I am not saying it is ... so we should do some more testing. But before we can do so, we need to get the supernodes up and running simply because of the very simple rule: no supernodes, no work!
I cannot finish them today though. I have been working 10 hours yesterday and around 11 hours today to get the core client ready. The faster I go the more superficial the coding process will become and the more testing you guys will have to do.
I have added numerous tests which test all kinds of reward, deposit and deposit forfeit scenarios! However, those tests do not test what has not been thought of. We need at least 1-2 days of heavy testing I would say.
... ah, and: everthing is in the Git.