Welcome to Hypercerts! 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. 😁
Hypercerts is a verifiable claims platform, built on top of the Hypercers-Core library. Hypercerts uses IPFS and Ethereum to allow users to create claims that can be verified by anyone. It is completely distributed and serverless. Hypercerts can be used by any platform. For instance, we built Hypercerts-News to demonstrate Hypercerts' potential in dealing with Fake News.
Hypercerts uses the Hypercerts-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 Hypercerts-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, Hypercerts-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 Hypercerts-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, Hypercerts-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 Hypercerts-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
-