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
wallet, rpc: document and update sendall
behavior around unconfirmed inputs
#28979
base: master
Are you sure you want to change the base?
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code CoverageFor detailed information about the code coverage, see the test coverage report. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
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.
Concept ACK
The code changes cause this test failure for me locally:
and
|
Concept ACK |
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.
Concept ACK
3a91852
to
8d28da4
Compare
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.
Concept ACK, the ancestor aware funding could use a test
8d28da4
to
5564345
Compare
test/functional/wallet_sendall.py
Outdated
|
||
# higher parent feerate | ||
self.def_wallet.sendtoaddress(address=self.wallet.getnewaddress(), amount=17, fee_rate=20) | ||
assert_greater_than(self.wallet.getbalances()["mine"]["untrusted_pending"], 0) |
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.
The code seems correct to me, but the test seems to have failed on line 408:
https://cirrus-ci.com/task/6362440724643840?logs=ci#L2630
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.
I presume self.def_wallet
is not equal to self.wallet
, so a mempool sync is missing here, to allow for the transaction to "propagate" through the full validation interface queue.
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.
self.def_wallet
is not equal to self.wallet
, but they belong to the same node. I have implemented this suggestion, but given that the wallets are in the same node, will it make a difference?
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.
self.def_wallet
is not equal toself.wallet
, but they belong to the same node. I have implemented this suggestion, but given that the wallets are in the same node, will it make a difference?
Need to call syncwithvalidationinterfacequeue()
to flush the validation queue before checking the wallet balance. The transaction could have not been processed by the validation interface worker thread. This is the one dispatching the tx to the second wallet.
I don’t know why it could be failing here, it doesn’t seem to make sense that it would. Could you try to rebase? |
5564345
to
551707a
Compare
551707a
to
db592e1
Compare
test/functional/wallet_sendall.py
Outdated
|
||
# higher parent feerate | ||
self.def_wallet.sendtoaddress(address=self.wallet.getnewaddress(), amount=17, fee_rate=20) | ||
assert_greater_than(self.wallet.getbalances()["mine"]["untrusted_pending"], 0) |
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.
self.def_wallet
is not equal toself.wallet
, but they belong to the same node. I have implemented this suggestion, but given that the wallets are in the same node, will it make a difference?
Need to call syncwithvalidationinterfacequeue()
to flush the validation queue before checking the wallet balance. The transaction could have not been processed by the validation interface worker thread. This is the one dispatching the tx to the second wallet.
db592e1
to
e73a56f
Compare
e73a56f
to
a7986ff
Compare
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.
Concept ACK. Nice addition (adding more ancestor awareness).
Received a test failure (inline comment provided).
ACK modulo existing comments. |
a7986ff
to
71aae72
Compare
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.
ACK 71aae72
This PR:
sendall
spends unconfirmed changesendall
spends regular unconfirmed inputs when specified by usersendall
by usingcalculateCombinedBumpFee
and adjusting the effective value accordinglysendall