Proposal - CentiID - Credentials from Arbitrary Web Data on Ceramic

Grant/Project Name: CentiID

Proposer’s contact info: origo.liberty@gmail.com

Grant Category: Apps

ELI5 Project Summary:
CentiID enables a user to build its digital identity from arbitrary web data. It allows users to bootstrap verifiable credentials from data only they have access to, and leverages Ceramic as a storage solution. The collection of credentials maintained by a user can represent its digital identity and associate a reputation.

Project Description:

This grant aims to develop CentiID, a tool that integrates a data provenance service into the Ceramic ecosystem. With CentiID, a user can query an external API, receive a response from the server and further receive a signed credential, which attests to a specific value in the response obtained from the API. For example, a user may receive a Verifiable Credential, which attest to a donation made via PayPal. In this project, we aim to integrate “Origo”, our service for data provenance, into Ceramic in order to provide users with credentials that enhance their reputation. As such, CentiID is similar to Gitcoin Passport - with the caveat that CentiID is able to issue credentials from private, arbitrary data - without harming confidentiality.

CentiID will adapt gitcoinco/passport-sdk-reader and the gitcoinco/passport-sdk-writer to the new Ceramic data model based on ComposeDB and Ceramic composites. To add support for DID compatible data streams that host W3C verifiable credentials, CentiID optionally consider the integration of the Sphereon/rn-vc-js package. To connect to a local Ceramic network, CentiID will rely on self.id/framework. The end-result of this grant will be a PoC, demonstrating the feasibility of our solution and laying the groundwork for future integrations beyond verifiable credentials.

Relevant links:

Ceramic Ecosystem Value Proposition:

What is the problem statement this proposal hopes to solve for the Ceramic ecosystem?

  • Data in Ceramic has no proof of authenticity. We aim to change that, starting with Verifiable Credentials from arbitrary web data with a verifiable source.

How does your proposal offer a value proposition solving the above problem?

  • Our proposal aims to solve this problem by developing a PoC, connecting Origo, our tool for proving data provenance, to Ceramic.

Why will this solution be a source of growth for the Ceramic ecosystem?

  • CentiID allows verifiable credentials, issued from private data, to be stored on Ceramic and therefore enable a more lively decentralized identity ecosystem.

Funding requested (DAI/USDC): [$16,000]

Milestones:

  • Milestone #1: Ceramic Data Provenance Architecture (3 weeks) - [$5,600]

    • [Design System architecture] - [25 Hours - 80 $/ Hr]
    • [Ceramic write and read flow] - [15 Hours - 80 $/ Hr]
    • [Frontend architecture] - [15 Hours - 80 $/ Hr]
    • [Origo backend architecture] - [15 Hours - 80 $/ Hr]
  • Milestone #2: Develop PoC (5 weeks) - [$10,400]

    • [Local Ceramic deployment & composeDB graphQL objects] - [35 Hours - 80 $/ Hr]
    • [Frontend implementation] - [25 Hours - 80 $/ Hr]
    • [Backend implementation (Origo connection)] - [35 Hours - 80 $/ Hr]
    • [Integrated demo Application] - [35 Hours - 80 $/ Hr]

I accept the 3Box Labs Grants terms and conditions: [Yes]
I understand that I will be required to provide additional KYC information to the 3Box Labs to receive this grant: [Yes]

Hi @Origo, thank you for your proposal! We will be in touch with an update once we have completed our initial review (1-2 weeks).

1 Like

Congratulations @Origo, I’m delighted to inform you that your grant proposal has been accepted! :tada:

We would like to award you a Ceramic Builders Grant.

We will follow up shortly with more details via email.

1 Like

[ Update 01/17 - v0.1 - CentiID Integration Ceramic ]

Overview

  • We finalized the architecture proposal for successful integration of the Origo service into Ceramic.
  • We implemented a preliminary version of the frontend, screenshots can be found in the following.

We thought and discussed a lot in the past two weeks about how to seamlessly integrate credential creation through Origo into an architecture that can be used with Ceramic. On a high-level, the two questions we discussed the most were 1) whether the CentiID client or Origo service should write credentials to Ceramic, similar to Gitcoin Passport, where the user has to authorize the application to write to Ceramic on its behalf, and 2) the differences in integration from an engineering standpoint when moving from TileDocuments to ComposeDB.

Based on this, we came up with the following high level system architecture:

  1. Sign up with PayPal API to generate the access token
  2. User executes an API request with the help of the Origo service through the client application
  3. User obtains a credential based on a ZKP verified by the Origo service
  4. The client application writes the verifiable credential to the Ceramic datastream

The critical parts of the Ceramic side is the creation of a model that complies with the VC standard for re-use in general applications as well as the writer instance that allows the client application to interface with Ceramic to write credentials to ComposeDB. As such, we began by implementing the user interface representing the client application. We will upload our code to the Github repo in the upcoming week. An ongoing effort is the improvement of our service interface that allows the self-sovereign bootstrapping of credentials through the user.

Frontend

In the PoC application, a client will be able to connect to PayPal, querying the PayPal API to read its account balance. Given the response by the PayPal server, the client can provide a ZKP to the Origo service which attests to the statement if the proof is valid with respect to the server request. Currently provided predicates support “Greater Than” and “Lower Than” comparator proofs for floating point numbers, such that a client can obtain a credential that proves that its PayPal balance is greater than a certain threshold. In a next step, we will connect the frontend code to a sample backend which queries the Origo API and passes the instantiated credential down to the frontend. As such, we will finish the frontend and backend PoC codebases, upload them to Github with a sample workflow using the clay-testnet.

Summarizing Milestone Progress:

  • Milestone #1: Ceramic Data Provenance Architecture (3 weeks) - [$5,600]

    • DONE [Design System architecture] - [25 Hours - 80 $/ Hr]
    • DONE [Ceramic write and read flow] - [15 Hours - 80 $/ Hr]
    • DONE [Frontend architecture] - [15 Hours - 80 $/ Hr]
    • ONGOING [Origo backend architecture] - [15 Hours - 80 $/ Hr]
  • Milestone #2: Develop PoC (5 weeks) - [$10,400]

    • [Local Ceramic deployment & composeDB graphQL objects] - [35 Hours - 80 $/ Hr]
    • DONE [Frontend implementation] - [25 Hours - 80 $/ Hr]
    • [Backend implementation (Origo connection)] - [35 Hours - 80 $/ Hr]
    • [Integrated demo Application] - [35 Hours - 80 $/ Hr]

Next Steps and Outlook

In summary, we used the past three weeks to lay the groundwork for the upcoming integration. We will post updates on the following upcoming topics in ~2 weeks:

  • Upload the frontend code to github and share it to ceramic grants
  • Connect the frontend code to a sample backend which queries the Origo API and passes the instantiated credential down to the frontend
  • (tbd) Running a Ceramic node for app development and integration of Credentials into the GraphQL based architecture, rather than relying on TileDocuments
  • (tbd) Adapting the Gitcoin passport-sdk to leverage Ceramic composites rather than Tile Documents. Designing models for verifiable credentials to create credential composites.