-
Notifications
You must be signed in to change notification settings - Fork 332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(wallet): add TxBuilder::replace_tx
#1799
base: master
Are you sure you want to change the base?
Conversation
// add previous fee | ||
if let Ok(absolute) = self.wallet.calculate_fee(&tx) { | ||
let rate = absolute / tx.weight(); | ||
let previous_fee = PreviousFee { absolute, rate }; | ||
self.params.bumping_fee = Some(previous_fee); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we still allow replacement if we can't determine the previous tx's fee/feerate?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ConceptACK, ApproachACK.
Just need to make sure we don't use descendant outputs from tx we are trying to replace.
It's out of the scope of this PR, the inability to set both feerate/fee amount constraints together really bothers me. We should probably switch to the bdk_coin_select
crate soon.
/// - If none of the inputs are owned by this wallet | ||
/// | ||
/// [`finish`]: TxBuilder::finish | ||
pub fn replace_tx(&mut self, txid: Txid) -> Result<&mut Self, ReplaceTxError> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should probably warn that we don't help keep the original tx's recipient.
1e9caf4
to
3acc39b
Compare
3acc39b
to
f753f5e
Compare
I made a few small changes including a test for unspendable descendants. I'm still open to discussing the right UX for |
- Add method `TxBuilder::previous_fee` for getting the previous fee / feerate of the replaced tx.
f753f5e
to
f4c6960
Compare
Since still some open ux design questions I removed this from the 1.1 milestone. |
This PR adds a new method
TxBuilder::replace_tx
that offers a simple way of creating replacements without relying on the mechanics ofbuild_fee_bump
. See #1374 for context and motivating discussion.In summary, there are a few limitations with the current
build_fee_bump
:In contrast
replace_tx
is useful when we only need to create a conflict and flexible enough to further tweak the parameters as desired.Notes to the reviewers
TxBuilder::add_utxos
is modified to look for potentially spent outputs, provided that the builder is in a bump-fee context.Changelog notice
TxBuilder::replace_tx
TxBuilder::previous_fee
Checklists
All Submissions:
cargo fmt
andcargo clippy
before committingNew Features: