Skip to content

Commit 5a4271e

Browse files
committed
fix comments
1 parent c3ca958 commit 5a4271e

File tree

4 files changed

+138
-103
lines changed

4 files changed

+138
-103
lines changed

common/src/size_estimation/mod.rs

+18-8
Original file line numberDiff line numberDiff line change
@@ -192,27 +192,37 @@ pub fn input_signature_size_from_destination(
192192
}
193193
}
194194

195-
/// Return the encoded size for a SignedTransaction with specified outputs and empty inputs and
196-
/// signatures
197-
pub fn tx_size_with_outputs(outputs: &[TxOutput], num_inputs: usize) -> usize {
195+
/// Return the encoded size for a SignedTransaction also accounting for the compact encoding of the
196+
/// vectors for the specified number of inputs and outputs
197+
pub fn tx_size_with_num_inputs_and_outputs(num_outputs: usize, num_inputs: usize) -> usize {
198198
#[derive(Encode)]
199199
struct CompactSize {
200200
#[codec(compact)]
201201
value: u64,
202202
}
203203

204204
let tx = SignedTransaction::new(
205-
Transaction::new(1, vec![], outputs.into()).expect("should not fail"),
205+
Transaction::new(1, vec![], vec![]).expect("should not fail"),
206206
vec![],
207207
)
208208
.expect("should not fail");
209209
let size = serialization::Encode::encoded_size(&tx);
210210

211-
let compact_size_diff = serialization::Encode::encoded_size(&CompactSize {
212-
value: num_inputs as u64,
213-
}) - serialization::Encode::encoded_size(&CompactSize { value: 0 });
211+
let input_compact_size_diff =
212+
serialization::Encode::encoded_size(&CompactSize {
213+
value: num_inputs as u64,
214+
}) - serialization::Encode::encoded_size(&CompactSize { value: 0 });
214215

215-
size + (compact_size_diff * 2) // 2 for number of inputs and number of input signatures
216+
let output_compact_size_diff =
217+
serialization::Encode::encoded_size(&CompactSize {
218+
value: num_outputs as u64,
219+
}) - serialization::Encode::encoded_size(&CompactSize { value: 0 });
220+
221+
size + output_compact_size_diff + (input_compact_size_diff * 2) // 2 for number of inputs and number of input signatures
222+
}
223+
224+
pub fn outputs_encoded_size(outputs: &[TxOutput]) -> usize {
225+
outputs.iter().map(serialization::Encode::encoded_size).sum()
216226
}
217227

218228
fn get_tx_output_destination(txo: &TxOutput) -> Option<&Destination> {

0 commit comments

Comments
 (0)