One of the issues with low hash rate chains is dealing with having to add checkpoints regularly and getting users to upgrade to keep the network secure. Here's a work-in-progress proof of concept of 'dynamic checkpoints':
https://github.com/doublec/i0coin/tree/dynamic_checkpointsThis provides the ability for a trusted entity with a key to send a checkpoint out to nodes. These 'checkpoint' messages are passed to all nodes. Nodes that are operating in 'trust' mode will check the signature on the message and if it is from the trusted entity it will install the checkpoint. No need to upgrade the software.
The patch provides:
- All nodes relay the "checkpoint" messages
- Only nodes with the "-trust" command line argument will check the signature and install the checkpoint
- Nodes can add "-trustkey=foo" arguments where "foo" is an address to override the default key and trust some other entity for checkpoints
- a JSON-RPC command to sign and send checkpoint messages
- Only checkpoints higher than existing checkpoints can be added so no chain rollback can be done.
At least the following should be added:
- a JSON-RPC command to return the latest checkpoint. Nodes like exchanges could use this to know for certain a chain won't rollback past a point. This could be used to feel confident to accept large deposits.
- Flood control to deal with "checkpoint" messages being sent around
Thoughts on this model? it centralizes the aspect of checkpoints but provides the ability for nodes to override. And isn't different to a trusted developer releasing versions with checkpoints. Maybe only have it enabled when the chain hash rate is low?
Note the patch is an experiment and shouldn't be used in production right now.
Dynamic checkpoints
this is a really forward-looking idea and has to be tested on a testnet, because it gives more safety to all user and chains. This possible roll-back of all(?) chains is harmful+unproductive and destroys the trust in it.
i had a little idea in this direction, though i asked myself, why doublec has to do the setup so often manually of these checkpoints for the chain to be safe.
So an attacker could not destroy all the work that has been done right now.
When - captured - pools attack a chain, then only transactions could be stopped and when these attacking - captured - pools loose their hashrate, because the miners don't agree with that attack, then there is not much damage made to the chain and it could go on with it...
just a little time to rest for the chain