Skip to content

earlyster/dclaims-core

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DClaims - A Verifiable Claims Platform

note: We are in the process of renaming this project from Hypercerts to DClaims. For that reason the previous name, Hypercerts, might still appear in some code and documentation.

Welcome to DClaims! The project is under active development and the information on this page is going to be changing a lot in the next months, be sure to stay up to date. 😁

Overview

DClaims is a verifiable claims platform, built on top of the Dclaims-Core library. DClaims uses IPFS and Ethereum to allow users to create claims that can be verified by anyone. It is completely distributed and serverless. DClaims can be used by any platform. For instance, we built DClaims-News to demonstrate DClaims' potential in dealing with Fake News.

How DClaims Works

DClaims uses the DClaims-Core library to store, retrieve and verify claims. Claims are accessible via their Index. Indexes need not be unique, meaning that the same index can point to several claims. Example: In DClaims-News, the index corresponds to the ID of the News Article, meaning that all Claims about a given article are accesible via the same index.

Store Claims

Claims are objects can be generated by any application. For instance, DClaims-News-Claims data model, but different applications can use their own data models.

Method 1: To issue a Claim, a user can use hypercerts-core.issue(id, claim). This requires the user to be connected to an Ethereum node and have an account with Ether (see Metamask).

Method 2: An alternative that does not require the client to be connected to an Ethereum node is to use a Publisher, an entity that issues claims (see DClaims-publisher).

Get Claims

Claims can be retrieved by their index, using hypercerts-core.getClaimsByIndex(id), which will return all the claims in with that index.

Verifiy Claims

By leveraging the properties of Ethereum and IPFS, DClaims-core ensures the integrity of all claims that are stored. Extra degrees of verification can be added on the application layer. For instance, the data model used by DClaims-News encompasses a digital signature field that can be used to verifiy the authenticity of the claims, by checking the key used to sign the claim corresponds to the one in the Issuer field.

Usage

Instalation

⚡️ Instructions with Docker comming soon (will turn steps 2 and 3 into a breeze)

  1. Install the hypercerts-core library
> npm install hypercerts-core --save
  1. Install, configure and run IPFS
> npm install --save ipfs-api
# Show the ipfs config API port to check it is correct
> ipfs config Addresses.API
/ip4/127.0.0.1/tcp/5001
# Set it if it does not match the above output
> ipfs config Addresses.API /ip4/127.0.0.1/tcp/5001
# Restart the daemon after changing the config

# Run the daemon
> ipfs daemon
  1. Configure an Ethereum node

    In the browser: Try Metamask

    In Node.js: Use Geth to run a node (mainnet or testnet), or Truffle for a local node (only for tests)

  2. Import and initialize hypercerts-core

const hypercertsCore = require('hypercerts-core')

hypercertsCore.init().then(res=>{
    // Do awesome stuff
    hypercertsCore.issue("myClaimIndex",{MyClaimObject}).then(res=>{
    hypercertsCore.getClaimsByIndex("myClaimIndex").then(console.log)
    // print: {MyClaimObject}
    })
})

API

  • hypercertsCore.init

    • Initializes DClaims-Core. It connects to the IPFS node and to Ethereum

    • Parameters

      • type number 1 for starting a testnode with testrpc or 2 for connecting to an existing node

      Returns Object Instance of Ethereum smart-contract

  • hypercertsCore.issue

    • Issues a Claim in DClaims

    • Parameters

      • nkey
      • newClaim object hypercerts-news-claims SingleClaim object
      • claimIndex string The key used to index the Claim

      Returns Array [claimIndex,newClaim]

  • hypercertsCore.getClaimsByIndex

    •   Returns Claims from that index
      
    • Parameters

      • claimIndex string Value used to index the claim

      Returns Array Array of hypercerts-news-claims SingleClaim objects

  • hypercertsCore.getClaimsCountsByIndex

    •   Returns the number of Claims indexed by that claimIndex
      
    • Parameters

      • claimIndex string Value used to index the claim

      Returns number The count

  • hypercertsCore.getUserId

    •   Returns the Ethereum address of the active account.
      

      Returns string Ethereum address

About

hypercerts-core

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%