The academic certificate verification platform using blockchain technology is used to issue, manage and verify academic certificates in a secure and distributed manner. This project addresses the need for a secure digital platform to issue and verify academic certificates without intervention from the original certificate issuer (University).
The core functionality of this application are :
- Create and issue academic certificates.
- Manage and share academic certificates.
- Verify authenticity of shared certificates.
The following technologies are used on the application
- Hyperledger Fabric: Used to build the blockchain network, run smart contracts. Fabric CA is used to enroll members in the network.
- Node.js: Backend of the web application is built in nodeJS runtime using the express framework. Chaincode is also written in NodeJS.
- MongoDB: The user and certificate data is stored in MongoDB database.
- Bootstrap: The front-end of the web application is built using bootstrap, ejs & jQuery.
The users of the platform include - Universities, Students and Certificate Verifiers (Eg - Employers). The actions that can be performed by each party are as follows
Universities
- Issue academic certificates.
- View academic certificates issued.
- Endorse Verification and digitally sign academic certificates.
Students
- Receive academic certificates from universities.
- View and manage received academic certificates.
- Share academic certificates with third party verifiers.
- Selective disclosure of certificate data.
Verifier
- Receive certificate data from students.
- Verify certificate authenticity with blockchain platform.
To learn more about how selective disclosure and decentralized verifications work, read about verifiable credentials.
IMPORTANT NOTE: The instructions for building this project are out of date. I'm unfortunately not in a position right now to test and update these instructions. If you're able to get the project up and running properly. a pull request to update the following instructions is appreciated!
Related Issue: #4
In order to install the application, please make sure you have the following installed with the same major version number.
-
Hyperledger latest version 2.1.x.
#install the latest version using curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh | ./install-fabric.sh
-
Node and NPM latest version (install it using nvm https://github.com/nvm-sh/nvm#install--update-script)
-
MongoDB latest version (available on https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/)
-
Clone the repo
git clone https://github.com/TasinIshmam/blockchain-academic-certificates.git
-
Start the fabric test-network with couchdb
# at fabric-samples cd test-network ./network.sh up createChannel -ca -c mychannel -s couchdb
-
Package the chaincode situated in the chaincode directory.
- move (or open another terminal) to
/blockchain-academic-certificates/chaincode
and run npm install:cd ../blockchain-academic-certificates/chaincode export CC_LOCATION=$PWD
- move to
fabric-samples/test-network
:cd ../fabric-samples/test-network ./network.sh deployCC -ccn basic -ccp $CC_LOCATION -ccl javascript
If there's something wrong, check here
- move (or open another terminal) to
Make sure mongodb and fabric network are running in the background before starting this process.
- Go to web-app
# at blockchain-academic-certificates cd web-app
- Install all modules
npm install
- Create .env file
touch .env
- Specify environment variables in .env file.
- Specify
MONGODB_URI_LOCAL
to your mongodb database. - Specify
EXPRESS_SESSION_SECRET
as a long random secret string. - Specify
CCP_PATH
as the connection profile of org1 in your test network. The path for this should be~/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.json
- In
FABRIC_CHANNEL_NAME
andFABRIC_CHAINCODE_NAME
specify the channel and chaincode label respectively used during fabric network installation. - Sample .env file
MONGODB_URI_LOCAL = mongodb://localhost:27017/blockchaincertificate PORT = 3000 LOG_LEVEL = info EXPRESS_SESSION_SECRET = sdfsdfddfgdfg3242efDFHI234 CCP_PATH = /home/tasin/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.json FABRIC_CHANNEL_NAME = mychannel FABRIC_CHAINCODE_NAME = basic
- Specify
- Start the server in development mode
npm run start-development
Tasin Ishmam - tasinishmam@gmail.com
Project Link: https://github.com/TasinIshmam/blockchain-academic-certificates