public async Task SmartBitExchangeRateProviderTestAsync(string networkString)
        {
            var network      = Network.GetNetwork(networkString);
            var client       = new SmartBitClient(network);
            var rateProvider = new SmartBitExchangeRateProvider(client);
            IEnumerable <ExchangeRate> rates = await rateProvider.GetExchangeRateAsync();

            Assert.Contains("USD", rates.Select(x => x.Ticker));
        }
        public async Task SmartBitTestsAsync(string networkString)
        {
            var network = Network.GetNetwork(networkString);

            using (var client = new SmartBitClient(network))
            {
                var rates = (await client.GetExchangeRatesAsync(CancellationToken.None));

                Assert.Contains("AUD", rates.Select(x => x.Code));
                Assert.Contains("USD", rates.Select(x => x.Code));

                await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None));
            }
        }
Esempio n. 3
0
        private bool _disposedValue = false;         // To detect redundant calls

        protected virtual void Dispose(bool disposing)
        {
            if (!_disposedValue)
            {
                if (disposing)
                {
                    _ctsPhaseCancel?.Dispose();
                    SmartBitClient?.Dispose();
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.

                _disposedValue = true;
            }
        }
Esempio n. 4
0
        public async Task SmartBitTestsAsync(string networkString)
        {
            if (!await TestAsync("https://api.smartbit.com.au/v1/blockchain/stats"))
            {
                return;                 // If website doesn't work, don't bother failing.
            }

            var network = Network.GetNetwork(networkString);

            using (var client = new SmartBitClient(network))
            {
                IEnumerable <SmartBitExchangeRate> rates = rates = await client.GetExchangeRatesAsync(CancellationToken.None);

                Assert.Contains("AUD", rates.Select(x => x.Code));
                Assert.Contains("USD", rates.Select(x => x.Code));

                await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None));
            }
        }
Esempio n. 5
0
        private async Task SetDenominationAsync(CancellationToken cancel)
        {
            if (Global.Config.DenominationAlgorithm == DenominationAlgorithm.FixedUSD)
            {
                try
                {
                    var exchangeRates = await SmartBitClient.GetExchangeRatesAsync(cancel);

                    decimal price           = exchangeRates.Single(x => x.Code == "USD").Rate;
                    decimal denominationUSD = (decimal)Global.Config.DenominationUSD;

                    decimal denominationBTC = 0;
                    var     i = 1;
                    while (denominationBTC == 0 && i <= 8)
                    {
                        denominationBTC = Math.Round(denominationUSD / price, i);
                        i++;
                    }
                    Denomination = new Money(denominationBTC, MoneyUnit.BTC);
                }
                catch
                {
                    // if denomination hasn't been initialized once, fall back to config data
                    if (Denomination == null)
                    {
                        Denomination = Global.Config.DenominationBTC;
                    }
                }
            }
            else if (Global.Config.DenominationAlgorithm == DenominationAlgorithm.FixedBTC)
            {
                Denomination = Global.Config.DenominationBTC;
            }
            else
            {
                throw new NotSupportedException(Global.Config.DenominationAlgorithm.ToString());
            }
        }
Esempio n. 6
0
        public async Task SmartBitTestsAsync(string networkString)
        {
            var network = Network.GetNetwork(networkString);

            using (var client = new SmartBitClient(network))
            {
                IEnumerable <SmartBitExchangeRate> rates = null;
                try
                {
                    rates = await client.GetExchangeRatesAsync(CancellationToken.None);
                }
                catch                 // stupid CI internet conenction sometimes fails
                {
                    await Task.Delay(3000);

                    rates = await client.GetExchangeRatesAsync(CancellationToken.None);
                }

                Assert.Contains("AUD", rates.Select(x => x.Code));
                Assert.Contains("USD", rates.Select(x => x.Code));

                await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None));
            }
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            //Carrying out a Transaction

            var bitcoinPrivateKey = new BitcoinSecret("cNZupUgfs54DmsShwxa1wpomQcszUtuJYFvx9zWPbXrT7KsWtiUd");
            var network           = bitcoinPrivateKey.Network;
            var address           = bitcoinPrivateKey.GetAddress();
            var client            = new QBitNinjaClient(network);
            var balance           = client.GetBalance(address, true).Result;

            var transactionId       = uint256.Parse("3f3278d550ecd4f921d7f6f48f1e4b873e39d4b1b2a5098867d4c4e30ab9b444");
            var transactionResponse = client.GetTransaction(transactionId).Result;


            var chimaTestDestinationAddress = new BitcoinPubKeyAddress("mxgN2AiqHjKfGvo6Y57fAe4Y754rPdKf4P");

            var ugoCoins = new HashSet <ICoin>();

            foreach (var operation in balance.Operations)
            {
                foreach (var coin in operation.ReceivedCoins)
                {
                    if (coin.TxOut.ScriptPubKey.GetDestinationAddress(network) == address)
                    {
                        ugoCoins.Add(coin);
                    }
                }
            }

            var txBuilder = new TransactionBuilder();
            var trans     = txBuilder
                            .AddCoins(ugoCoins)
                            .AddKeys(bitcoinPrivateKey)
                            .Send(chimaTestDestinationAddress.ScriptPubKey.GetDestination(), "0.10")
                            .SendFees("0.01")
                            .SetChange(bitcoinPrivateKey.GetAddress())
                            .BuildTransaction(true);
            bool isSigned = txBuilder.Verify(trans);

            SmartBitClient smartBitClient = new SmartBitClient(network);

            PushTransaction(trans);

            //HttpResponseMessage response =  httpClient.PostAsync(new SmartBit() { hex = ""}).Result;

            BroadcastResponse broadcast = client.Broadcast(trans).Result;

            if (!broadcast.Success)
            {
                Console.WriteLine("ErrorCode: " + broadcast.Error.ErrorCode);
                Console.WriteLine("Error message: " + broadcast.Error.Reason);
            }
            else
            {
                Console.WriteLine("Success, you can now checkout the transaction in any block explorer");
                Console.WriteLine("Hash: " + trans.GetHash());
            }


            Console.ReadKey();
        }
 public SmartBitExchangeRateProvider(SmartBitClient smartBitClient)
 {
     _client = smartBitClient;
 }