static bool SendToForwardAndUpdateStatus(string address, double balance, BtcAddressForwardModel forwardModel) { var currentForward = forwardModel.GetByBtcFrom(address); if (currentForward == null) { return(false); } if (currentForward.status == BtcAddressForwardEntity.STATUS_SENT) { return(false); } double forwardAmount = balance; if (currentForward.dempingpercent > 0) //вычесть dempingpercent { forwardAmount -= (balance / 100) * currentForward.dempingpercent; } else if (currentForward.GetForwardAmount() > 0) //forwardint и forwardfraction - точное значение, что нужно отослать { forwardAmount = currentForward.GetForwardAmount(); } var sendStatus = App.btc.Send(currentForward.btc_to, (decimal)forwardAmount); if (sendStatus.IndexOf("txid") == -1) { return(false); } forwardModel.UpdateStatus(int.Parse(currentForward.id), BtcAddressForwardEntity.STATUS_SENT); return(true); }
public void Init() { Directory.SetCurrentDirectory("C:\\Projects\\host_exchage_cs\\host_exchage_cs\\bin\\Release"); App.TestInit(); model = new BtcAddressForwardModel(App.db); var now = Now(); from = now + "-from"; to = now + "-to"; dempingpercent = new Random().Next(1, 5); }
static void BalancesChecker() { while (true) { try { App.btc.WalletPassphrase(App.settings.data.btc_wallet_password); long timeFrom = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeSeconds() - (App.settings.data.canceled_min * 60); BtcAddressModel targetModel = new BtcAddressModel(App.db); BtcAddressForwardModel forwardModel = new BtcAddressForwardModel(App.db); List <string> addresses = targetModel.GetEmptyBtcAddresses(timeFrom); foreach (string address in addresses) { double balance = App.btc.GetBalance(address); if (balance <= 0) { continue; } targetModel.UpdateIncomeBalance(address, balance); CheckResponse incomeChecker = new CheckResponse(targetModel.getByHash(address), App.settings); try { if (incomeChecker.status == CheckResponse.PAID) { SendToForwardAndUpdateStatus(address, balance, forwardModel); } } catch (Exception) { } } } catch (Exception ex) { } Thread.Sleep(1000); } }