public Money CalculateRequiredAmount(params Money[] queuedCoinAmounts) { var tried = new List <Money>(); Money baseMinimum = Denomination + (Denomination.Percentange(CoordinatorFeePercent) * RequiredPeerCount) + (FeePerOutputs * 2); foreach (Money amount in queuedCoinAmounts.OrderByDescending(x => x)) { tried.Add(amount); Money required = baseMinimum + (FeePerInputs * tried.Count); if (required <= tried.Sum() || tried.Count == MaximumInputCountPerPeer) { return(required); } } return(baseMinimum + (FeePerInputs * MaximumInputCountPerPeer)); }
public bool HaveEnoughQueued(params Money[] queuedCoinAmounts) { var tried = new List <Money>(); Money baseMinimum = Denomination + (Denomination.Percentange(CoordinatorFeePercent) * RequiredPeerCount) + (FeePerOutputs * 2); foreach (Money amount in queuedCoinAmounts.OrderByDescending(x => x)) { tried.Add(amount); Money required = baseMinimum + (FeePerInputs * tried.Count); if (required <= tried.Sum()) { return(true); } if (tried.Count == MaximumInputCountPerPeer) { return(false); } } return(false); }