Indy Interop-a-thon

Storing Indy DID and Ledger Object References

What is required to uniquely identify objects in the wallet (storage) when working with multiple Indy or non-Indy ledgers? How best to index them for retrieval?


Connections

  • Have an associated DID Document, hopefully with only qualified references.
  • Each side usually has a generated peer DID, but may use a public DID.
  • Each side currently assigns private ID to the connection, used when linking it to related data.
  • Indexed by the DID Document's contained verkeys for association with an incoming packed message.

Schemas

Unqualified ID:
NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0

Qualified ID:
schema:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0

Rich schema ID (proposed):
did:sov:2f9F8ZmxuvDqRiqqY29x6dx9oU4qwFTkPbDpWtwGbdUsrCD

  • DID derived from a hash of the content

When issuing, need to track the completion of the ledger write(s).


Credential Definitions

Unqualified ID: NcYxiDXkpYi6ov5FcYDi1e:3:CL:NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0:tag

Qualified ID: creddef:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:3:CL:schema:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0:tag

Rich schema equivalent? Need to track mapping.

BBS+ credentials - no cred def.

When issuing, need to track associated private keys and potentially revocation state.


Revocation Registry

Unqualified ID:
NcYxiDXkpYi6ov5FcYDi1e:4:NcYxiDXkpYi6ov5FcYDi1e:3:CL:NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0:tag:CL_ACCUM:TAG_1

Qualified ID:
revreg:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:4:creddef:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:3:CL:schema:sov:did:sov:NcYxiDXkpYi6ov5FcYDi1e:2:gvt:1.0:tag:CL_ACCUM:TAG_1

Rich schema equivalent?

Revocation 2.0 - changes will be required

How to identify revocation registry states (deltas)?


Credentials

  • Query with the network as a restriction?
  • Maintain a mapping between IDs for compatibility in proof requests, populating ~network_resolution-type decorator?

Caching

  • Mutability: need awareness of when objects on the ledger are subject to change (like cred defs, revocation registry state).
  • How to handle data that may be published in multiple places, with distinct IDs? Is duplication a concern?

General Questions

  • Automatically map existing ledger objects to DIDs and DID Docs?
  • DID Document type property, and appropriate spec version to adopt?
  • Is additional indexing functionality required or just (id + data + tags)? What about filtering objects by the associated network?
  • Common representation for connections?
Select a repo