[policy] Remove the TooManyItemsSelected
error
The `TooManyItemsSelected` error has been removed, since it's not technically an error but potentailly more of an "over-constraint" over a tx: for instance, given a `thresh(3,pk(a),pk(b),older(10),older(20))` descriptor one could create a spending tx with the `[0,1,2]` items that would only be spendable after `10` blocks, or a tx with the `[0,2,3]` items that would be spendable after `20`. In this case specifying more items than the threshold would create a tx with the maximum constraint possible, in this case the `20` blocks. This is not necessarily an error, so we should allow it without failing.
This commit is contained in:
parent
d0ffcdd009
commit
fa2610538f
@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Policy
|
### Policy
|
||||||
#### Changed
|
#### Changed
|
||||||
- Removed unneeded `Result<(), PolicyError>` return type for `Satisfaction::finalize()`
|
- Removed unneeded `Result<(), PolicyError>` return type for `Satisfaction::finalize()`
|
||||||
|
- Removed the `TooManyItemsSelected` policy error (see commit message for more details)
|
||||||
|
|
||||||
## [v0.3.0] - [v0.2.0]
|
## [v0.3.0] - [v0.2.0]
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
//! # Ok::<(), bdk::Error>(())
|
//! # Ok::<(), bdk::Error>(())
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use std::cmp::{max, Ordering};
|
use std::cmp::max;
|
||||||
use std::collections::{BTreeMap, HashSet, VecDeque};
|
use std::collections::{BTreeMap, HashSet, VecDeque};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
@ -510,8 +510,6 @@ impl Condition {
|
|||||||
pub enum PolicyError {
|
pub enum PolicyError {
|
||||||
/// Not enough items are selected to satisfy a [`SatisfiableItem::Thresh`]
|
/// Not enough items are selected to satisfy a [`SatisfiableItem::Thresh`]
|
||||||
NotEnoughItemsSelected(String),
|
NotEnoughItemsSelected(String),
|
||||||
/// Too many items are selected to satisfy a [`SatisfiableItem::Thresh`]
|
|
||||||
TooManyItemsSelected(String),
|
|
||||||
/// Index out of range for an item to satisfy a [`SatisfiableItem::Thresh`]
|
/// Index out of range for an item to satisfy a [`SatisfiableItem::Thresh`]
|
||||||
IndexOutOfRange(usize),
|
IndexOutOfRange(usize),
|
||||||
/// Can not add to an item that is [`Satisfaction::None`] or [`Satisfaction::Complete`]
|
/// Can not add to an item that is [`Satisfaction::None`] or [`Satisfaction::Complete`]
|
||||||
@ -668,14 +666,8 @@ impl Policy {
|
|||||||
// if we have something, make sure we have enough items. note that the user can set
|
// if we have something, make sure we have enough items. note that the user can set
|
||||||
// an empty value for this step in case of n-of-n, because `selected` is set to all
|
// an empty value for this step in case of n-of-n, because `selected` is set to all
|
||||||
// the elements above
|
// the elements above
|
||||||
match selected.len().cmp(threshold) {
|
if selected.len() < *threshold {
|
||||||
Ordering::Less => {
|
return Err(PolicyError::NotEnoughItemsSelected(self.id.clone()));
|
||||||
return Err(PolicyError::NotEnoughItemsSelected(self.id.clone()))
|
|
||||||
}
|
|
||||||
Ordering::Greater => {
|
|
||||||
return Err(PolicyError::TooManyItemsSelected(self.id.clone()))
|
|
||||||
}
|
|
||||||
Ordering::Equal => (),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// check the selected items, see if there are conflicting requirements
|
// check the selected items, see if there are conflicting requirements
|
||||||
|
Loading…
x
Reference in New Issue
Block a user