public async Task <TxID> BroadcastTransaction(Transaction tx)
        {
            var txBuilder = network.CreateTransactionBuilder();

            if (txBuilder.Verify(tx))
            {
                throw new InvalidOperationException("Transaction cannot be verified.");
            }
            var hex  = tx.ToHex();
            var data = new RawTX()
            {
                rawtx = hex
            };

            try
            {
                var json    = JsonConvert.SerializeObject(data);
                var content = new StringContent(json, Encoding.UTF8, "application/json");
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var result = await client.PostAsync($"/api/tx/send", content);

                result.EnsureSuccessStatusCode();
                var output = await result.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <TxID>(output));
            }
            catch (Exception)
            {
                throw new InvalidOperationException("Transaction cannot be send through Insight-based API.");
            }
        }
        public async Task <TxID> BroadcastTransaction(string hex)
        {
            var data = new RawTX()
            {
                rawtx = hex
            };
            var json    = JsonConvert.SerializeObject(data);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var result = await httpClient.PostAsync($"/api/tx/send", content);

            result.EnsureSuccessStatusCode();
            var output = await result.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <TxID>(output));
        }