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

(feat) Cheqd DID resolver #1300 #1305

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

gmulhearn
Copy link
Contributor

@gmulhearn gmulhearn commented Nov 25, 2024

Closes #1300

Implements a did:cheqd resolver using cheqd's gRPC resolver provided by nodes.

For this approach i decided to check-in cheqd's .proto type files, and also check in the generated rust files for these proto types. These rust files are generated using tonic, a defacto rust lib for handling grpc. I justify the decision to check-in the files in the README, please see there.

Out of Scope (for now)

  • doc version resolution
  • DID resource resolution (including did-doc metadata with the resources metadata)

Other changes

  • added some const context definitions in the did_doc crate, and a utility method to get the required context for a given VM type.
    • longer term, we may consider have some general "normalize" function of DIDDocuments, which scans the doc contents, finds all appropriate JSON-LD contexts, and adds them if they were missing.
  • removed RsaVerificationKey2018 - unused legacy VM type
  • added specific parsing for did:cheqd DIDs

Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
…er than generate at build time)

Signed-off-by: George Mulhearn <[email protected]>
@gmulhearn gmulhearn changed the title Cheqd DID resolver (feat) Cheqd DID resolver Nov 25, 2024
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
Signed-off-by: George Mulhearn <[email protected]>
@gmulhearn gmulhearn changed the title (feat) Cheqd DID resolver (feat) Cheqd DID resolver #1300 Nov 26, 2024

This crate uses gRPC types and clients generated using [tonic](https://github.com/hyperium/tonic). The generated rust code is checked-in to this repository for monitoring, [see here](./src/proto/mod.rs). These generated rust files are checked-in alongside the V2 cheqd proto files & dependencies, [here](./cheqd_proto_gen/proto/), which are sourced from [cheqd's Buf registry](https://buf.build/cheqd/proto/docs).

Since the generated code & proto files are not relatively large nor overwhelming in content, they are checked-in rather than pulled and/or generated at build time. The benefit is that the contents of the files can be monitored with each update, making supply-chain attacks obvious. The drawback is that it introduces some more manual maintainence.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mention protobuf system binary requirement

Signed-off-by: George Mulhearn <[email protected]>
@gmulhearn gmulhearn marked this pull request as ready for review November 27, 2024 00:50
Signed-off-by: George Mulhearn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement Resolver for did:cheqd DidResolvable
2 participants