A decentralized web application (dApp) to securely store and verify academic certificates using Blockchain (Ethereum + Ganache) and IPFS (via Pinata). It ensures tamper-proof, transparent, and trustless certificate validation.
https://drive.google.com/file/d/1V9UfB_qQXnksNlx50ZXDVVrcNTzF3tk4/view?usp=sharing
- ✅ Upload a certificate file (PDF, PNG, etc.)
- 🔐 Generate a SHA-256 hash of the file for unique identity
- 📁 Upload the certificate to IPFS via Pinata
- ⛓ Store student name, certificate hash, and IPFS CID on a local Ethereum blockchain (Ganache)
- ✅ Verify certificate authenticity using the hash
- 🧒 MetaMask integration for wallet and transactions
| Technology | Purpose |
|---|---|
| React.js | Frontend Framework |
| Web3.js | Blockchain Interaction |
| Solidity | Smart Contract Language |
| Ganache | Local Ethereum Test Blockchain |
| MetaMask | Wallet & Blockchain Connector |
| IPFS + Pinata | Decentralized File Storage |
| CryptoJS | SHA-256 Hashing |
bash git clone https://github.com/yourusername/certi-verification-pro.git cd certi-verification-pro
bash npm install
bash npm start
The app will run on http://localhost:3000
- Open Ganache GUI
- Use RPC: http://127.0.0.1:7545
- Chain ID: 1337
- Network ID: 5777
-
Open MetaMask → Add Network
-
Set:
- Network Name: Ganache Local
- RPC URL: http://127.0.0.1:7545
- Chain ID: 1337
- Currency: ETH
-
Import one of the Ganache test accounts
solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;
contract CertiStorage { struct Certificate { string studentName; string ipfsHash; }
mapping(bytes32 => Certificate) public certificates;
function storeCertificate(string memory _studentName, bytes32 _certiHash, string memory _ipfsHash) public {
certificates[_certiHash] = Certificate(_studentName, _ipfsHash);
}
function verifyCertificate(bytes32 _certiHash) public view returns (string memory, string memory) {
Certificate memory certi = certificates[_certiHash];
return (certi.studentName, certi.ipfsHash);
}
}
✅ Deployed on Ganache
✅ Interacted using Web3.js and React frontend
- Upload a certificate
- Generate SHA-256 hash
- Upload to IPFS
- Connect MetaMask to Ganache
- Store certificate on blockchain
- Verify using certificate hash
Vedant soni
This project is licensed under the MIT License — feel free to use and modify.
