Browse Source

Calculate refund fee dynamically

bdk-0.11
Philipp Hoenisch 3 years ago
committed by Lucas Soriano del Pino
parent
commit
efbe79abc1
No known key found for this signature in database GPG Key ID: EE611E973A1530E7
  1. 23
      cfd_protocol/src/lib.rs

23
cfd_protocol/src/lib.rs

@ -585,17 +585,6 @@ struct RefundTransaction {
}
impl RefundTransaction {
/// Refund transaction fee. It is paid evenly by the maker and the
/// taker.
///
/// Ideally we don't commit to a transaction fee ahead of time and
/// instead resort to fee-bumping. But that would be unfair for the
/// party that executes the fee-bumping.
///
/// TODO: Calculate reasonable fee given the fact that the
/// transaction consists of 1 input and 2 outputs.
const REFUND_TX_FEE: u64 = 10_000;
fn new(
commit_tx: &CommitTransaction,
relative_locktime_in_blocks: u32,
@ -610,25 +599,27 @@ impl RefundTransaction {
..Default::default()
};
let per_party_fee = Self::REFUND_TX_FEE / 2;
let maker_output = TxOut {
value: maker_amount.as_sat() - per_party_fee,
value: maker_amount.as_sat(),
script_pubkey: maker_address.script_pubkey(),
};
let taker_output = TxOut {
value: taker_amount.as_sat() - per_party_fee,
value: taker_amount.as_sat(),
script_pubkey: taker_address.script_pubkey(),
};
let tx = Transaction {
let mut tx = Transaction {
version: 2,
lock_time: 0,
input: vec![commit_input],
output: vec![maker_output, taker_output],
};
let fee = tx.get_size() as u64 * MIN_RELAY_FEE;
tx.output[0].value -= fee;
tx.output[1].value -= fee;
let commit_output_descriptor = commit_tx.descriptor();
let sighash = SigHashCache::new(&tx).signature_hash(

Loading…
Cancel
Save