кстати, так до сих пор и не разобрался что такое midstate =(
Это промежуточное состояние sha256 после обработки первой половины data (в нем нет поле nonce и его не нужно каждый раз пересчитывать). Т.е. это явно избыточная информация, т.к. майнер может это значение сам посчитать. Можно считать, что это своеобразная контрольная сумма.