-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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(grpc): Add ABCIQuery gRPC endpoint and register in BaseApp #11017
feat(grpc): Add ABCIQuery gRPC endpoint and register in BaseApp #11017
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.
Thanks @ChristianBorst! I know it's annoying but we would prefer not to depend on tendermint types here. Can you create unique types in the query.proto file?
Sure thing! |
Exposes the ABCI Query method via gRPC, useful for obtaining proofs of application state without occupying Tendermint JSON-RPC bandwith.
Done @aaronc, I hope this use of tendermint's ProofOps is alright, let me know if not. |
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.
This shouldn't go in types/. We need to find another package. Also where is the implementation?
service Service { | ||
// Query exposes the ABCIApplication Query method on BaseApp | ||
rpc Query(QueryRequest) returns (QueryResponse); | ||
} |
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.
Hey @ChristianBorst, thanks! We already have a Tendermint proxy service in proto/cosmos/base/tendermint/v1beta1/query.proto
. What do you think of putting this there?
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'm fine with that, and it should resolve @aaronc's issue with having the query endpoint somewhere other than the root of types/.
The implementation is the app itself, I wrapped the app with Tendermint's ABCI Application wrapper to make the signature work. This forwards the request to the same source Tendermint uses, completely bypassing Tendermint. |
@ChristianBorst id love to land this in the sdk for relayers as a short term solution. Do you want to push it to the finish line? |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
bumping this pr as it looks like its gone stale |
@ChristianBorst would you like me to take this over? |
This is needed for us to fully move to gRPC on the go relayer. Excited to see this in! |
Ok, I'll have this wrapped up by EOD. |
Description
Related To: #11012
Potentially Closes: #7036
Exposes the ABCI Query method via gRPC, useful for obtaining proofs of application state without occupying Tendermint JSON-RPC bandwith. This is a pressing need with slow Tendermint JSON-RPC endpoints being used (and overloaded) by IBC relayers, but is also useful as a general purpose proven query source, enabling gRPC-based trustless clients.
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...
!
to the type prefix if API or client breaking changeCHANGELOG.md
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...
!
in the type prefix if API or client breaking change