public BlockHeader Clone()
 {
     return(new BlockHeader
     {
         Version = Version,
         Height = Height,
         Previous = Previous.Clone(),
         Timestamp = Timestamp,
         UtxoRoot = UtxoRoot.Clone(),
         RangeProofRoot = RangeProofRoot.Clone(),
         KernelRoot = KernelRoot.Clone(),
         Nonce = Nonce,
         Pow = Pow.Clone(),
         Difficulty = Difficulty.Clone(),
         TotalDifficulty = TotalDifficulty.Clone()
     });
 }
        public void Write(IWriter writer)
        {
            writer.write_u16(Version);
            writer.write_u64(Height);
            Previous.Write(writer);
            writer.write_i64(Timestamp.ToUnixTime());
            UtxoRoot.Write(writer);
            RangeProofRoot.Write(writer);
            KernelRoot.Write(writer);
            writer.write_u64(Nonce);
            Difficulty.Write(writer);
            TotalDifficulty.Write(writer);

            if (writer.serialization_mode() != SerializationMode.Hash)
            {
                Pow.Write(writer);
            }
        }