We are excited to announce the first open source launch of Affinidi. Affinidi is a decentralized identity ecosystem that currently powers multiple startups & enterprise pilots around the world. This week, we open sourced our core stack, which we have built in collaboration with the SSI community. Visit our Github & documentation portal to learn more!
What are we open sourcing?
Credential Types & Utilities
The vc-common package implements VC and VP types and utility functions that help with type-safe credential issuance and verification. It is an un-opinionated library because it supports a wider variety of DIDs and VCs as long as they conform to the core data model.
The vc-data package contains schema helpers and building blocks to issue JSON-LD credentials. The vc-data utilities also specify a process through which developers can propose additions or request assistance in schema development. This package currently supports a wide variety of common VC types, in addition to FHIR compliant medical data schemas.
The client sdk packages implement the common logic for account registration & management, credential issuance & verification and more.
The main entry point is a class called CommonNetworkMember. This class can be initialized with specific service endpoints, or if left to its defaults will use Affinidi’s staging environment.
Browser, Expo, and React-Native packages extend the wallet-core-sdk logic with client specific implementations for crypto operations. As a result of crypto operations being platform specific, this package implements the logic to communicate with the encrypted data vault for VC storage.
The main entry point is a class called AffinidiWallet. Similar to CommonNetworkMember, the class can be initialized with specific service endpoints, or can be left to use Affinidi’s staging environment by default.
API gateways are coming soon to get you up and running even quicker!
Common Affinidi Utilities
The common package implements DID, VC, and VP utilities that are used throughout Affinidi libraries and services. This package is considered more opinionated because it supports DID methods and VC proofs that Affinidi actively supports.
The main entry point to this package is a class called Affinidi. In this class you will find utilities for handling JSON-LD, DIDs, VCs, VPs, JWTs, and legacy credential types from early MVPs.
Encrypted Data Vault
Affinidi’s custodial wallet uses the Bloom implementation of Encrypted Data Vaults to store encrypted user credentials.
Affinidi’s Service Structure
How to get started
Check out these workshops & tutorials to start building using Affinidi’s stack.
Credential Schema & Issuance Workshop — https://docs.affinidi.com/issuance/issuance-workshop
Building a React browser app — https://docs.affinidi.com/client-sdks/integrating-with-react-web
Affinidi is ready for collaboration
Over the last year, Affinidi has been working with Bloom to develop common SSI utilities and schemas. As the first external partner, Bloom has been helping Affinidi achieve interoperability & standards compliance. Potential collaborators are welcome to test their capability to interoperate with Affinidi SDKs at the interoperability testing site.
Site Link: https://api.affinidi.com/interop
This is only the beginning! We intend to open source the interoperability test harness soon, and solicit community support to extend the DIDs, VCs, VPs, and credential handling to work with any implementation.
Thank you to the community
Affinidi does not intend to build an entire SSI stack on our own. Over the last year we have pieced together a minimum viable SSI stack from open source contributors throughout the ecosystem, contributing where we needed to fill in the gaps. We would like to take this launch announcement as an opportunity to thank the following contributors on our first release of the Affinidi ecosystem.
Jolocom — DID Method & credential exchange protocol
… and everyone at the Decentralized Identity Foundation
Call for collaboration, partners & feedback
In our first phase of Affinidi’s public launch, we are joining existing working groups, and intend to start new ones to foster community support for our open source libraries. Affinidi has already started to be involved with the following groups.
To get involved with Affinidi, reach out to us via email: email@example.com or twitter: @affinidi