We're building provable Verifiable Credentials on Ceramic Protocol / DIDs

Demo Video Live Demo Source Code


Eridanos' goal is to demonstrate how Verifiable Claims can be stored as a dedicated ceramic doctype. Using Eridanos a user can generate a unique ceramic 3ID that's (for convenience and privacy) stored in a private 3box space. Using that identity the user can create / issue new verifiable credential documents that follow the ceramic protocol standard and each other identity can verify the issued credential.

How It's Made

For eridanos we had to go the extra mile for identity storage because we couldn't use the DID provided by a 3box IdentityWallet (3id_connect) from a ceramic context (since ceramic obviously uses it's own DID resolver). Hence we brought together both worlds by first signing up the user on 3box, creating a seed once and store that in her private eridanos space on 3box. That seed is used to create the unique ceramic IdentityWallet keeping the 3ID used for all ceramic interactions. We're starting the Ceramic API in the browser. There is no external ceramic node and we're attaching a browser based IPFS node to it (that's also used for the 3box connection). We're also calling for anchoring services (hence our submission of the cross-fetch usage 2 weeks ago) but don't get a valid response. While we first started thinking of simply going with JWTs created by the did-jwt-vc project we implemented credentials in eridanos using JOSE/JWS proofs that are inlined in the credential documents (according to the current w3c spec). Since the IdentityWallet's 3id provider doesn't come with JWS support (it's currently only on the isolated DIDProvider) we had to fork IdentityWallet and add that method to the 3id provider as well: (not PR requested because it's basically Copy/Paste from the DIDProvider next door) The code is Travis CI tested (well, no tests, just builds) on push and automatically built and continuously deployed on fleek. A specific challenge was to clone and build the forked submodules so the build runs also on remote systems using the modified resources. The React frontend uses decentraland components, thereby being built on a semantic ui foundation. The frontend code is structured atomically.


Stefan Adolf Juan Blanco Anmol Agarwala
← click here to see all projects