Edit: In short, couldn't you simply have a computer take the hashing algorithm, process it offline, save the results of the work, connect to the network, then dump all the results at once?
Blocks are linked. You need the previous block to calculate the nonce (which includes a hash of the previous block). Thats why you cant mine offline for longer than ~10 minutes. After 10 minutes you are essentially forking.
^^ This answers te orignal question.
May I ask what is your goal? Are you trying to save bandwidth? Looking to 'mask' the reporting daemon? Trying to minimize net exposure?
Well, I may have access to 2 T/hash under certain conditions, and hashing offline may be one of those conditions.
If you can't connect the computing power to the internet (or some other method of updating the miners) it is useless for mining.
Remember you need to be solving the
next block. Every 10 minutes "somebody' solves a block. When that happens your data is stale and if you find a block it is useless as you are solving the wrong block. A farm which could only connect to the internet once every minute would be horrible inefficient (stales) but would work. On average you would lose 10% of your hashing power because the data has gone stale and you won't know it until the next update. Still 2TH * 0.9 = 1.8TH effective.
Longer periods of time between updates will quickly make it impossible to work on the same blockchain as everyone else. Your only hope would be to build a longer chain in private and publish it all at once. The problem is that for any extended period of time the odds you will have a longer chain is negligible.
As an example, say you have 25% of network capacity and decide to mine privately for x blocks and then publish them all at once if it is longer than the main chain.
If x = 1 (connect to internet and publish block chain after finding one block) then you have a 25% chance of having longest chain.
If x = 2 (publish after finding two back to back blocks) then you have only a 0.25^2 = 6.25% chance.
If x = 3 0.25^3 = 1.56%
..
If x =6 0.25^6 = 0.02% (1 in 4096 chance). Even 6 blocks is only on average 4 hours for a 2TH subnet.
So connecting to the network once every 6 blocks and checking to see if you are ahead would earn you (6 * 50 ) / 4096 = 0.08 BTC and it would take 4 hours. Note you wouldn't earn 0.08 BTC each time. You would earn 300 BTC 1/4096th of the time and 0 BTC 4095/4096th of the time. On average despite having 2 TH you would only earn about 0.5 BTC per day (roughly the same as a 500 MH rig which is continually updated).
Now hypothetically if you have some constraint that you could RECEIVE data but only TRANSMIT every couple hours you could operate w/ full efficiency. Variance would be astronomical (magnitudes higher than normal solo mining) but you could
1) send any block chain updates to the farm
2) if farm is more than 1 block behind it abandons the chain
4) if farm is ahead by 1 or more blocks and time greater than transmit threshold it transmits.
Since you are winning or losing multiple blocks per batch you are going to face very high variance but your expected return (EV) will be the same.