Rofo, thanks for the honesty ... better have a dev saying he does not master everything ... those one are usually more open to discussion and improvement ^^
I verified the behavior by computing the difficulty by hand using the algorithm in GetNextWorkRequired (and using the block explorer at
http://noblepool.zapto.org/block_crawler.php as a source of data)
I can reproduced exactly what is happening on the network (i.e. predicting the next difficulty using the time between the last two blocks), so I am now sure it does only use the time between these last two blocks.
When computing next difficulty, the "30" block value is used as a weighting, but the date of those blocks or the first of the 30 is not checked in any way.
Also the 30*60 value is used when verifying blocks (from the database or from the network, not sure yet).
The variations we can observe (by around a factor of 2) in the difficulty are mostly caused by the variance in the hashcash-like algorithm.
For a given difficulty, it takes *in average* 60 seconds to find a block.
Should one be found in 30, the next difficulty will be greater, should it be found in 90, it will be smaller in a proportional way.
I'm pretty sure this instability would persist at a much higher hashrate.
I don't know what would be best ... for example memorycoin now uses "Kimoto's Gravity Well"
https://forum.megacoin.co.nz/index.php?topic=893.msg5742#msg5742 developed for megacoin. But I'm really not sure of the behavior of this algorithm as I did not looked at it in detail yet.
I don't have time today, and it's not really urgent anyway (the instability we experiment is not THAT high with the current parameters), but I will try to take a closer look at this part of noblecoin code this weekend.
As for what the pools say, it probably comes from what it was saying for the coin this pool has been initially developed for, or even from the official post announcing noblecoin ^^