public void AddCoins(bool feeCoin = false, params ICoin[] coins) { Coins.AddRange(coins); if (feeCoin) { FeeCoins.AddRange(coins); } }
public async Task <T> Build <T>(Func <Task <T> > buildAction) { try { return(await buildAction()); } catch (Exception) { if (FeeCoins.Count > 0) { var queue = _pregeneratedOutputsQueueFactory.CreateFeeQueue(); await queue.EnqueueOutputs(FeeCoins.OfType <Coin>().ToArray()); } throw; } }
public async Task <T> Build <T>(Func <Task <T> > buildAction) { try { return(await buildAction()); } catch (Exception) { if (FeeCoins.Count > 0) { var queue = _pregeneratedOutputsQueueFactory.CreateFeeQueue(); await queue.EnqueueOutputs(FeeCoins.OfType <Coin>().ToArray()); } foreach (var extraAmount in _extraAmounts) { await _extraAmountRepository.Decrease(extraAmount); } throw; } }