Skip to content
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

Define initial ABCI query interface #22

Closed
4 tasks
hdevalence opened this issue Sep 7, 2021 · 3 comments
Closed
4 tasks

Define initial ABCI query interface #22

hdevalence opened this issue Sep 7, 2021 · 3 comments
Labels
A-client Area: Design and implementation for client functionality A-node Area: System design and implementation for node software C-enhancement Category: an enhancement to the codebase E-easy Effort: Easy

Comments

@hdevalence
Copy link
Member

ABCI offers a Query method to request data from the ABCI application. This will be the main point of access to the Penumbra chain state, and will probably be called via the Tendermint /abci_query RPC endpoint.

The ABCI query method takes data as bytes and path as string, but the RPC method takes data and path as string, because the RPC speaks JSON. So if data has binary data, there may be some encoding/decoding involved (?), or maybe the encoded data gets passed through to ABCI.

For the actual protocol, Protobufs seem like a good choice, because they involve an actual specification of the data interchange format.

  • Declare a .proto file with at least one ABCI query
  • Use prost to generate Rust protobuf types (with Serde support)
  • Implement the ABCI query in pd
  • Implement the ABCI query in pcli
@hdevalence hdevalence added A-node Area: System design and implementation for node software A-client Area: Design and implementation for client functionality C-enhancement Category: an enhancement to the codebase E-easy Effort: Easy S-active labels Sep 7, 2021
@hdevalence hdevalence added this to the TN1 milestone Sep 8, 2021
@hdevalence hdevalence removed this from the MVP1 milestone Sep 8, 2021
@redshiftzero redshiftzero self-assigned this Dec 1, 2021
@redshiftzero redshiftzero removed their assignment Dec 1, 2021
@redshiftzero
Copy link
Member

After discussion out of band, this is not quite ready for implementation, so we're moving this to MVP2. The open questions are:

  • Should parts of the wallet gRPC service be instead done via ABCI query? Should the wallet service be replaced entirely?
  • What information should the ABCI query return from the application? Note that there is quite a lot of data that users can get through tendermint-RPC.

@zbuc zbuc self-assigned this Dec 21, 2021
@hdevalence
Copy link
Member Author

This may be easier once we are using the JMT and can answer key/value pairs; it may also connect to the work required to support IBC relayers #465 .

One thing that @jackzampolin mentioned recently is that the Cosmos SDK is moving towards having queries just be gRPC methods, and have a way to map gRPC methods into ABCI queries. This seems like a good direction to go in.

@hdevalence
Copy link
Member Author

Closing as completed — we have a basic version of this as part of @avahowell's IBC work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-client Area: Design and implementation for client functionality A-node Area: System design and implementation for node software C-enhancement Category: an enhancement to the codebase E-easy Effort: Easy
Projects
None yet
Development

No branches or pull requests

3 participants