SuperCert is a web application that can used to store academic transcripts issued by University immutably in blockchain in form of CID (CID is generated by storing the transcript in an IPFS prior to storing in blockchain.) The CID generated will be shared with students in form of raw hash (here we have done it using email) or QR Code. Students can share the recieved form of transcript (CID or QR code) with the university (higher education institutes) and they can use the same website to efficiently verify the same. Removes intermediary (here it is university where the student is affiliated with) and makes the process quick, simple and efficient for both student and verification authority.
Paper Link Research Paper
This project uses following tools and technologies
- Ethereum (Sepolia)
- React (frontend)
- ExpressJs (Backend)
- Pinata (IPFS)
- Hardhat and EtherJs (for interacting with blockchain)
- MongoDB (for logging trasactions)
- Solidity and Chainlinkfor smart contract
- Admin login using Jwt
- Records ethereum transaction information in server
- Allows admin to upload document below 10MB
- Sends document CID to the student on their emailId
- Verifier can verify the document by using CID (hash)
There are 3 main folders viz:
- Client (for frontend)
- Server (for mongoDB and RestAPIs)
- Parent file (which contains contracts and abis)
Fork the repository and follow along with README in each folder to correctly configure and execute the contract files.
STEP 1. Install the npm file (parent directory)
npm install
STEP 2. Create metamask account and create web3 sepolia account on alchemy.
after setting up metamask account, download the metamask extension. Create an alchemy account, create a project and copy its https api key. paste it in hardhat.config.js file
url: `https://eth-sepolia.g.alchemy.com/v2/your-api-key`,
accounts: [SEPOLIA_PRIVATE_KEY] //private key is one time key that you can see only once when the project is created, be sure to store it somewhere safe.
for get faucet ether use the following website: https://learnweb3.io/faucets/sepolia/
STEP 3. compile and deploy smart contract.
Compile contract using
$ npx hardhat compile
This creates a artifacts and abi-file.
For deploying the contract exceute scripts/deploy.js
$ npx hardhat run scripts/deploy.js --network sepolia
The above command logs the sepolia testnet address for both the smart contracts.Replace this address in client/components/user/Verify.jsx and client/components/admin/AddDocument.jsx
const paymeAddr = 'Your testnet address for payme contract'
const Address = 'Your testnet address for IPFSHashStorage contract'
for checking and verifying transactions on the testnet go to:
https://sepolia.etherscan.io/address/your-testnet-address
TO DO
- Fix automatic conversion chainlink contract.
- Add mappings to link the CID's with the account of the verifier to efficiently utilize single transaction.
- Add code to download the document on verifier's device.
- Create a local IPFS node.