distributed-compliance-ledger icon indicating copy to clipboard operation
distributed-compliance-ledger copied to clipboard

State Proofs: Verify proofs in gRPC/REST on platforms and languages supported by Tendermint/Cosmos

Open ashcherbakov opened this issue 3 years ago • 0 comments

Once #185 is implemented, a state proof will be returned by gRPC/REST queries. All clients using REST or gRPC need a way to verify the proofs.

  1. Find out what existing packages/modules provided by Tendermint and cosmos-sdk can be used for verification.
  2. Find out what platforms and languages are supported
  3. Create code samples showing how to use that API in all supported languages
  4. Provide good documentation for clients in DCL

Possibly useful links:

  • Go:
    • https://github.com/tendermint/tendermint/tree/master/light
    • https://github.com/cosmos/cosmos-sdk/blob/master/store/rootmulti/proof.go
  • Rust:
    • https://crates.io/crates/tendermint-light-client
    • https://docs.rs/tendermint-light-client-verifier/latest/tendermint_light_client_verifier/
    • https://github.com/informalsystems/tendermint-rs/tree/master/light-client and https://github.com/informalsystems/tendermint-rs/tree/master/light-client-verifier
  • JS:
    • https://github.com/informalsystems/tendermint-rs/tree/master/light-client-js

Please note, that

  • This doesn't make much sense if no state proof is returned via gRPC/REST, so #185 must be implemented first.
  • We may decide not to support proofs in gRPC/REST(and hence don't work on this task) if we create a client SDK based on Tendermint RPC which has state proofs out of the box (see #187).
  • Only single value queries (that is quering items stored in Store directly) will be supported. For example get-model will have a state proof returned, while get-all-models will not. Multi value proofs support is a separate task: #34.

ashcherbakov avatar Jan 17 '22 12:01 ashcherbakov