/// <exception cref="System.IO.IOException"/>
 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;
 }
 public void Dispose()
 {
     if (_channel != null)
     {
         _channel.Dispose();
         _channel = null;
     }
     if (_buf != null)
     {
         _buf.Dispose();
         _buf = null;
     }
 }