I'd like to suggest a different block reward system: Instead of reward every x block, reward every block, but devide the reward (1) by the diff. If the diff is less than 3, 3 is taken.
Examples:Diff = 1
1/3 = 0.333333333
Block Reward: 0.333333333
Diff = 10
1/10 = 0.1
Block Reward: 0.100000000
Diff = 200
1/200 = 0.005
Block Reward: 0.005
This would have some advantages:
- The rewards wouldn't change at all over time.
- Every block pays (rewarding long-time-miners).
- If a multi pool hits the coin, the diff raises within 2 blocks, the multi pool wouldn't be able to mine much coins.
I have decided to do something similar to this:
else if(block > ### ) //Update 1.1.2.3
{
if(diff < 3)
{
nSubsidy = 1 / 3 * COIN; //Every 3rd block makes 1 CGA (just split among 3 blocks)
}
else if(diff > 3)
{
if (remain < 1) //Bonus block
{
nSubsidy = 1 * COIN;
}
else // Normal blocks are 1/diff
{
nSubsidy = 1 / diff * COIN;
}
}
}
With this, CGA will come into existence very close to how it has been since the last update. The difference is that instead of getting a full coin in 1 block, the 1 coin is split up among (what would of been) the 0 blocks. I am not sure if I want to keep the "bonus block", it may encourage MP's to take advantage of CGA. My other options are to "reverse" the "bonus block" and make it a 0 block, or just get rid of it all together.
This isn't my final fix. I will be taking out Kimoto's Gravity Well to reduce the risk of an reorg attack, but I have decided to not switch the alog from scrypt. I feel that it will be too big of a change and will only delay the inevitable.
Please let me know what you think.
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.