Well I like oatmo's idea... aim for retargets every hour, with a max time until retarget... quite simple to implement :
Replace l. 878-879 in main.cpp
// Only change once per interval
if ((pindexLast->nHeight+1) % nInterval != 0)
With the following :
// Only change once per interval unless last retarget occurred more than nMaxTimeInterval seconds ago
unsigned int nMaxTimeInterval = 14400;
if ((pindexLast->nHeight+1) % nInterval != 0 && pindexLast->nTime + nMaxTimeInterval > time())
We would also need to adjust l. 836 of main.cpp, currently diff. retargets every two hours :
static const int64 nTargetTimespan = 1 * 2 * 60 * 60;/ Noirbits: 2 hour
static const int64 nTargetSpacing = 120;/ Noirbits: 2 minute blocks
static const int64 nInterval = nTargetTimespan nTargetSpacing;
Would become
static const int64 nTargetTimespan = 3600;/ Noirbits: 1 hour
static const int64 nTargetSpacing = 120;/ Noirbits: 2 minute blocks
static const int64 nInterval = nTargetTimespan nTargetSpacing;
Proposed changes here would give us retarget every hour, and a retarget on next block if no retarget happened for more than 4 hours. What do you think ?