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. 😁
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.
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.
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).
Claims can be retrieved by their index, using hypercerts-core.getClaimsByIndex(id)
, which will return all the claims in with that index.
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.
⚡️ Instructions with Docker comming soon (will turn steps 2 and 3 into a breeze)
- Install the hypercerts-core library
> npm install hypercerts-core --save
- 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
-
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)
-
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}
})
})
-
hypercertsCore.init
-
hypercertsCore.issue
-
hypercertsCore.getClaimsByIndex
-
hypercertsCore.getClaimsCountsByIndex
-
hypercertsCore.getUserId
-
Returns the Ethereum address of the active account.
Returns string Ethereum address
-