/// <summary>
        /// Waits for a specific new block and returns useful info about it.
        /// </summary>
        /// <param name="timeout">(int, optional, default=0) Time in milliseconds to wait for a response. 0 indicates no timeout.</param>
        /// <returns>Returns the current block on timeout or exit</returns>
        public static async Task <(Height height, uint256 hash)> WaitForNewBlockAsync(this RPCClient rpc, long timeout = 0)
        {
            var resp = await rpc.SendCommandAsync("waitfornewblock", timeout);

            return(int.Parse(resp.Result["height"].ToString()), uint256.Parse(resp.Result["hash"].ToString()));
        }