-
Notifications
You must be signed in to change notification settings - Fork 2.2k
walletrpc: allow conf_target=1 in EstimateFee and FundPsbt #10087
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
walletrpc: allow conf_target=1 in EstimateFee and FundPsbt #10087
Conversation
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.
Summary of Changes
Hello @starius, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request updates the walletrpc.EstimateFee
RPC method to allow a confirmation target of 1, addressing a previous limitation where such requests would fail. The change includes modifying the RPC handler to remove the explicit rejection of conf_target=1
and introduces a new integration test to validate this updated behavior, ensuring the API functions as expected for immediate confirmation targets.
Highlights
- API Behavior Change: The
walletrpc.EstimateFee
RPC method now permits aconf_target
(confirmation target) of 1, which was previously explicitly rejected. This allows users to estimate fees for transactions aiming for confirmation in the very next block. - Improved Error Messaging: The error message returned when
conf_target
is 0 has been updated to reflect that the target must be 'greater than 0', aligning with the new allowance forconf_target=1
. - New Integration Test: A new integration test,
testEstimateFee
, has been added to comprehensively verify the updatedEstimateFee
RPC behavior. It specifically tests for successful fee estimation whenconf_target
is 1 and confirms thatconf_target
of 0 still correctly triggers an error.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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.
Code Review
This pull request correctly allows a confirmation target of 1 in walletrpc.EstimateFee
and adds an integration test to verify the behavior. The changes are straightforward and well-tested. I've added a couple of suggestions: one to improve input validation in EstimateFee
to also handle negative confirmation targets, and another to refactor the new test into a table-driven format for better maintainability and to include a test case for the improved validation.
d1583a7
to
07f0614
Compare
@gemini-code-assist can you check the whole codebase where we use |
@ziggie1984 Thank you for reaching out and for the detailed explanation of your concern regarding My review capabilities are focused on the changes introduced within this specific pull request. Looking at the modifications in this PR:
Regarding your request to "check the whole codebase where we use If you believe there are other instances of |
seems like you still need to do it @starius see for example: lnd/lnrpc/walletrpc/walletkit_server.go Lines 1560 to 1563 in 6f09d96
|
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.
Please make sure the whole codebase is consistent when it comes to the estimatefee calls 🙏🙏
@yyforyongyu: review reminder |
Make sure conf_target=1 is accepted, but conf_target=0 is not.
Modified 'fund_psbt' itest to test this scenario.
07f0614
to
aacb94c
Compare
@ziggie1984 Thanks for pointing to I checked walletkit.proto for other RPCs using conf_target. There are also I haven't found other cases of comparing conf_target with 2 in the codebase. I think it doesn't make sense to change type of |
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.
LGTM 🙏
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.
🧹
Fees: &walletrpc.FundPsbtRequest_SatPerVbyte{ | ||
SatPerVbyte: 50, | ||
Fees: &walletrpc.FundPsbtRequest_TargetConf{ | ||
TargetConf: 1, |
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.
nit: Commit msg says testing this scenario, tho I don't think it's tested here - the branch below was not executed
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 reverted the change in lnrpc/walletrpc/walletkit_server.go
and ran make itest icase='fund_psbt'
. It failed:
=== RUN TestLightningNetworkDaemon/tranche00/67-of-309/btcd/fund_psbt
harness_node.go:395: Starting node (name=Alice) with PID=971348
harness_node.go:395: Starting node (name=Bob) with PID=971361
harness_rpc.go:100:
Error Trace: /home/user/lnd/lntest/rpc/harness_rpc.go:100
/home/user/lnd/lntest/rpc/wallet_kit.go:66
/home/user/lnd/itest/lnd_psbt_test.go:1252
/home/user/lnd/itest/lnd_psbt_test.go:1140
/home/user/lnd/lntest/harness.go:315
/home/user/lnd/itest/lnd_test.go:130
Error: Received unexpected error:
rpc error: code = Unknown desc = confirmation target must be greater than 1
Messages: Alice: failed to call FundPsbt
harness.go:393: finished test: fund_psbt, start height=438, end height=440, mined blocks=2
harness.go:352: test failed, skipped cleanup
Change Description
Previously
walletrpc.EstimateFee
andwalletrpc.FundPsbt
used to fail if conf_target is 1.This was discussed before in #9611
In this PR value 1 is allowed. An itest is added.
Steps to Test
Pull Request Checklist
Testing
Code Style and Documentation
[skip ci]
in the commit message for small changes.📝 Please see our Contribution Guidelines for further guidance.