Skip to content

Commit 32342de

Browse files
committed
Move Miniscript max_satisfaction* to main block
Move the two `max_satisfaction*` functions to the main impl block. Refactor only, no logic changes.
1 parent e3c1b7c commit 32342de

File tree

1 file changed

+30
-32
lines changed

1 file changed

+30
-32
lines changed

src/miniscript/mod.rs

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,36 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
172172
}
173173
len
174174
}
175+
176+
/// Maximum number of witness elements used to satisfy the Miniscript
177+
/// fragment, including the witness script itself. Used to estimate
178+
/// the weight of the `VarInt` that specifies this number in a serialized
179+
/// transaction.
180+
///
181+
/// This function may returns Error when the Miniscript is
182+
/// impossible to satisfy
183+
pub fn max_satisfaction_witness_elements(&self) -> Result<usize, Error> {
184+
self.ext
185+
.stack_elem_count_sat
186+
.map(|x| x + 1)
187+
.ok_or(Error::ImpossibleSatisfaction)
188+
}
189+
190+
/// Maximum size, in bytes, of a satisfying witness. For Segwit outputs
191+
/// `one_cost` should be set to 2, since the number `1` requires two
192+
/// bytes to encode. For non-segwit outputs `one_cost` should be set to
193+
/// 1, since `OP_1` is available in scriptSigs.
194+
///
195+
/// In general, it is not recommended to use this function directly, but
196+
/// to instead call the corresponding function on a `Descriptor`, which
197+
/// will handle the segwit/non-segwit technicalities for you.
198+
///
199+
/// All signatures are assumed to be 73 bytes in size, including the
200+
/// length prefix (segwit) or push opcode (pre-segwit) and sighash
201+
/// postfix.
202+
pub fn max_satisfaction_size(&self) -> Result<usize, Error> {
203+
Ctx::max_satisfaction_size(self).ok_or(Error::ImpossibleSatisfaction)
204+
}
175205
}
176206

177207
/// `PartialOrd` of `Miniscript` must depend only on node and not the type information.
@@ -306,38 +336,6 @@ impl<Ctx: ScriptContext> Miniscript<Ctx::Key, Ctx> {
306336
}
307337
}
308338

309-
impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
310-
/// Maximum number of witness elements used to satisfy the Miniscript
311-
/// fragment, including the witness script itself. Used to estimate
312-
/// the weight of the `VarInt` that specifies this number in a serialized
313-
/// transaction.
314-
///
315-
/// This function may returns Error when the Miniscript is
316-
/// impossible to satisfy
317-
pub fn max_satisfaction_witness_elements(&self) -> Result<usize, Error> {
318-
self.ext
319-
.stack_elem_count_sat
320-
.map(|x| x + 1)
321-
.ok_or(Error::ImpossibleSatisfaction)
322-
}
323-
324-
/// Maximum size, in bytes, of a satisfying witness. For Segwit outputs
325-
/// `one_cost` should be set to 2, since the number `1` requires two
326-
/// bytes to encode. For non-segwit outputs `one_cost` should be set to
327-
/// 1, since `OP_1` is available in scriptSigs.
328-
///
329-
/// In general, it is not recommended to use this function directly, but
330-
/// to instead call the corresponding function on a `Descriptor`, which
331-
/// will handle the segwit/non-segwit technicalities for you.
332-
///
333-
/// All signatures are assumed to be 73 bytes in size, including the
334-
/// length prefix (segwit) or push opcode (pre-segwit) and sighash
335-
/// postfix.
336-
pub fn max_satisfaction_size(&self) -> Result<usize, Error> {
337-
Ctx::max_satisfaction_size(self).ok_or(Error::ImpossibleSatisfaction)
338-
}
339-
}
340-
341339
impl<Pk: MiniscriptKey, Ctx: ScriptContext> ForEachKey<Pk> for Miniscript<Pk, Ctx> {
342340
fn for_each_key<'a, F: FnMut(&'a Pk) -> bool>(&'a self, mut pred: F) -> bool {
343341
for ms in self.pre_order_iter() {

0 commit comments

Comments
 (0)