public ulong Mine(BitcoinHeader block)
        {
            block.PoWNonce = 0;
            var hash_block = HashNumber(block);
            var target     = block.PoWTarget;

            while (hash_block > target)
            {
                block.PoWNonce++;
                hash_block = HashNumber(block);
            }

            return(hash_block);
        }
        public static string Hash(BitcoinHeader block)
        {
            var block_str = JsonConvert.SerializeObject(block);

            return(Blockchain.sha256_hash(block_str));
        }
        /// <summary>
        /// </summary>
        /// <param name="block"></param>
        /// <returns>64 char string as byte array = 67 digits number</returns>
        public static ulong HashNumber(BitcoinHeader block)
        {
            var hash = Hash(block);

            return(HashNumber(hash));
        }