예제 #1
0
    private FeeStrategy(FeeStrategyType type, int?confirmationTarget, FeeRate?feeRate)
    {
        Type = type;
        if (type == FeeStrategyType.Rate)
        {
            if (confirmationTarget is not null)
            {
                throw new ArgumentException($"{nameof(confirmationTarget)} must be null.");
            }
            feeRate = Guard.NotNull(nameof(feeRate), feeRate);
            if (feeRate < new FeeRate(1m))
            {
                throw new ArgumentOutOfRangeException(nameof(feeRate), feeRate, "Cannot be less than 1 sat/vByte.");
            }
            _rate = feeRate;
        }
        else if (type == FeeStrategyType.Target)
        {
            if (feeRate is not null)
            {
                throw new ArgumentException($"{nameof(feeRate)} must be null.");
            }

            _target = Guard.InRangeAndNotNull(nameof(confirmationTarget), Guard.NotNull(nameof(confirmationTarget), confirmationTarget).Value, Constants.TwentyMinutesConfirmationTarget, Constants.SevenDaysConfirmationTarget);
        }
        else
        {
            throw new NotSupportedException(type.ToString());
        }
    }
예제 #2
0
 private FeeStrategy(FeeStrategyType type, int?confirmationTarget, FeeRate feeRate)
 {
     Type = type;
     if (type == FeeStrategyType.Rate)
     {
         if (confirmationTarget is { })