Completely removing KMG would get rid of nTime which would solve it right?
This would just solve the reorg attack problem, but you can still know what the block is worth before mining (this is a problem all coins have).
Two things: First: Yes, removing the bonus blocks would prevent the multipool problem, but it would also remove one of the main reasons this coin is attractive. If cryptographic anomalies are no longer a real thing, all the mystique behind the coin would disappear. It's a brand new system and, really, not a lot of people know how it works; when something knew comes along, a lot of people want to know how it works, so they either come here or go to the website to find out, and by then, they're already far more involved in CGA than they are with most of the other coins, and because of this, these curious people are significantly more likely to become loyal miners and investors. It's the reason I'm here. If we lost this feature, CGA wouldn't attract nearly as many curious people to it as it would have, we would be losing a great deal of our ability to grow, and I don't think the multipool issue is likely enough to risk this. I think we should still reward 1/diff for non-bonus blocks, but I don't think that it would be wise, especially early on like this, to remove the bonus blocks altogether.
Second: Sorry if this comes off like nitpicking, because I don't know how likely or possible this is, but, looking at the code you posted, if the difficulty is exactly 3, every client on the network is going to run into an exception, which would be disastrous. Just change either "if(diff < 3)" or "else if(diff > 3)" to "if(diff <= 3)" or "else if(diff >= 3)". I only know python (and g-code, if that counts- I used to program CNC machines), so I don't know if C++ just handles this automatically- sorry if it does.
I think you have to keep the bonus blocks, otherwise as awesome person says it becomes just like every other coin. I am worried that this change makes it rather like every other coin anyway ...
Re. The code, I agree for completeness and elegance but isn't diff a FLOAT? So it can never be exactly 3?
You're right awesomeperson, I should (and will) add if(diff <= 3), thanks for the heads up. Yes tertius, it is a float, tho I have seen the diff have only 1 decimal place at times, and so I believe if we were really lucky (unlucky?) it could happen to fall on a whole number.
As for the bonus block, the problem it creates is that a profit switching multipool could (would) wait until a bonus block shows up and jumps in, steals the 1 CGA, then leaves and leaves everyone with a ridiculously high diff. Yes this would possibly make CGA worth more due the scarcity of the coin would increase, but I'm not sure how long it would take for the diff to drop back down with KGW removed, making CGA much less profitable (IMO). Also, the bonus block actually hurts the elusiveness factor (if a multipool doesn't jump in driving the diff up), it puts more CGA into circulation at any given time, thus making us deviate slightly from what was originally planned (CGA coming into being at 1/diff).
As for the new code making it less of an anomaly, I don't think that is true. By definition an anomaly is a
"Deviation or departure from the normal or common order, form, or rule. One that is peculiar, irregular, abnormal, or difficult to classify." I think we have that covered.
Also with the new code, the elusive factor is still at play (even at the same rate, 1/diff) so I'm not worried.