distributed-compliance-ledger
distributed-compliance-ledger copied to clipboard
State Proofs: Verify proofs in gRPC/REST on platforms and languages supported by Tendermint/Cosmos
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.
- Find out what existing packages/modules provided by Tendermint and cosmos-sdk can be used for verification.
- Find out what platforms and languages are supported
- Create code samples showing how to use that API in all supported languages
- 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, whileget-all-models
will not. Multi value proofs support is a separate task: #34.