can someone explain how this stops someone from generating lots of PoS blocks 20 days in the future from a bunch of TX's with small interval, whether through one or multiple wallets
ss << nStakeModifier;
ss << nTimeBlockFrom << nTxPrevOffset << txPrev.nTime << prevout.n << nTimeTx;
hashProofOfStake = Hash(ss.begin(), ss.end());
if(CBigNum(hashProofOfStake) > bnCoinDayWeight * bnTargetPerCoinDay)
return false;
im not well enough versed with the code to know what these variable names imply
I am not sure I totally understand the question but the network will reject blocks with a time stamp more than 2 hours off hence POS blocks generated with future time won't help you now. If you save the found blocks and broadcast the result when time is due, remember that any unspent tx finds a POS block, this tx will not be allowed to find a POS block in 30 days, and the POS reward will be proportional to the coin age of the tx. That means you can't use this method to get more than your reward than the stake you have. All you get is better compounding of POS reward ("interest of interest").