public bool Read(Stream channel, long position, ByteBuffer buffer)
{
buffer.Position = 0;
var originalPos = channel.Position;
channel.Position = position;
var data = new byte[buffer.Length];
var bytesRead = channel.Read(data);
buffer.Clear();
buffer.Write(data);
channel.Position = originalPos;
if (bytesRead < Size)
return false;
buffer.Position = 0;
_height = (uint) buffer.GetInt();
buffer.Get(_chainWork);
buffer.Get(_blockHeader);
return true;
}