public static ChainedHeader DecodeChainedHeader(byte[] buffer)
{
var offset = 0;
var blockHash = DecodeUInt256(buffer, ref offset);
var blockHeader = DecodeBlockHeader(blockHash, buffer, ref offset);
var height = DecodeInt32(buffer, ref offset);
var totalWork = new BigInteger(buffer.ReadVarBytes(ref offset));
var dateSeen = new DateTimeOffset(DecodeInt64(buffer, ref offset), TimeSpan.Zero);
return new ChainedHeader(blockHeader, height, totalWork, dateSeen);
}