# V2 MVP Tech Goals: Outline all the technical deliverables for our MVP Assign ownership to initial streams # Wallets Owner: Tomislav - [Cloud wallet architecture](https://hackmd.io/4bp__DgwRv6_ChPPxIfgBA) (hackmd) # Authorization Owner: Tomislav - ZCaps # Governance https://trustoverip.org # Credential Templates Owner: Michael Boyd Concepts: - JSON-LD contexts - VC-Marketplace - Credential Manifests Using the Trinsic SDK, it is simple to manage flexible credential templates. Let's define an `AlumniCredential` for BYU. Every Provider will either create a new credential type or reuse an existing one. We will host these new credential types for our providers by default. The verifiable credential data model uses Linked Data, so each credential already has a [`context`](https://www.w3.org/TR/vc-data-model/#contexts) object included in the credential. ### Create a credential template A customer can simply create a credential type by passing in the required parameters. So if BYU were the provider, they would create a new credential template as follows. ```javascript var template = trinsic.templates.create({ typeName: "AlumniCredential", attributes: [ { name: "alumniOf", attributeType: trinsic.attributeTypes.TEXT, mapping: "https://schema.org/alumniOf" }, { mapping: "https://schema.org/givenName" }] }); // template has been created, context is now defined console.log(template.uri, '\n', template.context); ``` ```json https://acb.gov/registry/v1#AlumniCredential { "@context": { ... "AlumniCredential": { "@id": "https://byu.trinsic.id/registry/v1#VerifiableCredential", "@context": { ... "credentialSchema": { ... "givenName": "https://schema.org/givenName", "alumniOf": "https://schema.org/alumniOf", } } } } } ``` # Credential Issuance Owner: Michael Boyd - Anchoring public keys to a root of trust - BBS+ JSON-LD Credential creation - Credential Issuance [Example credential issuance with BBS](https://github.com/trinsic-id/ld-proofs-dotnet/blob/c3986eaf96762cc4f793f5a570c5a4dde554bda1/Tests/LinkedDataProofs.Bbs.Tests/BbsBlsSignatureProof2020_Tests.cs#L22) ### List Available Credential Templates ```javascript let templates = trinsic.templates.list(); let template = templates.find("AlumniCredential"); ``` ``` templates = [ "https://acb.gov/registry/v1#AlumniCredential" ] ``` ### Issue a credential ```javascript let credential = issuer.credentials.issue({ templateUri: "https://acb.gov/registry/v1#AlumniCredential", userId: user.phoneNumber, attributes: [{ name: "alumniOf", value: "Brigham Young University" }] }); console.log(credential.toJsonLd()); ``` output: ```json { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://byu.trinsic.id/registry/v1" ], "id": "http://example.edu/credentials/58473", "type": ["VerifiableCredential", "AlumniCredential"], "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "alumniOf": { "id": "did:example:c276e12ec21ebfeb1f712ebc6f1", "name": [{ "value": "Brigham Young University", "lang": "en" }] } }, "proof": { ... } } ``` # Presentation Exchange Owner: # API Architecture & Deployment Owner: - Unit Test ## Versioning https://docs.microsoft.com/en-us/aspnet/core/grpc/versioning?view=aspnetcore-5.0 - gRPC - workflows? # SDK: Architecture & Deployment Owner: ### Nuget Tomislav ### Node ### Rust