commands: add weights before converting to vbytes
Converting to vbytes first can lead to a larger result and therefore a lower feerate, which could fall below 1 and fail the sanity check.
This commit is contained in:
parent
4f2ff1abc0
commit
176859ed92
@ -202,7 +202,14 @@ fn sanity_check_psbt(
|
||||
}
|
||||
|
||||
// Check the feerate isn't insane.
|
||||
let tx_vb = (tx.vsize() + spent_desc.max_sat_vbytes() * tx.input.len()) as u64;
|
||||
// Add weights together before converting to vbytes to avoid rounding up multiple times
|
||||
// and increasing the result, which could lead to the feerate in sats/vb falling below 1.
|
||||
let tx_wu = tx.weight().to_wu() + (spent_desc.max_sat_weight() * tx.input.len()) as u64;
|
||||
let tx_vb = tx_wu
|
||||
.checked_add(descriptors::WITNESS_FACTOR as u64 - 1)
|
||||
.unwrap()
|
||||
.checked_div(descriptors::WITNESS_FACTOR as u64)
|
||||
.unwrap();
|
||||
let feerate_sats_vb = abs_fee
|
||||
.checked_div(tx_vb)
|
||||
.ok_or(CommandError::InsaneFees(InsaneFeeInfo::InvalidFeerate))?;
|
||||
|
||||
@ -17,7 +17,7 @@ pub use keys::*;
|
||||
pub mod analysis;
|
||||
pub use analysis::*;
|
||||
|
||||
const WITNESS_FACTOR: usize = 4;
|
||||
pub const WITNESS_FACTOR: usize = 4;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum LianaDescError {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user