Credentialing System

Introduction

A credentialing system on-chain refers to a system where credentials, such as qualifications, certifications, or achievements, are stored and managed on a blockchain. This allows individuals to securely store their credentials on a decentralized and transparent platform, ensuring the authenticity and integrity of the information.

Within Human Protocol, the Credentialing System enables Job Requesters to design a specific set of criteria they need Workers to meet in order to qualify to take on a Job. For Workers obtaining Credentials increases the number and range of Jobs they can participate in and thus increase their potential for earnings.

Benefits

  1. Security: the data stored on the blockchain is resistant to tampering or unauthorized alterations, ensuring the highest level of security for individual credentials.

  2. Transparency: the decentralized nature of blockchain technology enables interested parties to easily validate credentials. This transparency is crucial in various fields where accurate and trustworthy credential validation is essential.

  3. Higher Job Results Quality: Eligible Workers can be tailored to a Job’s requirements.

  4. Increased earning potential for Workers.

Definitions

  • Credential: a digital representation that attests to an individual's qualifications, certifications, or achievements.

  • Credential Certificate: a digital document linking an individual to a specific credential and certifying that the holder has been verified to have the credential specified in the certificate.

  • Credential Validator: a party that verifies that a person has a credential and is eligible to receive a credential certificate.

Actors

  • Human App Users: seek to add their qualifications to gain access to more opportunities and higher-paying jobs

  • Job Requesters: aim to specify a set of qualifications or credentials that Workers must possess to effectively complete a particular job, ensuring higher quality results.

  • Credential Validators: validate that Workers possess the credentials.

Credentials

In the context of this credentialing system, a credential refers to a digital representation that attests to an individual's qualifications, certifications, or achievements. These credentials are securely stored and managed on a blockchain, providing a tamper-resistant and transparent record. The system supports various types of credentials, including:

  • Training Certification: certificates issued upon the completion of specific training programs. These credentials verify that the individual has successfully finished a training course.

  • Skills Verification: documents confirming an individual's skills and expertise in a particular area. This could include proficiency in a language, a specific technology, or any other relevant skill set.

  • KYC (Know Your Customer): documents validating the identity of the user. This could include government-issued identification, address verification, or any other information necessary for identity verification.

Each credential is authenticated and signed by the Reputation Oracle, ensuring its authenticity and allowing interested parties to easily verify the information on the blockchain.

Workflow

Credentials Information on Human App

On the Human App users can access a list of available credentials they can get.

By clicking on a specific credential, they are redirected to the credentials validation provider's platform for more details.

Training Completion Notification

Once a user completes a training, the credentials validation provider notifies the Reputation Oracle about the achievement.

Adding Certificates on Chain

From this point forward, users on the Human App can add a certificate issued by the Reputation Oracle to the blockchain using the KVStore. This is how the certificate should look:

"{CREDENTIAL-REFERENCE}-{REPORACLE-ADDRESS}" : "{SIGNED-MESSAGE}"

// Message to sign for {SIGNED-MESSAGE}
{
    "reference": "bbe5b21336ce", //unique reference of the credential
    "worker_address": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
}

Certificate Authentication

The certificate is signed by the Reputation Oracle, ensuring its authenticity. This signature allows interested parties to verify the legitimacy of the credential.

How to Use Credentials

Users can log in to the Human App, where their credentials are seamlessly included in a JSON Web Token (JWT). This way users can use their credentials to access jobs with specific requirements.

Implementation details

Reputation Oracle

Create a new credential

POST /credential

To be called by Credential Validators, it adds a credential type to the list of credentials

Headers

NameValue

Content-Type

application/json

Authorization*

Bearer <token>

Body

NameTypeDescription

reference*

string

Unique reference of the credential. It has to be unique for the requesting entity.

description*

string

Description of the credential

url*

string

Url where the users should go to validate their credentials

starts_at*

datetime

Date from which the credential becomes accessible for validation

expires_at

datetime

Date from which the credential becomes inaccessible for validation

Response

{
    "credential_id": 1
}

Get credentials

GET /credential

Gets the list of credentials.

Headers

NameValue

Content-Type

application/json

Authorization*

Bearer <token>

Query

NameTypeDescription

status

string?

Status of the credential for Credential Validators: ACTIVE: validation can be requested EXPIRED: validation cannot be requested anymore

Status of the credential for Workers: ACTIVE: available to be validated EXPIRED: cannot be validated anymore VALIDATED: validated but credential not added on chain yet ON_CHAIN: validated and added on chain

reference

string?

Unique reference of the credential.

Response for Credential Validators

In case the requester is a Credential Validator user, this endpoint returns the credentials created by the requester.

[
  {
    "id": 1,
    "reference": "bbe5b21336ce",
    "description": "Training description 1",
    "url": "https://credentials-validator.com?credential_id=1"
    "status": "ACTIVE", //ACTIVE, EXPIRED
  },
  {
    "id": 2,
    "reference": "02740c04432f",
    "description": "Training description 2",
    "url": "https://credentials-validator.com?credential_id=2"
    "status": "EXPIRED", //ACTIVE, EXPIRED
  },
]

Response for Workers

In case the requester is a Worker user, this endpoint returns the credentials based on the filters:

  • NULL: all statuses

  • ACTIVE: available to be validated

  • EXPIRED: cannot be validated anymore

  • VALIDATED: validated but credential not added on chain yet

  • ON_CHAIN: validated and added on chain

[
  {
    "id": 1,
    "reference": "bbe5b21336ce",
    "description": "Training description 1",
    "url": "https://credentials-validator.com?credential_id=1"
    "status": "ACTIVE", //ACTIVE, EXPIRED, VALIDATED, ONCHAIN
    "certificate": NULL
  },
  {
    "id": 2,
    "reference": "02740c04432f",
    "description": "Training description 2",
    "url": NULL
    "status": "EXPIRED", //ACTIVE, EXPIRED, VALIDATED, ONCHAIN
    "certificate": NULL
  },
  {
    "id": 3,
    "reference": "5099af673708",
    "description": "Training description 3",
    "url": NULL
    "status": "VALIDATED", //ACTIVE, EXPIRED, VALIDATED, ONCHAIN
    "certificate": "0x18bf4035a9f7ce45bb4d7d7fdf11febf082448bfb9abb995de669fe1ad7564d568309fa98f466a49343668c3489c5b32c2ccb44de812fa3bbc8a492b788987621c"
  },
  {
    "id": 4,
    "reference": "515a39145ecb",
    "description": "Training description 4",
    "url": NULL
    "status": "ON_CHAIN", //ACTIVE, EXPIRED, VALIDATED, ON_CHAIN
    "certificate": "0x18bf4035a9f7ce45bb4d7d7fdf11febf082448bfb9abb995de669fe1ad7564d568309fa98f466a49343668c3489c5b32c2ccb44de812fa3bbc8a492b788987621c"
  }
]

Add a validated credential to a user

POST /credential/validate

Invoked by the Credential Validators upon the successful validation for a specific user.

Headers

NameValue

Content-Type

application/json

Authorization*

Bearer <token>

Body

NameTypeDescription

reference*

string

Unique reference of the credential

worker_address*

string

Address of the user that completed the training

Response

Created

Certificate added on chain

POST /credential/on-chain

Notifies to the Reputation Oracle that a certificate has been added on chain.

Headers

NameValue

Content-Type

application/json

Authorization*

Bearer <token>

Body

NameTypeDescription

credential_id*

int

Id of the credential

Response

OK

Last updated

Logo

© 2023 HPF. HUMAN Protocol® is a registered trademark