# 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