Something is WRONG with CDC. I think there are multiple forks. Because wallet syncs for 5 mins, then it shows "out of sync", then it is 50 blocks behind and so on....No deposits showed on bter . Which one is the official chain??
There are two issues with CDC that I'm going to address in this reply. I'm going to key out some possible solutions in the hope of provoking further discussion.
As mentioned previously, CDC places a lot of (I would say almost extreme) weight on PoS blocks. Around 10 hours ago I saw a massive 286 block correction on the official nodes. Someone generating PoS blocks managed to override/reverse nearly 3 hours worth of blocks minted on the network. Within a few seconds the height dropped from 284909 to 284623, and 14325.14 CDC disappeared from the money supply. That sort of thing is unprecedented AFAIK, and to be honest I didn't think it was even possible to correct that large a number of blocks or time period.
Problem 1: Chain can be influenced by someone holding a large balance who locks (or keeps closed) their wallet, then unlocks it. PoS blocks can be generated very fast by a client, sometimes every few seconds. The huge reversal was started by a client that generated 33 PoS blocks in 4 minutes. In addition, they seem to have started minting PoS at a lower height than the rest of the network, so their fork extended from a lower point in the chain, which is why the network reversal was ultimately so large.
A possible solution is to limit the allowable correction to a maximum number of blocks so such massive reversals are impossible. The limit does need to be chosen carefully, because if it's too small it will cause everyone to continue on their own private fork if there's some issue that causes them to be more than X blocks ahead (their client will refuse to snap back to the main chain)
Problem 2: Miners are sometimes dropping off the main chain, and need to resync. This has happened to me also. I've been struggling to understand why, and the reason hit me 30 mins ago: the client refuses to allow you to mine until you have at least one peer connected, but it doesn't actually care about whether that peer is properly synced. I think what is happening is that the first peer a client is connecting to is on the
old chain, so the client starts allowing PoS and PoW mining, which has the potential to create a private fork once you start minting blocks. It won't happen every time, but there's enough peers sitting on the old chain that it's likely to happen at some point.
example:
1. new chain is at height 100
2. old chain is at height 20
3. your client is at height 75 when you start it
4. your client connects to peer on old chain, client permits mining even though new and old chain will never exchange/agree upon minted blocks
5. if you mint a block before connecting to a peer on the new chain, it will be minted at height 76 instead of height 101; you're now on a private fork
I think that segregating the network to ignore the old chain will fix the second problem, and will actually go some way to fixing the first (remember the client that did the huge reversal started minting PoS at a lower height). I am working on that code change right now.