eduffield
Core Developer
Development Update - 5/30/2014
Fork Causes and Solutions
Over the last few days, InternetApe and I have been collecting data to help recreate the problems we experienced with the last hard fork. We reached out to the community and requested that anyone still running a daemon on the wrong fork report back to us. We received a great number of responses, and analysis of these daemons was incredibly useful in our effort to determine the root cause of the issue.
After examining the daemons and their associated blockchains, we've determined that, when approving blocks, in very rare situations the Masternode voting system was looking at the incorrect previous block. The forked clients were receiving an error that could only have been caused by the client comparing the current block to something that wasn't the correct previous block. This error caused the votes to appear manipulated and the client would reject the block.
Later, when receiving the same block again, the client would accept the block. This makes it clear that there wasn't an issue with the block itself, but with the system that checks it.
To solve this problem, we are going to take a multifaceted approach to development:
1.) We are recreating this problem on testnet in order to determine the best fix possible (it's a rare error, so it's taking some time).
2.) We are implementing automatic checkpointing, so that if this does happen again the network will not be able to diverge paths. In the event of a rejected block, the auto-checkpointing system will be able to tell the daemon to retry it later and put the daemon on the correct chain.
Development Schedule
Because we are implementing new technology, it will be necessary to change the schedule a bit:
RC3 (Mid June): This version will include automatic checkpointing, resolution of the forking issue, and fixes for ghost Masternodes (Masternodes which have gone offline but still appear to be online, or which have transferred their 1000DRK out but remain in the election).
RC4 (Mid July): The previous plans for RC3 are being moved to RC4. This will include significant improvements to anonymity and multi ticket support (which allows single daemons to have more than one "ticket" in the election by holding more than 1000DRK).
Programming Team
Last update we asked for anyone interested in helping the program to reach out to us. We've gotten a great number of responses, and we are still organizing and trying to find the best fit for the people that want to help out. Thanks to everyone that wanted to help further the development of Darkcoin.
Fork Causes and Solutions
Over the last few days, InternetApe and I have been collecting data to help recreate the problems we experienced with the last hard fork. We reached out to the community and requested that anyone still running a daemon on the wrong fork report back to us. We received a great number of responses, and analysis of these daemons was incredibly useful in our effort to determine the root cause of the issue.
After examining the daemons and their associated blockchains, we've determined that, when approving blocks, in very rare situations the Masternode voting system was looking at the incorrect previous block. The forked clients were receiving an error that could only have been caused by the client comparing the current block to something that wasn't the correct previous block. This error caused the votes to appear manipulated and the client would reject the block.
Later, when receiving the same block again, the client would accept the block. This makes it clear that there wasn't an issue with the block itself, but with the system that checks it.
To solve this problem, we are going to take a multifaceted approach to development:
1.) We are recreating this problem on testnet in order to determine the best fix possible (it's a rare error, so it's taking some time).
2.) We are implementing automatic checkpointing, so that if this does happen again the network will not be able to diverge paths. In the event of a rejected block, the auto-checkpointing system will be able to tell the daemon to retry it later and put the daemon on the correct chain.
Development Schedule
Because we are implementing new technology, it will be necessary to change the schedule a bit:
RC3 (Mid June): This version will include automatic checkpointing, resolution of the forking issue, and fixes for ghost Masternodes (Masternodes which have gone offline but still appear to be online, or which have transferred their 1000DRK out but remain in the election).
RC4 (Mid July): The previous plans for RC3 are being moved to RC4. This will include significant improvements to anonymity and multi ticket support (which allows single daemons to have more than one "ticket" in the election by holding more than 1000DRK).
Programming Team
Last update we asked for anyone interested in helping the program to reach out to us. We've gotten a great number of responses, and we are still organizing and trying to find the best fit for the people that want to help out. Thanks to everyone that wanted to help further the development of Darkcoin.