7d993ac021d8f4e7dcb2f8500272dd2550cf6d03 gui: bump managed bitcoind version to 26.0 (jp1ac4)
Pull request description:
This is to close#851.
ACKs for top commit:
darosior:
ACK 7d993ac021d8f4e7dcb2f8500272dd2550cf6d03
Tree-SHA512: 1e0c727557d4b3566f505689d1937b7a148240f937e4edc1b9ed12e983b3a1dc56f11e39fc8342b32c1d0580c970462b2bc62d4bdfea8748d63347da9cab0901
36700c47596c396fe9b6cde432bd6c33961aceed Cargo: use the published bdk_coin_select (Antoine Poinsot)
Pull request description:
Draft until https://github.com/bitcoindevkit/coin-select/pull/9 is published on crates.io.
ACKs for top commit:
jp1ac4:
ACK 36700c4759.
Tree-SHA512: 52caf8e79641e6f2bb0a58a75480866d5e99d9a6d9e220cd92b3de1c7f612166ee220c49f49c766271dac67c317c7b50a09763c4451988e2cfff517234833af7
0ab00cd6580ddc1964f4f328a90ab9c5f3f87efa gui: keep conflicting PSBTs as Pending until confirmation (jp1ac4)
5391bfe04ccbe2103460cd195fe4ea3309507118 commands: add `rbfpsbt` command (jp1ac4)
d5f31674045155b6a9be7e08e4beab4c2187b573 commands: add `create_spend_internal` function (jp1ac4)
714fd5e142ffdf95d5ca96cd5a1d6edbc68239bb bitcoin: add `mempool_spenders` to Bitcoin interface (jp1ac4)
68b2503b12cececb1e3259d2d88a34e5191ec232 func tests: move function to utils (jp1ac4)
fdab722effa79c6063e5b40748409ac4048aa1b6 func tests: run black (jp1ac4)
Pull request description:
This PR relates to #43 and #236.
It adds a `rbfpsbt` command that generates a PSBT to replace an existing transaction using RBF. This replacement can either preserve non-change outputs and simply bump fees or remove non-change outputs and effectively cancel the transaction. The inputs and change output may need to be updated in accordance with the higher fee.
I've also added a `getmempoolentry` call to the bitcoin interface that is used for checking information about descendant transactions.
To facilitate development, I've made some temporary changes in the GUI so that replacement PSBTs can be signed and broadcast, but these changes might not be part of this PR in the end.
ACKs for top commit:
darosior:
ACK 0ab00cd6580ddc1964f4f328a90ab9c5f3f87efa
Tree-SHA512: a172ad895fac13be294451f2ffeccb91af521d58a3bc6d08e09688996f9a3e07a3e230091982ef5e92472d44db77b34f93b81d1111d2c570d9c5dd85b7c21f0f
This is a more general version of `create_spend` in that it allows
for a mixure of both mandatory and optional coin selection candidates
and has a `min_fee` parameter.
Another difference is that it takes destination addresses that have
been checked for the network and amounts as `Amount`.
`create_spend` has been updated to call `create_spend_internal`.
3077062c84f598350248e6725e5781b9bc209ce9 gui: installer: clearer placeholder in xpub edit field (Antoine Poinsot)
Pull request description:
I'm not sure what rustfmt is doing here.
Fixes#451.
ACKs for top commit:
pythcoiner:
utACK 3077062c84
edouardparis:
utACK 3077062c84f598350248e6725e5781b9bc209ce9
Tree-SHA512: 79637d3c147c19ff5b7a4758da62089e51990d611e992591b2368f2e3135c06c547804d75c0bf3e5394843e29d582edb71487039a23fdae507cc6c6eae28ec36
As coins deposited by an unconfirmed
transactions can be removed from
the database, GUI should not rely
on them to calculate fees.
The fees must be passed as Option.
If a input coin is missing for a psbt,
we use the witness_utxo amount
and settle the total fee to None
if both are absents.
6bd6218d64495e6b5ac844861434ee8b1564ea02 qa: demonstrate sweep functionality using createpsbt's change_address (Antoine Poinsot)
a77a36cb9eac49d7a936cf24bd02122c085b894e commands: make it possible to create a sweep spend transaction (Antoine Poinsot)
Pull request description:
We add a way to specify what change address to use. This allows the caller to set an external address which has for effect to sweep all the inputs' value to this address, after deduction of the fees and the other (optionally) set destination addresses.
For instance, combined with a self-send (no other destination) and by setting all the wallet's unspent coins, this allows one to sweep all the funds of the wallet to an external address.
ACKs for top commit:
jp1ac4:
ACK 6bd6218d64.
Tree-SHA512: d157bf5782a743297ec243c071b3cf2215f2836710f583a3a1a363bbc4a0504db73297e9be4b583b36377094976cacb4f46d18cee96153e00eec5e94c96ac710
We leverage the change logic for this. By making it possible to set the
change address to an external address, one can send all the value from
the inputs to this address.
6123b87a024c04906338aa68c6afbcf57d57fc0b commands: fix documentation (jp1ac4)
b8fd97fc83a18acb8f1f6b20216fd048955e909d commands: require change for self-send (jp1ac4)
Pull request description:
This adds a new `LowestFeeChangeCondition` metric for use in coin selection. It's the same as `LowestFee` with the option to only find solutions with change.
This option is then used for self-sends to ensure only a solution with change will be returned.
ACKs for top commit:
darosior:
ACK 6123b87a024c04906338aa68c6afbcf57d57fc0b
Tree-SHA512: af12ddce712be31bfdf6bd7eea2fcc651cdbafef32e5b59f7b30dbbc6cf55a13ca5658075942b76947d87c384681f1dbae2d579c8d58298202bf85b9b066a1e0
This adds a new `LowestFeeChangeCondition` metric for use in
coin selection. It's the same as `LowestFee` with the option
to only find solutions with change.
This option is then used for self-sends to ensure only a solution
with change will be returned.
758a4d6578aba487ae6ea06d32ece247525aba8b bitcoin: poller: fix spend expiration from mempool, again (Antoine Poinsot)
Pull request description:
Always mark a spend dropped from mempool as expired if it, or a conflict spending this coin, wasn't mined. The previous logic was confused: it would only do so if a conflict was detected, but it's not the only reason for a tx to be dropped from the mempool.
ACKs for top commit:
jp1ac4:
ACK 758a4d6578.
Tree-SHA512: 84cab482c139dd7170e1139f2718550036195bb6262090af89c1e5eb51c0f3abfd344158b8bf20884a638d77ce342801c66182209e1776b3db9b2700f32deab3
Always mark a spend dropped from mempool as expired if it, or a conflict spending this coin, wasn't mined. The previous logic was confused: it would only do so if a conflict was detected, but it's not the only reason for a tx to be dropped from the mempool.
6b5fc2d1faf94d8290a30bd7007113815c8936ea qa: fix flaky test of unconfirmed spend RBF (Antoine Poinsot)
Pull request description:
Since #617 the spend info for a coin may be wiped from the DB. Be robust to a temporarily `None` spend info in the functional test.
See for instance https://github.com/wizardsardine/liana/runs/18785511349.
ACKs for top commit:
darosior:
ACK 6b5fc2d1faf94d8290a30bd7007113815c8936ea -- trivial and i've run this test a few dozen times concurrently locally to make sure it's unflaked.
Tree-SHA512: 7470a1fd4c16ee7af6ee4c9d9e57271f5f18ac728062cc937a366681534714ec404f2b8e0a58e0d5f51a7461e28dcae6d93f49e5fc0f45297eae9b979e821f86
317ab964f707f049e51bbb4be7ae32975ca3da45 bitcoin: add a comment about the new spend detection logic (Antoine Poinsot)
6daf7ac2603a4a4f588e6106d3c4398228113b97 poller: don't check spending status of expired coins (Antoine Poinsot)
0e5634ce5986d70ab703f639882e35bba6ee571f bitcoin: poller: document where RBF is handled for spends (Antoine Poinsot)
cf7c4fbac96c421c311fd86255cdea26394954e3 bitcoin: drop spend txid for coins whose spending tx gets RBF'd (Antoine Poinsot)
544167dee4c631b324848d9f558ba48504582018 bitcoin: mark coins whose spending tx got double spent as unspent again (Antoine Poinsot)
f78e831c39311cd5d758ea81d6e855a85d13fa5c db: make it possible to mark coins back as unspent (Antoine Poinsot)
c30bc8cd18ac77f64179a8794a26770c68eb4916 bitcoin: optimize spend conflict confirmation lookup (Antoine Poinsot)
bc25addf342d5f570eb20f97b0413bb7109f0be9 bitcoin: don't assign incorrect spend_txid on conflict tx confirmation (Antoine Poinsot)
20ab30924fbdf62bb3886b2da75fe8c57555d2b6 qa: add a test describing current poller behaviour wrt replacements (Antoine Poinsot)
Pull request description:
We start by illustrating the current logic of the poller with regard to replacements in a functional test. This exposes a bug: we could incorrectly assign a transaction which conflicts with a spend transaction for one of our coin as spending this coin whereas it in fact didn't.
After fixing this bug, we proceed to make it possible to wipe the spending status back to unspent. First when a conflict is mined, then also when it's only accepted into our mempool. This matches how we treat replacements for deposit transactions.
ACKs for top commit:
jp1ac4:
ACK 317ab964f7.
Tree-SHA512: bfad864cf03947e5d42894de12ae281a8cff10964d299df5b6b74310efbe6bbefb347349b2d421f1fb3e9470fa929fd7c2c221c9f161dd602757f75b66355ea0
9e2407eb8a75bc59c16659bf4aa80f8adef0e3d2 gui: auto-select coins for spend (jp1ac4)
Pull request description:
This adds automated coin selection from #560 to the GUI.
The new "Auto-select" button uses automated coin selection to select coins for a spend, which the user can then modify as required.
The button can only be clicked once the recipients and feerate have been validated, and it does not appear when creating a self-send.
I haven't added any validation on the amount before making the button clickable, but it may be hard to anticipate all coin selection errors once fees are taken into consideration.
ACKs for top commit:
darosior:
light ACK 9e2407eb8a75bc59c16659bf4aa80f8adef0e3d2
Tree-SHA512: 6ce3389d849470b3beb6ac8df75d2c3b7b6c04ee881dd0e9116c4d87f54376a8ed6666cbfd0ff0152a3eb839c8f7f17a175fe078ef030f03451430b84ab40cb6
33384c89b5cdaec9d4a477644609ff0d1508cf9f Add derivation_index to GetAddressResult (edouardparis)
Pull request description:
My bad, i pushed my fixes in a rush in #815 and wrecked the PR.
ACKs for top commit:
darosior:
ACK 33384c89b5cdaec9d4a477644609ff0d1508cf9f
Tree-SHA512: 5f18506a84ff10fbe13757c2522b11a7ec005243f8698425f1d761d4b36378c256150d3d8337fefc1938232990004bbd629878b42b032b1dd0349d593a39386d
The derivation index is required for
for client to derive and verify the address
on hardware wallets.
Co-Authored-By: Antoine Poinsot <darosior@protonmail.com>
2e2afc1d7bf85dec7319b78e5a2634558952bc25 doc: document deriv index in getnewaddress result (Antoine Poinsot)
Pull request description:
The derivation index is required for
for client to derive and verify the address
on hardware wallets.
ACKs for top commit:
darosior:
ACK 2e2afc1d7bf85dec7319b78e5a2634558952bc25
Tree-SHA512: dd6280662244ff307a8eceb76a48d7b0ed651cc6e512708029afd6dda4bde0b0d0f8a63d30b9a7710d819f03e2d4bad250e3e24abab23578b5b684665a429c52