add weight method to InputWeightPrediction
This method computes the weight an InputWeightPrediction would to a transaction, not including witness flag bytes.
This commit is contained in:
parent
8aa5501827
commit
b5ce219c62
|
@ -1202,7 +1202,7 @@ where
|
||||||
|(count, partial_input_weight, inputs_with_witnesses), prediction| {
|
|(count, partial_input_weight, inputs_with_witnesses), prediction| {
|
||||||
(
|
(
|
||||||
count + 1,
|
count + 1,
|
||||||
partial_input_weight + prediction.script_size * 4 + prediction.witness_size,
|
partial_input_weight + prediction.weight().to_wu() as usize,
|
||||||
inputs_with_witnesses + (prediction.witness_size > 0) as usize,
|
inputs_with_witnesses + (prediction.witness_size > 0) as usize,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
@ -1276,7 +1276,7 @@ pub const fn predict_weight_from_slices(
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
while i < inputs.len() {
|
while i < inputs.len() {
|
||||||
let prediction = inputs[i];
|
let prediction = inputs[i];
|
||||||
partial_input_weight += prediction.script_size * 4 + prediction.witness_size;
|
partial_input_weight += prediction.weight().to_wu() as usize;
|
||||||
inputs_with_witnesses += (prediction.witness_size > 0) as usize;
|
inputs_with_witnesses += (prediction.witness_size > 0) as usize;
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
@ -1440,6 +1440,12 @@ impl InputWeightPrediction {
|
||||||
|
|
||||||
InputWeightPrediction { script_size, witness_size }
|
InputWeightPrediction { script_size, witness_size }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Tallies the total weight added to a transaction by an input with this weight prediction,
|
||||||
|
/// not counting potential witness flag bytes or the witness count varint.
|
||||||
|
pub const fn weight(&self) -> Weight {
|
||||||
|
Weight::from_wu_usize(self.script_size * 4 + self.witness_size)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
Loading…
Reference in New Issue