public void HttpSafeBuilderBuildSpendAllTransactionWorks(ConnectionType propagationConnectionType) { Safe safe = Safe.Recover("cabbage drive wrestle fury goddess click riot mercy shy size error short", "", "foo", Network.TestNet); safe.DeleteWalletFile(); var monitor = new HttpSafeMonitor(safe, 100); while (monitor.InitializationState != State.Ready) { Thread.Sleep(100); } Assert.True(monitor.GetSafeBalanceInfo().Balance > 0); var httpSafeBuilder = new HttpSafeBuilder(monitor.Safe); const string toAddress = "n16Yt8jpDf34nMbdJyZh1iqZkZFtAoLMbW"; const string toPrivateKey = "tprv8fAkYGDbNMNLLSWvmXshBiMQuEuEjt5ZMxiX1CNrV5hQCQLFqmpt3urpzrvgJHCwD7bJYMrSMcy8UPa4P3KnB84u2t4rZL874E79MRon4bU"; var tx1 = httpSafeBuilder.BuildSpendAllTransaction(toAddress); Sender.Send(propagationConnectionType, tx1, tryTimes: 3); Assert.True(monitor.GetSafeBalanceInfo().Balance == 0); var httpBuilder = new HttpBuilder(monitor.Network); var tx2 = httpBuilder.BuildSpendAllTransaction( new List <string> { toPrivateKey }, monitor.Safe.GetAddress(0)); Sender.Send(propagationConnectionType, tx2, tryTimes: 3); Assert.True(monitor.GetSafeBalanceInfo().Balance > 0); }
private static void TemporarilySendTest() { var network = Network.TestNet; #region SetupSafe string walletFilePath; if (network == Network.MainNet) walletFilePath = "MainNetHidden2.wallet"; else walletFilePath = "TestNetHidden2.wallet"; Safe safe; if (File.Exists(walletFilePath)) { safe = Safe.Load("password", walletFilePath); if (safe.Network != network) throw new Exception("Wrong network"); } else { string mnemonic; safe = Safe.Create(out mnemonic, "password", walletFilePath, network); } WriteLine("Safe has been set up"); #endregion #region InitializeHttpSafeMonitor var safeMonitor = new HttpSafeMonitor(safe, addressCount: 100); // Report initialization progress safeMonitor.InitializationStateChanged += delegate(object sender, EventArgs args) { var monitor = (HttpSafeMonitor) sender; WriteLine($"Initialization state: {monitor.InitializationState}"); }; safeMonitor.InitializationProgressPercentChanged += delegate(object sender, EventArgs args) { var monitor = (HttpSafeMonitor) sender; WriteLine($"Initializing: {monitor.InitializationProgressPercent}%"); }; // Let's wait until initialized while (safeMonitor.InitializationState != State.Ready) Thread.Sleep(100); WriteLine("SafeMonitor is ready to work with"); #endregion #region FeedBack var bal = safeMonitor.SafeBalanceInfo; var his = safeMonitor.SafeHistory; WriteLine(); WriteLine($"Balance: {bal.Balance}"); WriteLine($"Confirmed balance: {bal.Confirmed}"); WriteLine($"Unconfirmed balance: {bal.Unconfirmed}"); WriteLine($"TotalReceived: {his.TotalReceived}"); WriteLine($"TotalSpent: {his.TotalSpent}"); WriteLine($"TotalReceived - TotalSpent: {his.TotalReceived - his.TotalSpent}"); WriteLine($"TotalReceived - TotalSpent == Balance: {his.TotalReceived - his.TotalSpent == bal.Balance}"); WriteLine(); WriteLine("RECORDS:"); foreach (var record in his.Records) { WriteLine(); WriteLine($"DateTime: {record.DateTime}"); WriteLine($"Amount: {record.Amount}"); WriteLine($"Confirmed: {record.Confirmed}"); } safeMonitor.BalanceChanged += delegate(object sender, EventArgs args) { var monitor = (HttpSafeMonitor) sender; WriteLine(); WriteLine("Change happened"); WriteLine($"Balance: {monitor.SafeBalanceInfo.Balance}"); WriteLine($"Confirmed balance: {monitor.SafeBalanceInfo.Confirmed}"); WriteLine($"Unconfirmed balance: {monitor.SafeBalanceInfo.Unconfirmed}"); WriteLine($"TotalReceived: {monitor.SafeHistory.TotalReceived}"); WriteLine($"TotalSpent: {monitor.SafeHistory.TotalSpent}"); WriteLine( $"TotalReceived - TotalSpent: {monitor.SafeHistory.TotalReceived - monitor.SafeHistory.TotalSpent}"); WriteLine( $"TotalReceived - TotalSpent == Balance: {monitor.SafeHistory.TotalReceived - monitor.SafeHistory.TotalSpent == monitor.SafeBalanceInfo.Balance}"); WriteLine(); WriteLine("Last record:"); var record = monitor.SafeHistory.Records.First(); WriteLine($"DateTime: {record.DateTime}"); WriteLine($"Amount: {record.Amount}"); WriteLine($"Confirmed: {record.Confirmed}"); }; WriteLine(); WriteLine("Subscribed to changes"); #endregion foreach (var addressBalanceInfo in safeMonitor.SafeBalanceInfo.AddressBalances) { if (addressBalanceInfo.Balance != 0 || addressBalanceInfo.Unconfirmed != 0) { WriteLine($"{addressBalanceInfo.Address} : {addressBalanceInfo.Balance}"); WriteLine($"Confirmed: {addressBalanceInfo.Confirmed} Unconfirmed: {addressBalanceInfo.Unconfirmed}"); } } var spender = new HttpSafeBuilder(safeMonitor.Safe); spender.TransactionBuildStateChanged += delegate(object sender, EventArgs args) { var currentSpender = sender as HttpSafeBuilder; WriteLine(currentSpender.TransactionBuildState); }; WriteLine("Create transaction"); var tx = spender.BuildTransaction( new List<AddressAmountPair> { new AddressAmountPair { Address = "2NBY5BrXhnWESaLqxYvRWUZ8xzDF3aZqX7S", Amount = 0.1m }, new AddressAmountPair { Address = "2N66DDrmjDCMM3yMSYtAQyAqRtasSkFhbmX", Amount = 0.1m } }, FeeType.Fastest, "keep the change you filthy animal" ); WriteLine("Transaction created"); Sender.Send(ConnectionType.RandomNode, tx); WriteLine("Transaction sent"); ReadLine(); }