feat: update keychain::Balance to use bitcoin::Amount#1411
Conversation
0e6d7e5 to
ae54551
Compare
wallet::Balance to use bitcoin::Amountkeychain::Balance to use bitcoin::Amount
736495f to
fe5e313
Compare
5aa1990 to
82b2ae5
Compare
keychain::Balance to use bitcoin::Amountkeychain::Balance to use bitcoin::Amount
|
I think it's ready for a new round of reviews I'll move the previous conversations to resolved after it, and if it's everything looks good on this new review round) |
Can you move it from Draft PR to a full PR? |
82b2ae5 to
06d3d96
Compare
Yes, forgot to do it |
|
|
423aed4 to
df4cdfe
Compare
storopoli
left a comment
There was a problem hiding this comment.
Some suggestions.
Most important, why we are using SignedAmount in some places?
df4cdfe to
362a67a
Compare
It's because net_value used i64 previously, and to keep the standard (and makes sense in my opinion given the fn name) I used the SignedAmount, same for the other comments, they are all net_value references. (replying on the overall comment too) |
362a67a to
c0b0e14
Compare
c0b0e14 to
bd41a0c
Compare
bd41a0c to
df92624
Compare
ValuedMammal
left a comment
There was a problem hiding this comment.
Sorry my reviews have been intermittent. I think this is good.
The commit history could be cleaned up slightly:
-
In df92624 we want to refer to
TxBuilder::add_recipient(not CoinSelectionAlgorithm) -
Some changes in later commits (like fixing imports and wallet examples) could be squashed into earlier ones, but this not a blocker in my opinion.
Some other thoughts: I agree there is potentially more to do like updating calculate_fee and Psbt::fee_amount to use Amount. I'm still unsure how we should handle amounts internally. Honestly I don't mind leaving it as u64. If we decide that all amounts should be strongly typed, then Amount seems like a logical choice, my only concern is we should avoid the possibility of mixing up denominations.
86bbd79 to
234ab88
Compare
- update all fields `immature`, ` trusted_pending`, `unstrusted_pending` and `confirmed` to use the `bitcoin::Amount` instead of `u64` - update all `impl Balance` methods to use `bitcoin::Amount` - update all tests that relies on `keychain::Balance`
234ab88 to
2e6aeb7
Compare
@ValuedMammal No worries, thanks for the comments and suggestions! I tried to address them, please let me know if something remains or if new needed changes appear. |
|
Actually, changing |
- update `wallet.rs` fns: `sent_and_received` fn - update `keychain` `txout_index` fn: `sent_and_received and `net_value`
2e6aeb7 to
22aa534
Compare
I updated I would rather move this commit ac762f4 to another PR, and keep only the previous ones here, wdyt ? |
ac762f4 to
22aa534
Compare
I moved it to the other PR #1426, we can start discussing the changes on that one after this one is merged. |
a03949a feat: use `Amount` on `calculate_fee`, `fee_absolute`, `fee_amount` and others (Leonardo Lima) Pull request description: builds on top of #1411, further improves #823 <!-- You can erase any parts of this template not applicable to your Pull Request. --> ### Description It further updates and adds the usage of `bitcoin::Amount` instead of `u64`. <!-- Describe the purpose of this PR, what's being adding and/or fixed --> ### Notes to the reviewers Open for comments and discussions. <!-- In this section you can include notes directed to the reviewers, like explaining why some parts of the PR were done in a specific way --> ### Changelog notice - Updated `CreateTxError::FeeTooLow` to use `bitcoin::Amount`. - Updated `Wallet::calculate_fee()`. to use `bitcoin::Amount` - Updated `TxBuilder::fee_absolute()`. to use `bitcoin::Amount`. - Updated `CalculateFeeError::NegativeFee` to use `bitcoin::SignedAmount`. - Updated `TxGraph::calculate_fee()`. to use `bitcoin::Amount`. - Updated `PsbUtils::fee_amount()` to use `bitcoin::Amount`. <!-- Notice the release manager should include in the release tag message changelog --> <!-- See https://keepachangelog.com/en/1.0.0/ for examples --> ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing #### New Features: * [x] I've added tests for the new feature * [x] I've added docs for the new feature ACKs for top commit: storopoli: ACK a03949a Tree-SHA512: abfbf7d48ec004eb448ed0a928e7e64b5f82a2ab51ec278fede4ddbff4eaba16469a7403f78dfeba1aba693b0132a528bc7c4ef072983cbbcc2592993230e40f
fixes #823
Description
It's being used on
Balance, and throughout the code, anu64represents the amount, which relies on the user to infer its sats, not millisats, or any other representation.It updates the usage of
u64onBalance, and other APIs:TxParams::add_recipientKeyChainTxOutIndex::sent_and_received,KeyChainTxOutIndex::net_valueSpkTxOutIndex::sent_and_received,SpkTxOutIndex::net_valueNotes to the reviewers
It updates some of the APIs to expect the
bitcoin::Amount, but it does not update internal usage of u64, such asTxParamsstill expects and usesu64, please see the PR comments for related discussion.Changelog notice
keychain::Balancestruct fields to useAmountinstead ofu64.add_recipientmethod onTxBuilderimplementation to expectbitcoin::Amount.sent_and_received, andnet_valuemethods onKeyChainTxOutIndexto expectbitcoin::Amount.sent_and_received, andnet_valuemethods onSpkTxOutIndexto expectbitcoin::Amount.Checklists
All Submissions:
cargo fmtandcargo clippybefore committingNew Features:
Bugfixes: